docs: def write_table(self, data, table_type='binary',
                      names=None, formats=None, units=None,
                      extname=None, extver=None, header=None,
                      write_bitcols=False):
          """
          Create a new table extension and write the data.
  
          The table definition is taken from the fields in the input array.  If
          you want to append new rows to the table, access the HDU directly and
          use the write() function, e.g.
  
              fits[extension].append(data)
  
          parameters
          ----------
          data: recarray
              A numpy array with fields.  The table definition will be
              determined from this array.
          table_type: string, optional
              Either 'binary' or 'ascii', default 'binary'
              Matching is case-insensitive
          extname: string, optional
              An optional string for the extension name.
          extver: integer, optional
              FITS allows multiple extensions to have the same name (extname).
              These extensions can optionally specify an EXTVER version number in
              the header.  Send extver= to set a particular version, which will
              be represented in the header with keyname EXTVER.  The extver must
              be an integer > 0.  If extver is not sent, the first one will be
              selected.  If ext is an integer, the extver is ignored.
          units: list/dec, optional:
              A list of strings with units for each column.
          header: FITSHDR, list, dict, optional
              A set of header keys to write. The keys are written before the data
              is written to the table, preventing a resizing of the table area.
  
              Can be one of these:
                  - FITSHDR object
                  - list of dictionaries containing 'name','value' and optionally
                    a 'comment' field; the order is preserved.
                  - a dictionary of keyword-value pairs; no comments are written
                    in this case, and the order is arbitrary.
              Note required keywords such as NAXIS, XTENSION, etc are cleaed out.
          write_bitcols: boolean, optional
              Write boolean arrays in the FITS bitcols format, default False
  
          restrictions
          ------------
          The File must be opened READWRITE
          """
  
          """
          if data.dtype.fields == None:
              raise ValueError("data must have fields")
          if data.size == 0:
              raise ValueError("data must have at least 1 row")
          """
  
          self.create_table_hdu(data=data,
                                header=header,
                                names=names,
                                units=units,
                                extname=extname,
                                extver=extver,
                                table_type=table_type,
                                write_bitcols=write_bitcols)
  
          if header is not None:
              self[-1].write_keys(header)
              self[-1]._update_info()
  
          self[-1].write(data, names=names)