summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsetup.py1
-rw-r--r--src/tablib/core.py8
-rw-r--r--src/tablib/formats/__init__.py3
-rw-r--r--src/tablib/formats/_cli.py16
-rwxr-xr-xtests/test_tablib.py8
5 files changed, 34 insertions, 2 deletions
diff --git a/setup.py b/setup.py
index 2ba3e76..698ace7 100755
--- a/setup.py
+++ b/setup.py
@@ -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):