From 5220c41b92a90aa9785744ac404a00aaf414923f Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 18 Oct 2026 08:20:55 +0000 Subject: [PATCH 1/3] build: build the executables with Python 3.14 The Linux and Windows executables embedded Python 3.11. Build both with Python 3.14, set once in the workflow's global PYTHON_VERSION; the Windows job no longer overrides it. On Windows, GDAL comes from a cgohlke/geospatial-wheels wheel, previously hardcoded for GDAL 3.11.1 and cp311 from release v2025.7.4. That release does have a cp314 wheel, but built on 4 July 2025, against a Python 3.14 pre-release, before its ABI was frozen at 3.14.0rc1. Use release v2025.10.25 instead, the first one built after Python 3.14.0 final, with GDAL 3.11.4: same minor version as the Linux build (3.11.*). The wheel URL is now built from GDAL_VERSION, GEOSPATIAL_WHEELS_RELEASE and PYTHON_VERSION; checked to resolve. Checked beforehand: PyInstaller allows Python 3.14 from 6.15.0 on (the current range resolves to 6.22.3), and every compiled runtime dependency (PyQt6, PyQt6-Qt6, PyQt6-sip, lxml, numpy, charset-normalizer) publishes cp314 or abi3 wheels for Windows and Linux. On Linux, the GDAL bindings are built from source against the system libgdal, as the Ubuntu 3.14 test job already does. AI-Level: 7 (human specced, bots coded) AI-Model: claude-opus-5-5 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Dwmm8jY9WWvgUJt9WQ7QWZ --- .github/workflows/builder_releaser.yml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/builder_releaser.yml b/.github/workflows/builder_releaser.yml index 385b134c..967f4ce9 100644 --- a/.github/workflows/builder_releaser.yml +++ b/.github/workflows/builder_releaser.yml @@ -22,7 +22,8 @@ on: # Globals env: PROJECT_FOLDER: "dicogis" - PYTHON_VERSION: "3.11" + # Python embedded in the executables, Linux and Windows alike + PYTHON_VERSION: "3.14" PYINSTALLER_LOG_LEVEL: "DEBUG" USE_PATH_FOR_GDAL_PYTHON: yes @@ -133,8 +134,11 @@ jobs: env: export_output_folder: tests/ci/windows - GDAL_VERSION: "3.11.1" - PYTHON_VERSION: "3.11" + # geospatial-wheels release providing a GDAL wheel for PYTHON_VERSION: + # v2025.10.25 is the first one built after Python 3.14.0 final (earlier + # cp314 wheels target 3.14 pre-releases, before its ABI was frozen) + GDAL_VERSION: "3.11.4" + GEOSPATIAL_WHEELS_RELEASE: "v2025.10.25" steps: - name: Get source code @@ -150,9 +154,11 @@ jobs: cache-dependency-path: pyproject.toml - name: Install project requirements + shell: pwsh run: | python -m pip install -U pip setuptools wheel - python -m pip install -U https://github.com/cgohlke/geospatial-wheels/releases/download/v2025.7.4/gdal-3.11.1-cp311-cp311-win_amd64.whl + $cpTag = "cp" + ($env:PYTHON_VERSION -replace '\.', '') + python -m pip install -U "https://github.com/cgohlke/geospatial-wheels/releases/download/${env:GEOSPATIAL_WHEELS_RELEASE}/gdal-${env:GDAL_VERSION}-$cpTag-$cpTag-win_amd64.whl" - name: Install project as a package run: python -m pip install .[gdal,gui,packaging] From 4281d6e018dca701d76e9f815235a577f25c4372 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 18 Oct 2026 08:45:27 +0000 Subject: [PATCH 2/3] ci: test on Windows with the executables' GDAL wheels, Python 3.14 included The Windows test matrix used the v2025.7.4 geospatial-wheels release (GDAL 3.11.1), whose cp314 wheel targets a Python 3.14 pre-release, so it stopped at 3.13 while the executables now ship Python 3.14. Use the same release as the builder (v2025.10.25, GDAL 3.11.4) and add 3.14 to the matrix, with a note in both workflows to keep them aligned. AI-Level: 7 AI-Model: claude-opus-5-5 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Dwmm8jY9WWvgUJt9WQ7QWZ --- .github/workflows/builder_releaser.yml | 3 ++- .github/workflows/tester.yml | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/builder_releaser.yml b/.github/workflows/builder_releaser.yml index 967f4ce9..e7fde823 100644 --- a/.github/workflows/builder_releaser.yml +++ b/.github/workflows/builder_releaser.yml @@ -136,7 +136,8 @@ jobs: export_output_folder: tests/ci/windows # geospatial-wheels release providing a GDAL wheel for PYTHON_VERSION: # v2025.10.25 is the first one built after Python 3.14.0 final (earlier - # cp314 wheels target 3.14 pre-releases, before its ABI was frozen) + # cp314 wheels target 3.14 pre-releases, before its ABI was frozen). + # Keep aligned with the Windows job of tester.yml. GDAL_VERSION: "3.11.4" GEOSPATIAL_WHEELS_RELEASE: "v2025.10.25" diff --git a/.github/workflows/tester.yml b/.github/workflows/tester.yml index 988172ff..f274e88f 100644 --- a/.github/workflows/tester.yml +++ b/.github/workflows/tester.yml @@ -144,10 +144,14 @@ jobs: - "3.11" - "3.12" - "3.13" + - "3.14" env: export_output_folder: tests/ci/windows - GDAL_VERSION: "3.11.1" + # keep aligned with the Windows job of builder_releaser.yml, which ships + # this GDAL in the executables + GDAL_VERSION: "3.11.4" + GEOSPATIAL_WHEELS_RELEASE: "v2025.10.25" permissions: contents: read @@ -170,7 +174,7 @@ jobs: run: | python -m pip install -U pip setuptools wheel $cpTag = "cp" + ($env:PYTHON_VERSION -replace '\.', '') - $wheelUrl = "https://github.com/cgohlke/geospatial-wheels/releases/download/v2025.7.4/gdal-${env:GDAL_VERSION}-$cpTag-$cpTag-win_amd64.whl" + $wheelUrl = "https://github.com/cgohlke/geospatial-wheels/releases/download/${env:GEOSPATIAL_WHEELS_RELEASE}/gdal-${env:GDAL_VERSION}-$cpTag-$cpTag-win_amd64.whl" python -m pip install -U $wheelUrl - name: Install project as a package From 7042b92af7a9b3e9adb2b7e19d66937581f41f3c Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 18 Oct 2026 08:45:28 +0000 Subject: [PATCH 3/3] docs(windows): align the example GDAL wheel with the one used in CI AI-Level: 7 AI-Model: claude-opus-5-5 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Dwmm8jY9WWvgUJt9WQ7QWZ --- docs/development/windows.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/development/windows.md b/docs/development/windows.md index 8c6ce609..d56109d1 100644 --- a/docs/development/windows.md +++ b/docs/development/windows.md @@ -30,7 +30,7 @@ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser > letting pip pull one from the package index used in "Install project" below. 1. Go to or to -1. Download the appropriate package for the Python environment (version, type...). For example: `gdal-3.11.1-cp311-cp311-win_amd64` +1. Download the appropriate package for the Python environment (version, type...). For example: `gdal-3.11.4-cp311-cp311-win_amd64` 1. Move downloaded wheel to the `lib` subfolder 1. Make sure there is only one wheel of GDAL in the `lib` subfolder