summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Reitz <me@kennethreitz.org>2017-09-01 13:49:44 -0400
committerGitHub <noreply@github.com>2017-09-01 13:49:44 -0400
commitdec5cea72264d2008d51d2800be16ea706950fa5 (patch)
treee8567dd54af60fab39f7cd5bc8da3172a873b1f3
parent69edb9def37be7f38a4fed6d6bf10a618eaec8e3 (diff)
parent38183938dc7332bcbdfeef4b8631ead8e32139e0 (diff)
downloadtablib-dec5cea72264d2008d51d2800be16ea706950fa5.tar.gz
Merge pull request #307 from audiolion/make-pandas-optional
Make pandas optional
-rw-r--r--.travis.yml2
-rwxr-xr-xsetup.py4
-rw-r--r--tablib/formats/_df.py11
3 files changed, 14 insertions, 3 deletions
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
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'],
+ },
)
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