forked from bluesky/tiled
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
120 lines (106 loc) · 3.54 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import sys
from os import path
from setuptools import find_packages, setup
import versioneer
# NOTE: This file must remain Python 2 compatible for the foreseeable future,
# to ensure that we error out properly for people with outdated setuptools
# and/or pip.
min_version = (3, 7)
if sys.version_info < min_version:
error = """
{{ cookiecutter.package_dist_name }} does not support Python {0}.{1}.
Python {2}.{3} and above is required. Check your Python version like so:
python3 --version
This may be due to an out-of-date pip. Make sure you have pip >= 9.0.1.
Upgrade pip like so:
pip install --upgrade pip
""".format(
*(sys.version_info[:2] + min_version)
)
sys.exit(error)
here = path.abspath(path.dirname(__file__))
with open(path.join(here, "README.md"), encoding="utf-8") as readme_file:
readme = readme_file.read()
def read_requirements(filename):
with open(path.join(here, filename)) as requirements_file:
# Parse requirements.txt, ignoring any commented-out lines.
requirements = [
line
for line in requirements_file.read().splitlines()
if not line.startswith("#")
]
return requirements
categorized_requirements = {
key: read_requirements(f"requirements-{key}.txt")
for key in [
"client",
"compression",
"formats",
"server",
"array",
"dataframe",
"xarray",
]
}
extras_require = {}
extras_require["client"] = sorted(
set(
sum(
(
categorized_requirements[k]
for k in ["client", "array", "dataframe", "xarray", "compression"]
),
[],
)
)
)
extras_require["server"] = sorted(
set(
sum(
(
categorized_requirements[k]
for k in ["server", "array", "dataframe", "xarray", "compression"]
),
[],
)
)
)
extras_require["minimal-client"] = categorized_requirements["client"]
extras_require["minimal-server"] = categorized_requirements["server"]
extras_require["formats"] = categorized_requirements["formats"]
extras_require["all"] = extras_require["complete"] = sorted(
set(sum(categorized_requirements.values(), []))
)
setup(
name="tiled",
version=versioneer.get_version(),
cmdclass=versioneer.get_cmdclass(),
description="Tile-based access to SciPy/PyData data structures over the web in many formats",
long_description=readme,
long_description_content_type="text/markdown",
author="Bluesky Collaboration",
author_email="dallan@bnl.gov",
url="https://github.com/bluesky/tiled",
python_requires=">={}".format(".".join(str(n) for n in min_version)),
install_requires=[], # Requirements depend on use case (e.g. client vs server).
extras_require=extras_require,
packages=find_packages(exclude=["docs", "tests"]),
entry_points={"console_scripts": ["tiled = tiled.commandline.main:main"]},
package_data={
"tiled": [
# When adding files here, remember to update MANIFEST.in as well,
# or else they will not be included in the distribution on PyPI!
"config_schemas/*.yml",
"database/alembic.ini.template",
"database/migrations/env.py",
"database/migrations/script.py.mako",
"database/migrations/versions/*.py",
]
},
license="BSD (3-clause)",
classifiers=[
"Development Status :: 2 - Pre-Alpha",
"Natural Language :: English",
"Programming Language :: Python :: 3",
],
)