From 6d8f2995eba8d05faaf4e6036a658c601817c623 Mon Sep 17 00:00:00 2001 From: Lukas Heumos Date: Sun, 6 Sep 2026 19:59:45 +0200 Subject: [PATCH] Align minimum supported dependencies with SPEC 0 SPEC 0 recommends dropping support for Python versions 3 years after their initial release and for core scientific Python packages 2 years after theirs. Applying that schedule as of 2026 Q3 raises the floors to Python 3.12, numpy 2.2, scipy 1.15, pandas 2.3, scikit-learn 1.6 and matplotlib 3.10. Python 3.11 was released in October 2022 and is dropped from the metadata and from the CI matrix. anndata, formulaic and formulaic-contrasts are not SPEC 0 core packages, so their floors are left alone. The requirements page still pointed at setup.py for the dependency list; it now points at pyproject.toml and states the support policy rather than the one-off note about Python 3.10. The test suite passes on Python 3.12 both at the new floors and against current releases of every dependency. Signed-off-by: Lukas Heumos --- .github/workflows/pr_validation.yml | 2 -- README.md | 2 +- docs/source/usage/requirements.rst | 17 +++++++++-------- pyproject.toml | 13 ++++++------- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/.github/workflows/pr_validation.yml b/.github/workflows/pr_validation.yml index 178fa458..7e3a60ea 100644 --- a/.github/workflows/pr_validation.yml +++ b/.github/workflows/pr_validation.yml @@ -18,8 +18,6 @@ jobs: strategy: matrix: include: - - os: ubuntu-latest - python: "3.11" - os: ubuntu-latest python: "3.12" - os: ubuntu-latest diff --git a/README.md b/README.md index 4b539440..30b0e9dc 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ If you're interested in contributing or want access to the development version, The list of package version requirements is available in `pyproject.toml`. For reference, the code is being tested in a github workflow (CI) with python -3.11 to 3.13 and the latest versions of the following packages: +3.12 to 3.13 and the latest versions of the following packages: ``` - anndata diff --git a/docs/source/usage/requirements.rst b/docs/source/usage/requirements.rst index b4bbe984..ede4ed8e 100644 --- a/docs/source/usage/requirements.rst +++ b/docs/source/usage/requirements.rst @@ -1,17 +1,18 @@ Requirements ------------ -The list of package version requirements is available in ``setup.py``, and will be automatically installed along PyDESeq2 when using PyPI. -For reference, the code was tested with python 3.11 and the following package versions:: +The list of package version requirements is available in ``pyproject.toml``, and will be automatically installed along PyDESeq2 when using PyPI. +For reference, the code was tested with python 3.12 and the following package versions:: - anndata>=0.11.0 - formulaic>=1.0.2 - - numpy>=2.0.0 - - pandas>=2.2.0 - - scikit-learn>=1.4.0 - - scipy>=1.12.0 + - numpy>=2.2.0 + - pandas>=2.3.0 + - scikit-learn>=1.6.0 + - scipy>=1.15.0 - formulaic-contrasts>=0.2.0 - - matplotlib>=3.9.0 + - matplotlib>=3.10.0 -Note that starting from pydeseq2 0.5.3, python 3.10 is no longer supported. +Minimum supported versions of Python and the core scientific Python packages follow `SPEC 0 `_. +Python versions are dropped 3 years after their initial release, and core package versions 2 years after theirs. Please don't hesitate to open an issue in case you encounter any problems due to possible deprecations. diff --git a/pyproject.toml b/pyproject.toml index 2cfe8ac7..37f293f0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,22 +17,21 @@ authors = [ { name = "Vincent Cabelli" }, { name = "Mathieu Andreux" }, ] -requires-python = ">=3.11" +requires-python = ">=3.12" classifiers = [ "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", ] dependencies = [ "anndata>=0.11.0", "formulaic>=1.0.2", - "numpy>=2.0.0", - "pandas>=2.2.0", - "scikit-learn>=1.4.0", - "scipy>=1.12.0", + "numpy>=2.2.0", + "pandas>=2.3.0", + "scikit-learn>=1.6.0", + "scipy>=1.15.0", "formulaic-contrasts>=0.2.0", - "matplotlib>=3.9.0", + "matplotlib>=3.10.0", ] optional-dependencies.dev = [ "pytest>=8.4.0",