Skip to content

Commit 1baaf04

Browse files
authored
Drop Python 3.9 support and update to PyPy 3.11 (#608)
Python 3.9 reached end-of-life on October 5, 2025. This commit removes support for Python 3.9 and updates the minimum required version to Python 3.10. Additionally, PyPy has been updated from 3.10 to 3.11, and proper support for Python 3.14 free-threading builds (3.14t) has been added with separate tox environments. Changes: - Update requires-python from >=3.9 to >=3.10 in pyproject.toml - Remove Python 3.9 classifier from package metadata - Remove Python 3.9 and PyPy 3.9 from CI test matrix - Update PyPy from 3.10 to 3.11 (latest stable version) - Remove py39 from tox envlist and gh-actions mapping - Remove mypy type checking for Python 3.9 - Add separate tox environments for py314 and py314t to properly support both regular and free-threading Python 3.14 builds - Update all tox environment references to include py314 and py314t The project now officially supports: - CPython: 3.10, 3.11, 3.12, 3.13, 3.14 (including free-threading) - PyPy: 3.11
1 parent 4a22cf8 commit 1baaf04

File tree

3 files changed

+9
-10
lines changed

3 files changed

+9
-10
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
os:
1414
- ubuntu-latest
1515
python-version:
16-
["3.9", "3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", pypy3.9, pypy3.10]
16+
["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", pypy3.11]
1717

1818
steps:
1919
- uses: actions/checkout@v6

pyproject.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ classifiers = [
2222
"Development Status :: 5 - Production/Stable",
2323
"Programming Language :: Python",
2424
"Programming Language :: Python :: 3",
25-
"Programming Language :: Python :: 3.9",
2625
"Programming Language :: Python :: 3.10",
2726
"Programming Language :: Python :: 3.11",
2827
"Programming Language :: Python :: 3.12",
@@ -37,7 +36,7 @@ classifiers = [
3736
"Environment :: Web Environment",
3837
]
3938

40-
requires-python = ">=3.9"
39+
requires-python = ">=3.10"
4140

4241
dynamic = ["version", "readme"]
4342

tox.ini

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
[tox]
2-
envlist = lint,py{39,310,311,312,313},pypy3,manifest,coverage-report
2+
envlist = lint,py{310,311,312,313,314,314t},pypy3,manifest,coverage-report
33

44
[gh-actions]
55
python =
6-
3.9: py39
76
3.10: py310
87
3.11: py311
98
3.12: py312
109
3.13: py313, lint, manifest
1110
3.14: py314
12-
pypy-3.9: pypy3
11+
3.14t: py314t
12+
pypy-3.11: pypy3
1313

1414
[testenv]
1515
deps =
1616
pytest
1717
pytest-cov
1818
sh >= 2.0.2, <3
1919
click
20-
py{39,310,311,312,313,3.14,pypy3}: ipython
20+
py{310,311,312,313,314,314t,pypy3}: ipython
2121
commands = pytest --cov --cov-report=term-missing {posargs}
2222
depends =
23-
py{39,310,311,312,313,314},pypy3: coverage-clean
24-
coverage-report: py{39,310,311,312,313,314},pypy3
23+
py{310,311,312,313,314,314t},pypy3: coverage-clean
24+
coverage-report: py{310,311,312,313,314,314t},pypy3
2525

2626
[testenv:lint]
2727
skip_install = true
@@ -36,7 +36,7 @@ commands =
3636
mypy --python-version=3.12 src tests
3737
mypy --python-version=3.11 src tests
3838
mypy --python-version=3.10 src tests
39-
mypy --python-version=3.9 src tests
39+
4040

4141
[testenv:format]
4242
skip_install = true

0 commit comments

Comments
 (0)