diff --git a/.github/workflows/build-with-clang.yml b/.github/workflows/build-with-clang.yml index 83d2cbb3..55c5a0dc 100644 --- a/.github/workflows/build-with-clang.yml +++ b/.github/workflows/build-with-clang.yml @@ -14,6 +14,7 @@ jobs: strategy: matrix: + # TODO: add "3.15" back once mkl-service publishes a Python 3.15 wheel on PyPI python: ["3.10", "3.11", "3.12", "3.13", "3.14"] numpy_version: ["'numpy>=2'"] diff --git a/.github/workflows/build-with-standard-clang.yml b/.github/workflows/build-with-standard-clang.yml index 785a40d0..18f79293 100644 --- a/.github/workflows/build-with-standard-clang.yml +++ b/.github/workflows/build-with-standard-clang.yml @@ -14,6 +14,7 @@ jobs: strategy: matrix: + # TODO: add "3.15" back once mkl-service publishes a Python 3.15 wheel on PyPI python: ["3.10", "3.11", "3.12", "3.13", "3.14"] numpy_version: ["'numpy>=2'"] diff --git a/.github/workflows/build_pip.yml b/.github/workflows/build_pip.yml index 0beff14d..d971e43f 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: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 88455efd..85bdb717 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -38,6 +38,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 @@ -113,6 +117,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 @@ -198,6 +208,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 @@ -275,6 +289,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 011d47d9..26eda2f8 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 @@ -136,6 +140,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 @@ -242,6 +252,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 @@ -330,6 +344,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/CHANGELOG.md b/CHANGELOG.md index 35aa63d5..053aeac3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added * Added support for free-threaded (GIL-disabled) CPython builds: the Cython extension is compiled with `freethreading_compatible=True` [gh-357](https://github.com/IntelPython/mkl_fft/pull/357) +* Enabled support of Python 3.15 [gh-378](https://github.com/IntelPython/mkl_fft/pull/378) ### Changed * Raised the minimum build-time `Cython` requirement to `3.1.0`, the first release providing the `freethreading_compatible` directive [gh-357](https://github.com/IntelPython/mkl_fft/pull/357) diff --git a/pyproject.toml b/pyproject.toml index 855f0e2c..635c7e46 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 :: Free Threading :: 2 - Beta", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development", @@ -63,7 +64,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"]