Skip to content

feat: drop Python 3.10 support - #1935

Merged
bdraco merged 4 commits into
masterfrom
drop-python-3.10
Oct 31, 2026
Merged

bdraco merged 4 commits into
masterfrom
drop-python-3.10

Conversation

@bdraco

@bdraco bdraco commented Oct 31, 2026

Copy link
Copy Markdown
Member

Raises the minimum Python to 3.11 now that 3.10 has reached end of life; users still on 3.10 keep installing the current release, since pip picks the newest version whose requires-python matches.

-requires-python = ">=3.10"
+requires-python = ">=3.11"
  • Removes 3.10 from the test matrix and wheel builds, and moves the PyPy lane from pypy-3.10 to pypy-3.11.
  • Drops the 3.10 compatibility code: the sys.version_info >= (3, 11) check in wait_future_or_timeout, and the backports-asyncio-runner, exceptiongroup and tomli entries in poetry.lock.
  • Same shape as the 3.9 drop in feat: drop Python 3.9 support #1688.
All changes
  • pyproject.toml: requires-python = ">=3.11", poetry python = "^3.11", ruff target-version = "py311". Removes the PYI034 ignore (it was waiting for this drop) and ignores ASYNC109, which the py311 target turns on: it flags the timeout parameters on public async APIs such as async_get_service_info and async_wait, and renaming them would break callers.
  • PYI034 fixes: Zeroconf.__enter__, ServiceBrowser.__enter__, AsyncServiceBrowser.__aenter__ and AsyncZeroconf.__aenter__ now return typing.Self.
  • .pre-commit-config.yaml: pyupgrade --py311-plus. It made no further rewrites.
  • ci.yml: drops 3.10 from test; changes pypy-3.10 to pypy-3.11 (matrix entry and two excludes); removes the two cp310 armv7l QEMU lanes; adds cp310-* pp310-* to CIBW_SKIP.
  • README.rst, CLAUDE.md, the pr-workflow skill and two comments in tests/conftest.py: version references updated.
  • poetry.lock: regenerated. It only drops the three 3.10-only backports; no other versions change.

Test plan

  • pre-commit run --all-files passes.
  • Full suite with every TO_CYTHONIZE module compiled on CPython 3.11 (523 passed) and 3.14 (523 passed).
  • CI matrix passes, including the new pypy-3.11 lane.

@github-actions

Copy link
Copy Markdown

Thanks for contributing! A quick note: this project is in the process of moving from LGPL-2.1 to Apache 2.0, and may keep LGPL-2.1-or-later as an OR option so GPL-2.0-only projects can keep using the library, see #1835.

By continuing with this pull request you agree that this new contribution is offered under both Apache 2.0 and LGPL-2.1-or-later, so it is covered under either outcome.

This notice does not affect your previous contributions. If you would like to consent to relicensing those as well, please post the consent statement on #1835; silence is never treated as consent for past work.

If offering this contribution under these licenses does not work for you, no hard feelings; reply with the exact phrase I do not agree to the Apache 2.0 license or simply close this pull request.

@codecov

codecov Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.87%. Comparing base (737c667) to head (f5761c4).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1935   +/-   ##
=======================================
  Coverage   99.87%   99.87%           
=======================================
  Files          33       33           
  Lines        3941     3944    +3     
  Branches      573      574    +1     
=======================================
+ Hits         3936     3939    +3     
  Misses          3        3           
  Partials        2        2           

☔ View full report in Codecov by Harness.
📢 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.

@codspeed

codspeed Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Merging this PR will not alter performance

1 warning

⚠️ 1 benchmark is dominated by system calls

System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.

Learn more about system calls

See affected benchmarks

✅ 24 untouched benchmarks


Comparing drop-python-3.10 (f5761c4) with master (36f9a60)1

Open in CodSpeed

Footnotes

  1. No successful run was found on master (737c667) during the generation of this report, so 36f9a60 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

@bdraco
bdraco merged commit 7fd81ac into master Oct 31, 2026
43 checks passed
@bdraco
bdraco deleted the drop-python-3.10 branch October 31, 2026 20:38
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