@classmethod
def export_set(cls, dataset, **kwargs):
    """
        Returns reStructuredText table representation of dataset.

        Returns a simple table if the text in the first column is never
        wrapped, otherwise returns a grid table.


        >>> from tablib import Dataset
        >>> bits = ((0, 0), (1, 0), (0, 1), (1, 1))
        >>> data = Dataset()
        >>> data.headers = ['A', 'B', 'A and B']
        >>> for a, b in bits:
        ...     data.append([bool(a), bool(b), bool(a * b)])
        >>> table = data.rst
        >>> table.split('\\n') == [
        ...     '=====  =====  =====',
        ...     '  A      B    A and',
        ...     '                B  ',
        ...     '=====  =====  =====',
        ...     'False  False  False',
        ...     'True   False  False',
        ...     'False  True   False',
        ...     'True   True   True ',
        ...     '=====  =====  =====',
        ... ]
        True

        """
    if not dataset.dict:
        return ''
    force_grid = kwargs.get('force_grid', False)
    max_table_width = kwargs.get('max_table_width', cls.MAX_TABLE_WIDTH)
    column_widths = cls._get_column_widths(dataset, max_table_width)
    use_simple_table = cls._use_simple_table(dataset.headers[0] if dataset.
        headers else None, dataset.get_col(0), column_widths[0])
    if use_simple_table and not force_grid:
        return cls.export_set_as_simple_table(dataset, column_widths)
    else:
        return cls.export_set_as_grid_table(dataset, column_widths)
