Latest Results
[PR #14171/b195d1cb backport][3.15] Drop Python 3.10 support (#14173)
**This is a backport of PR #14171 as merged into master
(b195d1cb54f0a6362d64934a1fa147f0759deadd).**
## What do these changes do?
Drops Python 3.10 support: `requires-python >= 3.11`, removes the
`async-timeout` dependency, 3.10 from the CI matrix, and all
`sys.version_info < (3, 11)` code paths, tests and docs. Modernizes to
3.11+ idioms (`asyncio.timeout`, `typing.Self`/`Unpack`, `TimeoutError`,
`datetime.UTC`, pyupgrade `--py311-plus`), converts `ContentCoding` to
`StrEnum`, and recompiles the requirement lockfiles under Python 3.11.
## Are there changes in behavior for the user?
Python 3.10 is no longer supported. `ContentCoding` members now compare
equal to plain strings. The `ssl_shutdown_timeout` "ignored on Python <
3.11" warning and the TLS-in-TLS warning are gone, as they could only
fire on 3.10.
## Is it a substantial burden for the maintainers to support this?
No — it removes code (net ~900 lines). Remaining `TODO(PY311): Use
Unpack` items for kwargs typing are left for a follow-up.
## Related issue number
N/A
## Checklist
- [x] I think the code is well written
- [x] Unit tests for the changes exist (3.10-only tests removed;
existing tests cover the 3.11 paths)
- [x] Documentation reflects the changes
- [ ] If you provide code modification, please add yourself to
`CONTRIBUTORS.txt` — N/A (already listed)
- [x] Add a new news fragment into the `CHANGES/` folder
<details>
<summary>Local test run</summary>
- Python 3.11 (pure Python): `5006 passed, 457 skipped, 14 xfailed`
- Python 3.13: all failures are in `tests/test_http_parser.py` (435),
identical on unmodified master — the local env lacks the compiled C
parser.
- `pre-commit run --all-files`: passing; mypy: no new errors vs. master.
</details>
Drafted with Claude Code (Claude Opus 5.5); reviewed by <pending>. [PR #14171/b195d1cb backport][3.14] Drop Python 3.10 support (#14175)
**This is a backport of PR #14171 as merged into master
(b195d1cb54f0a6362d64934a1fa147f0759deadd).**
## What do these changes do?
Drops Python 3.10 support: `requires-python >= 3.11`, removes the
`async-timeout` dependency, 3.10 from the CI matrix, and all
`sys.version_info < (3, 11)` code paths, tests and docs. Modernizes to
3.11+ idioms (`asyncio.timeout`, `typing.Self`/`Unpack`, `TimeoutError`,
`datetime.UTC`, pyupgrade `--py311-plus`), converts `ContentCoding` to
`StrEnum`, and recompiles the requirement lockfiles under Python 3.11.
## Are there changes in behavior for the user?
Python 3.10 is no longer supported. `ContentCoding` members now compare
equal to plain strings. The `ssl_shutdown_timeout` "ignored on Python <
3.11" warning and the TLS-in-TLS warning are gone, as they could only
fire on 3.10.
## Is it a substantial burden for the maintainers to support this?
No — it removes code (net ~900 lines). Remaining `TODO(PY311): Use
Unpack` items for kwargs typing are left for a follow-up.
## Related issue number
N/A
## Checklist
- [x] I think the code is well written
- [x] Unit tests for the changes exist (3.10-only tests removed;
existing tests cover the 3.11 paths)
- [x] Documentation reflects the changes
- [ ] If you provide code modification, please add yourself to
`CONTRIBUTORS.txt` — N/A (already listed)
- [x] Add a new news fragment into the `CHANGES/` folder
<details>
<summary>Local test run</summary>
- Python 3.11 (pure Python): `5006 passed, 457 skipped, 14 xfailed`
- Python 3.13: all failures are in `tests/test_http_parser.py` (435),
identical on unmodified master — the local env lacks the compiled C
parser.
- `pre-commit run --all-files`: passing; mypy: no new errors vs. master.
</details>
Drafted with Claude Code (Claude Opus 5.5); reviewed by <pending>. Latest Branches
0%
emadleo13:test-14124-multirange 0%
dependabot/github_actions/3.15/pypa/cibuildwheel-4.3.4 0%
erwindouna:websocket-set-max-msg-size © 2026 CodSpeed Technology