diff --git a/.github/workflows/build-with-clang.yml b/.github/workflows/build-with-clang.yml index 87478d9..bb02e37 100644 --- a/.github/workflows/build-with-clang.yml +++ b/.github/workflows/build-with-clang.yml @@ -13,7 +13,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: ONEAPI_ROOT: /opt/intel/oneapi diff --git a/.github/workflows/build-with-standard-clang.yml b/.github/workflows/build-with-standard-clang.yml index c2eed53..380aa1c 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: diff --git a/.github/workflows/build_pip.yml b/.github/workflows/build_pip.yml index 77d2af3..dc373d9 100644 --- a/.github/workflows/build_pip.yml +++ b/.github/workflows/build_pip.yml @@ -40,6 +40,14 @@ jobs: python_spec: "3.14.* *_cp314t" free_threaded: "true" use_pre: "--pre" + - python: "3.15" + python_tag: "3.15" + python_spec: "3.15.* *_cp315" + use_pre: "" + - python: "3.15" + python_tag: "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 3e5fde9..ca1ffa2 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -37,6 +37,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,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\ @@ -189,6 +197,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: CHANNELS: -c conda-forge --override-channels @@ -279,6 +291,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: CHANNELS: -c conda-forge --override-channels @@ -371,6 +387,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 @@ -454,6 +474,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: Download artifact diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index b00aa91..2c4aa6a 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 @@ -132,6 +136,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 @@ -207,6 +215,11 @@ jobs: python_tag: "3.14t" numpy: 'numpy">=2"' experimental: false + - python: "3.15" + python_spec: "3.15.* *_cp315" + python_tag: "3.15" + numpy: 'numpy">=2"' + experimental: false continue-on-error: ${{ matrix.experimental }} env: @@ -308,6 +321,11 @@ jobs: python_tag: "3.14t" numpy: 'numpy">=2"' experimental: false + - python: "3.15" + python_spec: "3.15.* *_cp315" + python_tag: "3.15" + numpy: 'numpy">=2"' + experimental: false continue-on-error: ${{ matrix.experimental }} env: diff --git a/CHANGELOG.md b/CHANGELOG.md index a7c982f..bf6573c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Added support for free-threaded (GIL-disabled) CPython builds: the Cython extension is compiled with `freethreading_compatible=True`, so importing `mkl_random` no longer re-enables the GIL [gh-159](https://github.com/IntelPython/mkl_random/pull/159) * Added a thread-safety section to the how-to guide for free-threaded Python [gh-159](https://github.com/IntelPython/mkl_random/pull/159) * Added an [ASV](https://asv.readthedocs.io/en/stable/) benchmark suite under `benchmarks/` and a `benchmark` optional dependency group [gh-184](https://github.com/IntelPython/mkl_random/pull/184) +* Enabled support of Python 3.15 [gh-188](https://github.com/IntelPython/mkl_random/pull/188) ### Changed * Sped up `normal`, `uniform`, `exponential`, `laplace`, `gumbel`, `logistic`, `rayleigh` and `lognormal` for array-valued parameters. Seeded results change for these array paths; scalar paths are unchanged [gh-171](https://github.com/IntelPython/mkl_random/pull/171) diff --git a/pyproject.toml b/pyproject.toml index 763dcfe..e8fdbef 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", @@ -77,7 +78,7 @@ keywords = [ license = "BSD-3-Clause" name = "mkl_random" 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"]