geoarray 0.19.2__tar.gz → 0.20.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {geoarray-0.19.2 → geoarray-0.20.1}/CONTRIBUTING.rst +4 -4
- {geoarray-0.19.2 → geoarray-0.20.1}/HISTORY.rst +21 -1
- {geoarray-0.19.2/geoarray.egg-info → geoarray-0.20.1}/PKG-INFO +49 -41
- {geoarray-0.19.2 → geoarray-0.20.1}/README.rst +6 -6
- geoarray-0.20.1/_tasks.py +174 -0
- geoarray-0.20.1/env_info__dev/pixi-info.txt +105 -0
- geoarray-0.20.1/env_info__dev/pixi-list.json +10443 -0
- geoarray-0.20.1/env_info__dev/pixi-list.txt +305 -0
- {geoarray-0.19.2 → geoarray-0.20.1}/geoarray/__init__.py +1 -1
- {geoarray-0.19.2 → geoarray-0.20.1}/geoarray/baseclasses.py +256 -254
- {geoarray-0.19.2 → geoarray-0.20.1}/geoarray/masks.py +25 -25
- {geoarray-0.19.2 → geoarray-0.20.1}/geoarray/metadata.py +29 -30
- {geoarray-0.19.2 → geoarray-0.20.1}/geoarray/subsetting.py +17 -15
- {geoarray-0.19.2 → geoarray-0.20.1}/geoarray/version.py +3 -3
- geoarray-0.20.1/pixi.lock +14415 -0
- geoarray-0.20.1/pyproject.toml +255 -0
- geoarray-0.20.1/report.html +26 -0
- geoarray-0.19.2/.coveragerc +0 -27
- geoarray-0.19.2/.editorconfig +0 -21
- geoarray-0.19.2/.gitattributes +0 -3
- geoarray-0.19.2/.github/ISSUE_TEMPLATE.md +0 -15
- geoarray-0.19.2/.gitlab-ci.yml +0 -141
- geoarray-0.19.2/MANIFEST.in +0 -13
- geoarray-0.19.2/Makefile +0 -121
- geoarray-0.19.2/PKG-INFO +0 -173
- geoarray-0.19.2/docs/Makefile +0 -177
- geoarray-0.19.2/docs/_build/html/_static/file.png +0 -0
- geoarray-0.19.2/docs/_build/html/_static/minus.png +0 -0
- geoarray-0.19.2/docs/_build/html/_static/plus.png +0 -0
- geoarray-0.19.2/docs/authors.rst +0 -1
- geoarray-0.19.2/docs/conf.py +0 -275
- geoarray-0.19.2/docs/contributing.rst +0 -1
- geoarray-0.19.2/docs/history.rst +0 -1
- geoarray-0.19.2/docs/index.rst +0 -21
- geoarray-0.19.2/docs/installation.rst +0 -51
- geoarray-0.19.2/docs/make.bat +0 -242
- geoarray-0.19.2/docs/readme.rst +0 -1
- geoarray-0.19.2/docs/usage.rst +0 -7
- geoarray-0.19.2/examples/notebooks/features_and_usage.ipynb +0 -770
- geoarray-0.19.2/geoarray.egg-info/SOURCES.txt +0 -41
- geoarray-0.19.2/geoarray.egg-info/dependency_links.txt +0 -1
- geoarray-0.19.2/geoarray.egg-info/not-zip-safe +0 -1
- geoarray-0.19.2/geoarray.egg-info/requires.txt +0 -35
- geoarray-0.19.2/geoarray.egg-info/top_level.txt +0 -1
- geoarray-0.19.2/pyproject.toml +0 -124
- geoarray-0.19.2/setup.cfg +0 -4
- geoarray-0.19.2/tox.ini +0 -18
- {geoarray-0.19.2 → geoarray-0.20.1}/.gitignore +0 -0
- {geoarray-0.19.2 → geoarray-0.20.1}/AUTHORS.rst +0 -0
- {geoarray-0.19.2 → geoarray-0.20.1}/LICENSE +0 -0
|
@@ -15,7 +15,7 @@ Types of Contributions
|
|
|
15
15
|
Report Bugs
|
|
16
16
|
~~~~~~~~~~~
|
|
17
17
|
|
|
18
|
-
Report bugs at https://git.gfz
|
|
18
|
+
Report bugs at https://git.gfz.de/danschef/geoarray/-/work_items.
|
|
19
19
|
|
|
20
20
|
If you are reporting a bug, please include:
|
|
21
21
|
|
|
@@ -45,7 +45,7 @@ articles, and such.
|
|
|
45
45
|
Submit Feedback
|
|
46
46
|
~~~~~~~~~~~~~~~
|
|
47
47
|
|
|
48
|
-
The best way to send feedback is to file an issue at https://git.gfz
|
|
48
|
+
The best way to send feedback is to file an issue at https://git.gfz.de/danschef/geoarray/-/work_items.
|
|
49
49
|
|
|
50
50
|
If you are proposing a feature:
|
|
51
51
|
|
|
@@ -62,7 +62,7 @@ Ready to contribute? Here's how to set up `geoarray` for local development.
|
|
|
62
62
|
1. Fork the `geoarray` repo on GitHub.
|
|
63
63
|
2. Clone your fork locally::
|
|
64
64
|
|
|
65
|
-
$ git clone https://git.gfz
|
|
65
|
+
$ git clone https://git.gfz.de/danschef/geoarray.git
|
|
66
66
|
|
|
67
67
|
3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development::
|
|
68
68
|
|
|
@@ -101,7 +101,7 @@ Before you submit a pull request, check that it meets these guidelines:
|
|
|
101
101
|
2. If the pull request adds functionality, the docs should be updated. Put
|
|
102
102
|
your new functionality into a function with a docstring, and add the
|
|
103
103
|
feature to the list in README.rst.
|
|
104
|
-
3. The pull request should work for Python 3.
|
|
104
|
+
3. The pull request should work for Python 3.11+. Check
|
|
105
105
|
https://travis-ci.org/danschef/geoarray/pull_requests
|
|
106
106
|
and make sure that the tests pass for all supported Python versions.
|
|
107
107
|
|
|
@@ -2,11 +2,31 @@
|
|
|
2
2
|
History
|
|
3
3
|
=======
|
|
4
4
|
|
|
5
|
+
0.20.1 (2026-11-10)
|
|
6
|
+
-------------------
|
|
7
|
+
|
|
8
|
+
* !73: Enable forward references (needed for Python < 3.14).
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
0.20.0 (2026-11-10)
|
|
12
|
+
-------------------
|
|
13
|
+
|
|
14
|
+
* !65: Replaced deprecated URLs due to GFZ renaming.
|
|
15
|
+
* !66: Added support for pixi. Migrated build-backend to hatchling. Switched CI to Pixi. Introduced separate
|
|
16
|
+
environment files for runtime and dev environments. Dropped all deprecated files. Replaced deprecated URLs.
|
|
17
|
+
* !67: Added support for Python 3.13 and 3.14 and dropped 3.8, 3.9, and 3.10 due to end-of-life-status.
|
|
18
|
+
* !68: Fixed matplotlib warning regarding deprecated set_bad method call in _get_cmap_vmin_vmax.
|
|
19
|
+
* !69: Fixed Pandas4Warning and added separate tests for GeoArray.save with ENVI and GTiff format.
|
|
20
|
+
* !70: Updated copyright.
|
|
21
|
+
* !71: Converted all strings to f-strings.
|
|
22
|
+
* !72: Switch to type hints compliant to PEP 484 and PEP 613.
|
|
23
|
+
|
|
24
|
+
|
|
5
25
|
0.19.2 (2025-09-11)
|
|
6
26
|
-------------------
|
|
7
27
|
|
|
8
28
|
* !60/!61: Updated GFZ URLs and institute name.
|
|
9
|
-
* !62: Added GitLeaks CI job to auto-detect
|
|
29
|
+
* !62: Added GitLeaks CI job to auto-detect secrets.
|
|
10
30
|
* !63: Updated copyrights.
|
|
11
31
|
* !64: Skip corrupted band names in the metadata and raise a RuntimeWarning.
|
|
12
32
|
|
|
@@ -1,57 +1,65 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: geoarray
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.20.1
|
|
4
4
|
Summary: Fast Python interface for geodata - either on disk or in memory
|
|
5
|
+
Project-URL: Source code, https://git.gfz.de/danschef/geoarray
|
|
6
|
+
Project-URL: Issue Tracker, https://git.gfz.de/danschef/geoarray/-/work_items
|
|
7
|
+
Project-URL: Documentation, https://danschef.git-pages.gfz-potsdam.de/geoarray/doc/
|
|
8
|
+
Project-URL: Change log, https://git.gfz.de/danschef/geoarray/-/blob/main/HISTORY.rst
|
|
5
9
|
Author-email: Daniel Scheffler <daniel.scheffler@gfz.de>
|
|
6
10
|
License-Expression: Apache-2.0
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Project-URL: Change log, https://git.gfz-potsdam.de/danschef/geoarray/-/blob/main/HISTORY.rst
|
|
11
|
-
Keywords: geoarray,geoprocessing,gdal,numpy
|
|
11
|
+
License-File: AUTHORS.rst
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: gdal,geoarray,geoprocessing,numpy
|
|
12
14
|
Classifier: Development Status :: 4 - Beta
|
|
13
15
|
Classifier: Intended Audience :: Developers
|
|
14
16
|
Classifier: Natural Language :: English
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
License-File: AUTHORS.rst
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Requires-Python: >=3.11
|
|
24
22
|
Requires-Dist: cartopy>=0.20
|
|
25
23
|
Requires-Dist: dill
|
|
26
24
|
Requires-Dist: gdal>=3.8.0
|
|
27
25
|
Requires-Dist: matplotlib
|
|
28
26
|
Requires-Dist: numpy
|
|
29
27
|
Requires-Dist: pandas
|
|
30
|
-
Requires-Dist:
|
|
28
|
+
Requires-Dist: py-tools-ds>=0.19.0
|
|
31
29
|
Requires-Dist: scikit-image
|
|
32
30
|
Requires-Dist: shapely
|
|
33
|
-
Provides-Extra:
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: flake8; extra == 'dev'
|
|
33
|
+
Requires-Dist: folium; extra == 'dev'
|
|
34
|
+
Requires-Dist: geojson; extra == 'dev'
|
|
35
|
+
Requires-Dist: holoviews>1.12.7; extra == 'dev'
|
|
36
|
+
Requires-Dist: parameterized; extra == 'dev'
|
|
37
|
+
Requires-Dist: pycodestyle; extra == 'dev'
|
|
38
|
+
Requires-Dist: pydocstyle; extra == 'dev'
|
|
39
|
+
Requires-Dist: pytest; extra == 'dev'
|
|
40
|
+
Requires-Dist: pytest-cov; extra == 'dev'
|
|
41
|
+
Requires-Dist: pytest-reporter-html1; extra == 'dev'
|
|
42
|
+
Requires-Dist: sphinx-argparse; extra == 'dev'
|
|
43
|
+
Requires-Dist: sphinx-rtd-theme; extra == 'dev'
|
|
44
|
+
Requires-Dist: urlchecker; extra == 'dev'
|
|
37
45
|
Provides-Extra: doc
|
|
38
|
-
Requires-Dist: sphinx-argparse; extra ==
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Provides-Extra:
|
|
41
|
-
Requires-Dist:
|
|
42
|
-
Requires-Dist:
|
|
43
|
-
Requires-Dist:
|
|
44
|
-
Requires-Dist: urlchecker; extra == "test"
|
|
45
|
-
Requires-Dist: parameterized; extra == "test"
|
|
46
|
+
Requires-Dist: sphinx-argparse; extra == 'doc'
|
|
47
|
+
Requires-Dist: sphinx-rtd-theme; extra == 'doc'
|
|
48
|
+
Provides-Extra: interactive-plotting
|
|
49
|
+
Requires-Dist: folium; extra == 'interactive-plotting'
|
|
50
|
+
Requires-Dist: geojson; extra == 'interactive-plotting'
|
|
51
|
+
Requires-Dist: holoviews>1.12.7; extra == 'interactive-plotting'
|
|
46
52
|
Provides-Extra: lint
|
|
47
|
-
Requires-Dist: flake8; extra ==
|
|
48
|
-
Requires-Dist: pycodestyle; extra ==
|
|
49
|
-
Requires-Dist: pydocstyle; extra ==
|
|
50
|
-
Provides-Extra:
|
|
51
|
-
Requires-Dist:
|
|
52
|
-
Requires-Dist:
|
|
53
|
-
Requires-Dist:
|
|
54
|
-
|
|
53
|
+
Requires-Dist: flake8; extra == 'lint'
|
|
54
|
+
Requires-Dist: pycodestyle; extra == 'lint'
|
|
55
|
+
Requires-Dist: pydocstyle; extra == 'lint'
|
|
56
|
+
Provides-Extra: test
|
|
57
|
+
Requires-Dist: parameterized; extra == 'test'
|
|
58
|
+
Requires-Dist: pytest; extra == 'test'
|
|
59
|
+
Requires-Dist: pytest-cov; extra == 'test'
|
|
60
|
+
Requires-Dist: pytest-reporter-html1; extra == 'test'
|
|
61
|
+
Requires-Dist: urlchecker; extra == 'test'
|
|
62
|
+
Description-Content-Type: text/x-rst
|
|
55
63
|
|
|
56
64
|
========
|
|
57
65
|
geoarray
|
|
@@ -71,16 +79,16 @@ and provides functions for geospatial processing.
|
|
|
71
79
|
Status
|
|
72
80
|
------
|
|
73
81
|
|
|
74
|
-
.. image:: https://git.gfz
|
|
75
|
-
:target: https://git.gfz
|
|
76
|
-
.. image:: https://git.gfz
|
|
82
|
+
.. image:: https://git.gfz.de/danschef/geoarray/badges/main/pipeline.svg
|
|
83
|
+
:target: https://git.gfz.de/danschef/geoarray/-/commits/main
|
|
84
|
+
.. image:: https://git.gfz.de/danschef/geoarray/badges/main/coverage.svg
|
|
77
85
|
:target: https://danschef.git-pages.gfz-potsdam.de/geoarray/coverage/
|
|
78
86
|
.. image:: https://img.shields.io/pypi/v/geoarray.svg
|
|
79
87
|
:target: https://pypi.python.org/pypi/geoarray
|
|
80
88
|
.. image:: https://img.shields.io/conda/vn/conda-forge/geoarray.svg
|
|
81
89
|
:target: https://anaconda.org/conda-forge/geoarray
|
|
82
90
|
.. image:: https://img.shields.io/pypi/l/geoarray.svg
|
|
83
|
-
:target: https://git.gfz
|
|
91
|
+
:target: https://git.gfz.de/danschef/geoarray/blob/main/LICENSE
|
|
84
92
|
.. image:: https://img.shields.io/pypi/pyversions/geoarray.svg
|
|
85
93
|
:target: https://img.shields.io/pypi/pyversions/geoarray.svg
|
|
86
94
|
.. image:: https://img.shields.io/pypi/dm/geoarray.svg
|
|
@@ -155,7 +163,7 @@ History / Changelog
|
|
|
155
163
|
-------------------
|
|
156
164
|
|
|
157
165
|
You can find the protocol of recent changes in the geoarray package
|
|
158
|
-
`here <https://git.gfz
|
|
166
|
+
`here <https://git.gfz.de/danschef/geoarray/-/blob/main/HISTORY.rst>`__.
|
|
159
167
|
|
|
160
168
|
|
|
161
169
|
Credits
|
|
@@ -168,6 +176,6 @@ This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypack
|
|
|
168
176
|
.. _coverage: https://danschef.git-pages.gfz-potsdam.de/geoarray/coverage/
|
|
169
177
|
.. _pytest: https://danschef.git-pages.gfz-potsdam.de/geoarray/test_reports/report.html
|
|
170
178
|
.. _conda: https://docs.conda.io/
|
|
171
|
-
.. _here: https://git.gfz
|
|
179
|
+
.. _here: https://git.gfz.de/danschef/geoarray/-/blob/main/examples/notebooks/features_and_usage.ipynb
|
|
172
180
|
.. _pip: https://pip.pypa.io
|
|
173
181
|
.. _Python installation guide: http://docs.python-guide.org/en/latest/starting/installation/
|
|
@@ -16,16 +16,16 @@ and provides functions for geospatial processing.
|
|
|
16
16
|
Status
|
|
17
17
|
------
|
|
18
18
|
|
|
19
|
-
.. image:: https://git.gfz
|
|
20
|
-
:target: https://git.gfz
|
|
21
|
-
.. image:: https://git.gfz
|
|
19
|
+
.. image:: https://git.gfz.de/danschef/geoarray/badges/main/pipeline.svg
|
|
20
|
+
:target: https://git.gfz.de/danschef/geoarray/-/commits/main
|
|
21
|
+
.. image:: https://git.gfz.de/danschef/geoarray/badges/main/coverage.svg
|
|
22
22
|
:target: https://danschef.git-pages.gfz-potsdam.de/geoarray/coverage/
|
|
23
23
|
.. image:: https://img.shields.io/pypi/v/geoarray.svg
|
|
24
24
|
:target: https://pypi.python.org/pypi/geoarray
|
|
25
25
|
.. image:: https://img.shields.io/conda/vn/conda-forge/geoarray.svg
|
|
26
26
|
:target: https://anaconda.org/conda-forge/geoarray
|
|
27
27
|
.. image:: https://img.shields.io/pypi/l/geoarray.svg
|
|
28
|
-
:target: https://git.gfz
|
|
28
|
+
:target: https://git.gfz.de/danschef/geoarray/blob/main/LICENSE
|
|
29
29
|
.. image:: https://img.shields.io/pypi/pyversions/geoarray.svg
|
|
30
30
|
:target: https://img.shields.io/pypi/pyversions/geoarray.svg
|
|
31
31
|
.. image:: https://img.shields.io/pypi/dm/geoarray.svg
|
|
@@ -100,7 +100,7 @@ History / Changelog
|
|
|
100
100
|
-------------------
|
|
101
101
|
|
|
102
102
|
You can find the protocol of recent changes in the geoarray package
|
|
103
|
-
`here <https://git.gfz
|
|
103
|
+
`here <https://git.gfz.de/danschef/geoarray/-/blob/main/HISTORY.rst>`__.
|
|
104
104
|
|
|
105
105
|
|
|
106
106
|
Credits
|
|
@@ -113,6 +113,6 @@ This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypack
|
|
|
113
113
|
.. _coverage: https://danschef.git-pages.gfz-potsdam.de/geoarray/coverage/
|
|
114
114
|
.. _pytest: https://danschef.git-pages.gfz-potsdam.de/geoarray/test_reports/report.html
|
|
115
115
|
.. _conda: https://docs.conda.io/
|
|
116
|
-
.. _here: https://git.gfz
|
|
116
|
+
.. _here: https://git.gfz.de/danschef/geoarray/-/blob/main/examples/notebooks/features_and_usage.ipynb
|
|
117
117
|
.. _pip: https://pip.pypa.io
|
|
118
118
|
.. _Python installation guide: http://docs.python-guide.org/en/latest/starting/installation/
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"""Cross-platform task helpers for pixi."""
|
|
2
|
+
|
|
3
|
+
import glob
|
|
4
|
+
import os
|
|
5
|
+
import shutil
|
|
6
|
+
import subprocess
|
|
7
|
+
import sys
|
|
8
|
+
import webbrowser
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def clean_build():
|
|
13
|
+
for d in ["build", "dist", ".eggs"]:
|
|
14
|
+
shutil.rmtree(d, ignore_errors=True)
|
|
15
|
+
for p in glob.glob("**/*.egg-info", recursive=True):
|
|
16
|
+
shutil.rmtree(p, ignore_errors=True)
|
|
17
|
+
for p in glob.glob("**/*.egg", recursive=True):
|
|
18
|
+
os.remove(p)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def clean_pyc():
|
|
22
|
+
for pat in ["**/*.pyc", "**/*.pyo", "**/*~"]:
|
|
23
|
+
for p in glob.glob(pat, recursive=True):
|
|
24
|
+
os.remove(p)
|
|
25
|
+
for p in glob.glob("**/__pycache__", recursive=True):
|
|
26
|
+
shutil.rmtree(p, ignore_errors=True)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def clean_test():
|
|
30
|
+
for f in [".coverage", "report.html", "report.xml", "coverage.xml"]:
|
|
31
|
+
if os.path.exists(f):
|
|
32
|
+
os.remove(f)
|
|
33
|
+
for d in ["htmlcov", ".pytest_cache"]:
|
|
34
|
+
shutil.rmtree(d, ignore_errors=True)
|
|
35
|
+
for p in glob.glob(".coverage.*"):
|
|
36
|
+
os.remove(p)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def docs(pkg):
|
|
40
|
+
for f in [os.path.join("docs", pkg + ".rst"), os.path.join("docs", "modules.rst")]:
|
|
41
|
+
if os.path.exists(f):
|
|
42
|
+
os.remove(f)
|
|
43
|
+
subprocess.run(
|
|
44
|
+
["sphinx-apidoc", pkg, "-o", "docs/", "--private",
|
|
45
|
+
"--doc-project", "Python API reference"],
|
|
46
|
+
check=True,
|
|
47
|
+
)
|
|
48
|
+
shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True)
|
|
49
|
+
subprocess.run(
|
|
50
|
+
["sphinx-build", "-b", "html", "docs", os.path.join("docs", "_build", "html")],
|
|
51
|
+
check=True,
|
|
52
|
+
)
|
|
53
|
+
webbrowser.open(os.path.join("docs", "_build", "html", "index.html"))
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def dist():
|
|
57
|
+
subprocess.run([sys.executable, "-m", "build"], check=True)
|
|
58
|
+
for f in os.listdir("dist"):
|
|
59
|
+
print(f)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def pytest(pkg):
|
|
63
|
+
"""Run pytest.
|
|
64
|
+
|
|
65
|
+
- puts the coverage results in the folder 'htmlcov'
|
|
66
|
+
- generates cobertura 'coverage.xml' (needed to show coverage in GitLab MR changes)
|
|
67
|
+
- generates 'report.html' based on pytest-reporter-html1
|
|
68
|
+
- generates JUnit 'report.xml' to show the test report as a new tab in a GitLab MR
|
|
69
|
+
|
|
70
|
+
NOTE: Additional options pytest and coverage (plugin pytest-cov) are defined in .pytest.ini and .coveragerc.
|
|
71
|
+
"""
|
|
72
|
+
import pytest
|
|
73
|
+
return pytest.main(
|
|
74
|
+
[
|
|
75
|
+
"tests",
|
|
76
|
+
"--verbosity=3",
|
|
77
|
+
"--color=yes",
|
|
78
|
+
"--tb=short",
|
|
79
|
+
f"--cov={pkg}",
|
|
80
|
+
"--cov-report=html:htmlcov",
|
|
81
|
+
"--cov-report=term-missing",
|
|
82
|
+
"--cov-report=xml:coverage.xml",
|
|
83
|
+
"--template=html1/index.html",
|
|
84
|
+
"--report=report.html",
|
|
85
|
+
"--junitxml=report.xml",
|
|
86
|
+
]
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def lint(pkg):
|
|
91
|
+
def _run_check(command):
|
|
92
|
+
result = subprocess.run(command)
|
|
93
|
+
if result.returncode != 0:
|
|
94
|
+
sys.exit(result.returncode)
|
|
95
|
+
|
|
96
|
+
_run_check(["flake8", "--max-line-length=120", pkg])
|
|
97
|
+
_run_check(["pycodestyle", pkg, "--max-line-length=120"])
|
|
98
|
+
|
|
99
|
+
# Report docstring violations, but don't fail the CI job.
|
|
100
|
+
subprocess.run(
|
|
101
|
+
["pydocstyle", pkg],
|
|
102
|
+
check=False,
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def urlcheck():
|
|
107
|
+
try:
|
|
108
|
+
result = subprocess.run(
|
|
109
|
+
[
|
|
110
|
+
"lychee",
|
|
111
|
+
"**/*.md",
|
|
112
|
+
"**/*.rst",
|
|
113
|
+
"**/*.py",
|
|
114
|
+
"**/*.json",
|
|
115
|
+
"--no-progress",
|
|
116
|
+
"--timeout", "2",
|
|
117
|
+
"--verbose",
|
|
118
|
+
"--exclude-path", ".pixi",
|
|
119
|
+
"--exclude-path", ".git",
|
|
120
|
+
# "forbidden" websites
|
|
121
|
+
"--exclude", "https://www.gnu.org/licenses/",
|
|
122
|
+
],
|
|
123
|
+
timeout=120,
|
|
124
|
+
)
|
|
125
|
+
except subprocess.TimeoutExpired:
|
|
126
|
+
print("ERROR: lychee timed out after 120 seconds.")
|
|
127
|
+
raise SystemExit(1)
|
|
128
|
+
|
|
129
|
+
if result.returncode != 0:
|
|
130
|
+
raise SystemExit(result.returncode)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def create_env_info(env_name: str):
|
|
134
|
+
"""Capture information about the current Pixi environment."""
|
|
135
|
+
out = Path(f"env_info__{env_name}")
|
|
136
|
+
out.mkdir(exist_ok=True)
|
|
137
|
+
|
|
138
|
+
(out / "pixi-list.txt").write_text(
|
|
139
|
+
subprocess.check_output(["pixi", "list", "-e", env_name], text=True)
|
|
140
|
+
)
|
|
141
|
+
(out / "pixi-info.txt").write_text(
|
|
142
|
+
subprocess.check_output(["pixi", "info"], text=True)
|
|
143
|
+
)
|
|
144
|
+
(out / "pixi-list.json").write_text(
|
|
145
|
+
subprocess.check_output(
|
|
146
|
+
["pixi", "list", "-e", env_name, "--json"], text=True
|
|
147
|
+
)
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
if __name__ == "__main__":
|
|
152
|
+
task = sys.argv[1] if len(sys.argv) > 1 else None
|
|
153
|
+
extra = sys.argv[2] if len(sys.argv) > 2 else None
|
|
154
|
+
tasks = {
|
|
155
|
+
"clean-build": clean_build,
|
|
156
|
+
"clean-pyc": clean_pyc,
|
|
157
|
+
"clean-test": clean_test,
|
|
158
|
+
"docs": lambda: docs(extra) if extra else sys.exit("docs requires package name"),
|
|
159
|
+
"dist": dist,
|
|
160
|
+
"pytest": lambda: pytest(extra) if extra else sys.exit("pytest requires package name"),
|
|
161
|
+
"lint": lambda: lint(extra) if extra else sys.exit("lint requires package name"),
|
|
162
|
+
"urlcheck": urlcheck,
|
|
163
|
+
"create-env-info": lambda: (create_env_info(extra) if extra
|
|
164
|
+
else sys.exit("env-info requires environment name"))
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if task not in tasks:
|
|
168
|
+
print(f"Unknown task: {task}. Available: {', '.join(tasks)}")
|
|
169
|
+
sys.exit(1)
|
|
170
|
+
|
|
171
|
+
result = tasks[task]()
|
|
172
|
+
|
|
173
|
+
if isinstance(result, int):
|
|
174
|
+
sys.exit(result)
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
System
|
|
2
|
+
------------
|
|
3
|
+
Pixi version: 0.81.0
|
|
4
|
+
TLS backend: rustls
|
|
5
|
+
Platform: linux-64
|
|
6
|
+
Virtual packages: __unix=0=0
|
|
7
|
+
: __linux=5.14.21=0
|
|
8
|
+
: __glibc=2.31=0
|
|
9
|
+
: __archspec=1=nehalem
|
|
10
|
+
Cache dir: /root/.cache/rattler/cache
|
|
11
|
+
Auth storage: /root/.rattler/credentials.json
|
|
12
|
+
Config locations: No config files found
|
|
13
|
+
|
|
14
|
+
Global
|
|
15
|
+
------------
|
|
16
|
+
Bin dir: /root/.pixi/bin
|
|
17
|
+
Environment dir: /root/.pixi/envs
|
|
18
|
+
Manifest dir: /root/.pixi/manifests/pixi-global.toml
|
|
19
|
+
|
|
20
|
+
Workspace
|
|
21
|
+
------------
|
|
22
|
+
Name: geoarray
|
|
23
|
+
Manifest file: /builds/danschef/geoarray/pyproject.toml
|
|
24
|
+
Last updated: 10-11-2026 15:22:25
|
|
25
|
+
|
|
26
|
+
Environments
|
|
27
|
+
------------
|
|
28
|
+
Environment: default
|
|
29
|
+
Features: default
|
|
30
|
+
Channels: conda-forge
|
|
31
|
+
Dependency count: 11
|
|
32
|
+
Dependencies: pip, python, cartopy, dill, gdal, matplotlib, numpy, pandas, py-tools-ds, scikit-image, shapely
|
|
33
|
+
PyPI Dependencies: cartopy, dill, gdal, matplotlib, numpy, pandas, py-tools-ds, scikit-image, shapely
|
|
34
|
+
Target platforms: win-64, osx-64, osx-arm64, linux-64
|
|
35
|
+
Resolved platform: linux-64 (archspec=x86_64, glibc=2.28, linux=4.18, __unix)
|
|
36
|
+
Minimum platform: linux-64 (__glibc >=2.17,<3.0.a0, __glibc >=2.28,<3.0.a0, __unix)
|
|
37
|
+
Prefix location: /builds/danschef/geoarray/.pixi/envs/default
|
|
38
|
+
Tasks: gitlab_ci_docker, clean-build, install, create-env-info, clean-test, clean, clean-pyc
|
|
39
|
+
|
|
40
|
+
Environment: test
|
|
41
|
+
Features: test, default
|
|
42
|
+
Channels: conda-forge
|
|
43
|
+
Dependency count: 16
|
|
44
|
+
Dependencies: coverage, parameterized, pixi-pycharm, pytest, pytest-cov, pip, python, cartopy, dill, gdal, matplotlib, numpy, pandas, py-tools-ds, scikit-image, shapely
|
|
45
|
+
PyPI Dependencies: pytest-reporter-html1, pytest, pytest-cov, urlchecker, parameterized, cartopy, dill, gdal, matplotlib, numpy, pandas, py-tools-ds, scikit-image, shapely
|
|
46
|
+
Target platforms: osx-64, win-64, linux-64, osx-arm64
|
|
47
|
+
Minimum platform: available after `pixi install`
|
|
48
|
+
Prefix location: /builds/danschef/geoarray/.pixi/envs/test
|
|
49
|
+
Tasks: gitlab_ci_docker, clean-build, install, create-env-info, clean-test, clean, clean-pyc, test, pytest
|
|
50
|
+
|
|
51
|
+
Environment: doc
|
|
52
|
+
Features: doc
|
|
53
|
+
Channels: conda-forge
|
|
54
|
+
Dependency count: 3
|
|
55
|
+
Dependencies: docutils, sphinx, sphinx-argparse
|
|
56
|
+
PyPI Dependencies: sphinx-argparse, sphinx-rtd-theme
|
|
57
|
+
Target platforms: osx-64, win-64, osx-arm64, linux-64
|
|
58
|
+
Minimum platform: available after `pixi install`
|
|
59
|
+
Prefix location: /builds/danschef/geoarray/.pixi/envs/doc
|
|
60
|
+
Tasks: docs
|
|
61
|
+
|
|
62
|
+
Environment: lint
|
|
63
|
+
Features: lint
|
|
64
|
+
Channels: conda-forge
|
|
65
|
+
Dependency count: 4
|
|
66
|
+
Dependencies: flake8, pycodestyle, pydocstyle, pylint
|
|
67
|
+
PyPI Dependencies: flake8, pycodestyle, pydocstyle
|
|
68
|
+
Target platforms: win-64, osx-64, linux-64, osx-arm64
|
|
69
|
+
Minimum platform: available after `pixi install`
|
|
70
|
+
Prefix location: /builds/danschef/geoarray/.pixi/envs/lint
|
|
71
|
+
Tasks: lint
|
|
72
|
+
|
|
73
|
+
Environment: urlcheck
|
|
74
|
+
Features: urlcheck
|
|
75
|
+
Channels: conda-forge
|
|
76
|
+
Dependency count: 1
|
|
77
|
+
Dependencies: lychee
|
|
78
|
+
Target platforms: osx-arm64, win-64, linux-64, osx-64
|
|
79
|
+
Minimum platform: available after `pixi install`
|
|
80
|
+
Prefix location: /builds/danschef/geoarray/.pixi/envs/urlcheck
|
|
81
|
+
Tasks: urlcheck
|
|
82
|
+
|
|
83
|
+
Environment: deploy
|
|
84
|
+
Features: deploy
|
|
85
|
+
Channels: conda-forge
|
|
86
|
+
Dependency count: 2
|
|
87
|
+
Dependencies: python-build, twine
|
|
88
|
+
Target platforms: win-64, linux-64, osx-arm64, osx-64
|
|
89
|
+
Minimum platform: available after `pixi install`
|
|
90
|
+
Prefix location: /builds/danschef/geoarray/.pixi/envs/deploy
|
|
91
|
+
Tasks: dist, release
|
|
92
|
+
|
|
93
|
+
Environment: dev
|
|
94
|
+
Features: interactive_plotting, test, doc, lint, urlcheck, deploy, default
|
|
95
|
+
Channels: conda-forge
|
|
96
|
+
Dependency count: 29
|
|
97
|
+
Dependencies: folium, geojson, holoviews, coverage, parameterized, pixi-pycharm, pytest, pytest-cov, docutils, sphinx, sphinx-argparse, flake8, pycodestyle, pydocstyle, pylint, lychee, python-build, twine, pip, python, cartopy, dill, gdal, matplotlib, numpy, pandas, py-tools-ds, scikit-image, shapely
|
|
98
|
+
PyPI Dependencies: folium, geojson, holoviews, pytest-reporter-html1, pytest, pytest-cov, urlchecker, parameterized, sphinx-argparse, sphinx-rtd-theme, flake8, pycodestyle, pydocstyle, cartopy, dill, gdal, matplotlib, numpy, pandas, py-tools-ds, scikit-image, shapely
|
|
99
|
+
Target platforms: linux-64, win-64, osx-64, osx-arm64
|
|
100
|
+
Resolved platform: linux-64 (archspec=x86_64, glibc=2.28, linux=4.18, __unix)
|
|
101
|
+
Minimum platform: linux-64 (__glibc >=2.17,<3.0.a0, __glibc >=2.28,<3.0.a0, __linux, __unix)
|
|
102
|
+
Prefix location: /builds/danschef/geoarray/.pixi/envs/dev
|
|
103
|
+
Tasks: gitlab_ci_docker, clean-build, install, create-env-info, clean-test, clean, clean-pyc, dist, release, urlcheck, lint, docs, test, pytest
|
|
104
|
+
|
|
105
|
+
|