generated from sodre/ght-pypackage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.py
executable file
·106 lines (94 loc) · 3.07 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
#!/usr/bin/env python
"""The setup script."""
from setuptools import setup, find_namespace_packages, Extension
import os
with open("README.rst") as readme_file:
readme = readme_file.read()
ext_modules = []
extra_swig_opts = {
"comparator": ["-c++"],
"compactionfilter": ["-c++"],
"compactionfilterfactory": ["-c++"],
}
for c_module in ["zeroae/rocksdb/c"]:
(_, _, filenames) = next(os.walk(c_module), (None, None, []))
i_files = sorted([f.replace('.i', '') for f in filenames if f.endswith('.i') and f != "c.i"])
ext_modules += [Extension(f"{c_module.replace('/', '.')}._{i_file}",
define_macros=[("SWIG_TYPE_TABLE", f"crocksdb")],
libraries=["rocksdb"],
sources=[f"{c_module}/{i_file}.i"],
swig_opts=[f"-I{os.environ['CONDA_PREFIX']}/include"]+extra_swig_opts.get(i_file, [])
)
for i_file in i_files
]
# The requirements section should be kept in sync with the environment.yml file
requirements = [
# fmt: off
# fmt: on
]
setup_requirements = [
# fmt: off
"pytest-runner",
"setuptools_scm",
"wheel",
# fmt: on
]
test_requirements = [
# fmt: off
"pytest>=3",
"pytest-cov",
# fmt: on
]
conda_rosetta_stone = {
# fmt: off
"pypa-requirement": "conda-dependency"
# fmt: on
}
setup_kwargs = dict(
author="Patrick Sodré",
author_email="[email protected]",
use_scm_version={"write_to": "zeroae/rocksdb/_version.py"},
python_requires=">=3.6",
classifiers=[
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
],
description="ZeroAE's RocksDB Python bindings",
install_requires=requirements,
license="Apache",
long_description=readme,
long_description_content_type="text/x-rst",
include_package_data=True,
keywords="rocksdb zeroae",
name="zeroae-rocksdb",
packages=find_namespace_packages(include=["zeroae.*"]),
setup_requires=setup_requirements,
test_suite="tests",
tests_require=test_requirements,
extras_require={
# fmt: off
"test": test_requirements
# fmt: on
},
url="https://github.com/zeroae/zeroae-rocksdb",
zip_safe=False,
ext_modules=ext_modules,
)
if "CONDA_BUILD_STATE" in os.environ:
try:
from setuptools_scm import get_version
setup_kwargs["version"] = get_version(**setup_kwargs["use_scm_version"])
del setup_kwargs["use_scm_version"]
except ModuleNotFoundError:
print(
"Error: zeroae-rocksdb requires that setuptools_scm be installed with conda-build!" # noqa: E501
)
raise
setup_kwargs["conda_rosetta_stone"] = conda_rosetta_stone
setup(**setup_kwargs)