From b09fface1be24bd4025b705f7f8495efb398991d Mon Sep 17 00:00:00 2001 From: Ryan Castner Date: Fri, 1 Sep 2017 13:20:54 -0400 Subject: [PATCH 1/3] Make pandas an optional install --- setup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index fd9a626..d251352 100755 --- a/setup.py +++ b/setup.py @@ -48,7 +48,6 @@ install = [ 'xlrd', 'xlwt', 'pyyaml', - 'pandas' ] @@ -81,4 +80,7 @@ setup( ], tests_require=['pytest'], install_requires=install, + extras_require={ + 'pandas': ['pandas'], + }, ) From 7f1db4023f2310529822d721379b1019aaf320fc Mon Sep 17 00:00:00 2001 From: Ryan Castner Date: Fri, 1 Sep 2017 13:21:21 -0400 Subject: [PATCH 2/3] Raise NotImplementedError if pandas is not installed --- tablib/formats/_df.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tablib/formats/_df.py b/tablib/formats/_df.py index 5996ce9..44b967f 100644 --- a/tablib/formats/_df.py +++ b/tablib/formats/_df.py @@ -10,7 +10,10 @@ if sys.version_info[0] > 2: else: from cStringIO import StringIO as BytesIO -from pandas import DataFrame +try: + from pandas import DataFrame +except ImportError: + DataFrame = None import tablib @@ -21,6 +24,8 @@ extensions = ('df', ) def detect(stream): """Returns True if given stream is a DataFrame.""" + if DataFrame is None: + return False try: DataFrame(stream) return True @@ -30,6 +35,10 @@ def detect(stream): def export_set(dset, index=None): """Returns DataFrame representation of DataBook.""" + if DataFrame is None: + raise NotImplementedError( + 'DataFrame Format requires `pandas` to be installed.' + ' Try `pip install tablib[pandas]`.') dataframe = DataFrame(dset.dict, columns=dset.headers) return dataframe From 38183938dc7332bcbdfeef4b8631ead8e32139e0 Mon Sep 17 00:00:00 2001 From: Ryan Castner Date: Fri, 1 Sep 2017 13:33:28 -0400 Subject: [PATCH 3/3] Change how travis installs to get all test dependencies --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d78dfd6..1948f07 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,5 +6,5 @@ python: - 3.5 - 3.6 install: - - python setup.py install + - pip install -r requirements.txt script: python test_tablib.py