Skip to content

Drop support for Python 3.10 (EOL) - #1164

Merged
dyve merged 1 commit into
mainfrom
drop-python-310-eol
Oct 11, 2026
Merged

dyve merged 1 commit into
mainfrom
drop-python-310-eol

Conversation

@dyve

@dyve dyve commented Oct 11, 2026

Copy link
Copy Markdown
Member

Propagation of zostera/django-marina#691, where the reasoning lives.

Python 3.10 reached end of life on 2026-10-01. MAINTAINING.md says to drop a cycle as soon as it goes EOL rather than wait for a scheduled release, so this takes it out of tox.ini, the CI matrix and the classifiers, and raises requires-python to >=3.11. Breaking for anyone still on 3.10, who will keep resolving to the last release.

One surprise worth reviewing. Raising the floor reordered the imports in docs/conf.py. Ruff infers its isort target from requires-python, and tomllib arrived in 3.11, so at >=3.10 it was treated as a non-stdlib import in its own block, while at >=3.11 it joins the stdlib block, where a plain import sorts above a from import. That hunk is just format output, not a judgement call, and all five packages have the same two lines.

Python 3.15 does not change state. It stays non-blocking and out of the classifiers, but the comments calling it a release candidate are now wrong, since 3.15.0 shipped. What holds it back is Django rather than CPython: 5.2, 6.0 and 6.1 all still stop at 3.14. MAINTAINING.md gains that case, which the pre-release bullet did not cover.

uv.lock is regenerated, losing the 3.10 resolution markers and the sphinx pin that existed only for 3.10. tox.ini and ci.yml are byte-identical to django-marina after this, bar the per-package exceptions PACKAGING.md documents.

Verified with just lint, just build and just test-cov at 100%.

🤖 Generated with Claude Code

Propagation of zostera/django-marina#691, where the reasoning lives.

Python 3.10 reached end of life on 2026-10-01. MAINTAINING.md says to drop a
cycle as soon as it goes EOL, so this takes it out of tox.ini, the CI matrix
and the classifiers, and raises requires-python to >=3.11. Breaking for anyone
still on 3.10: they keep resolving to the last release.

Raising the floor moved docs/conf.py. Ruff infers its isort target from
requires-python, and tomllib arrived in 3.11, so at >=3.10 it sorted as a
non-stdlib import in its own block and at >=3.11 it joins the stdlib block,
where a plain import sorts above a from import. That is just format output.

Python 3.15 stays non-blocking and out of the classifiers, but the comments
calling it a release candidate are now wrong. What holds it back is Django,
which still stops at 3.14 in 5.2, 6.0 and 6.1. MAINTAINING.md gains that case.

uv.lock regenerated. tox.ini and ci.yml stay byte-identical to django-marina,
bar the documented per-package exceptions.

Verified: just lint, just build and just test-cov at 100%.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@dyve
dyve merged commit 5df3759 into main Oct 11, 2026
22 checks passed
@dyve
dyve deleted the drop-python-310-eol branch October 11, 2026 08:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant