Skip to content

Update to xmsconan 2.23.0 and add a Python 3.14 build - #12

Merged
wdolinar merged 2 commits into
masterfrom
xmsconan-2230-gitignore
Aug 25, 2026
Merged

Update to xmsconan 2.23.0 and add a Python 3.14 build#12
wdolinar merged 2 commits into
masterfrom
xmsconan-2230-gitignore

Conversation

@wdolinar

Copy link
Copy Markdown
Member

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:

  • Third-party actions pinned to commit SHAs instead of tags. A tag is a movable ref in someone else's repository, and this workflow hands its environment AQUAPI_PASSWORD_SECRET and AQUAVEO_GITHUB_TOKEN.
  • flake8-tidy-imports installed in the lint job. It registers banned-modules, which the generated .flake8 sets. flake8 ignores config options no installed plugin claims, so the osgeo.* ban has been silently enforcing nothing while the job reported the same green as a run that had checked it.
  • setup-python v2 → v5; xmsconan pin ==2.16.0>=2.23.0.
  • Wheels built only in the Release 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 tag.

.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.

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:

before after
xmscore 7.0.11 7.0.13
xmsgrid 9.0.10 9.1.1
xmsinterp 7.0.9 7.0.12
xmsextractor 10.0.7 10.0.10

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_versions gains "3.14", and mac_python_versions / linux_python_versions are now named 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. 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:

  • linux job: GCC-13 (Release, Linux)GCC-13 (Release, 3.13, Linux)
  • wheel artifacts: wheel-macOSwheel-macOS-py3.13

If branch protection on master lists 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):

  • Release matrix builds and ctest passes 1/1 against the bumped dependencies, so the xmsgrid minor bump does not break XmGridTrace.
  • A forced 3.14 pybind build produces xmsgridtrace-...-cp314-cp314-macosx_15_0_arm64.whl and passes all 19 Python tests.
  • flake8 clean with the full CI plugin set, including the now-active banned-modules rule.
  • xmsconan_gen + xmsconan_ci re-run with zero drift.
  • ghcr.io/aquaveo/conan-gcc13-py3.14:latest confirmed to exist — the linux 3.14 leg cannot start without it.

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.
@wdolinar
wdolinar merged commit 40f9d4d into master Aug 25, 2026
30 checks passed
@wdolinar
wdolinar deleted the xmsconan-2230-gitignore branch August 25, 2026 13:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant