Skip to content

Drop Python 3.9 support#1316

Merged
bdraco merged 10 commits intoaio-libs:masterfrom
bdraco:drop-python-3.9
Apr 13, 2026
Merged

Drop Python 3.9 support#1316
bdraco merged 10 commits intoaio-libs:masterfrom
bdraco:drop-python-3.9

Conversation

@bdraco
Copy link
Copy Markdown
Member

@bdraco bdraco commented Apr 11, 2026

What do these changes do?

Drops Python 3.9 from the CI matrix, classifiers, python_requires, and the ruff target; bumps the PyPy matrix entry to pypy-3.10. Python 3.9 hit end of life in October 2025, so this removes a slot that no longer gets upstream fixes and trims the CI matrix (which has been timing out).

Are there changes in behavior for the user?

Users on Python 3.9 will no longer receive new releases; minimum supported version is now Python 3.10.

Related issue number

Checklist

  • I think the code is well written
  • Unit tests for the changes exist
  • Documentation reflects the changes

bdraco added 2 commits April 11, 2026 13:57
Python 3.9 reached end of life in October 2025; remove it from the CI matrix, classifiers, python_requires, and ruff target. Bump pypy-3.9 to pypy-3.10 in the matrix.
@psf-chronographer psf-chronographer bot added the bot:chronographer:provided There is a change note present in this PR label Apr 11, 2026
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq bot commented Apr 12, 2026

Merging this PR will not alter performance

✅ 245 untouched benchmarks


Comparing bdraco:drop-python-3.9 (664262e) with master (7667c9e)

Open in CodSpeed

@Vizonex
Copy link
Copy Markdown
Member

Vizonex commented Apr 12, 2026

I'm for removing 3.9 if that keeps production and maintenance stable. Perhaps I should consider moving my current version of python from 3.10 to 3.11 and drop 3.9 on some of my own libraries that still support it.

@bdraco bdraco marked this pull request as ready for review April 12, 2026 02:15
rodrigobnogueira added a commit to rodrigobnogueira/multidict that referenced this pull request Apr 12, 2026
This commit temporarily includes the changes from PR aio-libs#1316 (Drop Python
3.9 support) so that cibuildwheel can pass on all platforms. Once aio-libs#1316
is merged into master, this PR will be rebased to contain only the
free-threaded race condition fix.
bdraco added 5 commits April 12, 2026 14:33
array is not subscriptable at runtime until Python 3.12, so
array[int] breaks 3.10 and 3.11. Revert to the original
annotation. Also update vendored pythoncapi_compat.h and
upgrade_pythoncapi.py from upstream with MIN_PYTHON set to
(3, 10), and apply the Py_IsTrue modernization from the tool.
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 13, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 97.60%. Comparing base (7667c9e) to head (664262e).
⚠️ Report is 1 commits behind head on master.

❌ Your project status has failed because the head coverage (96.96%) is below the target coverage (100.00%). You can increase the head coverage or adjust the target coverage.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1316   +/-   ##
=======================================
  Coverage   97.60%   97.60%           
=======================================
  Files          26       26           
  Lines        3513     3513           
  Branches      253      253           
=======================================
  Hits         3429     3429           
  Misses         77       77           
  Partials        7        7           
Flag Coverage Δ
CI-GHA 97.60% <100.00%> (ø)
pytest 97.60% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@bdraco bdraco merged commit 849aeef into aio-libs:master Apr 13, 2026
70 of 71 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot:chronographer:provided There is a change note present in this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants