code: def _adjust_rowcol(self, insertion_point, no_to_insert, axis, tab=None):
          
  
          if axis == 2:
              self._shift_rowcol(insertion_point, no_to_insert)
              return
  
          assert axis in (0, 1)
  
          cell_sizes = self.col_widths if axis else self.row_heights
          set_cell_size = self.set_col_width if axis else self.set_row_height
  
          new_sizes = {}
          del_sizes = []
  
          for pos, table in cell_sizes:
              if pos > insertion_point and (tab is None or tab == table):
                  if 0 <= pos + no_to_insert < self.shape[axis]:
                      new_sizes[(pos + no_to_insert, table)] = \
                          cell_sizes[(pos, table)]
                  del_sizes.append((pos, table))
  
          for pos, table in new_sizes:
              set_cell_size(pos, table, new_sizes[(pos, table)])
  
          for pos, table in del_sizes:
              if (pos, table) not in new_sizes:
                  set_cell_size(pos, table, None)
docs: Adjusts row and column sizes on insertion/deletion