diff --git a/requirements-dev.txt b/requirements-dev.txt index 8b6417a5..faae71d9 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,11 +1,11 @@ -r requirements.txt +-r requirements-db-vertica.txt +-r requirements-db-snowflake.txt +-r requirements-db-mysql.txt +-r requirements-db-redshift.txt +-r requirements-db-postgresql.txt +-r requirements-db-ipython.txt mock -matplotlib -ipython -pymysql==0.8.0 -vertica-python==0.7.3 -psycopg2==2.7.3.2 -snowflake-connector-python==1.9.1 bumpversion==0.5.3 wheel==0.30.0 watchdog==0.8.3 diff --git a/requirements-extras-ipython.txt b/requirements-extras-ipython.txt new file mode 100644 index 00000000..c48e8287 --- /dev/null +++ b/requirements-extras-ipython.txt @@ -0,0 +1,2 @@ +matplotlib +ipython diff --git a/requirements-extras-mysql.txt b/requirements-extras-mysql.txt new file mode 100644 index 00000000..4e6e9484 --- /dev/null +++ b/requirements-extras-mysql.txt @@ -0,0 +1 @@ +pymysql==0.8.0 diff --git a/requirements-extras-postgresql.txt b/requirements-extras-postgresql.txt new file mode 100644 index 00000000..18c822d0 --- /dev/null +++ b/requirements-extras-postgresql.txt @@ -0,0 +1 @@ +psycopg2==2.7.3.2 diff --git a/requirements-extras-redshift.txt b/requirements-extras-redshift.txt new file mode 100644 index 00000000..18c822d0 --- /dev/null +++ b/requirements-extras-redshift.txt @@ -0,0 +1 @@ +psycopg2==2.7.3.2 diff --git a/requirements-extras-snowflake.txt b/requirements-extras-snowflake.txt new file mode 100644 index 00000000..c33b9e76 --- /dev/null +++ b/requirements-extras-snowflake.txt @@ -0,0 +1,2 @@ +snowflake-connector-python==2.0.3 +cryptography==2.4.2 diff --git a/requirements-extras-vertica.txt b/requirements-extras-vertica.txt new file mode 100644 index 00000000..90a7cc26 --- /dev/null +++ b/requirements-extras-vertica.txt @@ -0,0 +1 @@ +vertica-python==0.7.3 diff --git a/setup.py b/setup.py index d69ab80d..2e3e1b19 100644 --- a/setup.py +++ b/setup.py @@ -21,8 +21,19 @@ def find_version(*file_paths): raise RuntimeError("Unable to find version string.") -with open('requirements.txt') as f: - required = f.read().splitlines() +with open('requirements.txt') as file: + install_requires = file.read().splitlines() + +extras_requires = {} +extras_requires_patterns = re.compile(r'requirements-extras-(\w+)\.txt') +for file_name in os.listdir('.'): + match = extras_requires_patterns.search(file_name) + if not match: + continue + + with open(file_name) as file: + extras_name = match.group(1) + extras_requires[extras_name] = file.read().splitlines() setup( name='fireant', @@ -80,21 +91,8 @@ def find_version(*file_paths): keywords=('fireant python query builder querybuilder sql mysql postgres psql oracle vertica aggregated ' 'relational database rdbms business analytics bi data science analysis pandas'), - install_requires=required, - tests_require=[ - 'mock' - ], - extras_require={ - 'vertica': ['vertica-python==0.7.3'], - 'snowflake': [ - 'snowflake-connector-python==2.0.3', - 'cryptography==2.4.2', - ], - 'mysql': ['pymysql==0.8.0'], - 'redshift': ['psycopg2==2.7.3.2'], - 'postgresql': ['psycopg2==2.7.3.2'], - 'ipython': ['matplotlib', 'ipython'], - }, - + install_requires=install_requires, + extras_require=extras_requires, + tests_require=['mock'], test_suite='fireant.tests', )