docs: def _verify_column_data(self, colnum, data):
          """
          verify the input data is of the correct type and shape
          """
          this_dt = data.dtype.descr[0]
  
          if len(data.shape) > 2:
              this_shape = data.shape[1:]
          elif len(data.shape) == 2 and data.shape[1] > 1:
              this_shape = data.shape[1:]
          else:
              this_shape = ()
  
          this_npy_type = this_dt[1][1:]
  
          npy_type, isvar, istbit = self._get_tbl_numpy_dtype(colnum)
          info = self._info['colinfo'][colnum]
  
          if npy_type[0] in ['>', '<', '|']:
              npy_type = npy_type[1:]
  
          col_name = info['name']
          col_tdim = info['tdim']
          col_shape = _tdim2shape(
              col_tdim, col_name, is_string=(npy_type[0] == 'S'))
  
          if col_shape is None:
              if this_shape == ():
                  this_shape = None
  
          if col_shape is not None and not isinstance(col_shape, tuple):
              col_shape = (col_shape,)
  
          """
          print('column name:',col_name)
          print(data.shape)
          print('col tdim', info['tdim'])
          print('column dtype:',npy_type)
          print('input dtype:',this_npy_type)
          print('column shape:',col_shape)
          print('input shape:',this_shape)
          print()
          """
  
          # this mismatch is OK
          if npy_type == 'i1' and this_npy_type == 'b1':
              this_npy_type = 'i1'
  
          if isinstance(self, AsciiTableHDU):
              # we don't enforce types exact for ascii
              if npy_type == 'i8' and this_npy_type in ['i2', 'i4']:
                  this_npy_type = 'i8'
              elif npy_type == 'f8' and this_npy_type == 'f4':
                  this_npy_type = 'f8'
  
          if this_npy_type != npy_type:
              raise ValueError(
                  "bad input data for column '%s': "
                  "expected '%s', got '%s'" % (
                      col_name, npy_type, this_npy_type))
  
          if this_shape != col_shape:
              raise ValueError(
                  "bad input shape for column '%s': "
                  "expected '%s', got '%s'" % (col_name, col_shape, this_shape))