Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathsetup.py
More file actions
Latest commit
139 lines (119 loc) · 4.18 KB
/
Copy pathsetup.py
File metadata and controls
139 lines (119 loc) · 4.18 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
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
129
130
131
132
133
134
135
136
137
138
139
#!/usr/bin/env python
#
# (C) Copyright 2017- ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
#
# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation nor
# does it submit to any jurisdiction.
#
importio
importos
importre
importsys
importsetuptools
binary=os.getenv("DEPEND_ON_ECCODESLIB", "") =="1"
defread(path):
file_path=os.path.join(os.path.dirname(__file__), *path.split("/"))
returnio.open(file_path, encoding="utf-8").read()
# single-sourcing the package version using method 1 of:
# https://packaging.python.org/guides/single-sourcing-package-version/
defparse_version_from(path):
version_pattern= (
r"^__version__ = [\"\'](.*)[\"\']"# More permissive regex pattern
)
version_file=read(path)
version_match=re.search(version_pattern, version_file, re.M)
ifversion_matchisNoneorlen(version_match.groups()) >1:
raiseValueError("couldn't parse version")
returnversion_match.group(1)
# for the binary wheel
libdir=os.path.realpath("install/lib")
incdir=os.path.realpath("install/include")
libs= ["eccodes"]
if"--binary-wheel"insys.argv:
sys.argv.remove("--binary-wheel")
# https://setuptools.pypa.io/en/latest/userguide/ext_modules.html
ext_modules= [
setuptools.Extension(
"eccodes._eccodes",
sources=["eccodes/_eccodes.cc"],
language="c++",
libraries=libs,
library_dirs=[libdir],
include_dirs=[incdir],
extra_link_args=["-Wl,-rpath,"+libdir],
)
]
defshared(directory):
result= []
forpath, dirs, filesinos.walk(directory):
forfinfiles:
result.append(os.path.join(path, f))
returnresult
# Paths must be relative to package directory...
shared_files= ["versions.txt"]
shared_files+= [x[len("eccodes/") :] forxinshared("eccodes/copying")]
ifos.name=="nt":
forninos.listdir("eccodes"):
ifn.endswith(".dll"):
shared_files.append(n)
else:
ext_modules= []
shared_files= []
install_requires= ["numpy"]
ifsys.version_info< (3, 7):
install_requires= ["numpy<1.20"]
elifsys.version_info< (3, 8):
install_requires= ["numpy<1.22"]
elifsys.version_info< (3, 9):
install_requires= ["numpy<1.25"]
install_requires+= [
"attrs",
"cffi",
"findlibs",
]
# only add eccodeslib as dependency if building a distribution that should depend on it
ifbinary:
install_requires+= [
"eccodeslib;platform_system!='Windows'",
]
setuptools.setup(
name="eccodes",
version=parse_version_from("gribapi/bindings.py"),
description="Python interface to the ecCodes GRIB and BUFR decoder/encoder",
long_description=read("README.rst") +read("CHANGELOG.rst"),
author="European Centre for Medium-Range Weather Forecasts (ECMWF)",
author_email="software.support@ecmwf.int",
license="Apache License Version 2.0",
url="https://github.com/ecmwf/eccodes-python",
packages=setuptools.find_packages(),
include_package_data=True,
package_data={"": shared_files},
install_requires=install_requires,
tests_require=[
"pytest",
"pytest-cov",
"pytest-flakes",
],
test_suite="tests",
zip_safe=True,
keywords="ecCodes GRIB BUFR",
classifiers=[
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Operating System :: OS Independent",
],
ext_modules=ext_modules,
)