diff options
| -rwxr-xr-x | setup.py | 1 | ||||
| -rw-r--r-- | src/tablib/core.py | 8 | ||||
| -rw-r--r-- | src/tablib/formats/__init__.py | 3 | ||||
| -rw-r--r-- | src/tablib/formats/_cli.py | 16 | ||||
| -rwxr-xr-x | tests/test_tablib.py | 8 |
5 files changed, 34 insertions, 2 deletions
@@ -9,6 +9,7 @@ install = [ 'xlrd', 'xlwt', 'pyyaml', + 'tabulate', ] diff --git a/src/tablib/core.py b/src/tablib/core.py index 17d9621..e0c4327 100644 --- a/src/tablib/core.py +++ b/src/tablib/core.py @@ -622,6 +622,14 @@ class Dataset: pass @property + def cli(): + """A CLI table representation of the :class:`Dataset` object. + + .. note:: This method can be used for export only. + """ + pass + + @property def jira(): """A Jira table representation of the :class:`Dataset` object. diff --git a/src/tablib/formats/__init__.py b/src/tablib/formats/__init__.py index 12f2610..b0afeec 100644 --- a/src/tablib/formats/__init__.py +++ b/src/tablib/formats/__init__.py @@ -14,6 +14,7 @@ from . import _tsv as tsv from . import _xls as xls from . import _xlsx as xlsx from . import _yaml as yaml +from . import _cli as cli # xlsx before as xls (xlrd) can also read xlsx -available = (json, xlsx, xls, yaml, csv, dbf, tsv, html, jira, latex, ods, df, rst) +available = (json, xlsx, xls, yaml, csv, dbf, tsv, html, jira, latex, ods, df, rst, cli) diff --git a/src/tablib/formats/_cli.py b/src/tablib/formats/_cli.py new file mode 100644 index 0000000..e00d4db --- /dev/null +++ b/src/tablib/formats/_cli.py @@ -0,0 +1,16 @@ +""" Tablib - CLI Support +""" +from tabulate import tabulate + +title = 'cli' +extensions = ('txt',) + +DEFAULT_FORMAT = 'plain' + +def export_set(dataset, **kwargs): + """Returns CLI representation of Dataset.""" + if( dataset.headers is not None ): + kwargs.setdefault('headers', dataset.headers) + kwargs.setdefault('tablefmt', DEFAULT_FORMAT) + return tabulate( dataset, **kwargs) + diff --git a/tests/test_tablib.py b/tests/test_tablib.py index 695d13d..995b225 100755 --- a/tests/test_tablib.py +++ b/tests/test_tablib.py @@ -42,7 +42,7 @@ class TablibTestCase(BaseTestCase): def _test_export_data_in_all_formats(self, dataset, exclude=()): all_formats = [ 'json', 'yaml', 'csv', 'tsv', 'xls', 'xlsx', 'ods', 'html', 'jira', - 'latex', 'df', 'rst', + 'latex', 'df', 'rst', 'cli', ] for format_ in all_formats: if format_ in exclude: @@ -1214,6 +1214,12 @@ class JiraTests(BaseTestCase): def test_jira_export_empty_dataset(self): self.assertTrue(tablib.Dataset().jira is not None) +class CliTests(BasetTestCase): + def test_cli_export(self): + self.assertEqual('a b c', tablib.Dataset(['a', 'b', 'c']).cli) + + def test_cli_export_github(self): + self.assertEqual('|---|---|---|\n| a | b | c |', tablib.Dataset(['a','b','c']).export('cli',tablefmt='github')) class DocTests(unittest.TestCase): |
