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

aio-libs / multidict / 37198783884
86%

Build:
DEFAULT BRANCH: master
Ran 04 Oct 2026 11:28AM UTC
Jobs 1
Files 49
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

04 Oct 2026 11:27AM UTC coverage: 86.028%. Remained the same
37198783884

push

github

web-flow
Move error-raising helpers out of line (#1667)

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

## What do these changes do?

Moves the C extension's error-raising code out of line.
`_err_not_sequence`, `_err_bad_length`, `_err_cannot_fetch` and the
three `parse2` `_raise_*` helpers became `NOINLINE`. The raise legs of
`md_check_version()` and of the key type checks in `identity.h` moved
into new `NOINLINE` helpers, so the inline functions keep only the test.

The branches that lead into these helpers in `md_check_version()`,
`_parse2_bind()` and the key type checks are marked `UNLIKELY`.
`_md_parse_item()` is left unhinted: hinting its checks made the
constructors 1 to 2.5% slower on both builds.

The same treatment for `list_getitem_ref()` (FT only) cost 2 Ir per item
on `CIMultiDict(items)` and was left out. The `KeyError` raises are
single calls already and were left alone.

C extension only; the pure-Python code has no equivalent.

## Are there changes in behavior for the user?

No.

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

No.

## Related issue number

N/A

## Checklist

- [x] I think the code is well written
- [ ] Unit tests for the changes exist (N/A, no behaviour change;
existing tests cover the error paths)
- [x] Documentation reflects the changes (N/A)
- [ ] If you provide code modification, please add yourself to
`CONTRIBUTORS.txt` (N/A)
- [x] Add a new news fragment into the `CHANGES/` folder
- [x] `make doc-spelling` passes and any new technical words are added
to `docs/spelling_wordlist.txt`

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

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

Tests (`pytest -q`): 3.14 GIL 4067 passed, 3.14t FT 4052 passed, 3.10
4071 passed, pure Python (`MULTIDICT_NO_EXTENSIONS=1 --no-c-extensions`)
1600 passed. Clang build clean.

`tools/check_inlining.py` on 3.14 and 3.14t: ok, 16 and 18 rules. Only
inlining change on GIL: `md_eq` became ou... (continued)

792 of 1584 branches covered (50.0%)

Branch coverage included in aggregate %.

9300 of 10147 relevant lines covered (91.65%)

1.83 hits per line

Jobs
ID Job ID Ran Files Coverage
1 MyPy - 37198783884.1 04 Oct 2026 11:28AM UTC 98
86.03
GitHub Action Run
Source Files on build 37198783884
  • Tree
  • List 49
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #37198783884
  • 56e43ac4 on github
  • Prev Build on master (#37194948899)
  • Next Build on master (#37198908438)
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