-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsetup.py
117 lines (107 loc) · 3.5 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
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
import os
import re
import ast
import setuptools
from Cython.Build import cythonize # type: ignore
from typing import Optional, List, Set
from setuptools.extension import Extension
version: str
_version_re: re.Pattern = re.compile(r'VERSION\s+=\s+(.*)')
extensions = [
Extension(
name='postalign.utils.cigar',
sources=['postalign/utils/cigar.py']
),
Extension(
name='postalign.models.na_position',
sources=['postalign/models/na_position.py']
),
Extension(
name='postalign.models._sequence',
sources=['postalign/models/_sequence.py']
),
Extension(
name='postalign.processors.codon_alignment',
sources=[
'postalign/processors/codon_alignment.py'
]
),
Extension(
name='postalign.utils.group_by_codons',
sources=['postalign/utils/group_by_codons.py']
),
Extension(
name='postalign.utils.codonutils',
sources=['postalign/utils/codonutils.py']
),
Extension(
name='postalign.utils.blosum62',
sources=['postalign/utils/blosum62.py']
),
Extension(
name='postalign.utils.iupac',
sources=['postalign/utils/iupac.py']
)
]
with open('postalign/version.py', 'rb') as f:
match: Optional[re.Match] = _version_re.search(
f.read().decode('utf-8'))
if match:
version = str(ast.literal_eval(match.group(1)))
else:
raise ImportError('Unable to import version from postalign.version')
def strip_comments(line: str) -> str:
if line.startswith('-i '):
return ''
return line.split('#', 1)[0].strip()
def req(filename: str) -> List[str]:
with open(os.path.join(os.getcwd(), filename)) as fp:
requires: Set[str] = set([strip_comments(ln) for ln in fp.readlines()])
requires -= set([''])
return list(requires)
if __name__ == '__main__':
setuptools.setup(
name='post-align',
version=version,
url="https://github.com/hivdb/post-align",
author='Philip Tzou',
author_email="[email protected]",
description=(
'A post alignment toolkit for refining '
'pairwise/multiple alignment sequences.'
),
packages=[
'postalign', 'postalign/models',
'postalign/parsers', 'postalign/processors',
'postalign/utils'
],
package_data={"postalign": ["py.typed"]},
install_requires=req('requirements.txt'),
ext_modules=cythonize(
extensions,
compiler_directives={
'language_level': '3',
'profile': False,
'linetrace': False
}
),
# tests_require=reqs('test-requirements.txt'),
# include_package_data=True,
entry_points={'console_scripts': [
'postalign = postalign.entry:cli',
]},
classifiers=[
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'Intended Audience :: Science/Research',
'License :: OSI Approved :: MIT License',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Topic :: Scientific/Engineering :: Bio-Informatics'],
# test_suite="nose.collector",
zip_safe=True)