code: def interpret_obj(
          self,
          obj,
          v_level_indexes,
          h_level_indexes,
          v_level_visibility,
          h_level_visibility,
          v_level_sort_keys,
          h_level_sort_keys,
          v_level_titles,
          h_level_titles,
      ):
          
          if not isinstance(obj, NonStringIterable):
              raise self.error("Cannot make a table from object {!r}".format(obj))
  
          rectangular_rows = tabulate(
              obj,
              v_level_indexes=v_level_indexes,
              h_level_indexes=h_level_indexes,
              v_level_visibility=v_level_visibility,
              h_level_visibility=h_level_visibility,
              v_level_sort_keys=v_level_sort_keys,
              h_level_sort_keys=h_level_sort_keys,
              v_level_titles=v_level_titles,
              h_level_titles=h_level_titles,
          )
          assert is_rectangular(rectangular_rows)
          num_rows, num_cols = size(rectangular_rows)
          return rectangular_rows, num_cols
docs: Interpret the given Python object as a table.
  
          Args:
              obj: A sequence (later a mapping, too)
  
          Returns:
              A list of lists represents rows of cells.
  
          Raises:
              TypeError: If the type couldn't be interpreted as a table.