From 8645d56ab88409458da5a2c77fd7dfca1920d0f1 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Wed, 9 Sep 2026 11:46:27 +0200 Subject: [PATCH 1/2] 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 - clang smoke builds: add 3.15 and allow-prereleases in setup-python - build_pip: add 3.15 and the conda-forge/label/python_rc RC channel - conda-package(-cf): add 3.15 rows (numpy 2.5) and the python_rc channel --- .github/workflows/build-with-clang.yml | 4 +++- .github/workflows/build-with-standard-clang.yml | 4 +++- .github/workflows/build_pip.yml | 5 +++-- .github/workflows/conda-package-cf.yml | 16 ++++++++++------ .github/workflows/conda-package.yml | 16 ++++++++++------ CHANGELOG.md | 1 + pyproject.toml | 3 ++- 7 files changed, 32 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build-with-clang.yml b/.github/workflows/build-with-clang.yml index df64833e..b3392520 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"] + python: ["3.10", "3.11", "3.12", "3.13", "3.14", "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 86dd81a5..bc6a4928 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"] + python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"] numpy_version: ["'numpy>=2'"] env: @@ -39,6 +39,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 501e6fb8..15a14b3e 100644 --- a/.github/workflows/build_pip.yml +++ b/.github/workflows/build_pip.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: - python: ["3.10", "3.11", "3.12", "3.13", "3.14"] + python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"] use_pre: ["", "--pre"] steps: @@ -30,7 +30,8 @@ jobs: - uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1 with: miniforge-version: latest - channels: conda-forge + # conda-forge/label/python_rc carries the 3.15 release candidate + channels: conda-forge,conda-forge/label/python_rc activate-environment: test python-version: ${{ matrix.python }} diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 5703c05a..7a71670e 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -32,6 +32,8 @@ jobs: numpy: "2.3" - python: "3.14" numpy: "2.3" + - python: "3.15" + numpy: "2.5" steps: - name: Cancel Previous Runs @@ -68,7 +70,7 @@ jobs: - name: Build conda package with NumPy 2.x run: | - CHANNELS=(-c conda-forge --override-channels) + CHANNELS=(-c conda-forge -c conda-forge/label/python_rc --override-channels) VERSIONS=(--python "${{ matrix.python }}" --numpy "${{ matrix.numpy }}") TEST=(--no-test) @@ -90,13 +92,13 @@ jobs: strategy: matrix: - python: ["3.10", "3.11", "3.12", "3.13", "3.14"] + python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"] numpy: ['numpy">=2"'] experimental: [false] 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 @@ -173,6 +175,8 @@ jobs: numpy: "2.3" - python: "3.14" numpy: "2.3" + - python: "3.15" + numpy: "2.5" steps: - name: Cancel Previous Runs @@ -211,7 +215,7 @@ jobs: - name: Build conda package with NumPy 2.x run: | - conda build --no-test --python ${{ matrix.python }} --numpy ${{ matrix.numpy }} -c conda-forge --override-channels conda-recipe-cf + conda build --no-test --python ${{ matrix.python }} --numpy ${{ matrix.numpy }} -c conda-forge -c conda-forge/label/python_rc --override-channels conda-recipe-cf - name: Store conda paths as envs shell: bash -l {0} @@ -233,14 +237,14 @@ jobs: strategy: matrix: - python: ["3.10", "3.11", "3.12", "3.13", "3.14"] + python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"] numpy: ['numpy">=2"'] experimental: [false] runner: [windows-latest] 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 diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index ee962c7e..cb989f84 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -33,6 +33,8 @@ jobs: numpy: "2.3" - python: "3.14" numpy: "2.3" + - python: "3.15" + numpy: "2.5" steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -85,7 +87,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 }}" --numpy "${{ matrix.numpy }}") TEST=(--no-test) @@ -113,13 +115,13 @@ jobs: strategy: matrix: - python: ["3.10", "3.11", "3.12", "3.13", "3.14"] + python: ["3.10", "3.11", "3.12", "3.13", "3.14", "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 + CHANNELS: -c https://software.repos.intel.com/python/conda -c conda-forge -c conda-forge/label/python_rc --override-channels steps: - name: Download artifact @@ -217,6 +219,8 @@ jobs: numpy: "2.3" - python: "3.14" numpy: "2.3" + - python: "3.15" + numpy: "2.5" steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -265,7 +269,7 @@ jobs: - name: Build conda package run: | - conda build --no-test --python ${{ 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 }} --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 @@ -288,14 +292,14 @@ jobs: strategy: matrix: - python: ["3.10", "3.11", "3.12", "3.13", "3.14"] + python: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"] numpy: ['numpy">=2"'] experimental: [false] runner: [windows-latest] 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 diff --git a/CHANGELOG.md b/CHANGELOG.md index c6c69070..e3dc2ee2 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-378](https://github.com/IntelPython/mkl_fft/pull/378) ### Changed * Multi-iterator constructors now return a status corresponding to allocation success or failure, and raise `MemoryError` instead of `ValueError` [gh-373](https://github.com/IntelPython/mkl_fft/pull/373) diff --git a/pyproject.toml b/pyproject.toml index 3f34aee8..777363f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,6 +48,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 :: Implementation :: CPython", "Topic :: Software Development", "Topic :: Scientific/Engineering", @@ -62,7 +63,7 @@ keywords = ["DFTI", "FFT", "Fourier", "MKL"] license = "BSD-3-Clause" name = "mkl_fft" readme = {file = "README.md", content-type = "text/markdown"} -requires-python = ">=3.10,<3.15" +requires-python = ">=3.10,<3.16" [project.optional-dependencies] benchmark = ["asv>=0.6", "psutil", "scipy>=1.10"] From f82af8c2127a064f546725b04c70e45372e1b622 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Wed, 9 Sep 2026 11:51:48 +0200 Subject: [PATCH 2/2] Add python_rc channel to Windows setup-miniconda steps setup-miniconda creates the environment with python=3.15 using only its own 'channels' input, so the release candidate must be available there too - the channel added to the later conda build/CHANNELS steps is not enough. --- .github/workflows/conda-package-cf.yml | 4 ++-- .github/workflows/conda-package.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 7a71670e..de686088 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -193,7 +193,7 @@ jobs: with: miniforge-version: latest activate-environment: build - channels: conda-forge + channels: conda-forge,conda-forge/label/python_rc python-version: ${{ matrix.python }} - name: Install conda-build @@ -255,7 +255,7 @@ jobs: - uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1 with: miniforge-version: latest - channels: conda-forge + channels: conda-forge,conda-forge/label/python_rc activate-environment: ${{ env.TEST_ENV_NAME }} python-version: ${{ matrix.python }} diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index cb989f84..274b8968 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -237,7 +237,7 @@ jobs: auto-update-conda: true miniforge-version: latest activate-environment: build - channels: conda-forge + channels: conda-forge,conda-forge/label/python_rc python-version: ${{ matrix.python }} conda-build-version: ${{ env.CONDA_BUILD_VERSION }} @@ -311,7 +311,7 @@ jobs: with: auto-update-conda: true miniforge-version: latest - channels: conda-forge + channels: conda-forge,conda-forge/label/python_rc activate-environment: ${{ env.TEST_ENV_NAME }} python-version: ${{ matrix.python }}