diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 7492e79e2..5f72d0990 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -7,7 +7,6 @@ jobs: matrix: os: ['ubuntu-latest'] python-version: - - '3.9' - '3.10' - '3.11' - '3.12' diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f8376ab41..366364d76 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,5 +19,5 @@ repos: rev: 75992aaa40730136014f34227e0135f63fc951b4 # frozen: v3.21.2 hooks: - id: pyupgrade - name: "Enforce Python 3.9+ idioms" - args: ["--py39-plus"] + name: "Enforce Python 3.10+ idioms" + args: ["--py310-plus"] diff --git a/CHANGES.rst b/CHANGES.rst index dfb8f5604..8e6bfb506 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,7 @@ Here you can see the full list of changes between each SQLAlchemy-Utils release. Unreleased ^^^^^^^^^^ +- Drop support for Python 3.9. - Support Python 3.14. - Fix ``ChoiceType`` returning the raw scalar instead of a ``Choice`` for falsy codes such as ``0`` or the empty string. (#813) diff --git a/docs/installation.rst b/docs/installation.rst index a2b1cce6c..2ef1f771b 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -6,12 +6,7 @@ This part of the documentation covers the installation of SQLAlchemy-Utils. Supported platforms ------------------- -SQLAlchemy-Utils is currently tested against the following Python platforms: - -- CPython 3.9 -- CPython 3.10 -- CPython 3.11 -- CPython 3.12 +SQLAlchemy-Utils is tested against supported CPython versions. Installing an official release diff --git a/pyproject.toml b/pyproject.toml index ce0c94eba..b0fecdc54 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,13 +14,12 @@ authors = [ {name = "Janne Vanhala"}, {name = "Vesa Uimonen"} ] -requires-python = ">=3.9" +requires-python = ">=3.10" classifiers = [ "Environment :: Web Environment", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", diff --git a/requirements/docs/pyproject.toml b/requirements/docs/pyproject.toml index 1df8cb6a7..93316f30f 100644 --- a/requirements/docs/pyproject.toml +++ b/requirements/docs/pyproject.toml @@ -2,6 +2,6 @@ package-mode = false [tool.poetry.dependencies] -python = ">=3.9" +python = ">=3.10" sphinx = "*" sphinx-rtd-theme = "*" diff --git a/requirements/docs/requirements.txt b/requirements/docs/requirements.txt index 580487791..732091a65 100644 --- a/requirements/docs/requirements.txt +++ b/requirements/docs/requirements.txt @@ -1,27 +1,25 @@ -alabaster==0.7.16 ; python_version >= "3.9" -babel==2.17.0 ; python_version >= "3.9" -certifi==2025.7.9 ; python_version >= "3.9" -charset-normalizer==3.4.2 ; python_version >= "3.9" -colorama==0.4.6 ; python_version >= "3.9" and sys_platform == "win32" -docutils==0.21.2 ; python_version >= "3.9" -idna==3.15 ; python_version >= "3.9" -imagesize==1.4.1 ; python_version >= "3.9" -importlib-metadata==8.7.0 ; python_version == "3.9" -jinja2==3.1.6 ; python_version >= "3.9" -markupsafe==3.0.2 ; python_version >= "3.9" -packaging==25.0 ; python_version >= "3.9" -pygments==2.19.2 ; python_version >= "3.9" -requests==2.33.0 ; python_version >= "3.9" -snowballstemmer==3.0.1 ; python_version >= "3.9" -sphinx-rtd-theme==3.0.2 ; python_version >= "3.9" -sphinx==7.4.7 ; python_version >= "3.9" -sphinxcontrib-applehelp==2.0.0 ; python_version >= "3.9" -sphinxcontrib-devhelp==2.0.0 ; python_version >= "3.9" -sphinxcontrib-htmlhelp==2.1.0 ; python_version >= "3.9" -sphinxcontrib-jquery==4.1 ; python_version >= "3.9" -sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.9" -sphinxcontrib-qthelp==2.0.0 ; python_version >= "3.9" -sphinxcontrib-serializinghtml==2.0.0 ; python_version >= "3.9" -tomli==2.2.1 ; python_version >= "3.9" and python_version < "3.11" -urllib3==2.7.0 ; python_version >= "3.9" -zipp==3.23.0 ; python_version == "3.9" +alabaster==1.0.0 ; python_version >= "3.10" +babel==2.18.0 ; python_version >= "3.10" +certifi==2026.6.17 ; python_version >= "3.10" +charset-normalizer==3.4.9 ; python_version >= "3.10" +colorama==0.4.6 ; python_version >= "3.10" and sys_platform == "win32" +docutils==0.21.2 ; python_version >= "3.10" +idna==3.18 ; python_version >= "3.10" +imagesize==1.5.0 ; python_version >= "3.10" +jinja2==3.1.6 ; python_version >= "3.10" +markupsafe==3.0.3 ; python_version >= "3.10" +packaging==26.2 ; python_version >= "3.10" +pygments==2.20.0 ; python_version >= "3.10" +requests==2.34.2 ; python_version >= "3.10" +snowballstemmer==3.1.1 ; python_version >= "3.10" +sphinx-rtd-theme==3.1.0 ; python_version >= "3.10" +sphinx==8.1.3 ; python_version >= "3.10" +sphinxcontrib-applehelp==2.0.0 ; python_version >= "3.10" +sphinxcontrib-devhelp==2.0.0 ; python_version >= "3.10" +sphinxcontrib-htmlhelp==2.1.0 ; python_version >= "3.10" +sphinxcontrib-jquery==4.1 ; python_version >= "3.10" +sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.10" +sphinxcontrib-qthelp==2.0.0 ; python_version >= "3.10" +sphinxcontrib-serializinghtml==2.0.0 ; python_version >= "3.10" +tomli==2.4.1 ; python_version == "3.10" +urllib3==2.7.0 ; python_version >= "3.10" diff --git a/tox.ini b/tox.ini index a2c1d3567..ff06d92a7 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] envlist = - py{3.9, 3.10, 3.11, 3.12, 3.13, 3.14}-sqlalchemy{14, 2} + py{3.10, 3.11, 3.12, 3.13, 3.14}-sqlalchemy{14, 2} ruff docs labels =