• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

aio-libs / yarl / 40401129026
98%

Build:
DEFAULT BRANCH: master
Ran 26 Oct 2026 09:07PM UTC
Jobs 1
Files 56
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

26 Oct 2026 09:03PM UTC coverage: 97.881% (+0.02%) from 97.86%
40401129026

push

github

web-flow
Drop Python 3.10 support (#1998)

<!-- Thank you for your contribution! -->

## What do these changes do?

Drops Python 3.10 support. `requires-python` is now `>=3.11`, 3.10 is
removed from the CI matrix and pyupgrade runs with `--py311-plus`. The
`StrEnum` and `Self` fallbacks in `yarl/_url.py` and the `tomli` and
`contextlib.chdir` fallbacks in the PEP 517 backend are removed,
together with the `tomli` build requirement. The notes about `parse_qsl`
raising on an empty query string with `max_num_fields=0`, which only
applied to Python 3.10, are removed from the docs, docstring and tests.
The remaining `typing.Union` annotations use the `|` operator.

## Are there changes in behavior for the user?

Yes; yarl can no longer be installed on Python 3.10.

## Is it a substantial burden for the maintainers to support this?

No; it removes compatibility code.

## Related issue number

N/A

## Checklist

- [x] I think the code is well written
- [x] Unit tests for the changes exist (N/A beyond the existing suite)
- [x] Documentation reflects the changes
- [ ] If you provide code modification, please add yourself to
`CONTRIBUTORS.txt`
- [x] Add a new news fragment into the `CHANGES/` folder

Drafted with Claude Code (Claude Opus 5.5); reviewed by @asvetlov.

<details>
<summary>Agent run details (optional, for reviewers)</summary>

Tests (Python 3.13, extensions built): `pytest ./tests ./yarl`, 3462
passed, 55 xfailed.
Tests (Python 3.11.9, `YARL_NO_EXTENSIONS=1`): 2 failures in
`tests/test_rfc5952.py` for IPv4 mapped addresses; the same 2 fail on
`master` with that interpreter, since its `ipaddress` predates the IPv4
mapped formatting fix.
Lint: `pre-commit run --all-files` passed, including mypy.
Docs: `make doc-spelling` passed.
Conformance: `python tools/conformance/compare.py --check` passed.
</details>

97 of 194 branches covered (50.0%)

Branch coverage included in aggregate %.

10 of 10 new or added lines in 3 files covered. (100.0%)

12 existing lines in 1 file now uncovered.

11313 of 11463 relevant lines covered (98.69%)

0.99 hits per line

Coverage Regressions

Lines Coverage ∆ File
12
97.44
0.04% yarl/_url.py
Jobs
ID Job ID Ran Files Coverage
1 MyPy - 40401129026.1 26 Oct 2026 09:07PM UTC 56
97.88
GitHub Action Run
Source Files on build 40401129026
  • Tree
  • List 56
  • Changed 7
  • Source Changed 7
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #40401129026
  • 8a6b565f on github
  • Prev Build on master (#40278028165)
  • Next Build on master (#40459105847)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc