geoarray 0.19.2__tar.gz → 0.20.0__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.
Files changed (50) hide show
  1. {geoarray-0.19.2 → geoarray-0.20.0}/CONTRIBUTING.rst +4 -4
  2. {geoarray-0.19.2 → geoarray-0.20.0}/HISTORY.rst +15 -1
  3. {geoarray-0.19.2/geoarray.egg-info → geoarray-0.20.0}/PKG-INFO +49 -41
  4. {geoarray-0.19.2 → geoarray-0.20.0}/README.rst +6 -6
  5. geoarray-0.20.0/_tasks.py +174 -0
  6. geoarray-0.20.0/env_info__dev/pixi-info.txt +105 -0
  7. geoarray-0.20.0/env_info__dev/pixi-list.json +10443 -0
  8. geoarray-0.20.0/env_info__dev/pixi-list.txt +305 -0
  9. {geoarray-0.19.2 → geoarray-0.20.0}/geoarray/__init__.py +1 -1
  10. {geoarray-0.19.2 → geoarray-0.20.0}/geoarray/baseclasses.py +255 -255
  11. {geoarray-0.19.2 → geoarray-0.20.0}/geoarray/masks.py +23 -25
  12. {geoarray-0.19.2 → geoarray-0.20.0}/geoarray/metadata.py +27 -30
  13. {geoarray-0.19.2 → geoarray-0.20.0}/geoarray/subsetting.py +15 -15
  14. {geoarray-0.19.2 → geoarray-0.20.0}/geoarray/version.py +3 -3
  15. geoarray-0.20.0/pixi.lock +14415 -0
  16. geoarray-0.20.0/pyproject.toml +255 -0
  17. geoarray-0.20.0/report.html +26 -0
  18. geoarray-0.19.2/.coveragerc +0 -27
  19. geoarray-0.19.2/.editorconfig +0 -21
  20. geoarray-0.19.2/.gitattributes +0 -3
  21. geoarray-0.19.2/.github/ISSUE_TEMPLATE.md +0 -15
  22. geoarray-0.19.2/.gitlab-ci.yml +0 -141
  23. geoarray-0.19.2/MANIFEST.in +0 -13
  24. geoarray-0.19.2/Makefile +0 -121
  25. geoarray-0.19.2/PKG-INFO +0 -173
  26. geoarray-0.19.2/docs/Makefile +0 -177
  27. geoarray-0.19.2/docs/_build/html/_static/file.png +0 -0
  28. geoarray-0.19.2/docs/_build/html/_static/minus.png +0 -0
  29. geoarray-0.19.2/docs/_build/html/_static/plus.png +0 -0
  30. geoarray-0.19.2/docs/authors.rst +0 -1
  31. geoarray-0.19.2/docs/conf.py +0 -275
  32. geoarray-0.19.2/docs/contributing.rst +0 -1
  33. geoarray-0.19.2/docs/history.rst +0 -1
  34. geoarray-0.19.2/docs/index.rst +0 -21
  35. geoarray-0.19.2/docs/installation.rst +0 -51
  36. geoarray-0.19.2/docs/make.bat +0 -242
  37. geoarray-0.19.2/docs/readme.rst +0 -1
  38. geoarray-0.19.2/docs/usage.rst +0 -7
  39. geoarray-0.19.2/examples/notebooks/features_and_usage.ipynb +0 -770
  40. geoarray-0.19.2/geoarray.egg-info/SOURCES.txt +0 -41
  41. geoarray-0.19.2/geoarray.egg-info/dependency_links.txt +0 -1
  42. geoarray-0.19.2/geoarray.egg-info/not-zip-safe +0 -1
  43. geoarray-0.19.2/geoarray.egg-info/requires.txt +0 -35
  44. geoarray-0.19.2/geoarray.egg-info/top_level.txt +0 -1
  45. geoarray-0.19.2/pyproject.toml +0 -124
  46. geoarray-0.19.2/setup.cfg +0 -4
  47. geoarray-0.19.2/tox.ini +0 -18
  48. {geoarray-0.19.2 → geoarray-0.20.0}/.gitignore +0 -0
  49. {geoarray-0.19.2 → geoarray-0.20.0}/AUTHORS.rst +0 -0
  50. {geoarray-0.19.2 → geoarray-0.20.0}/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-potsdam.de/danschef/geoarray/issues.
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-potsdam.de/danschef/geoarray/issues.
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-potsdam.de/danschef/geoarray.git
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.8, 3.9, 3.10, 3.11, and 3.12. Check
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,25 @@
2
2
  History
3
3
  =======
4
4
 
5
+ 0.20.0 (2026-11-10)
6
+ -------------------
7
+
8
+ * !65: Replaced deprecated URLs due to GFZ renaming.
9
+ * !66: Added support for pixi. Migrated build-backend to hatchling. Switched CI to Pixi. Introduced separate
10
+ environment files for runtime and dev environments. Dropped all deprecated files. Replaced deprecated URLs.
11
+ * !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.
12
+ * !68: Fixed matplotlib warning regarding deprecated set_bad method call in _get_cmap_vmin_vmax.
13
+ * !69: Fixed Pandas4Warning and added separate tests for GeoArray.save with ENVI and GTiff format.
14
+ * !70: Updated copyright.
15
+ * !71: Converted all strings to f-strings.
16
+ * !72: Switch to type hints compliant to PEP 484 and PEP 613.
17
+
18
+
5
19
  0.19.2 (2025-09-11)
6
20
  -------------------
7
21
 
8
22
  * !60/!61: Updated GFZ URLs and institute name.
9
- * !62: Added GitLeaks CI job to auto-detect sectrets.
23
+ * !62: Added GitLeaks CI job to auto-detect secrets.
10
24
  * !63: Updated copyrights.
11
25
  * !64: Skip corrupted band names in the metadata and raise a RuntimeWarning.
12
26
 
@@ -1,57 +1,65 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: geoarray
3
- Version: 0.19.2
3
+ Version: 0.20.0
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
- Project-URL: Source code, https://git.gfz-potsdam.de/danschef/geoarray
8
- Project-URL: Issue Tracker, https://git.gfz-potsdam.de/danschef/geoarray/-/issues
9
- Project-URL: Documentation, https://danschef.git-pages.gfz-potsdam.de/geoarray/doc/
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
- Requires-Python: >=3.8
21
- Description-Content-Type: text/x-rst
22
- License-File: LICENSE
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: py_tools_ds>=0.19.0
28
+ Requires-Dist: py-tools-ds>=0.19.0
31
29
  Requires-Dist: scikit-image
32
30
  Requires-Dist: shapely
33
- Provides-Extra: interactive-plotting
34
- Requires-Dist: folium; extra == "interactive-plotting"
35
- Requires-Dist: geojson; extra == "interactive-plotting"
36
- Requires-Dist: holoviews>1.12.7; extra == "interactive-plotting"
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 == "doc"
39
- Requires-Dist: sphinx_rtd_theme; extra == "doc"
40
- Provides-Extra: test
41
- Requires-Dist: pytest; extra == "test"
42
- Requires-Dist: pytest-cov; extra == "test"
43
- Requires-Dist: pytest-reporter-html1; extra == "test"
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 == "lint"
48
- Requires-Dist: pycodestyle; extra == "lint"
49
- Requires-Dist: pydocstyle; extra == "lint"
50
- Provides-Extra: dev
51
- Requires-Dist: geoarray[test]; extra == "dev"
52
- Requires-Dist: geoarray[doc]; extra == "dev"
53
- Requires-Dist: geoarray[lint]; extra == "dev"
54
- Dynamic: license-file
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-potsdam.de/danschef/geoarray/badges/main/pipeline.svg
75
- :target: https://git.gfz-potsdam.de/danschef/geoarray/commits/main
76
- .. image:: https://git.gfz-potsdam.de/danschef/geoarray/badges/main/coverage.svg
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-potsdam.de/danschef/geoarray/blob/main/LICENSE
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-potsdam.de/danschef/geoarray/-/blob/main/HISTORY.rst>`__.
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-potsdam.de/danschef/geoarray/-/blob/main/examples/notebooks/features_and_usage.ipynb
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-potsdam.de/danschef/geoarray/badges/main/pipeline.svg
20
- :target: https://git.gfz-potsdam.de/danschef/geoarray/commits/main
21
- .. image:: https://git.gfz-potsdam.de/danschef/geoarray/badges/main/coverage.svg
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-potsdam.de/danschef/geoarray/blob/main/LICENSE
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-potsdam.de/danschef/geoarray/-/blob/main/HISTORY.rst>`__.
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-potsdam.de/danschef/geoarray/-/blob/main/examples/notebooks/features_and_usage.ipynb
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 14:40:45
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: linux-64, osx-arm64, osx-64, win-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: clean-pyc, create-env-info, clean, gitlab_ci_docker, clean-build, install, clean-test
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-arm64, osx-64, win-64, linux-64
47
+ Minimum platform: available after `pixi install`
48
+ Prefix location: /builds/danschef/geoarray/.pixi/envs/test
49
+ Tasks: clean-pyc, create-env-info, clean, gitlab_ci_docker, clean-build, install, clean-test, pytest, test
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, osx-arm64, win-64, 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: linux-64, osx-64, win-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: linux-64, win-64, osx-64, osx-arm64
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: osx-64, osx-arm64, linux-64, win-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: osx-arm64, win-64, osx-64, linux-64
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: clean-pyc, create-env-info, clean, gitlab_ci_docker, clean-build, install, clean-test, dist, release, urlcheck, lint, docs, pytest, test
104
+
105
+