forked from inducer/loopy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
128 lines (100 loc) · 3.48 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
118
119
120
121
122
123
124
125
126
127
128
#!/usr/bin/env python
import os
from setuptools import setup, find_packages
ver_dic = {}
version_file = open("loopy/version.py")
try:
version_file_contents = version_file.read()
finally:
version_file.close()
os.environ["AKPYTHON_EXEC_IMPORT_UNAVAILABLE"] = "1"
exec(compile(version_file_contents, "loopy/version.py", "exec"), ver_dic)
# {{{ capture git revision at install time
# authoritative version in pytools/__init__.py
def find_git_revision(tree_root):
# Keep this routine self-contained so that it can be copy-pasted into
# setup.py.
from os.path import join, exists, abspath
tree_root = abspath(tree_root)
if not exists(join(tree_root, ".git")):
return None
from subprocess import Popen, PIPE, STDOUT
p = Popen(["git", "rev-parse", "HEAD"], shell=False,
stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True,
cwd=tree_root)
(git_rev, _) = p.communicate()
git_rev = git_rev.decode()
git_rev = git_rev.rstrip()
retcode = p.returncode
assert retcode is not None
if retcode != 0:
from warnings import warn
warn("unable to find git revision")
return None
return git_rev
def write_git_revision(package_name):
from os.path import dirname, join
dn = dirname(__file__)
git_rev = find_git_revision(dn)
with open(join(dn, package_name, "_git_rev.py"), "w") as outf:
outf.write('GIT_REVISION = "%s"\n' % git_rev)
write_git_revision("loopy")
# }}}
setup(name="loopy",
version=ver_dic["VERSION_TEXT"],
description="A code generator for array-based code on CPUs and GPUs",
long_description=open("README.rst").read(),
classifiers=[
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Intended Audience :: Other Audience",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Information Analysis",
"Topic :: Scientific/Engineering :: Mathematics",
"Topic :: Scientific/Engineering :: Visualization",
"Topic :: Software Development :: Libraries",
"Topic :: Utilities",
],
python_requires="~=3.8",
install_requires=[
"pytools>=2023.1.1",
"pymbolic>=2022.1",
"genpy>=2016.1.2",
# https://github.com/inducer/loopy/pull/419
"numpy>=1.19",
"cgen>=2016.1",
"islpy>=2019.1",
"codepy>=2017.1",
"colorama",
"Mako",
"pyrsistent",
"immutables",
"typing_extensions",
],
extras_require={
"pyopencl": [
"pyopencl>=2022.3",
],
"fortran": [
# Note that this is *not* regular 'f2py2e', this is
# the Fortran parser from the (unfinished) third-edition
# f2py, as linked below.
"f2py>=0.3.1",
"ply>=3.6",
],
},
dependency_links=[
"git+https://github.com/pearu/f2py.git"
],
scripts=["bin/loopy"],
author="Andreas Kloeckner",
url="https://mathema.tician.de/software/loopy",
author_email="[email protected]",
license="MIT",
packages=find_packages(),
)