From 540b7c0251492a0a1385b439976a854d9e9b1f85 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 14:26:42 +0000 Subject: [PATCH 1/4] Initial plan From 356d4d89652ec914bb397fe2536fff6f59732fe6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 14:31:50 +0000 Subject: [PATCH 2/4] Add Python 3.14 to CI testing and update single-version jobs to use 3.14 Co-authored-by: xylar <4179064+xylar@users.noreply.github.com> --- .github/workflows/build_workflow.yml | 4 +- .github/workflows/docs_workflow.yml | 2 +- .../workflows/pre_commit_update_workflow.yml | 2 +- .../ci/linux_64_python3.14.____cpython.yaml | 37 +++++++++++++++++ .../ci/osx_64_python3.14.____cpython.yaml | 41 +++++++++++++++++++ conda_package/pyproject.toml | 1 + 6 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 conda_package/ci/linux_64_python3.14.____cpython.yaml create mode 100644 conda_package/ci/osx_64_python3.14.____cpython.yaml diff --git a/.github/workflows/build_workflow.yml b/.github/workflows/build_workflow.yml index 79a2e1c2b..7a5c0b80a 100644 --- a/.github/workflows/build_workflow.yml +++ b/.github/workflows/build_workflow.yml @@ -26,7 +26,7 @@ on: env: CANCEL_OTHERS: false PATHS_IGNORE: '["**/README.md", "**/docs/**"]' - PYTHON_VERSION: "3.13" + PYTHON_VERSION: "3.14" jobs: pre-commit-hooks: @@ -61,7 +61,7 @@ jobs: shell: bash -l {0} strategy: matrix: - python-version: ["3.10", "3.11", "3.12", "3.13"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] fail-fast: false steps: - uses: actions/checkout@v5 diff --git a/.github/workflows/docs_workflow.yml b/.github/workflows/docs_workflow.yml index ba9126257..5c715be9f 100644 --- a/.github/workflows/docs_workflow.yml +++ b/.github/workflows/docs_workflow.yml @@ -9,7 +9,7 @@ on: types: [published] env: - PYTHON_VERSION: "3.13" + PYTHON_VERSION: "3.14" jobs: publish-docs: diff --git a/.github/workflows/pre_commit_update_workflow.yml b/.github/workflows/pre_commit_update_workflow.yml index 4a588746d..efda894cd 100644 --- a/.github/workflows/pre_commit_update_workflow.yml +++ b/.github/workflows/pre_commit_update_workflow.yml @@ -14,7 +14,7 @@ on: env: UP_TO_DATE: false - PYTHON_VERSION: "3.13" + PYTHON_VERSION: "3.14" REVIEWERS: "xylar,andrewdnolan" jobs: diff --git a/conda_package/ci/linux_64_python3.14.____cpython.yaml b/conda_package/ci/linux_64_python3.14.____cpython.yaml new file mode 100644 index 000000000..b80f506cd --- /dev/null +++ b/conda_package/ci/linux_64_python3.14.____cpython.yaml @@ -0,0 +1,37 @@ +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +cdt_name: +- conda +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '14' +docker_image: +- quay.io/condaforge/linux-anvil-x86_64:alma9 +fortran_compiler: +- gfortran +fortran_compiler_version: +- '14' +hdf5: +- 1.14.6 +libnetcdf: +- 4.9.2 +netcdf_fortran: +- '4.6' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.14.* *_cp314 +target_platform: +- linux-64 +zip_keys: +- - cxx_compiler_version + - fortran_compiler_version diff --git a/conda_package/ci/osx_64_python3.14.____cpython.yaml b/conda_package/ci/osx_64_python3.14.____cpython.yaml new file mode 100644 index 000000000..e71732e19 --- /dev/null +++ b/conda_package/ci/osx_64_python3.14.____cpython.yaml @@ -0,0 +1,41 @@ +MACOSX_DEPLOYMENT_TARGET: +- '10.13' +MACOSX_SDK_VERSION: +- '10.13' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '19' +fortran_compiler: +- gfortran +fortran_compiler_version: +- '14' +hdf5: +- 1.14.6 +libnetcdf: +- 4.9.2 +llvm_openmp: +- '19' +macos_machine: +- x86_64-apple-darwin13.4.0 +netcdf_fortran: +- '4.6' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.14.* *_cp314 +target_platform: +- osx-64 +zip_keys: +- - cxx_compiler_version + - fortran_compiler_version diff --git a/conda_package/pyproject.toml b/conda_package/pyproject.toml index ea1520574..aa7afadb5 100644 --- a/conda_package/pyproject.toml +++ b/conda_package/pyproject.toml @@ -44,6 +44,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", From 9462346d5225a81699ab69e503424b2370ecee8e Mon Sep 17 00:00:00 2001 From: Xylar Asay-Davis Date: Mon, 24 Nov 2025 15:40:14 +0100 Subject: [PATCH 3/4] Update CI yaml files to match conda-forge --- conda_package/ci/linux_64_python3.10.____cpython.yaml | 4 +--- conda_package/ci/linux_64_python3.11.____cpython.yaml | 4 +--- conda_package/ci/linux_64_python3.12.____cpython.yaml | 4 +--- conda_package/ci/linux_64_python3.13.____cpython.yaml | 4 +--- conda_package/ci/linux_64_python3.14.____cpython.yaml | 4 +--- conda_package/ci/osx_64_python3.10.____cpython.yaml | 2 +- conda_package/ci/osx_64_python3.11.____cpython.yaml | 2 +- conda_package/ci/osx_64_python3.12.____cpython.yaml | 2 +- conda_package/ci/osx_64_python3.13.____cpython.yaml | 2 +- conda_package/ci/osx_64_python3.14.____cpython.yaml | 2 +- 10 files changed, 10 insertions(+), 20 deletions(-) diff --git a/conda_package/ci/linux_64_python3.10.____cpython.yaml b/conda_package/ci/linux_64_python3.10.____cpython.yaml index 11ce265e6..895781497 100644 --- a/conda_package/ci/linux_64_python3.10.____cpython.yaml +++ b/conda_package/ci/linux_64_python3.10.____cpython.yaml @@ -2,8 +2,6 @@ c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -21,7 +19,7 @@ fortran_compiler_version: hdf5: - 1.14.6 libnetcdf: -- 4.9.2 +- 4.9.3 netcdf_fortran: - '4.6' pin_run_as_build: diff --git a/conda_package/ci/linux_64_python3.11.____cpython.yaml b/conda_package/ci/linux_64_python3.11.____cpython.yaml index 4f411537b..20259457b 100644 --- a/conda_package/ci/linux_64_python3.11.____cpython.yaml +++ b/conda_package/ci/linux_64_python3.11.____cpython.yaml @@ -2,8 +2,6 @@ c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -21,7 +19,7 @@ fortran_compiler_version: hdf5: - 1.14.6 libnetcdf: -- 4.9.2 +- 4.9.3 netcdf_fortran: - '4.6' pin_run_as_build: diff --git a/conda_package/ci/linux_64_python3.12.____cpython.yaml b/conda_package/ci/linux_64_python3.12.____cpython.yaml index d93028a95..59414c4e1 100644 --- a/conda_package/ci/linux_64_python3.12.____cpython.yaml +++ b/conda_package/ci/linux_64_python3.12.____cpython.yaml @@ -2,8 +2,6 @@ c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -21,7 +19,7 @@ fortran_compiler_version: hdf5: - 1.14.6 libnetcdf: -- 4.9.2 +- 4.9.3 netcdf_fortran: - '4.6' pin_run_as_build: diff --git a/conda_package/ci/linux_64_python3.13.____cpython.yaml b/conda_package/ci/linux_64_python3.13.____cpython.yaml index a3d36aae6..4489de008 100644 --- a/conda_package/ci/linux_64_python3.13.____cpython.yaml +++ b/conda_package/ci/linux_64_python3.13.____cpython.yaml @@ -2,8 +2,6 @@ c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -21,7 +19,7 @@ fortran_compiler_version: hdf5: - 1.14.6 libnetcdf: -- 4.9.2 +- 4.9.3 netcdf_fortran: - '4.6' pin_run_as_build: diff --git a/conda_package/ci/linux_64_python3.14.____cpython.yaml b/conda_package/ci/linux_64_python3.14.____cpython.yaml index b80f506cd..920dadcf6 100644 --- a/conda_package/ci/linux_64_python3.14.____cpython.yaml +++ b/conda_package/ci/linux_64_python3.14.____cpython.yaml @@ -2,8 +2,6 @@ c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_name: -- conda channel_sources: - conda-forge channel_targets: @@ -21,7 +19,7 @@ fortran_compiler_version: hdf5: - 1.14.6 libnetcdf: -- 4.9.2 +- 4.9.3 netcdf_fortran: - '4.6' pin_run_as_build: diff --git a/conda_package/ci/osx_64_python3.10.____cpython.yaml b/conda_package/ci/osx_64_python3.10.____cpython.yaml index f0e0e306a..b2d86a3bd 100644 --- a/conda_package/ci/osx_64_python3.10.____cpython.yaml +++ b/conda_package/ci/osx_64_python3.10.____cpython.yaml @@ -21,7 +21,7 @@ fortran_compiler_version: hdf5: - 1.14.6 libnetcdf: -- 4.9.2 +- 4.9.3 llvm_openmp: - '19' macos_machine: diff --git a/conda_package/ci/osx_64_python3.11.____cpython.yaml b/conda_package/ci/osx_64_python3.11.____cpython.yaml index ccaa997f4..b1d2e320b 100644 --- a/conda_package/ci/osx_64_python3.11.____cpython.yaml +++ b/conda_package/ci/osx_64_python3.11.____cpython.yaml @@ -21,7 +21,7 @@ fortran_compiler_version: hdf5: - 1.14.6 libnetcdf: -- 4.9.2 +- 4.9.3 llvm_openmp: - '19' macos_machine: diff --git a/conda_package/ci/osx_64_python3.12.____cpython.yaml b/conda_package/ci/osx_64_python3.12.____cpython.yaml index 767aa4e5a..7f9af2205 100644 --- a/conda_package/ci/osx_64_python3.12.____cpython.yaml +++ b/conda_package/ci/osx_64_python3.12.____cpython.yaml @@ -21,7 +21,7 @@ fortran_compiler_version: hdf5: - 1.14.6 libnetcdf: -- 4.9.2 +- 4.9.3 llvm_openmp: - '19' macos_machine: diff --git a/conda_package/ci/osx_64_python3.13.____cpython.yaml b/conda_package/ci/osx_64_python3.13.____cpython.yaml index 1fa8eb76d..6e4aa3029 100644 --- a/conda_package/ci/osx_64_python3.13.____cpython.yaml +++ b/conda_package/ci/osx_64_python3.13.____cpython.yaml @@ -21,7 +21,7 @@ fortran_compiler_version: hdf5: - 1.14.6 libnetcdf: -- 4.9.2 +- 4.9.3 llvm_openmp: - '19' macos_machine: diff --git a/conda_package/ci/osx_64_python3.14.____cpython.yaml b/conda_package/ci/osx_64_python3.14.____cpython.yaml index e71732e19..5b17a6611 100644 --- a/conda_package/ci/osx_64_python3.14.____cpython.yaml +++ b/conda_package/ci/osx_64_python3.14.____cpython.yaml @@ -21,7 +21,7 @@ fortran_compiler_version: hdf5: - 1.14.6 libnetcdf: -- 4.9.2 +- 4.9.3 llvm_openmp: - '19' macos_machine: From f0acdafd2f2377bb58d79bfdfc6e078f54660382 Mon Sep 17 00:00:00 2001 From: Xylar Asay-Davis Date: Fri, 28 Nov 2025 10:54:19 +0100 Subject: [PATCH 4/4] Build and test in separate environments The build environment can use python 3.13, while the test environment uses the python in the matrix. --- .github/workflows/build_workflow.yml | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build_workflow.yml b/.github/workflows/build_workflow.yml index 7a5c0b80a..b77f31e2c 100644 --- a/.github/workflows/build_workflow.yml +++ b/.github/workflows/build_workflow.yml @@ -27,6 +27,7 @@ env: CANCEL_OTHERS: false PATHS_IGNORE: '["**/README.md", "**/docs/**"]' PYTHON_VERSION: "3.14" + BUILD_PYTHON_VERSION: "3.13" jobs: pre-commit-hooks: @@ -69,33 +70,34 @@ jobs: - name: Create Build Environment uses: mamba-org/setup-micromamba@v2 with: - environment-name: mpas_tools_dev + environment-name: mpas_tools_build init-shell: bash condarc: | channel_priority: strict channels: - conda-forge create-args: >- - python=${{ matrix.python-version }} + python=${{ env.BUILD_PYTHON_VERSION }} - - name: Finalize Build Environment + - name: Build mpas_tools package run: | conda install conda conda-build conda build -m "conda_package/ci/linux_64_python${{ matrix.python-version }}.____cpython.yaml" "conda_package/recipe" + # Add local build channel first for subsequent micromamba usage + micromamba config append channels "$CONDA_PREFIX/conda-bld" + micromamba config append channels conda-forge - - name: Install mpas_tools + - name: Create Test Environment run: | - conda install -y -c ${CONDA_PREFIX}/conda-bld/ \ - mpas_tools python=${{ matrix.python-version }} \ - sphinx mock sphinx_rtd_theme + micromamba create -y -n mpas_tools_test \ + python=${{ env.BUILD_PYTHON_VERSION }} \ + mpas_tools \ + sphinx \ + mock \ + sphinx_rtd_theme - name: Build Sphinx Docs run: | + micromamba activate mpas_tools_test cd conda_package/docs DOCS_VERSION=test make versioned-html - condarc: | - channel_priority: strict - channels: - - conda-forge - create-args: >- - python=${{ matrix.python-version }}