From dc0c5e15af436d159774e04d7f02416a51794b9d Mon Sep 17 00:00:00 2001 From: Gage Larsen Date: Mon, 24 Aug 2026 11:09:52 -0600 Subject: [PATCH] Add Python 3.14 to the CI matrix Windows builds 3.10, 3.13 and 3.14; macOS and Linux build 3.13 and 3.14. The per-platform split is not cosmetic. `[ci].python_versions` fans out Windows only, where every interpreter comes from actions/setup-python and costs nothing but runner minutes. macOS and Linux need their own lists because 3.10 exists for the desktop products' Windows wheel and nothing else wants it, and because every Linux entry requires a published `conan-gcc13-py` container -- those exist for 3.13 and 3.14 only, with no image for 3.10 through 3.12 on any registry. Dependencies move to the first releases carrying 3.14 binaries: xmscore 7.0.13, xmsgrid 9.1.1 and xmsinterp 7.0.12. The pins are exact and `python_version` propagates to every `xms_dependencies` entry in `configure()`, while the generated CI passes no `--build-missing` -- so a 3.14 configuration here cannot resolve until all three dependencies have published 3.14 binaries. That ordering constraint is why the rollout walks the tree rather than landing everywhere at once. No `[coverage]` section here, so no coverage pin is needed. The CI diff is small because this repo already regenerated at xmsconan 2.23.0 in 201c7200 -- the `--wheel-dir` Release gate and the SHA-pinned actions are already in place. What changes here is the matrix itself. No source changes. --- .github/workflows/XmsMesher-CI.yaml | 16 ++++++++-------- build.toml | 10 ++++++---- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/.github/workflows/XmsMesher-CI.yaml b/.github/workflows/XmsMesher-CI.yaml index ea7b0df3..33c2951d 100644 --- a/.github/workflows/XmsMesher-CI.yaml +++ b/.github/workflows/XmsMesher-CI.yaml @@ -75,11 +75,11 @@ jobs: fail-fast: false matrix: platform: [macos-15] - python-version: ["3.13"] + python-version: ["3.13", "3.14"] build_type: [Release, Debug] env: - MATRIX_NAME: ${{ matrix.platform }}-Clang${{ matrix.compiler-version }}-${{ matrix.build_type }} + MATRIX_NAME: ${{ matrix.platform }}-Clang${{ matrix.compiler-version }}-${{ matrix.build_type }}-py${{ matrix.python-version }} # Library Variables LIBRARY_NAME: xmsmesher XMS_VERSION: '0.0.0' @@ -176,7 +176,7 @@ jobs: - name: Upload wheel artifact uses: actions/upload-artifact@v4 with: - name: wheel-${{ runner.os }} + name: wheel-${{ runner.os }}-py${{ matrix.python-version }} path: wheelhouse/*.whl if: matrix.build_type == 'Release' # Upload wheel to Aquapi @@ -217,7 +217,7 @@ jobs: # LINUX # ---------------------------------------------------------------------------------------------- linux: - name: GCC-13 (${{ matrix.build_type }}, Linux) + name: GCC-13 (${{ matrix.build_type }}, ${{ matrix.python-version }}, Linux) runs-on: ubuntu-latest container: @@ -227,10 +227,10 @@ jobs: fail-fast: false matrix: build_type: [Release, Debug] - python-version: ["3.13"] + python-version: ["3.13", "3.14"] env: - MATRIX_NAME: linux-GCC13-${{ matrix.build_type }} + MATRIX_NAME: linux-GCC13-${{ matrix.build_type }}-py${{ matrix.python-version }} # Library Variables LIBRARY_NAME: xmsmesher XMS_VERSION: '0.0.0' @@ -314,7 +314,7 @@ jobs: - name: Upload wheel artifact uses: actions/upload-artifact@v4 with: - name: wheel-${{ runner.os }} + name: wheel-${{ runner.os }}-py${{ matrix.python-version }} path: wheelhouse/*.whl if: matrix.build_type == 'Release' # Upload wheel to Aquapi @@ -362,7 +362,7 @@ jobs: fail-fast: false matrix: platform: [windows-2022] - python-version: ["3.10", "3.13"] + python-version: ["3.10", "3.13", "3.14"] compiler-version: [17] build_type: [Release, Debug] diff --git a/build.toml b/build.toml index 4d77aca5..be78e45d 100644 --- a/build.toml +++ b/build.toml @@ -12,9 +12,9 @@ endif() """ xms_dependencies = [ - { name = "xmscore", version = "7.0.12" }, - { name = "xmsgrid", version = "9.1.0" }, - { name = "xmsinterp", version = "7.0.11" } + { name = "xmscore", version = "7.0.13" }, + { name = "xmsgrid", version = "9.1.1" }, + { name = "xmsinterp", version = "7.0.12" } ] extra_export_sources = [ @@ -107,4 +107,6 @@ pybind_headers = [ ] [ci] -python_versions = ["3.10", "3.13"] +python_versions = ["3.10", "3.13", "3.14"] +mac_python_versions = ["3.13", "3.14"] +linux_python_versions = ["3.13", "3.14"]