diff --git a/ci/install-and-vendor-osgeo.py b/ci/install-and-vendor-osgeo.py index 258cc0e957..3272fa1153 100644 --- a/ci/install-and-vendor-osgeo.py +++ b/ci/install-and-vendor-osgeo.py @@ -146,14 +146,13 @@ def install_gdal_python_bindings() -> None: # Cap build-time setuptools (see ci/gdal-build-constraints.txt): 84.0.0 # lets GDAL's setup.py `-std=c++11` reach the C compile of # gdalconst_wrap.c, which Apple clang rejects and breaks the macOS - # wheels. Set BOTH vars: PIP_CONSTRAINT covers the direct install - # (arm64 --no-build-isolation), and PIP_BUILD_CONSTRAINT covers the - # isolated build env (x86_64 / Linux). pip currently honors - # PIP_CONSTRAINT for build deps too but warns it will stop in pip 26.2, - # pointing at PIP_BUILD_CONSTRAINT — so we set both to stay durable. + # wheels. PIP_CONSTRAINT covers the direct install on every path + # (including the arm64 --no-build-isolation setuptools install below). + # PIP_BUILD_CONSTRAINT — the build-isolation-specific var pip 26.2 will + # require — is set later, ONLY when build isolation is used: pip errors + # if it is passed together with --no-build-isolation. _gdal_build_constraints = str(REPO_ROOT / "ci" / "gdal-build-constraints.txt") env.setdefault("PIP_CONSTRAINT", _gdal_build_constraints) - env.setdefault("PIP_BUILD_CONSTRAINT", _gdal_build_constraints) if is_windows: bin_dir, _, lib_dir = _data_layout_roots(prefix) @@ -271,6 +270,15 @@ def install_gdal_python_bindings() -> None: ) extra_pip_args.append("--no-build-isolation") + # PIP_BUILD_CONSTRAINT constrains the ISOLATED build env; pip errors out + # if it is set together with --no-build-isolation. Set it only when the + # GDAL build uses isolation (x86_64 / Linux) — the arm64 + # --no-build-isolation path pre-installs a PIP_CONSTRAINT-capped + # setuptools and is already covered. This future-proofs isolation builds + # for pip 26.2, which stops honoring PIP_CONSTRAINT for build deps. + if "--no-build-isolation" not in extra_pip_args: + env.setdefault("PIP_BUILD_CONSTRAINT", _gdal_build_constraints) + cmd = [ sys.executable, "-m", diff --git a/docs/change-log.md b/docs/change-log.md index 552e86c29c..81b3a0167d 100644 --- a/docs/change-log.md +++ b/docs/change-log.md @@ -1,6 +1,25 @@ # Change log +## 0.50.0 (2026-08-09) + +### BREAKING CHANGE + +- read_multiple_files' `extension` parameter is replaced by a `glob` fnmatch filter +(e.g. `extension="tif"` becomes `glob="*.tif"`). + +### Feat + +- **collection**: consolidate the DatasetCollection readers into from_files and harden the dunders (#942) + +### Fix + +- **ci**: pin build-time setuptools <84 for the GDAL bindings build (#950) + +### Refactor + +- **netcdf**: write to_netcdf through GDAL, no xarray outside the interop methods (#945) + ## 0.49.0 (2026-08-05) ### BREAKING CHANGE diff --git a/pyproject.toml b/pyproject.toml index 4c2dad0ccf..dfb37adb05 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "pyramids-gis" -version = "0.49.0" +version = "0.50.0" description = "GIS utility package" readme = {file = "README.md", content-type = "text/markdown"} authors = [{ name = "Mostafa Farrag", email = "moah.farag@gmail.com" }]