From 0ee66103f1d66b62c60eecc56b2831a38f53a288 Mon Sep 17 00:00:00 2001 From: Nikita Grigorian Date: Tue, 8 Sep 2026 09:12:32 -0700 Subject: [PATCH 1/4] Permit Python 3.15 --- .github/workflows/conda-package-cf.yml | 24 ++++++++++- .github/workflows/conda-package.yml | 40 +++++++++++++++++-- .github/workflows/generate-coverage.yaml | 2 +- .github/workflows/generate-docs.yml | 2 +- .github/workflows/os-llvm-sycl-build.yml | 2 +- .github/workflows/pre-commit.yml | 2 +- .../workflows/run-tests-from-dppy-bits.yaml | 4 +- pyproject.toml | 1 + 8 files changed, 65 insertions(+), 12 deletions(-) diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index b06dff23a1..3003c76e55 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -34,6 +34,10 @@ jobs: python_spec: '3.14.* *_cp314' - python: '3.14' python_spec: '3.14.* *_cp314t' + - python: '3.15' + python_spec: '3.15.* *_cp315' + - python: '3.15' + python_spec: '3.15.* *_cp315t' steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -102,6 +106,10 @@ jobs: python_spec: '3.14.* *_cp314' - python: '3.14' python_spec: '3.14.* *_cp314t' + - python: '3.15' + python_spec: '3.15.* *_cp315' + - python: '3.15' + python_spec: '3.15.* *_cp315t' steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -160,10 +168,16 @@ jobs: include: - python: '3.14' python_spec: '3.14.* *_cp314' - runner: ubuntu-22.04 + runner: ubuntu-latest - python: '3.14' python_spec: '3.14.* *_cp314t' - runner: ubuntu-22.04 + runner: ubuntu-latest + - python: '3.15' + python_spec: '3.15.* *_cp315' + runner: ubuntu-latest + - python: '3.15' + python_spec: '3.15.* *_cp315t' + runner: ubuntu-latest runner: [ubuntu-latest] steps: @@ -274,6 +288,12 @@ jobs: - python: '3.14' python_spec: '3.14.* *_cp314t' runner: windows-latest + - python: '3.15' + python_spec: '3.15.* *_cp315' + runner: windows-latest + - python: '3.15' + python_spec: '3.15.* *_cp315t' + runner: windows-latest runner: [windows-latest] env: workdir: '${{ github.workspace }}' diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index c2bb4d4211..98e8e290ab 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -34,6 +34,10 @@ jobs: python_spec: '3.14.* *_cp314' - python: '3.14' python_spec: '3.14.* *_cp314t' + - python: '3.15' + python_spec: '3.15.* *_cp315' + - python: '3.15' + python_spec: '3.15.* *_cp315t' steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -112,6 +116,10 @@ jobs: python_spec: '3.14.* *_cp314' - python: '3.14' python_spec: '3.14.* *_cp314t' + - python: '3.15' + python_spec: '3.15.* *_cp315' + - python: '3.15' + python_spec: '3.15.* *_cp315t' steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -194,6 +202,14 @@ jobs: python_spec: '3.14.* *_cp314t' experimental: false runner: ubuntu-latest + - python: '3.15' + python_spec: '3.15.* *_cp315' + experimental: false + runner: ubuntu-latest + - python: '3.15' + python_spec: '3.15.* *_cp315t' + experimental: false + runner: ubuntu-latest experimental: [false] runner: [ubuntu-latest] continue-on-error: ${{ matrix.experimental }} @@ -313,6 +329,14 @@ jobs: python_spec: '3.14.* *_cp314t' experimental: false runner: windows-latest + - python: '3.15' + python_spec: '3.15.* *_cp315' + experimental: false + runner: windows-latest + - python: '3.15' + python_spec: '3.15.* *_cp315t' + experimental: false + runner: windows-latest experimental: [false] runner: [windows-latest] continue-on-error: ${{ matrix.experimental }} @@ -502,6 +526,10 @@ jobs: python_spec: '3.14.* *_cp314' - python: '3.14' python_spec: '3.14.* *_cp314t' + - python: '3.15' + python_spec: '3.15.* *_cp315' + - python: '3.15' + python_spec: '3.15.* *_cp315t' steps: - name: Download conda artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 @@ -551,6 +579,10 @@ jobs: python_spec: '3.14.* *_cp314' - python: '3.14' python_spec: '3.14.* *_cp314t' + - python: '3.15' + python_spec: '3.15.* *_cp315' + - python: '3.15' + python_spec: '3.15.* *_cp315t' steps: - name: Download artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 @@ -591,13 +623,13 @@ jobs: runs-on: ${{ matrix.runner }} strategy: matrix: - python: ['3.14'] - python_spec: ['3.14.* *_cp314'] + python: ['3.15'] + python_spec: ['3.15.* *_cp315'] experimental: [false] runner: [ubuntu-latest] include: - - python: '3.14' - python_spec: '3.14.* *_cp314t' + - python: '3.15' + python_spec: '3.15.* *_cp315t' experimental: false runner: ubuntu-latest continue-on-error: ${{ matrix.experimental }} diff --git a/.github/workflows/generate-coverage.yaml b/.github/workflows/generate-coverage.yaml index 72da636288..1bcbbe31d1 100644 --- a/.github/workflows/generate-coverage.yaml +++ b/.github/workflows/generate-coverage.yaml @@ -52,7 +52,7 @@ jobs: - name: Setup Python uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: - python-version: '3.14' + python-version: '3.15' architecture: x64 - name: Cache Gtest diff --git a/.github/workflows/generate-docs.yml b/.github/workflows/generate-docs.yml index 1a7efad084..3aaa60a9e0 100644 --- a/.github/workflows/generate-docs.yml +++ b/.github/workflows/generate-docs.yml @@ -53,7 +53,7 @@ jobs: if: ${{ !github.event.pull_request || github.event.action != 'closed' }} uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: - python-version: '3.10' + python-version: '3.15' architecture: x64 - name: Install sphinx dependencies if: ${{ !github.event.pull_request || github.event.action != 'closed' }} diff --git a/.github/workflows/os-llvm-sycl-build.yml b/.github/workflows/os-llvm-sycl-build.yml index 9fb6f3a295..3fcdc1ffed 100644 --- a/.github/workflows/os-llvm-sycl-build.yml +++ b/.github/workflows/os-llvm-sycl-build.yml @@ -118,7 +118,7 @@ jobs: - name: Setup Python uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: - python-version: '3.12' + python-version: '3.15' architecture: x64 - name: Install dpctl dependencies diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 090c8bc614..f2c9111a71 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -23,7 +23,7 @@ jobs: ref: ${{ github.sha }} # use hash to pass no-commit-to-branch check - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: - python-version: '3.14' + python-version: '3.15' - name: Install from PyPI shell: bash -l {0} run: | diff --git a/.github/workflows/run-tests-from-dppy-bits.yaml b/.github/workflows/run-tests-from-dppy-bits.yaml index abf18aeb3b..656a67a9f7 100644 --- a/.github/workflows/run-tests-from-dppy-bits.yaml +++ b/.github/workflows/run-tests-from-dppy-bits.yaml @@ -28,7 +28,7 @@ jobs: strategy: matrix: dependencies: [conda-forge, intel] - python_spec: ['3.10', '3.11', '3.12', '3.13', '3.14.* *_cp314', '3.14.* *_cp314t'] + python_spec: ['3.10', '3.11', '3.12', '3.13', '3.14.* *_cp314', '3.14.* *_cp314t', '3.15.* *_cp315', '3.15.* *_cp315t'] runner: [ubuntu-22.04, ubuntu-24.04] steps: @@ -87,7 +87,7 @@ jobs: matrix: # see the comment on the dependencies of test_linux dependencies: [conda-forge, intel] - python_spec: ['3.10', '3.11', '3.12', '3.13', '3.14.* *_cp314', '3.14.* *_cp314t'] + python_spec: ['3.10', '3.11', '3.12', '3.13', '3.14.* *_cp314', '3.14.* *_cp314t', '3.15.* *_cp315', '3.15.* *_cp315t'] runner: [windows-latest] env: workdir: '${{ github.workspace }}' diff --git a/pyproject.toml b/pyproject.toml index 4687ba827b..833952dcce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,6 +28,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", "Programming Language :: Python :: Free Threading :: 2 - Beta", "Topic :: Software Development", From fa6a1e6f235dc5665cb02fd85daede9b0fceabe7 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 12 Oct 2026 16:17:58 +0200 Subject: [PATCH 2/4] Drop free-threaded Python 3.15 from CI for now NumPy has no cp315t builds on conda-forge yet, so the 3.15t environments cannot be solved. Keep testing examples with free-threaded Python 3.14. --- .github/workflows/conda-package-cf.yml | 10 ---------- .github/workflows/conda-package.yml | 20 ++----------------- .../workflows/run-tests-from-dppy-bits.yaml | 4 ++-- 3 files changed, 4 insertions(+), 30 deletions(-) diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 3003c76e55..6041a7f734 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -36,8 +36,6 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' - - python: '3.15' - python_spec: '3.15.* *_cp315t' steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -108,8 +106,6 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' - - python: '3.15' - python_spec: '3.15.* *_cp315t' steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -175,9 +171,6 @@ jobs: - python: '3.15' python_spec: '3.15.* *_cp315' runner: ubuntu-latest - - python: '3.15' - python_spec: '3.15.* *_cp315t' - runner: ubuntu-latest runner: [ubuntu-latest] steps: @@ -291,9 +284,6 @@ jobs: - python: '3.15' python_spec: '3.15.* *_cp315' runner: windows-latest - - python: '3.15' - python_spec: '3.15.* *_cp315t' - runner: windows-latest runner: [windows-latest] env: workdir: '${{ github.workspace }}' diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index 98e8e290ab..6a5de0d6c6 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -36,8 +36,6 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' - - python: '3.15' - python_spec: '3.15.* *_cp315t' steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -118,8 +116,6 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' - - python: '3.15' - python_spec: '3.15.* *_cp315t' steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -206,10 +202,6 @@ jobs: python_spec: '3.15.* *_cp315' experimental: false runner: ubuntu-latest - - python: '3.15' - python_spec: '3.15.* *_cp315t' - experimental: false - runner: ubuntu-latest experimental: [false] runner: [ubuntu-latest] continue-on-error: ${{ matrix.experimental }} @@ -333,10 +325,6 @@ jobs: python_spec: '3.15.* *_cp315' experimental: false runner: windows-latest - - python: '3.15' - python_spec: '3.15.* *_cp315t' - experimental: false - runner: windows-latest experimental: [false] runner: [windows-latest] continue-on-error: ${{ matrix.experimental }} @@ -528,8 +516,6 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' - - python: '3.15' - python_spec: '3.15.* *_cp315t' steps: - name: Download conda artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 @@ -581,8 +567,6 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' - - python: '3.15' - python_spec: '3.15.* *_cp315t' steps: - name: Download artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 @@ -628,8 +612,8 @@ jobs: experimental: [false] runner: [ubuntu-latest] include: - - python: '3.15' - python_spec: '3.15.* *_cp315t' + - python: '3.14' + python_spec: '3.14.* *_cp314t' experimental: false runner: ubuntu-latest continue-on-error: ${{ matrix.experimental }} diff --git a/.github/workflows/run-tests-from-dppy-bits.yaml b/.github/workflows/run-tests-from-dppy-bits.yaml index 656a67a9f7..dca71e5c7d 100644 --- a/.github/workflows/run-tests-from-dppy-bits.yaml +++ b/.github/workflows/run-tests-from-dppy-bits.yaml @@ -28,7 +28,7 @@ jobs: strategy: matrix: dependencies: [conda-forge, intel] - python_spec: ['3.10', '3.11', '3.12', '3.13', '3.14.* *_cp314', '3.14.* *_cp314t', '3.15.* *_cp315', '3.15.* *_cp315t'] + python_spec: ['3.10', '3.11', '3.12', '3.13', '3.14.* *_cp314', '3.14.* *_cp314t', '3.15.* *_cp315'] runner: [ubuntu-22.04, ubuntu-24.04] steps: @@ -87,7 +87,7 @@ jobs: matrix: # see the comment on the dependencies of test_linux dependencies: [conda-forge, intel] - python_spec: ['3.10', '3.11', '3.12', '3.13', '3.14.* *_cp314', '3.14.* *_cp314t', '3.15.* *_cp315', '3.15.* *_cp315t'] + python_spec: ['3.10', '3.11', '3.12', '3.13', '3.14.* *_cp314', '3.14.* *_cp314t', '3.15.* *_cp315'] runner: [windows-latest] env: workdir: '${{ github.workspace }}' From ff473f2008fed18a57f9371a4f9d35a267b0e868 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 12 Oct 2026 16:24:56 +0200 Subject: [PATCH 3/4] Keep building docs with Python 3.10 Docs are built with sphinx<7.2, which uses ast.Str. It was removed in Python 3.14, so the build fails on newer Python. --- .github/workflows/generate-docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/generate-docs.yml b/.github/workflows/generate-docs.yml index 3aaa60a9e0..1a7efad084 100644 --- a/.github/workflows/generate-docs.yml +++ b/.github/workflows/generate-docs.yml @@ -53,7 +53,7 @@ jobs: if: ${{ !github.event.pull_request || github.event.action != 'closed' }} uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: - python-version: '3.15' + python-version: '3.10' architecture: x64 - name: Install sphinx dependencies if: ${{ !github.event.pull_request || github.event.action != 'closed' }} From cf628f91db29b7507305b4fa37bff6c31d05978c Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Tue, 13 Oct 2026 12:53:00 +0200 Subject: [PATCH 4/4] Add TODOs to restore free-threaded Python 3.15 in CI --- .github/workflows/conda-package-cf.yml | 4 ++++ .github/workflows/conda-package.yml | 7 +++++++ .github/workflows/run-tests-from-dppy-bits.yaml | 2 ++ 3 files changed, 13 insertions(+) diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 6041a7f734..82660758d4 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -36,6 +36,7 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' + # TODO: add 3.15t (cp315t) when NumPy cp315t builds are available on conda-forge steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -106,6 +107,7 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' + # TODO: add 3.15t (cp315t) when NumPy cp315t builds are available on conda-forge steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -171,6 +173,7 @@ jobs: - python: '3.15' python_spec: '3.15.* *_cp315' runner: ubuntu-latest + # TODO: add 3.15t (cp315t) when NumPy cp315t builds are available on conda-forge runner: [ubuntu-latest] steps: @@ -284,6 +287,7 @@ jobs: - python: '3.15' python_spec: '3.15.* *_cp315' runner: windows-latest + # TODO: add 3.15t (cp315t) when NumPy cp315t builds are available on conda-forge runner: [windows-latest] env: workdir: '${{ github.workspace }}' diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index 6a5de0d6c6..0388d7d6cf 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -36,6 +36,7 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' + # TODO: add 3.15t (cp315t) when NumPy cp315t builds are available on conda-forge steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -116,6 +117,7 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' + # TODO: add 3.15t (cp315t) when NumPy cp315t builds are available on conda-forge steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 @@ -202,6 +204,7 @@ jobs: python_spec: '3.15.* *_cp315' experimental: false runner: ubuntu-latest + # TODO: add 3.15t (cp315t) when NumPy cp315t builds are available on conda-forge experimental: [false] runner: [ubuntu-latest] continue-on-error: ${{ matrix.experimental }} @@ -325,6 +328,7 @@ jobs: python_spec: '3.15.* *_cp315' experimental: false runner: windows-latest + # TODO: add 3.15t (cp315t) when NumPy cp315t builds are available on conda-forge experimental: [false] runner: [windows-latest] continue-on-error: ${{ matrix.experimental }} @@ -516,6 +520,7 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' + # TODO: add 3.15t (cp315t) when NumPy cp315t builds are available on conda-forge steps: - name: Download conda artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 @@ -567,6 +572,7 @@ jobs: python_spec: '3.14.* *_cp314t' - python: '3.15' python_spec: '3.15.* *_cp315' + # TODO: add 3.15t (cp315t) when NumPy cp315t builds are available on conda-forge steps: - name: Download artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 @@ -612,6 +618,7 @@ jobs: experimental: [false] runner: [ubuntu-latest] include: + # TODO: switch to 3.15t (cp315t) when NumPy cp315t builds are available on conda-forge - python: '3.14' python_spec: '3.14.* *_cp314t' experimental: false diff --git a/.github/workflows/run-tests-from-dppy-bits.yaml b/.github/workflows/run-tests-from-dppy-bits.yaml index dca71e5c7d..f0af250350 100644 --- a/.github/workflows/run-tests-from-dppy-bits.yaml +++ b/.github/workflows/run-tests-from-dppy-bits.yaml @@ -28,6 +28,7 @@ jobs: strategy: matrix: dependencies: [conda-forge, intel] + # TODO: add '3.15.* *_cp315t' when NumPy cp315t builds are available on conda-forge python_spec: ['3.10', '3.11', '3.12', '3.13', '3.14.* *_cp314', '3.14.* *_cp314t', '3.15.* *_cp315'] runner: [ubuntu-22.04, ubuntu-24.04] @@ -87,6 +88,7 @@ jobs: matrix: # see the comment on the dependencies of test_linux dependencies: [conda-forge, intel] + # TODO: add '3.15.* *_cp315t' when NumPy cp315t builds are available on conda-forge python_spec: ['3.10', '3.11', '3.12', '3.13', '3.14.* *_cp314', '3.14.* *_cp314t', '3.15.* *_cp315'] runner: [windows-latest] env: