16
16
17
17
try:
18
18
import Cython
19
+
19
20
cython_major_version = int(Cython.__version__.split(".", 1)[0])
20
21
except ImportError:
21
22
cython_major_version = 0
@@ -50,8 +51,15 @@ def get_geos_install_prefix():
50
51
if env_candidate is not None:
51
52
candidates = [env_candidate]
52
53
else:
53
- candidates = [os.path.expanduser("~/local"), os.path.expanduser("~"),
54
- "/usr/local", "/usr", "/opt/local", "/opt", "/sw"]
54
+ candidates = [
55
+ os.path.expanduser("~/local"),
56
+ os.path.expanduser("~"),
57
+ "/usr/local",
58
+ "/usr",
59
+ "/opt/local",
60
+ "/opt",
61
+ "/sw",
62
+ ]
55
63
56
64
# Prepare filename pattern to find the GEOS library.
57
65
extensions = {"win32": "dll", "cygwin": "dll", "darwin": "dylib"}
@@ -71,15 +79,20 @@ def get_geos_install_prefix():
71
79
# the user is trying to build the library.
72
80
build_cmds = ("bdist_wheel", "build", "install")
73
81
if any(cmd in sys.argv[1:] for cmd in build_cmds):
74
- warnings.warn(" ".join([
75
- "Cannot find GEOS library and/or headers in standard locations",
76
- "('{0}'). Please install the corresponding packages using your",
77
- "software management system or set the environment variable",
78
- "GEOS_DIR to point to the location where GEOS is installed",
79
- "(for example, if 'geos_c.h' is in '/usr/local/include'",
80
- "and 'libgeos_c' is in '/usr/local/lib', then you need to",
81
- "set GEOS_DIR to '/usr/local'",
82
- ]).format("', '".join(candidates)), RuntimeWarning)
82
+ warnings.warn(
83
+ " ".join(
84
+ [
85
+ "Cannot find GEOS library and/or headers in standard locations",
86
+ "('{0}'). Please install the corresponding packages using your",
87
+ "software management system or set the environment variable",
88
+ "GEOS_DIR to point to the location where GEOS is installed",
89
+ "(for example, if 'geos_c.h' is in '/usr/local/include'",
90
+ "and 'libgeos_c' is in '/usr/local/lib', then you need to",
91
+ "set GEOS_DIR to '/usr/local'",
92
+ ]
93
+ ).format("', '".join(candidates)),
94
+ RuntimeWarning,
95
+ )
83
96
return None
84
97
85
98
@@ -91,8 +104,7 @@ def run(self):
91
104
92
105
# Replace DLL data files and add GEOS build script.
93
106
orig_data_files = self.distribution.data_files
94
- self.distribution.data_files = [
95
- (".", glob.glob(os.path.join("utils", "*.py")))]
107
+ self.distribution.data_files = [(".", glob.glob(os.path.join("utils", "*.py")))]
96
108
97
109
# Run the original `run` method and leave `data_files` as it was found.
98
110
try:
@@ -114,6 +126,7 @@ def run(self):
114
126
else:
115
127
try:
116
128
import numpy
129
+
117
130
include_dirs.append(numpy.get_include())
118
131
except ImportError as err:
119
132
cmds = ("bdist_wheel", "build", "install")
@@ -142,27 +155,25 @@ def run(self):
142
155
# Define `_geoslib` extension module. It cannot be installed in the
143
156
# `mpl_toolkits.basemap` namespace or `Basemap` objects will not be pickleable.
144
157
ext_modules = [
145
- Extension(**{
146
- "name":
147
- "_geoslib",
148
- "sources": [
149
- "src/_geoslib.pyx",
150
- ],
151
- "libraries": [
152
- "geos_c",
153
- ],
154
- "include_dirs":
155
- include_dirs,
156
- "library_dirs":
157
- library_dirs,
158
- "runtime_library_dirs":
159
- runtime_library_dirs,
160
- }),
158
+ Extension(
159
+ **{
160
+ "name": "_geoslib",
161
+ "sources": [
162
+ "src/_geoslib.pyx",
163
+ ],
164
+ "libraries": [
165
+ "geos_c",
166
+ ],
167
+ "include_dirs": include_dirs,
168
+ "library_dirs": library_dirs,
169
+ "runtime_library_dirs": runtime_library_dirs,
170
+ }
171
+ ),
161
172
]
162
173
for ext in ext_modules:
163
174
ext.cython_directives = [
164
175
("language_level", str(sys.version_info[0])),
165
- ][:1 + int(cython_major_version >= 3)]
176
+ ][: 1 + int(cython_major_version >= 3)]
166
177
167
178
# Define all the different requirements.
168
179
setup_requires = get_content("requirements-setup.txt", splitlines=True)
@@ -172,95 +183,79 @@ def run(self):
172
183
marker1 = '; python_version == "3.2"'
173
184
marker2 = '; python_version >= "2.7"'
174
185
setup_requires = [
175
- item.replace(marker1, "").replace(marker2, "") for item in setup_requires
176
- if item.endswith(marker1) or item.endswith(marker2)
177
- or "python_version" not in item]
186
+ item.replace(marker1, "").replace(marker2, "")
187
+ for item in setup_requires
188
+ if item.endswith(marker1)
189
+ or item.endswith(marker2)
190
+ or "python_version" not in item
191
+ ]
178
192
install_requires = [
179
- item.replace(marker1, "").replace(marker2, "") for item in install_requires
180
- if item.endswith(marker1) or item.endswith(marker2)
181
- or "python_version" not in item]
193
+ item.replace(marker1, "").replace(marker2, "")
194
+ for item in install_requires
195
+ if item.endswith(marker1)
196
+ or item.endswith(marker2)
197
+ or "python_version" not in item
198
+ ]
182
199
else:
183
200
marker1 = '; python_version == "3.2"'
184
201
setup_requires = [item for item in setup_requires if not item.endswith(marker1)]
185
202
install_requires = [item for item in install_requires if not item.endswith(marker1)]
186
203
187
- setup(**{
188
- "name":
189
- "basemap",
190
- "version":
191
- get_version("mpl_toolkits.basemap"),
192
- "license":
193
- "MIT",
194
- "description":
195
- "Plot data on map projections with matplotlib",
196
- "long_description":
197
- get_content("README.md"),
198
- "long_description_content_type":
199
- "text/markdown",
200
- "url":
201
- "https://matplotlib.org/basemap",
202
- "author":
203
- "Jeff Whitaker",
204
- "author_email":
205
-
206
- "maintainer":
207
- "Víctor Molina García",
208
- "maintainer_email":
209
-
210
- "classifiers": [
211
- "Development Status :: 5 - Production/Stable",
212
- "Intended Audience :: Education",
213
- "Intended Audience :: Science/Research",
214
- "License :: OSI Approved :: MIT License",
215
- "Operating System :: OS Independent",
216
- "Programming Language :: Python :: 2",
217
- "Programming Language :: Python :: 3",
218
- "Topic :: Scientific/Engineering :: Visualization",
219
- "Topic :: Software Development :: Libraries :: Python Modules",
220
- ],
221
- "keywords": [
222
- "GIS",
223
- "maps",
224
- "plots",
225
- ],
226
- "package_dir":
227
- {"": "src"},
228
- "packages":
229
- find_namespace_packages(where="src"),
230
- "ext_modules":
231
- ext_modules,
232
- "data_files":
233
- data_files,
234
- "python_requires":
235
- ", ".join([
236
- ">=3.9",
237
- "<3.13",
238
- ]),
239
- "setup_requires":
240
- setup_requires,
241
- "install_requires":
242
- install_requires,
243
- "extras_require": {
244
- "doc":
245
- get_content("requirements-doc.txt", splitlines=True),
246
- "lint":
247
- get_content("requirements-lint.txt", splitlines=True),
248
- "test":
249
- get_content("requirements-test.txt", splitlines=True),
250
- "owslib":
251
- get_content("requirements-owslib.txt", splitlines=True),
252
- "pillow":
253
- get_content("requirements-pillow.txt", splitlines=True),
254
- },
255
- "cmdclass": {
256
- "sdist": basemap_sdist,
257
- },
258
- "project_urls": {
259
- "Bug Tracker":
260
- "https://github.com/matplotlib/basemap/issues",
261
- "Documentation":
262
- "https://matplotlib.org/basemap/",
263
- "Source":
264
- "https://github.com/matplotlib/basemap",
265
- },
266
- })
204
+ setup(
205
+ **{
206
+ "name": "basemap",
207
+ "version": get_version("mpl_toolkits.basemap"),
208
+ "license": "MIT",
209
+ "description": "Plot data on map projections with matplotlib",
210
+ "long_description": get_content("README.md"),
211
+ "long_description_content_type": "text/markdown",
212
+ "url": "https://matplotlib.org/basemap",
213
+ "author": "Jeff Whitaker",
214
+ "author_email": "
[email protected] ",
215
+ "maintainer": "Víctor Molina García",
216
+ "maintainer_email": "
[email protected] ",
217
+ "classifiers": [
218
+ "Development Status :: 5 - Production/Stable",
219
+ "Intended Audience :: Education",
220
+ "Intended Audience :: Science/Research",
221
+ "License :: OSI Approved :: MIT License",
222
+ "Operating System :: OS Independent",
223
+ "Programming Language :: Python :: 2",
224
+ "Programming Language :: Python :: 3",
225
+ "Topic :: Scientific/Engineering :: Visualization",
226
+ "Topic :: Software Development :: Libraries :: Python Modules",
227
+ ],
228
+ "keywords": [
229
+ "GIS",
230
+ "maps",
231
+ "plots",
232
+ ],
233
+ "package_dir": {"": "src"},
234
+ "packages": find_namespace_packages(where="src"),
235
+ "ext_modules": ext_modules,
236
+ "data_files": data_files,
237
+ "python_requires": ", ".join(
238
+ [
239
+ ">=3.9",
240
+ "<3.13",
241
+ ]
242
+ ),
243
+ "setup_requires": setup_requires,
244
+ "install_requires": install_requires,
245
+ "extras_require": {
246
+ "doc": get_content("requirements-doc.txt", splitlines=True),
247
+ "lint": get_content("requirements-lint.txt", splitlines=True),
248
+ "test": get_content("requirements-test.txt", splitlines=True),
249
+ "owslib": get_content("requirements-owslib.txt", splitlines=True),
250
+ "pillow": get_content("requirements-pillow.txt", splitlines=True),
251
+ },
252
+ "cmdclass": {
253
+ "sdist": basemap_sdist,
254
+ },
255
+ "project_urls": {
256
+ "Bug Tracker": "https://github.com/matplotlib/basemap/issues",
257
+ "Documentation": "https://matplotlib.org/basemap/",
258
+ "Source": "https://github.com/matplotlib/basemap",
259
+ },
260
+ }
261
+ )
0 commit comments