diff --git a/.github/workflows/check-onemath.yaml b/.github/workflows/check-onemath.yaml index 426640e02d32..1387f7297535 100644 --- a/.github/workflows/check-onemath.yaml +++ b/.github/workflows/check-onemath.yaml @@ -70,7 +70,7 @@ jobs: strategy: fail-fast: false matrix: - python: ['3.13'] + python: ['3.13'] # no dpctl package on PyPI with enabled python 3.14 support os: [ubuntu-22.04] # windows-2022 - no DFT support for Windows in oneMKL runs-on: ${{ matrix.os }} @@ -161,7 +161,7 @@ jobs: strategy: fail-fast: false matrix: - python: ['3.13'] + python: ['3.13'] # no dpctl package on PyPI with enabled python 3.14 support os: [ubuntu-22.04] # windows-2022 - no DFT support for Windows in oneMKL runs-on: ${{ matrix.os }} diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index 099b61a34ade..8c6deeb9735f 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -16,7 +16,7 @@ env: ver-script-part1: "import json; f = open('version.json', 'r'); j = json.load(f); f.close(); " ver-script-part2: "d = j['dpnp'][0]; print('='.join((d[s] for s in ('version', 'build'))))" fetch-depth: 1 - python-ver-test-all-dtypes: '3.13' + python-ver-test-all-dtypes: '3.14' test-env-name: 'test' rerun-tests-on-failure: 'true' rerun-tests-max-attempts: 2 @@ -29,7 +29,7 @@ jobs: strategy: fail-fast: false matrix: - python: ['3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13', '3.14'] os: [ubuntu-22.04, windows-2022] permissions: @@ -128,7 +128,7 @@ jobs: strategy: fail-fast: false matrix: - python: ['3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13', '3.14'] os: [ubuntu-latest] env: @@ -261,7 +261,7 @@ jobs: strategy: fail-fast: false matrix: - python: ['3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13', '3.14'] os: [windows-2022] env: @@ -410,7 +410,7 @@ jobs: strategy: fail-fast: false matrix: - python: ['3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13', '3.14'] os: [ubuntu-22.04, windows-2022] runs-on: ${{ matrix.os }} diff --git a/.github/workflows/cron-run-tests.yaml b/.github/workflows/cron-run-tests.yaml index 2acee9bdcf17..d13048cc28d0 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.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13', '3.14'] runner: [ubuntu-22.04, ubuntu-24.04, windows-2022] steps: diff --git a/.github/workflows/pre-commit-autoupdate.yml b/.github/workflows/pre-commit-autoupdate.yml index aef5e16daad1..d8f2cdd0a3ca 100644 --- a/.github/workflows/pre-commit-autoupdate.yml +++ b/.github/workflows/pre-commit-autoupdate.yml @@ -29,7 +29,7 @@ jobs: - name: Set up python uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 with: - python-version: '3.13' + python-version: '3.14' - name: Install pre-commit run: pip install pre-commit diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index d1d2dbbae21a..f46438c88eb6 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -38,7 +38,7 @@ jobs: - name: Set up python uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 with: - python-version: '3.13' + python-version: '3.14' - name: Run pre-commit checks uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 8aa098af70cb..3714735c9ba0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.20.0] - MM/DD/2026 This release changes the license from `BSD-2-Clause` to `BSD-3-Clause`. -The release drops support for Python 3.9, making Python 3.10 the minimum required version. +This release achieves `dpnp` compatibility with Python 3.14 and enables distributing `dpnp` packages with the latest Python version. +Also, that release drops support for Python 3.9, making Python 3.10 the minimum required version. ### Added @@ -16,6 +17,7 @@ The release drops support for Python 3.9, making Python 3.10 the minimum require * Added `dpnp.exceptions` submodule to aggregate the generic exceptions used by dpnp [#2616](https://github.com/IntelPython/dpnp/pull/2616) * Added implementation of `dpnp.scipy.special.erfcx` [#2596](https://github.com/IntelPython/dpnp/pull/2596) * Added implementation of `dpnp.scipy.special.erfinv` and `dpnp.scipy.special.erfcinv` [#2624](https://github.com/IntelPython/dpnp/pull/2624) +* Enabled support of Python 3.14 [#2631](https://github.com/IntelPython/dpnp/pull/2631) ### Changed diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index 5fe753fadcee..2fd55e07eb4b 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -14,6 +14,7 @@ source: requirements: host: - python + - python-gil # [py>=314] - pip >=25.0 - pybind11 >=2.13.6 {% for dep in py_build_deps %} @@ -41,6 +42,7 @@ requirements: - {{ compiler('dpcpp') }} >={{ required_compiler_and_mkl_version }},<{{ max_compiler_and_mkl_version }} run: - python + - python-gil # [py>=314] - {{ pin_compatible('dpctl', min_pin='x.x.x', max_pin=None) }} - {{ pin_compatible('dpcpp-cpp-rt', min_pin='x.x', max_pin='x') }} - {{ pin_compatible('onemkl-sycl-blas', min_pin='x.x', max_pin='x') }} @@ -63,7 +65,7 @@ test: requires: - pytest - setuptools - - scipy + - scipy # [py<314] about: home: https://github.com/IntelPython/dpnp diff --git a/doc/quick_start_guide.rst b/doc/quick_start_guide.rst index a68671f676fa..92c506c0fd81 100644 --- a/doc/quick_start_guide.rst +++ b/doc/quick_start_guide.rst @@ -24,7 +24,7 @@ Follow device driver installation instructions to complete the step. Python Interpreter ================== -You will need Python 3.10, 3.11, 3.12 or 3.13 installed on your system. If you +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 `Intel Distribution for Python*`_. It installs all essential Python numerical and machine learning packages optimized for the Intel hardware, including diff --git a/environments/build_conda_pkg.yml b/environments/build_conda_pkg.yml index cb41f4528fac..face05ec635c 100644 --- a/environments/build_conda_pkg.yml +++ b/environments/build_conda_pkg.yml @@ -2,5 +2,5 @@ name: Build DPNP conda package channels: - conda-forge dependencies: - - python=3.13 + - python=3.13 # no python 3.14 support by conda-build - conda-build=25.9.0 diff --git a/environments/building_docs.yml b/environments/building_docs.yml index f2df72a85ece..0857dd8431ba 100644 --- a/environments/building_docs.yml +++ b/environments/building_docs.yml @@ -2,7 +2,7 @@ name: Building docs specific packages channels: - conda-forge dependencies: - - python=3.13 + - python=3.13 # no dpctl package on PyPI with enabled python 3.14 support - cupy - sphinx - sphinx_rtd_theme diff --git a/environments/create_conda_channel.yml b/environments/create_conda_channel.yml index 2ee38e720f9c..aa136bc2dec8 100644 --- a/environments/create_conda_channel.yml +++ b/environments/create_conda_channel.yml @@ -2,5 +2,5 @@ name: Create conda channel with DPNP package channels: - conda-forge dependencies: - - python=3.13 + - python=3.13 # no python 3.14 support by conda-index - conda-index=0.7.0 diff --git a/pyproject.toml b/pyproject.toml index 68a54aa095e6..62c4dca14b63 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development", @@ -70,7 +71,7 @@ license-files = ["LICENSE.txt"] maintainers = [{name = "Intel Corporation"}] name = "dpnp" readme = {file = "README.md", content-type = "text/markdown"} -requires-python = ">=3.10,<3.14" +requires-python = ">=3.10,<3.15" [project.optional-dependencies] coverage = [ @@ -102,7 +103,7 @@ Repository = "https://github.com/IntelPython/dpnp.git" [tool.black] line-length = 80 -target-version = ['py310', 'py311', 'py312', 'py313'] +target-version = ['py310', 'py311', 'py312', 'py313', 'py314'] [tool.codespell] builtin = "clear,rare,informal,names"