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

aio-libs / yarl
98%

Build:
DEFAULT BRANCH: master
Repo Added 16 May 2026 07:31PM UTC
Token Ka8NuQWQMJKaAuGCid80mCKVsFDYIFV8s regen
Build 897 Last
Files 55
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

LAST BUILD ON BRANCH master
branch: SELECT
CHANGE BRANCH
x
Sync Branches
  • No branch selected
  • 2_dev0
  • Dreamsorcerer-patch-1
  • add-claude-md-agents-ref
  • agents-doc-spelling
  • aiohttp-workflow-setup-uv
  • aiohttp-workflow-uv-pip
  • backslash-category
  • build-flags-via-cppflags
  • bump-propcache-to-0.5.3
  • ci-aiohttp-no-cython-tracing
  • ci-dedupe-wheel-tests
  • ci-drop-hypothesis-from-wheel-tests
  • ci-exclude-idna-sweep-from-wheel-tests
  • ci-native-arm-wheels
  • ci-skip-riscv64-wheel-tests
  • ci-windows-archs-per-runner
  • ci/cibuildwheel-uv-constraint-env
  • ci/tox-dev-workflow
  • ci/uv-setup-python
  • ci/uv-setup-python-followup
  • cibuildwheel-uv-frontend
  • claude/aiohttp-version-bump-ab99a9
  • claude/rfc-conformance-report
  • claude/url-test-suite-rfc-b479b0
  • codex/pickle-plain-state
  • compat-mode
  • conformance-ci-job
  • conformance-mode-aware
  • conformance-oracle-iri
  • conformance-rfc-3986-3987
  • cook/build-reject-bool-port
  • coverage-fix
  • dependabot/github_actions/CodSpeedHQ/action-5
  • dependabot/github_actions/CodSpeedHQ/action-5.0.1
  • dependabot/github_actions/CodSpeedHQ/action-5.0.2
  • dependabot/github_actions/CodSpeedHQ/action-5.0.3
  • dependabot/github_actions/CodSpeedHQ/action-5.2.1
  • dependabot/github_actions/CodSpeedHQ/action-5.4.0
  • dependabot/github_actions/actions/checkout-7
  • dependabot/github_actions/actions/download-artifact-8
  • dependabot/github_actions/actions/setup-python-7
  • dependabot/github_actions/astral-sh/setup-uv-10.0.1
  • dependabot/github_actions/astral-sh/setup-uv-10.1.0
  • dependabot/github_actions/astral-sh/setup-uv-10.2.0
  • dependabot/github_actions/astral-sh/setup-uv-8.2.0
  • dependabot/github_actions/astral-sh/setup-uv-8.3.0
  • dependabot/github_actions/astral-sh/setup-uv-8.3.1
  • dependabot/github_actions/astral-sh/setup-uv-8.3.2
  • dependabot/github_actions/astral-sh/setup-uv-9.0.0
  • dependabot/github_actions/codecov/codecov-action-7
  • dependabot/github_actions/github/codeql-action-4.37.3
  • dependabot/github_actions/github/codeql-action-4.37.4
  • dependabot/github_actions/github/codeql-action-4.37.5
  • dependabot/github_actions/github/codeql-action-4.37.6
  • dependabot/github_actions/github/codeql-action-4.37.7
  • dependabot/github_actions/github/codeql-action-4.37.8
  • dependabot/github_actions/github/codeql-action-4.37.9
  • dependabot/github_actions/github/codeql-action-4.38.0
  • dependabot/github_actions/github/codeql-action-4.38.1
  • dependabot/github_actions/github/codeql-action-4.38.2
  • dependabot/github_actions/pypa/cibuildwheel-4.0.0
  • dependabot/github_actions/pypa/cibuildwheel-4.1.0
  • dependabot/github_actions/pypa/cibuildwheel-4.1.1
  • dependabot/github_actions/pypa/cibuildwheel-4.2.0
  • dependabot/github_actions/pypa/cibuildwheel-4.2.1
  • dependabot/github_actions/pypa/cibuildwheel-4.3.0
  • dependabot/github_actions/sigstore/gh-action-sigstore-python-3.4.0
  • dependabot/github_actions/sigstore/gh-action-sigstore-python-3.5.0
  • dependabot/github_actions/softprops/action-gh-release-3
  • dependabot/github_actions/test-summary/action-2.6
  • dependabot/pip/cython-3.2.4
  • dependabot/pip/cython-3.2.5
  • dependabot/pip/docutils-lt-0.23
  • dependabot/pip/docutils-lt-0.24
  • dependabot/pip/hypothesis-gte-6.152.1
  • dependabot/pip/hypothesis-gte-6.152.7
  • dependabot/pip/hypothesis-gte-6.152.9
  • dependabot/pip/hypothesis-gte-6.153.0
  • dependabot/pip/hypothesis-gte-6.153.2
  • dependabot/pip/hypothesis-gte-6.154.1
  • dependabot/pip/hypothesis-gte-6.155.0
  • dependabot/pip/hypothesis-gte-6.155.1
  • dependabot/pip/hypothesis-gte-6.155.2
  • dependabot/pip/hypothesis-gte-6.155.3
  • dependabot/pip/hypothesis-gte-6.155.5
  • dependabot/pip/hypothesis-gte-6.155.7
  • dependabot/pip/idna-3.12
  • dependabot/pip/idna-3.16
  • dependabot/pip/idna-3.17
  • dependabot/pip/idna-3.18
  • dependabot/pip/multidict-6.7.1
  • dependabot/pip/myst-parser-gte-5.0.0
  • dependabot/pip/pre-commit-4.6.0
  • dependabot/pip/propcache-0.5.2
  • dependabot/pip/pydantic-gte-2.13.4
  • dependabot/pip/pytest-9.1.0
  • dependabot/pip/pytest-9.1.1
  • dependabot/pip/pytest-codspeed-4.4.0
  • dependabot/pip/pytest-codspeed-5.0.3
  • dependabot/pip/pytest-cov-gte-7.1.0
  • dependabot/pip/requirements/cython-3.2.6
  • dependabot/pip/requirements/cython-3.2.8
  • dependabot/pip/requirements/cython-3.2.9
  • dependabot/pip/requirements/cython-3.3.0
  • dependabot/pip/requirements/docutils-lt-0.24
  • dependabot/pip/requirements/hypothesis-gte-6.156.1
  • dependabot/pip/requirements/hypothesis-gte-6.156.3
  • dependabot/pip/requirements/hypothesis-gte-6.156.4
  • dependabot/pip/requirements/hypothesis-gte-6.156.6
  • dependabot/pip/requirements/hypothesis-gte-6.158.0
  • dependabot/pip/requirements/hypothesis-gte-6.159.0
  • dependabot/pip/requirements/hypothesis-gte-6.161.0
  • dependabot/pip/requirements/hypothesis-gte-6.161.2
  • dependabot/pip/requirements/hypothesis-gte-6.161.6
  • dependabot/pip/requirements/hypothesis-gte-6.163.0
  • dependabot/pip/requirements/hypothesis-gte-6.163.1
  • dependabot/pip/requirements/hypothesis-gte-6.164.0
  • dependabot/pip/requirements/hypothesis-gte-6.165.0
  • dependabot/pip/requirements/hypothesis-gte-6.165.10
  • dependabot/pip/requirements/hypothesis-gte-6.165.2
  • dependabot/pip/requirements/hypothesis-gte-6.165.3
  • dependabot/pip/requirements/hypothesis-gte-6.165.7
  • dependabot/pip/requirements/hypothesis-gte-6.165.9
  • dependabot/pip/requirements/hypothesis-gte-6.167.0
  • dependabot/pip/requirements/hypothesis-gte-6.167.1
  • dependabot/pip/requirements/hypothesis-gte-6.168.0
  • dependabot/pip/requirements/hypothesis-gte-6.168.1
  • dependabot/pip/requirements/hypothesis-gte-6.168.2
  • dependabot/pip/requirements/hypothesis-gte-6.168.3
  • dependabot/pip/requirements/hypothesis-gte-6.168.4
  • dependabot/pip/requirements/hypothesis-gte-6.168.5
  • dependabot/pip/requirements/idna-3.19
  • dependabot/pip/requirements/idna-3.20
  • dependabot/pip/requirements/multidict-6.8.0
  • dependabot/pip/requirements/multidict-6.9.0
  • dependabot/pip/requirements/multidict-6.9.1
  • dependabot/pip/requirements/multidict-7.0.0
  • dependabot/pip/requirements/pre-commit-4.6.1
  • dependabot/pip/requirements/pre-commit-4.6.2
  • dependabot/pip/requirements/propcache-0.5.2
  • dependabot/pip/requirements/pydantic-gte-2.13.5
  • dependabot/pip/requirements/sphinx-issues-gte-6.0.0
  • dependabot/pip/requirements/towncrier-26.9.0
  • dependabot/pip/setuptools-gte-82.0.1
  • dependabot/pip/sphinx-9.1.0
  • deploy-rerunnable
  • docs-doctest-spelling
  • docs/agents-md
  • docs/agents-md-test-coverage
  • docs/issue-1458-document-supportsint-conversion
  • empty-components
  • empty-components-followup
  • empty-host-credentials
  • empty-host-port-rfc
  • enable-free-threading
  • encode-host-idna-reg-name-validation
  • feature/add-password-masking-in-repr-1629
  • file-category
  • file-scheme-rfc-strict
  • fix-1073-query-reserved-encoding
  • fix-backslash-in-netloc
  • fix-builder-scheme-materialization
  • fix-cython-quoter-lone-surrogate
  • fix-default-port-without-scheme-default
  • fix-empty-host-port-subcomponent
  • fix-encode-host-default-ignorable
  • fix-encode-host-idna-delimiter
  • fix-file-empty-path
  • fix-host-validation
  • fix-idna-fallback-ascii-case
  • fix-ipv6-zone-id
  • fix-malformed-bracketed-hostnames
  • fix-odd-arch-uv-cibuildwheel
  • fix-query-reserved-encoding
  • fix-quoter-requote-safe-percent
  • fix-reject-delimiters-in-idna-host-pr
  • fix-release-head-line-regex
  • fix-windows-drive-letters
  • fix-with-path-bare-relative
  • fix/1774-join-decode-percent-in-base-path
  • fix/1821-host-port-subcomponent-indexerror
  • fix/1822-bracketed-authority-indexerror
  • fix/1862-strip-ipv6-zone-id
  • fix/bracketed-authority-empty-hostinfo
  • fix/build-port-range-validate
  • fix/build-reject-bool-port
  • fix/empty-host-indexerror
  • fix/extend-query-strip-leading-ampersand
  • fix/host-port-subcomponent-empty-host
  • fix/index-error-empty-host
  • fix/indexerror-malformed-authority
  • fix/issue-1458-uuid-query-params
  • fix/issue-1624
  • fix/join-preserve-percent-encoding
  • fix/join-preserve-percent-encoding-1774
  • fix/join-preserve-percent-encoding-in-base-path
  • fix/pct-encoded-scheme-bypass
  • fix/preserve-encoded-join-path
  • fix/preserve-ipvfuture-brackets
  • fix/pydantic-example
  • fix/pydantic-v1-test-collection
  • fix/pydantic-v2-minversion-skip-1872
  • fix/quoter-surrogate-percent-recombine
  • fix/reject-text-after-ipv6-bracket
  • fix/strip-zone-from-host-header-1862
  • fix/translate-cython-linetrace
  • fix/url-build-reject-bool-port
  • fix/url-str-host-validation
  • fix/with-path-preserve-bare-relative
  • fix/with-path-preserve-relative
  • fix/with-path-validate-type
  • fix/with-suffix-empty-valid
  • fix/with-suffix-validate-empty
  • fix/with-suffix-validate-empty-v2
  • fix_xdist
  • host-ends-in-number
  • idna-delimiter-parse
  • infra/codecov-checks-config
  • ipv4-pct-suffix-regname
  • ipvfuture-brackets
  • join-any-scheme
  • join-fragment
  • join-path-query-fragment
  • koan/ci-cut-wheel-arches-on-pr
  • koan/credit-befeleme-1632
  • koan/distro-friendly-build-flags
  • koan/exclude-stale-shared-libs
  • koan/fix-issue-1680
  • koan/fix-issue-1683
  • koan/fix-issue-1732
  • koan/fix-pickle-py315
  • koan/implement-1700
  • koan/joinpath-safe
  • koan/pep621-metadata
  • koan/sphinx-issues-roles
  • koan/url-hypothesis-roundtrip-tests
  • lazy-pydantic
  • master
  • migrate-formatters-to-ruff
  • patch-3
  • path-keep-reserved-escapes
  • perf_test
  • port-digit-strictness
  • pr-test-branch
  • pre-commit-ci-update-config
  • pure-python-slots
  • py-unquoter-benchmarks
  • py-unquoter-requote-without-quoter
  • python-unquoter-speedup
  • query-to-pairs
  • quoter-drop-lone-surrogates
  • quoter-non-ascii-validation
  • quoter-reject-conflicting-safe
  • quoting-c-named-constants
  • quoting-drop-dead-constants
  • reject-empty-bracketed-authority-host
  • release/v1.24.0
  • release/v1.24.1
  • release/v1.24.2
  • release/v1.24.3
  • release/v1.24.4
  • release/v1.24.5
  • release/v1.25.0
  • release/v1.25.1
  • remove-cibuildwheel-pp-skip
  • remove-unused-expandvars
  • revert-1704-ci/uv-setup-python
  • rfc-empty-userinfo
  • rfc-reject-invalid-chars
  • rfc6874-zone-id-tests
  • rfc6874-zone-ids
  • rfc9110-oracle-2
  • rm-3.13t-builds
  • ruff-require-top-level-imports
  • scheme-grammar-validate
  • skip-duplicate-wheel-tests
  • special-authority-no-slashes
  • split-netloc-digit-port
  • strip-trailing-space
  • switch-test-runner-to-uv
  • test-cmod-utfseq
  • tpollard/revert-setuptools-bump
  • unquote-query-benchmarks
  • unquoter-bulk-runs
  • unquoter-c-requote-bitmap
  • unquoter-config-tests
  • unquoter-drop-literal-unsafe
  • unquoter-equivalence-tests
  • unquoter-length-invariant-tests
  • unquoter-reject-non-ascii-ignore
  • unquoter-reject-noop-ignore
  • unquoter-utf8-edge-tests
  • use-ref-type-for-tag-checks
  • v1.24.0
  • v1.24.1
  • v1.24.2
  • v1.24.3
  • v1.24.4
  • v1.24.5
  • v1.25.0
  • v1.25.1
  • validate-parse-host-1829
  • whatwg-backslash
  • whatwg-file-host
  • whatwg-hostless-special
  • whatwg-ipv4-host
  • whatwg-percent-decoded-host
  • whatwg-userinfo-serialization

09 Oct 2026 12:29PM UTC coverage: 97.86%. Remained the same
38116954820

push

github

web-flow
Apply RFC 9110 to an empty http host in RFC 3986 mode (#1971)

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

## What do these changes do?

Follows aio-libs/yarl#1970.

RFC 9110 section 4.2.1 makes a recipient reject an http URI with an
empty host, and section 4.2.2 does the same for https. yarl's RFC 3986
mode applied that only to an authority with userinfo or a port
(`http://user@/`), and accepted `http://`, `http:///path` and
`http://?q`. RFC mode now rejects an empty authority for `http`,
`https`, `ws`, `wss` and `ftp`, the schemes `_check_missing_host()`
already treats as needing a host, which is what WHATWG mode does after
#1970.

The RFC 3986 oracle in `tools/conformance/rfc3986_oracle.py` followed
only the generic RFC 3986 syntax, although the report lists RFC 9110
among its standards. It now gives no result for an http or https URI
with an authority and an empty host. A URI without an authority
(`http:/p`) is still left to the generic syntax; requiring an authority
for http as the full RFC 9110 grammar does would put 12 rows into "yarl
differs, RFC 3986+3987 and WHATWG agree" and is not done here.

The guard #1970 added in `_moved_parts()` for an RFC mode `http://`
moved into WHATWG mode is removed: RFC mode can no longer hold such a
URL, other than with `encoded=True`, which is not validated in either
mode.

Conformance report: six rows moved to "RFC 3986+3987, WHATWG and yarl in
both modes agree": `http://user:pass@/`, `http://user@/www.example.com`,
`http://@/www.example.com`, `http://a:b@/www.example.com` (from "RFC
mode differs from RFC 3986+3987, WHATWG mode follows WHATWG"), and
`http://?`, `http://#` (from "yarl follows each standard in its mode").
In six rows with base `http://example.org/` only the oracle's answer
changed, from `http:///…` to a failure: `///example.org/../path`,
`///example.org/../../`, `///example.org/../path/../../`,
`///example.org/../path/../../path` (still "RFC mode differs") and
`///test`, `///example.org/path` (s... (continued)

97 of 194 branches covered (50.0%)

Branch coverage included in aggregate %.

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

11198 of 11348 relevant lines covered (98.68%)

0.99 hits per line

Relevant lines Covered
Build:
Build:
11348 RELEVANT LINES 11198 COVERED LINES
0.99 HITS PER LINE
Source Files on master
  • Tree
  • List 55
  • Changed 5
  • Source Changed 5
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
38116954820 master Apply RFC 9110 to an empty http host in RFC 3986 mode (#1971) <!-- Thank you for your contribution! --> ## What do these changes do? Follows aio-libs/yarl#1970. RFC 9110 section 4.2.1 makes a recipient reject an http URI with an empty host, an... push 11 Oct 2026 06:08AM UTC web-flow github
97.86
38029759648 master Apply RFC 9110 to an empty http host in RFC 3986 mode (#1971) <!-- Thank you for your contribution! --> ## What do these changes do? Follows aio-libs/yarl#1970. RFC 9110 section 4.2.1 makes a recipient reject an http URI with an empty host, an... push 10 Oct 2026 06:08AM UTC web-flow github
97.86
37930414818 master Apply RFC 9110 to an empty http host in RFC 3986 mode (#1971) <!-- Thank you for your contribution! --> ## What do these changes do? Follows aio-libs/yarl#1970. RFC 9110 section 4.2.1 makes a recipient reject an http URI with an empty host, an... push 09 Oct 2026 12:32PM UTC web-flow github
97.86
37926686171 dependabot/pip/requirements/hypothesis-gte-6.168.5 Merge fde0a5006 into 19d7e952a Pull #1976 09 Oct 2026 11:57AM UTC web-flow github
97.86
37891837053 master Build(deps): Update hypothesis requirement from >=6.168.3 to >=6.168.4 in /requirements (#1975) Updates the requirements on [hypothesis](https://github.com/HypothesisWorks/hypothesis) to permit the latest version. <details> <summary>Commits</summ... push 09 Oct 2026 06:08AM UTC web-flow github
97.86
37773265088 dependabot/pip/requirements/hypothesis-gte-6.168.4 Merge 8f0541e10 into 1b9e3772b Pull #1975 08 Oct 2026 11:57AM UTC web-flow github
97.86
37773011768 dependabot/github_actions/pypa/cibuildwheel-4.3.0 Merge 7fe46a0e0 into 1b9e3772b Pull #1974 08 Oct 2026 11:54AM UTC web-flow github
97.86
37756803031 scheme-grammar-validate Merge 2688dbd0d into 1b9e3772b Pull #1813 08 Oct 2026 09:29AM UTC web-flow github
97.87
37735828222 master Reject an empty host for http and friends in WHATWG mode (#1970) <!-- Thank you for your contribution! --> ## What do these changes do? The WHATWG host parser fails on an empty host for every special scheme except `file`, so `http://`, `http://... push 08 Oct 2026 06:08AM UTC web-flow github
97.86
37677253983 scheme-grammar-validate Merge ae108e1c6 into 1b9e3772b Pull #1813 07 Oct 2026 07:50PM UTC web-flow github
97.87
See All Builds (897)

Badge your Repo: yarl

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

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

Refresh
  • Settings
  • Repo on GitHub
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