diff --git a/CHANGELOG.md b/CHANGELOG.md index a5025726b367..37e87d74c5df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.22.0] - 2027-MM-DD +This release drops support for Python 3.10, making Python 3.11 the minimum required version. + ### Added * Added support for boolean input in `dpnp.positive` and the `+` operator of `dpnp.ndarray` [#3128](https://github.com/IntelPython/dpnp/pull/3128) @@ -30,6 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed * Removed the unused `FourZeroOffsets_Indexer`, `FixedDimStridedIndexer` and `ThreeOffsets_FixedDimStridedIndexer` from the libtensor header `utils/offset_utils.hpp` [#3131](https://github.com/IntelPython/dpnp/pull/3131) +* Dropped support for Python 3.10 [#3173](https://github.com/IntelPython/dpnp/pull/3173) ### Fixed diff --git a/CMakeLists.txt b/CMakeLists.txt index 252698dc1fea..4e45698b116b 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.16 REQUIRED COMPONENTS Development.Module NumPy) +find_package(Python 3.11...<3.16 REQUIRED COMPONENTS Development.Module NumPy) # Fetch pybind11 include(FetchContent) diff --git a/cmake/dpnp-config.cmake b/cmake/dpnp-config.cmake index 3b185944aa48..c8fa3bc1acca 100644 --- a/cmake/dpnp-config.cmake +++ b/cmake/dpnp-config.cmake @@ -20,7 +20,7 @@ # if(NOT Dpnp_FOUND) - find_package(Python 3.10 REQUIRED COMPONENTS Interpreter Development.Module) + find_package(Python 3.11 REQUIRED COMPONENTS Interpreter Development.Module) if(Python_EXECUTABLE) execute_process( diff --git a/conda-recipe-cf/meta.yaml b/conda-recipe-cf/meta.yaml index 1fa8ab3fecb7..07b9e86a268b 100644 --- a/conda-recipe-cf/meta.yaml +++ b/conda-recipe-cf/meta.yaml @@ -40,8 +40,6 @@ requirements: - cython >=3.1.0 - numpy >=1.26.0 - versioneer ==0.29 - # versioneer dependency - - tomli # [py<311] - dpctl >={{ required_dpctl_version }} - mkl-devel-dpcpp >={{ required_compiler_and_mkl_version }} - onedpl-devel diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index 18d1c0d11629..b290a2dc4cfb 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -48,8 +48,6 @@ requirements: - {{ dep|replace('_','-') }} {% endif %} {% endfor %} - # versioneer dependency - - tomli # [py<311] # Do not use pyproject.toml for setting dependencies on OneAPI packages - mkl-devel-dpcpp >={{ required_mkl_version }},<{{ max_compiler_and_mkl_version }} - onedpl-devel diff --git a/conda-recipe/rattler_recipe.yaml b/conda-recipe/rattler_recipe.yaml index eeb25ca31b4e..35889fc38ee2 100644 --- a/conda-recipe/rattler_recipe.yaml +++ b/conda-recipe/rattler_recipe.yaml @@ -48,9 +48,6 @@ requirements: - setuptools>=79.0.1 - wheel>=0.45.1 - versioneer ==0.29 - # versioneer dependency - - if: match(python, "<3.11") - then: tomli # Do not use pyproject.toml for setting dependencies on OneAPI packages - mkl-devel-dpcpp >=${{ required_mkl_version }},<${{ max_compiler_and_mkl_version }} - onedpl-devel diff --git a/doc/quick_start_guide.rst b/doc/quick_start_guide.rst index 4b3b264ceb2d..8c5a2571edc3 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, 3.13, 3.14 or 3.15 installed on your system. +You will need Python 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 diff --git a/dpnp/tests/test_fft.py b/dpnp/tests/test_fft.py index 3f2540807c33..b0c11cd21091 100644 --- a/dpnp/tests/test_fft.py +++ b/dpnp/tests/test_fft.py @@ -280,7 +280,7 @@ def test_error(self, xp): a = xp.ones((4, 3)) if xp == dpnp: # dpnp and stock NumPy raise TypeError - # Intel NumPy raises SystemError for Python 3.10 and 3.11 + # Intel NumPy raises SystemError for Python 3.11 assert_raises(TypeError, xp.fft.fft, a, n=5.0) # Invalid number of FFT point for incorrect n value diff --git a/dpnp/tests/third_party/cupy/testing/_loops.py b/dpnp/tests/third_party/cupy/testing/_loops.py index bcbc1de3c45a..d3889c08733c 100644 --- a/dpnp/tests/third_party/cupy/testing/_loops.py +++ b/dpnp/tests/third_party/cupy/testing/_loops.py @@ -37,8 +37,7 @@ def _format_exception(exc): if exc is None: return None - # TODO(kataoka): Use traceback.format_exception(exc) in Python 3.10 - return "".join(traceback.TracebackException.from_exception(exc).format()) + return "".join(traceback.format_exception(exc)) def _call_func(impl, args, kw): diff --git a/pyproject.toml b/pyproject.toml index 2c35f154adc8..fd440911feae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,6 @@ classifiers = [ "Programming Language :: Cython", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", @@ -73,7 +72,7 @@ license-files = ["LICENSE.txt"] maintainers = [{ name = "Intel Corporation" }] name = "dpnp" readme = { file = "README.md", content-type = "text/markdown" } -requires-python = ">=3.10,<3.16" +requires-python = ">=3.11,<3.16" [project.optional-dependencies] benchmark = ["asv>=0.6", "scipy"] @@ -83,8 +82,7 @@ coverage = [ "llvm", "pytest", "pytest-cov", - "scipy", - "tomli" + "scipy" ] docs = [ "Cython", @@ -109,7 +107,7 @@ Repository = "https://github.com/IntelPython/dpnp.git" [tool.black] line-length = 80 -target-version = ['py310', 'py311', 'py312', 'py313', 'py314', 'py315'] +target-version = ['py311', 'py312', 'py313', 'py314', 'py315'] [tool.codespell] builtin = "clear,rare,informal,names"