def interpret_obj(<EOL>self,<EOL>obj,<EOL>v_level_indexes,<EOL>h_level_indexes,<EOL>v_level_visibility,<EOL>h_level_visibility,<EOL>v_level_sort_keys,<EOL>h_level_sort_keys,<EOL>v_level_titles,<EOL>h_level_titles,<EOL>):
if not isinstance(obj, NonStringIterable):<EOL><INDENT>raise self.error("<STR_LIT>".format(obj))<EOL><DEDENT>rectangular_rows = tabulate(<EOL>obj,<EOL>v_level_indexes=v_level_indexes,<EOL>h_level_indexes=h_level_indexes,<EOL>v_level_visibility=v_level_visibility,<EOL>h_level_visibility=h_level_visibility,<EOL>v_level_sort_keys=v_level_sort_keys,<EOL>h_level_sort_keys=h_level_sort_keys,<EOL>v_level_titles=v_level_titles,<EOL>h_level_titles=h_level_titles,<EOL>)<EOL>assert is_rectangular(rectangular_rows)<EOL>num_rows, num_cols = size(rectangular_rows)<EOL>return rectangular_rows, num_cols<EOL>
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.