-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathsetup.py
More file actions
94 lines (79 loc) · 3.38 KB
/
Copy pathsetup.py
File metadata and controls
94 lines (79 loc) · 3.38 KB
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
"""
Minimal setup.py for building Cython extensions.
Most configuration is now in pyproject.toml.
"""
import os
import sys
from setuptools import setup, Extension
def generate_cython():
"""Generate C files from Cython sources."""
from Cython.Build import cythonize
module_list = [
"py_stringmatching/similarity_measure/cython/cython_affine.pyx",
"py_stringmatching/similarity_measure/cython/cython_jaro.pyx",
"py_stringmatching/similarity_measure/cython/cython_jaro_winkler.pyx",
"py_stringmatching/similarity_measure/cython/cython_levenshtein.pyx",
"py_stringmatching/similarity_measure/cython/cython_needleman_wunsch.pyx",
"py_stringmatching/similarity_measure/cython/cython_smith_waterman.pyx",
"py_stringmatching/similarity_measure/cython/cython_utils.pyx"
]
p = cythonize(module_list)
if not p:
raise RuntimeError("Running cythonize failed!")
def get_numpy_include():
"""Get numpy include directory using modern approach."""
import numpy
return numpy.get_include()
def main():
# Check if we need to generate Cython sources
no_frills = (len(sys.argv) >= 2 and ('--help' in sys.argv[1:] or
sys.argv[1] in ('--help-commands',
'egg_info', '--version',
'clean')))
cwd = os.path.abspath(os.path.dirname(__file__))
if not os.path.exists(os.path.join(cwd, 'PKG-INFO')) and not no_frills:
# Generate Cython sources, unless building from source release
generate_cython()
# Get numpy include directory
numpy_incl = get_numpy_include()
# Define extensions
extensions = [
Extension(
"py_stringmatching.similarity_measure.cython.cython_levenshtein",
["py_stringmatching/similarity_measure/cython/cython_levenshtein.c"],
include_dirs=[numpy_incl]
),
Extension(
"py_stringmatching.similarity_measure.cython.cython_jaro",
["py_stringmatching/similarity_measure/cython/cython_jaro.c"],
include_dirs=[numpy_incl]
),
Extension(
"py_stringmatching.similarity_measure.cython.cython_jaro_winkler",
["py_stringmatching/similarity_measure/cython/cython_jaro_winkler.c"],
include_dirs=[numpy_incl]
),
Extension(
"py_stringmatching.similarity_measure.cython.cython_utils",
["py_stringmatching/similarity_measure/cython/cython_utils.c"],
include_dirs=[numpy_incl]
),
Extension(
"py_stringmatching.similarity_measure.cython.cython_needleman_wunsch",
["py_stringmatching/similarity_measure/cython/cython_needleman_wunsch.c"],
include_dirs=[numpy_incl]
),
Extension(
"py_stringmatching.similarity_measure.cython.cython_smith_waterman",
["py_stringmatching/similarity_measure/cython/cython_smith_waterman.c"],
include_dirs=[numpy_incl]
),
Extension(
"py_stringmatching.similarity_measure.cython.cython_affine",
["py_stringmatching/similarity_measure/cython/cython_affine.c"],
include_dirs=[numpy_incl]
)
]
setup(ext_modules=extensions)
if __name__ == "__main__":
main()