From 37c3020600cfe6755a7887240f9f4ccc429d3839 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 5 Oct 2026 22:51:29 +0200 Subject: [PATCH 1/4] Enable support of Python 3.15 Add Python 3.15 to the CI matrices and package metadata: - pyproject.toml: add the 3.15 classifier and bump requires-python to <3.16 - conda-package(-cf): add 3.15 build/test rows (numpy 2.5), pinned to the GIL-enabled cp315 ABI like the existing 3.14 rows - build_pip: add 3.15 rows with and without --pre - clang smoke builds: add 3.15 and allow-prereleases in setup-python - update the Python version lists in AGENTS.md files --- .github/workflows/build-with-clang.yml | 4 +++- .../workflows/build-with-standard-clang.yml | 4 +++- .github/workflows/build_pip.yml | 6 ++++++ .github/workflows/conda-package-cf.yml | 20 +++++++++++++++++++ .github/workflows/conda-package.yml | 20 +++++++++++++++++++ AGENTS.md | 2 +- CHANGELOG.md | 1 + conda-recipe/AGENTS.md | 2 +- mkl_umath/tests/AGENTS.md | 2 +- pyproject.toml | 3 ++- 10 files changed, 58 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-with-clang.yml b/.github/workflows/build-with-clang.yml index 77bcdd3f..a5ac2fde 100644 --- a/.github/workflows/build-with-clang.yml +++ b/.github/workflows/build-with-clang.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: - python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"] + python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", "3.15"] numpy_version: ["'numpy>=2'"] env: @@ -47,6 +47,8 @@ jobs: uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.python }} + # allow the 3.15 release candidate until 3.15 is final + allow-prereleases: true architecture: x64 - name: Checkout repo diff --git a/.github/workflows/build-with-standard-clang.yml b/.github/workflows/build-with-standard-clang.yml index fe77b903..860e88bd 100644 --- a/.github/workflows/build-with-standard-clang.yml +++ b/.github/workflows/build-with-standard-clang.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: - python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"] + python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", "3.15"] numpy_version: ["'numpy>=2'"] env: @@ -38,6 +38,8 @@ jobs: uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.python }} + # allow the 3.15 release candidate until 3.15 is final + allow-prereleases: true architecture: x64 - name: Checkout repo diff --git a/.github/workflows/build_pip.yml b/.github/workflows/build_pip.yml index 1104584b..1fdd99ae 100644 --- a/.github/workflows/build_pip.yml +++ b/.github/workflows/build_pip.yml @@ -33,6 +33,12 @@ jobs: - python: "3.14" python_spec: "3.14.* *_cp314t" use_pre: "--pre" + - python: "3.15" + python_spec: "3.15.* *_cp315" + use_pre: "" + - python: "3.15" + python_spec: "3.15.* *_cp315" + use_pre: "--pre" steps: - name: Checkout repo diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 52b680ef..04c68592 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -39,6 +39,10 @@ jobs: numpy: "2.3" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" + - python: "3.15" + numpy: "2.5" + python_spec: "3.15.* *_cp315" + python_tag: "3.15" steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -125,6 +129,12 @@ jobs: numpy: 'numpy">=2"' experimental: false runner: ubuntu-latest + - python: "3.15" + python_spec: "3.15.* *_cp315" + python_tag: "3.15" + numpy: 'numpy">=2"' + experimental: false + runner: ubuntu-latest continue-on-error: ${{ matrix.experimental }} env: CHANNELS: -c conda-forge --override-channels @@ -225,6 +235,10 @@ jobs: numpy: "2.3" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" + - python: "3.15" + numpy: "2.5" + python_spec: "3.15.* *_cp315" + python_tag: "3.15" env: conda-bld: C:\Miniconda\conda-bld\win-64\ steps: @@ -305,6 +319,12 @@ jobs: numpy: 'numpy">=2"' experimental: false runner: windows-latest + - python: "3.15" + python_spec: "3.15.* *_cp315" + python_tag: "3.15" + numpy: 'numpy">=2"' + experimental: false + runner: windows-latest continue-on-error: ${{ matrix.experimental }} env: workdir: '${{ github.workspace }}' diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index e0d85a1e..39152e91 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -39,6 +39,10 @@ jobs: numpy: "2.3" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" + - python: "3.15" + numpy: "2.5" + python_spec: "3.15.* *_cp315" + python_tag: "3.15" steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -135,6 +139,12 @@ jobs: numpy: 'numpy">=2"' experimental: false runner: ubuntu-latest + - python: "3.15" + python_spec: "3.15.* *_cp315" + python_tag: "3.15" + numpy: 'numpy">=2"' + experimental: false + runner: ubuntu-latest continue-on-error: ${{ matrix.experimental }} env: CHANNELS: -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels @@ -235,6 +245,10 @@ jobs: numpy: "2.3" python_spec: "3.14.* *_cp314t" python_tag: "3.14t" + - python: "3.15" + numpy: "2.5" + python_spec: "3.15.* *_cp315" + python_tag: "3.15" env: conda-bld: C:\Miniconda\conda-bld\win-64\ steps: @@ -322,6 +336,12 @@ jobs: numpy: 'numpy">=2"' experimental: false runner: windows-latest + - python: "3.15" + python_spec: "3.15.* *_cp315" + python_tag: "3.15" + numpy: 'numpy">=2"' + experimental: false + runner: windows-latest continue-on-error: ${{ matrix.experimental }} env: workdir: '${{ github.workspace }}' diff --git a/AGENTS.md b/AGENTS.md index 01525618..840cac24 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -41,7 +41,7 @@ CC=icx pip install --no-deps --no-build-isolation . # clang is also supported i ## CI/CD - **Platforms:** Linux, Windows -- **Python versions:** 3.10, 3.11, 3.12, 3.13, 3.14 +- **Python versions:** 3.10, 3.11, 3.12, 3.13, 3.14, 3.15 - **Workflows:** `.github/workflows/` - `conda-package.yml` — main conda build/test pipeline - `conda-package-cf.yml` — conda-forge-oriented build/test pipeline diff --git a/CHANGELOG.md b/CHANGELOG.md index 14f0aa29..f0da8acf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [dev] - YYYY-MM-DD ### Added +* Enabled support of Python 3.15 [gh-279](https://github.com/IntelPython/mkl_umath/pull/279) * Added support for free-threaded (GIL-disabled) CPython builds: the Cython extension is compiled with `freethreading_compatible=True` and `_ufuncs` declares `Py_MOD_GIL_NOT_USED`, so importing `mkl_umath` no longer re-enables the GIL [gh-255](https://github.com/IntelPython/mkl_umath/pull/255) ### Changed diff --git a/conda-recipe/AGENTS.md b/conda-recipe/AGENTS.md index 08182026..c5bd2f93 100644 --- a/conda-recipe/AGENTS.md +++ b/conda-recipe/AGENTS.md @@ -11,7 +11,7 @@ Conda package build recipe for Intel channel distribution. ## Build configuration - **Channels:** `https://software.repos.intel.com/python/conda`, `conda-forge` -- **Python versions:** 3.10, 3.11, 3.12, 3.13, 3.14 +- **Python versions:** 3.10, 3.11, 3.12, 3.13, 3.14, 3.15 - **Build system:** meson-python (via `python -m build`) - **Compilers:** Intel C compiler (icx) - **Dependencies:** mkl-devel, intel-openmp, dpcpp_{linux,win}-64, numpy diff --git a/mkl_umath/tests/AGENTS.md b/mkl_umath/tests/AGENTS.md index abc3d058..a9f4d5c9 100644 --- a/mkl_umath/tests/AGENTS.md +++ b/mkl_umath/tests/AGENTS.md @@ -20,7 +20,7 @@ pytest mkl_umath/tests/ ## CI integration - Tests run in conda-package.yml workflow -- Separate test jobs per Python version (3.10-3.14) +- Separate test jobs per Python version (3.10-3.15) - Linux + Windows platforms ## Adding tests diff --git a/pyproject.toml b/pyproject.toml index 13f65fb4..64a913ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,6 +50,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Programming Language :: Python :: Free Threading :: 2 - Beta", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development", @@ -65,7 +66,7 @@ keywords = ["mkl_umath"] license = "BSD-3-Clause" name = "mkl_umath" readme = { file = "README.md", content-type = "text/markdown" } -requires-python = ">=3.10,<3.15" +requires-python = ">=3.10,<3.16" [project.optional-dependencies] test = ["pytest"] From cdeff83c19b750c740d480fe65ae77e432cc94a4 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Tue, 6 Oct 2026 12:26:07 +0200 Subject: [PATCH 2/4] Add python_rc channel for the Python 3.15 release candidate conda-forge's Python 3.15 RC builds depend on the _python_rc marker package, which is only published in conda-forge/label/python_rc. Add that channel to every conda build/test step and setup-miniconda 'channels' input that resolves Python 3.15; setup-miniconda creates its environment using only its own 'channels' input, so the channel added to the later conda build/CHANNELS steps is not enough. --- .github/workflows/build_pip.yml | 3 ++- .github/workflows/conda-package-cf.yml | 18 ++++++++++-------- .github/workflows/conda-package.yml | 18 ++++++++++-------- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build_pip.yml b/.github/workflows/build_pip.yml index 1fdd99ae..f6566977 100644 --- a/.github/workflows/build_pip.yml +++ b/.github/workflows/build_pip.yml @@ -51,7 +51,8 @@ jobs: with: use-mamba: true miniforge-version: latest - channels: https://software.repos.intel.com/python/conda, conda-forge + # conda-forge/label/python_rc carries the 3.15 release candidate + channels: https://software.repos.intel.com/python/conda, conda-forge, conda-forge/label/python_rc conda-remove-defaults: true activate-environment: test python-version: ${{ matrix.python }} diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 04c68592..fe4a4eae 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -89,7 +89,7 @@ jobs: - name: Build conda package run: | - CHANNELS=(-c "conda-forge" --override-channels) + CHANNELS=(-c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}" --numpy "${{ matrix.numpy }}") TEST=(--no-test) echo "CONDA_BLD=${CONDA}/conda-bld/linux-64" >> "$GITHUB_ENV" @@ -137,7 +137,7 @@ jobs: runner: ubuntu-latest continue-on-error: ${{ matrix.experimental }} env: - CHANNELS: -c conda-forge --override-channels + CHANNELS: -c conda-forge -c conda-forge/label/python_rc --override-channels steps: - name: Download artifact @@ -171,7 +171,7 @@ jobs: cat "$GITHUB_WORKSPACE"/ver.json - name: Collect dependencies run: | - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "conda-forge" --override-channels) + CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python_spec || matrix.python }}" ${{ matrix.numpy }} "${CHANNELS[@]}" --only-deps --dry-run > lockfile - name: Display lockfile @@ -195,7 +195,7 @@ jobs: - name: Install mkl_umath run: | - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "conda-forge" --override-channels) + CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" conda create -n "${{ env.TEST_ENV_NAME }}" "python=${{ matrix.python_spec || matrix.python }}" ${{ matrix.numpy }} "$PACKAGE_NAME=${PACKAGE_VERSION}" pytest "${CHANNELS[@]}" # Test installed packages @@ -256,7 +256,8 @@ jobs: auto-update-conda: true miniforge-version: latest activate-environment: build - channels: conda-forge + # conda-forge/label/python_rc carries the 3.15 release candidate + channels: conda-forge,conda-forge/label/python_rc python-version: ${{ matrix.python }} conda-build-version: ${{ env.CONDA_BUILD_VERSION }} @@ -286,7 +287,7 @@ jobs: - name: Build conda package run: | conda activate - conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c conda-forge --override-channels conda-recipe-cf + conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c conda-forge -c conda-forge/label/python_rc --override-channels conda-recipe-cf - name: Upload artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 @@ -328,7 +329,7 @@ jobs: continue-on-error: ${{ matrix.experimental }} env: workdir: '${{ github.workspace }}' - CHANNELS: -c conda-forge --override-channels + CHANNELS: -c conda-forge -c conda-forge/label/python_rc --override-channels steps: - name: Download artifact @@ -341,7 +342,8 @@ jobs: auto-update-conda: true miniforge-version: latest activate-environment: ${{ env.TEST_ENV_NAME }} - channels: conda-forge + # conda-forge/label/python_rc carries the 3.15 release candidate + channels: conda-forge,conda-forge/label/python_rc conda-remove-defaults: "true" python-version: ${{ matrix.python }} diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index 39152e91..d87c5685 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -94,7 +94,7 @@ jobs: - name: Build conda package run: | - CHANNELS=(-c "https://software.repos.intel.com/python/conda" -c "conda-forge" --override-channels) + CHANNELS=(-c "https://software.repos.intel.com/python/conda" -c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}" --numpy "${{ matrix.numpy }}") TEST=(--no-test) @@ -147,7 +147,7 @@ jobs: runner: ubuntu-latest continue-on-error: ${{ matrix.experimental }} env: - CHANNELS: -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels + CHANNELS: -c https://software.repos.intel.com/python/conda -c conda-forge -c conda-forge/label/python_rc --override-channels steps: - name: Download artifact @@ -181,7 +181,7 @@ jobs: cat "$GITHUB_WORKSPACE"/ver.json - name: Collect dependencies run: | - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "https://software.repos.intel.com/python/conda" -c "conda-forge" --override-channels) + CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "https://software.repos.intel.com/python/conda" -c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python_spec || matrix.python }}" ${{ matrix.numpy }} "${CHANNELS[@]}" --only-deps --dry-run > lockfile - name: Display lockfile @@ -205,7 +205,7 @@ jobs: - name: Install mkl_umath run: | - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "https://software.repos.intel.com/python/conda" -c "conda-forge" --override-channels) + CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "https://software.repos.intel.com/python/conda" -c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" conda create -n "${{ env.TEST_ENV_NAME }}" "python=${{ matrix.python_spec || matrix.python }}" ${{ matrix.numpy }} "$PACKAGE_NAME=${PACKAGE_VERSION}" pytest "${CHANNELS[@]}" # Test installed packages @@ -266,7 +266,8 @@ jobs: auto-update-conda: true miniforge-version: latest activate-environment: build - channels: conda-forge + # conda-forge/label/python_rc carries the 3.15 release candidate + channels: conda-forge,conda-forge/label/python_rc python-version: ${{ matrix.python }} conda-build-version: ${{ env.CONDA_BUILD_VERSION }} @@ -297,7 +298,7 @@ jobs: - name: Build conda package run: | conda activate - conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels conda-recipe + conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c https://software.repos.intel.com/python/conda -c conda-forge -c conda-forge/label/python_rc --override-channels conda-recipe - name: Upload artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 @@ -345,7 +346,7 @@ jobs: continue-on-error: ${{ matrix.experimental }} env: workdir: '${{ github.workspace }}' - CHANNELS: -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels + CHANNELS: -c https://software.repos.intel.com/python/conda -c conda-forge -c conda-forge/label/python_rc --override-channels steps: - name: Download artifact @@ -358,7 +359,8 @@ jobs: auto-update-conda: true miniforge-version: latest activate-environment: ${{ env.TEST_ENV_NAME }} - channels: conda-forge + # conda-forge/label/python_rc carries the 3.15 release candidate + channels: conda-forge,conda-forge/label/python_rc conda-remove-defaults: "true" python-version: ${{ matrix.python }} From 569e9e13a05d4a60a3e399da56399d9d556bdc0e Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Tue, 13 Oct 2026 18:49:36 +0200 Subject: [PATCH 3/4] Drop release-candidate workarounds now that Python 3.15 is final Python 3.15.0 is released and available from both setup-python and the main conda-forge channel, so the conda-forge/label/python_rc channel and allow-prereleases in setup-python are no longer needed. --- .github/workflows/build_pip.yml | 3 +-- .github/workflows/conda-package-cf.yml | 18 ++++++++---------- .github/workflows/conda-package.yml | 18 ++++++++---------- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/.github/workflows/build_pip.yml b/.github/workflows/build_pip.yml index f6566977..1fdd99ae 100644 --- a/.github/workflows/build_pip.yml +++ b/.github/workflows/build_pip.yml @@ -51,8 +51,7 @@ jobs: with: use-mamba: true miniforge-version: latest - # conda-forge/label/python_rc carries the 3.15 release candidate - channels: https://software.repos.intel.com/python/conda, conda-forge, conda-forge/label/python_rc + channels: https://software.repos.intel.com/python/conda, conda-forge conda-remove-defaults: true activate-environment: test python-version: ${{ matrix.python }} diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index fe4a4eae..04c68592 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -89,7 +89,7 @@ jobs: - name: Build conda package run: | - CHANNELS=(-c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) + CHANNELS=(-c "conda-forge" --override-channels) VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}" --numpy "${{ matrix.numpy }}") TEST=(--no-test) echo "CONDA_BLD=${CONDA}/conda-bld/linux-64" >> "$GITHUB_ENV" @@ -137,7 +137,7 @@ jobs: runner: ubuntu-latest continue-on-error: ${{ matrix.experimental }} env: - CHANNELS: -c conda-forge -c conda-forge/label/python_rc --override-channels + CHANNELS: -c conda-forge --override-channels steps: - name: Download artifact @@ -171,7 +171,7 @@ jobs: cat "$GITHUB_WORKSPACE"/ver.json - name: Collect dependencies run: | - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) + CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "conda-forge" --override-channels) PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python_spec || matrix.python }}" ${{ matrix.numpy }} "${CHANNELS[@]}" --only-deps --dry-run > lockfile - name: Display lockfile @@ -195,7 +195,7 @@ jobs: - name: Install mkl_umath run: | - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) + CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "conda-forge" --override-channels) PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" conda create -n "${{ env.TEST_ENV_NAME }}" "python=${{ matrix.python_spec || matrix.python }}" ${{ matrix.numpy }} "$PACKAGE_NAME=${PACKAGE_VERSION}" pytest "${CHANNELS[@]}" # Test installed packages @@ -256,8 +256,7 @@ jobs: auto-update-conda: true miniforge-version: latest activate-environment: build - # conda-forge/label/python_rc carries the 3.15 release candidate - channels: conda-forge,conda-forge/label/python_rc + channels: conda-forge python-version: ${{ matrix.python }} conda-build-version: ${{ env.CONDA_BUILD_VERSION }} @@ -287,7 +286,7 @@ jobs: - name: Build conda package run: | conda activate - conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c conda-forge -c conda-forge/label/python_rc --override-channels conda-recipe-cf + conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c conda-forge --override-channels conda-recipe-cf - name: Upload artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 @@ -329,7 +328,7 @@ jobs: continue-on-error: ${{ matrix.experimental }} env: workdir: '${{ github.workspace }}' - CHANNELS: -c conda-forge -c conda-forge/label/python_rc --override-channels + CHANNELS: -c conda-forge --override-channels steps: - name: Download artifact @@ -342,8 +341,7 @@ jobs: auto-update-conda: true miniforge-version: latest activate-environment: ${{ env.TEST_ENV_NAME }} - # conda-forge/label/python_rc carries the 3.15 release candidate - channels: conda-forge,conda-forge/label/python_rc + channels: conda-forge conda-remove-defaults: "true" python-version: ${{ matrix.python }} diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index d87c5685..39152e91 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -94,7 +94,7 @@ jobs: - name: Build conda package run: | - CHANNELS=(-c "https://software.repos.intel.com/python/conda" -c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) + CHANNELS=(-c "https://software.repos.intel.com/python/conda" -c "conda-forge" --override-channels) VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}" --numpy "${{ matrix.numpy }}") TEST=(--no-test) @@ -147,7 +147,7 @@ jobs: runner: ubuntu-latest continue-on-error: ${{ matrix.experimental }} env: - CHANNELS: -c https://software.repos.intel.com/python/conda -c conda-forge -c conda-forge/label/python_rc --override-channels + CHANNELS: -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels steps: - name: Download artifact @@ -181,7 +181,7 @@ jobs: cat "$GITHUB_WORKSPACE"/ver.json - name: Collect dependencies run: | - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "https://software.repos.intel.com/python/conda" -c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) + CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "https://software.repos.intel.com/python/conda" -c "conda-forge" --override-channels) PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" conda create -n "${{ env.TEST_ENV_NAME }}" "${PACKAGE_NAME}=${PACKAGE_VERSION}" "python=${{ matrix.python_spec || matrix.python }}" ${{ matrix.numpy }} "${CHANNELS[@]}" --only-deps --dry-run > lockfile - name: Display lockfile @@ -205,7 +205,7 @@ jobs: - name: Install mkl_umath run: | - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "https://software.repos.intel.com/python/conda" -c "conda-forge" -c "conda-forge/label/python_rc" --override-channels) + CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c "https://software.repos.intel.com/python/conda" -c "conda-forge" --override-channels) PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" conda create -n "${{ env.TEST_ENV_NAME }}" "python=${{ matrix.python_spec || matrix.python }}" ${{ matrix.numpy }} "$PACKAGE_NAME=${PACKAGE_VERSION}" pytest "${CHANNELS[@]}" # Test installed packages @@ -266,8 +266,7 @@ jobs: auto-update-conda: true miniforge-version: latest activate-environment: build - # conda-forge/label/python_rc carries the 3.15 release candidate - channels: conda-forge,conda-forge/label/python_rc + channels: conda-forge python-version: ${{ matrix.python }} conda-build-version: ${{ env.CONDA_BUILD_VERSION }} @@ -298,7 +297,7 @@ jobs: - name: Build conda package run: | conda activate - conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c https://software.repos.intel.com/python/conda -c conda-forge -c conda-forge/label/python_rc --override-channels conda-recipe + conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" --numpy ${{ matrix.numpy }} -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels conda-recipe - name: Upload artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 @@ -346,7 +345,7 @@ jobs: continue-on-error: ${{ matrix.experimental }} env: workdir: '${{ github.workspace }}' - CHANNELS: -c https://software.repos.intel.com/python/conda -c conda-forge -c conda-forge/label/python_rc --override-channels + CHANNELS: -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels steps: - name: Download artifact @@ -359,8 +358,7 @@ jobs: auto-update-conda: true miniforge-version: latest activate-environment: ${{ env.TEST_ENV_NAME }} - # conda-forge/label/python_rc carries the 3.15 release candidate - channels: conda-forge,conda-forge/label/python_rc + channels: conda-forge conda-remove-defaults: "true" python-version: ${{ matrix.python }} From 7939a4234d285971d9d630a6d3a7e1af55abb170 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Tue, 13 Oct 2026 18:49:55 +0200 Subject: [PATCH 4/4] Drop allow-prereleases from the clang workflows now that Python 3.15 is final --- .github/workflows/build-with-clang.yml | 2 -- .github/workflows/build-with-standard-clang.yml | 2 -- 2 files changed, 4 deletions(-) diff --git a/.github/workflows/build-with-clang.yml b/.github/workflows/build-with-clang.yml index a5ac2fde..7bec94af 100644 --- a/.github/workflows/build-with-clang.yml +++ b/.github/workflows/build-with-clang.yml @@ -47,8 +47,6 @@ jobs: uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.python }} - # allow the 3.15 release candidate until 3.15 is final - allow-prereleases: true architecture: x64 - name: Checkout repo diff --git a/.github/workflows/build-with-standard-clang.yml b/.github/workflows/build-with-standard-clang.yml index 860e88bd..853cf627 100644 --- a/.github/workflows/build-with-standard-clang.yml +++ b/.github/workflows/build-with-standard-clang.yml @@ -38,8 +38,6 @@ jobs: uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.python }} - # allow the 3.15 release candidate until 3.15 is final - allow-prereleases: true architecture: x64 - name: Checkout repo