forked from thoth-station/storages
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
112 lines (91 loc) · 3.23 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
"""Setup configuration for storages module."""
import os
import sys
from functools import partial
from setuptools import setup
from setuptools.command.test import test
from pathlib import Path
def _get_requires(requirements: str):
"""Get requirements for storages module."""
with open(requirements, "r") as requirements_file:
# TODO: respect hashes in requirements.txt file
res = requirements_file.readlines()
return [req.split(" ", maxsplit=1)[0] for req in res if req]
get_install_requires = partial(_get_requires, "requirements.txt")
get_test_requires = partial(_get_requires, "requirements-test.txt")
def get_version():
"""Get current version of storages module."""
with open(os.path.join("thoth", "storages", "__init__.py")) as f:
content = f.readlines()
for line in content:
if line.startswith("__version__ ="):
# dirty, remove trailing and leading chars
return line.split(" = ")[1][1:-2]
raise ValueError("No version identifier found")
class Test(test):
"""Introduce test command to run testsuite using pytest."""
_IMPLICIT_PYTEST_ARGS = [
"tests/",
"--timeout=2",
"--cov=./thoth",
# '--mypy',
"thoth/",
"--capture=no",
"--verbose",
"-l",
"-s",
"-vv",
]
user_options = [("pytest-args=", "a", "Arguments to pass into py.test")]
def initialize_options(self):
"""Initialize cli options."""
super().initialize_options()
self.pytest_args = None
def finalize_options(self):
"""Finalize cli options."""
super().finalize_options()
self.test_args = []
self.test_suite = True
def run_tests(self):
"""Run module tests."""
import pytest
passed_args = list(self._IMPLICIT_PYTEST_ARGS)
if self.pytest_args:
self.pytest_args = [arg for arg in self.pytest_args.split() if arg]
passed_args.extend(self.pytest_args)
sys.exit(pytest.main(passed_args))
VERSION = get_version()
setup(
name="thoth-storages",
version=VERSION,
description="Storage and database adapters available in project Thoth",
long_description=Path("README.rst").read_text(),
long_description_content_type="text/x-rst",
author="Fridolin Pokorny",
author_email="[email protected]",
license="GPLv3+",
packages=["thoth.storages", "thoth.storages.graph"],
package_data={
"thoth.storages": [
"py.typed",
os.path.join("data", "alembic.ini"),
os.path.join("data", "alembic", "script.py.mako"),
os.path.join("data", "alembic", "env.py"),
os.path.join("data", "alembic", "versions", "*.py"),
]
},
zip_safe=False,
install_requires=get_install_requires(),
tests_require=get_test_requires(),
cmdclass={"test": Test},
entry_points={"console_scripts": ["thoth-storages=thoth.storages.cli:cli"]},
url="https://github.com/thoth-station/storages",
maintainer="Francesco Murdaca",
maintainer_email="[email protected]",
command_options={
"build_sphinx": {
"version": ("setup.py", VERSION),
"release": ("setup.py", VERSION),
}
},
)