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

aio-libs / yarl / 38211353930
98%

Build:
DEFAULT BRANCH: master
Ran 12 Oct 2026 06:13AM UTC
Jobs 1
Files 55
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

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

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

Jobs
ID Job ID Ran Files Coverage
1 MyPy - 38211353930.1 12 Oct 2026 06:13AM UTC 55
97.86
GitHub Action Run
Source Files on build 38211353930
  • Tree
  • List 55
  • Changed 5
  • Source Changed 5
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #38211353930
  • d0d6a375 on github
  • Prev Build on master (#37891837053)
  • 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