|
1 | | -#!/usr/bin/env python |
2 | | - |
3 | | -"""The setup script.""" |
4 | | - |
5 | 1 | from setuptools import setup, find_packages |
6 | | - |
| 2 | +import os |
| 3 | +import pkg_resources |
7 | 4 | import cloud2sql |
8 | 5 |
|
9 | | -with open("requirements.txt") as f: |
10 | | - required = f.read().splitlines() |
11 | | - |
12 | | -with open("requirements-mysql.txt") as f: |
13 | | - required_mysql = f.read().splitlines() |
14 | | - |
15 | | -with open("requirements-postgresql.txt") as f: |
16 | | - required_postgresql = f.read().splitlines() |
17 | 6 |
|
18 | | -with open("requirements-parquet.txt") as f: |
19 | | - required_parquet = f.read().splitlines() |
| 7 | +def read(file_name: str) -> str: |
| 8 | + with open(os.path.join(os.path.dirname(__file__), file_name)) as of: |
| 9 | + return of.read() |
20 | 10 |
|
21 | | -with open("requirements-snowflake.txt") as f: |
22 | | - required_snowflake = f.read().splitlines() |
23 | 11 |
|
24 | | -with open("requirements-test.txt") as f: |
25 | | - test_required = f.read().splitlines() |
| 12 | +def read_requirements(fname): |
| 13 | + return [str(requirement) for requirement in pkg_resources.parse_requirements(read(fname))] |
26 | 14 |
|
27 | | -with open("README.md") as f: |
28 | | - readme = f.read() |
29 | 15 |
|
30 | | -setup_requirements = [ |
31 | | - "pytest-runner", |
32 | | -] |
| 16 | +required_mysql = read_requirements("requirements-mysql.txt") |
| 17 | +required_postgresql = read_requirements("requirements-postgresql.txt") |
| 18 | +required_snowflake = read_requirements("requirements-snowflake.txt") |
| 19 | +required_parquet = read_requirements("requirements-parquet.txt") |
33 | 20 |
|
34 | 21 |
|
35 | 22 | setup( |
|
39 | 26 | python_requires=">=3.9", |
40 | 27 | classifiers=["Programming Language :: Python :: 3"], |
41 | 28 | entry_points={"console_scripts": ["cloud2sql=cloud2sql.__main__:main"]}, |
42 | | - install_requires=required, |
| 29 | + install_requires=read_requirements("requirements.txt"), |
43 | 30 | extras_require={ |
44 | 31 | "all": required_mysql + required_postgresql + required_snowflake + required_parquet, |
45 | 32 | "mysql": required_mysql, |
|
49 | 36 | "parquet": required_parquet, |
50 | 37 | }, |
51 | 38 | license="Apache Software License 2.0", |
52 | | - long_description=readme, |
| 39 | + long_description=read("README.md"), |
53 | 40 | long_description_content_type="text/markdown", |
54 | 41 | include_package_data=True, |
55 | 42 | packages=find_packages(include=["cloud2sql", "cloud2sql.*"]), |
56 | | - setup_requires=setup_requirements, |
| 43 | + setup_requires=["pytest-runner"], |
57 | 44 | test_suite="tests", |
58 | | - tests_require=test_required, |
| 45 | + tests_require=read_requirements("requirements-test.txt"), |
59 | 46 | url="https://github.com/someengineering/cloud2sql", |
60 | 47 | ) |
0 commit comments