diff --git a/.github/workflows/conda-build-test.yml b/.github/workflows/conda-build-test.yml index 3b449d330e1c..954e5e6f2076 100644 --- a/.github/workflows/conda-build-test.yml +++ b/.github/workflows/conda-build-test.yml @@ -54,6 +54,8 @@ jobs: python_spec: '3.14.* *_cp314' # TODO: add free-threaded builds ('3.14.* *_cp314t') once a # free-threaded dpctl is available on conda-forge + # TODO: add Python 3.15 ('3.15.* *_cp315') once dpctl with + # Python 3.15 support is available on conda-forge env: build-conda-pkg-env: 'environments/build_conda_pkg.yml' @@ -148,6 +150,8 @@ jobs: python_spec: '3.14.* *_cp314' # TODO: add free-threaded builds ('3.14.* *_cp314t') once a # free-threaded dpctl is available on conda-forge + # TODO: add Python 3.15 ('3.15.* *_cp315') once dpctl with + # Python 3.15 support is available on conda-forge env: dpnp-repo-path: './source' diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index 5b7fb1dcb4c6..3bae1aa51ecc 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -30,7 +30,7 @@ jobs: strategy: fail-fast: false matrix: - python: ['3.12', '3.13'] + python: ['3.13'] os: [ubuntu-latest, windows-2022] include: - python: '3.14' @@ -45,6 +45,14 @@ jobs: - python: '3.14' os: windows-2022 python_spec: '3.14.* *_cp314t' + - python: '3.15' + os: ubuntu-latest + python_spec: '3.15.* *_cp315' + - python: '3.15' + os: windows-2022 + python_spec: '3.15.* *_cp315' + # TODO: add free-threaded builds ('3.15.* *_cp315t') once NumPy and + # dpctl cp315t builds are available permissions: # Needed to cancel any previous runs that are not completed for a given workflow @@ -152,7 +160,7 @@ jobs: strategy: fail-fast: false matrix: - python: ['3.12', '3.13'] + python: ['3.13'] os: [ubuntu-latest] include: - python: '3.14' @@ -161,6 +169,11 @@ jobs: - python: '3.14' os: ubuntu-latest python_spec: '3.14.* *_cp314t' + - python: '3.15' + os: ubuntu-latest + python_spec: '3.15.* *_cp315' + # TODO: add free-threaded builds ('3.15.* *_cp315t') once NumPy and + # dpctl cp315t builds are available env: dpnp-repo-path: '${{ github.workspace }}/source/' @@ -430,7 +443,7 @@ jobs: strategy: fail-fast: false matrix: - python: ['3.12', '3.13'] + python: ['3.13'] os: [windows-2022] include: - python: '3.14' @@ -439,6 +452,11 @@ jobs: - python: '3.14' os: windows-2022 python_spec: '3.14.* *_cp314t' + - python: '3.15' + os: windows-2022 + python_spec: '3.15.* *_cp315' + # TODO: add free-threaded builds ('3.15.* *_cp315t') once NumPy and + # dpctl cp315t builds are available env: dpnp-repo-path: '${{ github.workspace }}\source' @@ -612,7 +630,7 @@ jobs: strategy: fail-fast: false matrix: - python: ['3.12', '3.13'] + python: ['3.13'] os: [ubuntu-latest, windows-2022] include: - python: '3.14' @@ -627,6 +645,14 @@ jobs: - python: '3.14' os: windows-2022 python_spec: '3.14.* *_cp314t' + - python: '3.15' + os: ubuntu-latest + python_spec: '3.15.* *_cp315' + - python: '3.15' + os: windows-2022 + python_spec: '3.15.* *_cp315' + # TODO: add free-threaded builds ('3.15.* *_cp315t') once NumPy and + # dpctl cp315t builds are available runs-on: ${{ matrix.os }} timeout-minutes: 10 diff --git a/.github/workflows/cron-run-tests.yaml b/.github/workflows/cron-run-tests.yaml index d12530bd7325..c3a2808797e2 100644 --- a/.github/workflows/cron-run-tests.yaml +++ b/.github/workflows/cron-run-tests.yaml @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false matrix: - python: ['3.12', '3.13'] + python: ['3.13'] runner: [ubuntu-latest, windows-2022] include: - python: '3.14' @@ -53,6 +53,14 @@ jobs: - python: '3.14' runner: windows-2022 python_spec: '3.14.* *_cp314t' + - python: '3.15' + runner: ubuntu-latest + python_spec: '3.15.* *_cp315' + - python: '3.15' + runner: windows-2022 + python_spec: '3.15.* *_cp315' + # TODO: add free-threaded builds ('3.15.* *_cp315t') once NumPy and + # dpctl cp315t builds are available env: python-install-spec: "python ${{ matrix.python_spec || format('{0}.*', matrix.python) }}" diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d6b8161ef84..26362b9af91e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ This release is compatible with NumPy 2.5. * Added `UsmNDArray_RemoveQueueRef` C API function to release a queue reference obtained from `UsmNDArray_GetQueueRef` [#3042](https://github.com/IntelPython/dpnp/pull/3042) * Added a `rattler-build`-compatible conda recipe (`conda-recipe/rattler_recipe.yaml`) alongside the existing `conda-build` recipe [#3031](https://github.com/IntelPython/dpnp/pull/3031) * Added support for the `"nuc"` (nuclear) norm in `dpnp.linalg.cond` [#3084](https://github.com/IntelPython/dpnp/pull/3084) +* Added support for Python 3.15 [#3098](https://github.com/IntelPython/dpnp/pull/3098) ### Changed diff --git a/CMakeLists.txt b/CMakeLists.txt index 4645d6419759..1f41dab8fbe4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -100,7 +100,7 @@ find_package(oneDPL REQUIRED PATHS ${path_to_cmake_dir}) include(GNUInstallDirs) # find Python before enabling pybind11 -find_package(Python 3.10...<3.15 REQUIRED COMPONENTS Development.Module NumPy) +find_package(Python 3.10...<3.16 REQUIRED COMPONENTS Development.Module NumPy) # Fetch pybind11 include(FetchContent) diff --git a/doc/quick_start_guide.rst b/doc/quick_start_guide.rst index abc57a2ff603..ad40dae88c43 100644 --- a/doc/quick_start_guide.rst +++ b/doc/quick_start_guide.rst @@ -24,8 +24,8 @@ Follow device driver installation instructions to complete the step. Python Interpreter ================== -You will need Python 3.10, 3.11, 3.12, 3.13 or 3.14 installed on your system. If you -do not have one yet the easiest way to do that is to install +You will need Python 3.10, 3.11, 3.12, 3.13, 3.14 or 3.15 installed on your system. +If you do not have one yet the easiest way to do that is to install `Intel Distribution for Python*`_. It installs all essential Python numerical and machine learning packages optimized for the Intel hardware, including Data Parallel Extension for NumPy*. diff --git a/pyproject.toml b/pyproject.toml index b0348918536f..2c35f154adc8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,6 +32,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 :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Free Threading :: 2 - Beta", @@ -72,7 +73,7 @@ license-files = ["LICENSE.txt"] maintainers = [{ name = "Intel Corporation" }] name = "dpnp" 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", "scipy"] @@ -108,7 +109,7 @@ Repository = "https://github.com/IntelPython/dpnp.git" [tool.black] line-length = 80 -target-version = ['py310', 'py311', 'py312', 'py313', 'py314'] +target-version = ['py310', 'py311', 'py312', 'py313', 'py314', 'py315'] [tool.codespell] builtin = "clear,rare,informal,names"