docs: def get_data_and_column_widths(self, data_kwargs, width_kwargs):
          """
          :param data_kwargs:  kwargs used for converting data to strings
          :param width_kwargs: kwargs used for determining column widths
          :return: tuple(list of list of strings, list of int)
          """
          data_kwargs = data_kwargs.copy()
          safe_str = data_kwargs.pop('safe_str', self._safe_str)
          list_of_list = [[safe_str(col, _is_header=True, **data_kwargs)
                           for col in self.columns]]
          list_of_list+= [[safe_str(row[col], **data_kwargs)
                           for col in self.columns] for row in self]
          column_widths = self._get_column_widths(list_of_list, **width_kwargs)
          return list_of_list, column_widths