Skip to content

Commit e3eb38d

Browse files
committed
Drop Python 3.9 support and update to PyPy 3.11
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. 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 - Remove py39 from tox envlist and gh-actions mapping - Remove mypy type checking for Python 3.9 - Update PyPy from 3.10 to 3.11 (latest stable version) - Add py314 to tox envlist for Python 3.14 support - Add support for Python 3.14t (free-threading build) in CI The project now supports Python 3.10, 3.11, 3.12, 3.13, 3.14 (including free-threading builds), and PyPy 3.11.
1 parent 4a22cf8 commit e3eb38d

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},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: py314
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,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},pypy3: coverage-clean
24+
coverage-report: py{310,311,312,313,314},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)