-
Notifications
You must be signed in to change notification settings - Fork 3
/
setup.py
104 lines (84 loc) · 2.76 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
import os
import sys
import subprocess
from setuptools import setup, find_packages, Command
datadir = 'deenurp/data'
version_file = f'{datadir}/version.txt'
subprocess.call(
(f'mkdir -p {datadir} && '
f'git describe --tags --dirty > {version_file}.tmp '
f'&& mv {version_file}.tmp {version_file} '
f'|| rm -f {version_file}.tmp'),
shell=True, stderr=open(os.devnull, "w"))
try:
with open(version_file) as f:
version = f.read().strip().lstrip('v').replace(
'-', '+', 1).replace('-', '.')
except Exception as e:
version = ''
class CheckVersion(Command):
description = 'Confirm that the stored package version is correct'
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
with open(version_file) as f:
stored_version = f.read().strip()
git_version = subprocess.check_output(
['git', 'describe', '--tags', '--dirty']).strip()
assert stored_version == git_version
print('the current version is', stored_version)
class run_audit(Command):
"""Audits source code using PyFlakes for following issues:
- Names which are used but not defined or used before they are defined.
- Names which are redefined without having been used.
"""
description = "Audit source code with PyFlakes"
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
try:
import pyflakes.scripts.pyflakes as flakes
except ImportError:
print("Audit requires PyFlakes installed in your system.")
sys.exit(-1)
warns = 0
# Define top-level directories
dirs = 'deenurp',
for dir in dirs:
for root, _, files in os.walk(dir):
for file in files:
if file != '__init__.py' and file.endswith('.py'):
warns += flakes.checkPath(os.path.join(root, file))
if warns > 0:
print("Audit finished with total %d warnings." % warns)
else:
print("No problems found in sourcecode.")
setup(
name='deenurp',
version=version,
package_data={'deenurp': ['data/*', 'test/data/*']},
entry_points={
'console_scripts': {'deenurp = deenurp:main'}},
cmdclass={'audit': run_audit, 'check_version': CheckVersion},
test_suite='deenurp.test.suite',
packages=find_packages(exclude=['tests']),
python_requires='>=3.8',
install_requires=[
'biopython',
'hdbscan',
'numpy',
'packaging',
'pandas',
'scikit-learn',
'scipy',
'sqlalchemy',
'seqmagick',
'taxtastic'
],
)