Update to xmsconan 2.23.0 and add a Python 3.14 build - #12
Merged
Conversation
Bump the generator from 2.21.0 and regenerate. The CI workflow picks up several changes from the new templates: - Third-party actions are pinned to commit SHAs instead of tags. A tag is a movable ref in someone else's repo, and this workflow hands its environment AQUAPI_PASSWORD_SECRET and AQUAVEO_GITHUB_TOKEN. - flake8-tidy-imports is installed in the lint job. It registers banned-modules, which the generated .flake8 sets; without the plugin flake8 accepted the osgeo ban and enforced nothing, while the job reported the same green as a run that had checked it. - setup-python v2 -> v5, and the xmsconan pin moves from ==2.16.0 to >=2.23.0. - Wheels are built only in the Release matrix leg; the Debug leg was producing wheels nothing consumed. - The Linux job takes its Python version from the matrix rather than hardcoding it in the container image and PYTHON_TARGET_VERSION. .gitignore gains .claude/worktrees/ and .worktreeinclude, plus CMakePresets.json -- that file is generated, and xmscore, xmsgrid, xmsinterp and xmsextractor already ignore it, so this repo was the outlier.
Two coupled changes; the 3.14 matrix leg does not work without both. Bump the four xms dependencies to the versions that publish py3.14 binaries. The pins in place -- xmscore 7.0.11, xmsgrid 9.0.10, xmsinterp 7.0.9, xmsextractor 10.0.7 -- publish only 3.10 and 3.13, so a 3.14 leg would resolve no binary and fail at conan install. Upstream rolled 3.14 out in one wave on the newest release of each, and the intermediate versions (xmscore 7.0.12, xmsgrid 9.0.11 and 9.1.0, xmsinterp 7.0.11, xmsextractor 10.0.9) do not carry it, so these are the minimum versions that work rather than simply the latest. Add 3.14 to [ci].python_versions, and name mac_python_versions and linux_python_versions explicitly. python_versions fans out Windows only; macOS and Linux default to the single highest entry, so adding 3.14 on its own would have moved both platforms off 3.13 rather than adding a leg to either. Fanning out mac and linux makes the generator append -py<version> to job names and uploaded artifacts, so the linux job is now "GCC-13 (<build_type>, <python>, Linux)" and wheel artifacts are wheel-<os>-py<version>. Branch protection rules and anything fetching those artifacts by exact name need updating to match. Verified on macOS arm64: the Release matrix builds and ctest passes against the bumped dependencies, and a forced 3.14 pybind build produces a cp314-cp314-macosx_15_0_arm64 wheel that passes all 19 python tests.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two commits: a generator bump that regenerates CI, and the Python 3.14 matrix leg.
Update to xmsconan 2.23.0 (66a033b)
Bumps the generator from 2.21.0 and regenerates. The CI workflow picks up several template changes:
AQUAPI_PASSWORD_SECRETandAQUAVEO_GITHUB_TOKEN.flake8-tidy-importsinstalled in the lint job. It registersbanned-modules, which the generated.flake8sets. flake8 ignores config options no installed plugin claims, so theosgeo.*ban has been silently enforcing nothing while the job reported the same green as a run that had checked it.setup-pythonv2 → v5; xmsconan pin==2.16.0→>=2.23.0..gitignoregains.claude/worktrees/and.worktreeinclude, plusCMakePresets.json— that file is generated, and xmscore, xmsgrid, xmsinterp and xmsextractor already ignore it, so this repo was the outlier.Add a Python 3.14 build (d442252)
Two coupled changes; the 3.14 leg does not work without both.
Dependency bump to the versions that publish py3.14 binaries:
The previous pins publish only 3.10 and 3.13, so a 3.14 leg would resolve no binary and fail at conan install. Upstream rolled 3.14 out in one wave on the newest release of each — the intermediate versions (xmscore 7.0.12, xmsgrid 9.0.11 and 9.1.0, xmsinterp 7.0.11, xmsextractor 10.0.9) do not carry it. These are the minimum versions that work, not simply the latest.
Matrix change.
[ci].python_versionsgains"3.14", andmac_python_versions/linux_python_versionsare now named explicitly.python_versionsfans out Windows only; macOS and Linux default to the single highest entry, so adding 3.14 on its own would have moved both platforms off 3.13 rather than adding a leg to either. Result: mac 3.13 + 3.14, linux 3.13 + 3.14, Windows 3.10 + 3.13 + 3.14.Action required before merge
Fanning out mac and linux makes the generator append
-py<version>to job and artifact names:GCC-13 (Release, Linux)→GCC-13 (Release, 3.13, Linux)wheel-macOS→wheel-macOS-py3.13If branch protection on
masterlists the old linux job names as required status checks, they will never report and PRs will hang. The same applies to anything fetching those artifacts by exact name. I did not touch branch-protection settings.Verification
Run on macOS arm64 (apple-clang 17):
XmGridTrace.xmsgridtrace-...-cp314-cp314-macosx_15_0_arm64.whland passes all 19 Python tests.banned-modulesrule.xmsconan_gen+xmsconan_cire-run with zero drift.ghcr.io/aquaveo/conan-gcc13-py3.14:latestconfirmed to exist — the linux 3.14 leg cannot start without it.