From a9b82a5c93c67fa71a263bcc265130082d6afbbc Mon Sep 17 00:00:00 2001 From: MAfarrag Date: Sun, 9 Aug 2026 18:12:45 +0000 Subject: [PATCH 1/2] =?UTF-8?q?bump:=20version=200.49.0=20=E2=86=92=200.50?= =?UTF-8?q?.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/change-log.md | 19 +++++++++++++++++++ pyproject.toml | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) 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" }] From 4307d2a8d877913fdddcd56afb1a8e7a1dd09061 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Sun, 9 Aug 2026 22:26:58 +0200 Subject: [PATCH 2/2] fix(ci): only set PIP_BUILD_CONSTRAINT on build-isolation paths Setting PIP_BUILD_CONSTRAINT unconditionally breaks the macOS arm64 build: pip rejects it together with --no-build-isolation (`--build-constraint cannot be used with --no-build-isolation`), which failed the 0.50.0 release bundle on build-macos-wheels (arm64). Set PIP_BUILD_CONSTRAINT only when the GDAL build uses isolation (x86_64 / Linux / Windows); the arm64 --no-build-isolation path is already covered by PIP_CONSTRAINT, which caps its setuptools pre-install. Validated on a bundle dry-run: both macOS jobs green, GDAL built for all Python versions, zero build-constraint / -std=c++11 errors. --- ci/install-and-vendor-osgeo.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) 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",