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

aio-libs / multidict / 37770274933
86%

Build:
DEFAULT BRANCH: master
Ran 08 Oct 2026 11:29AM 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

08 Oct 2026 11:28AM UTC coverage: 85.9%. Remained the same
37770274933

push

github

web-flow
Mark the error-raising helpers COLD (#1749)

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

## What do these changes do?

Marks the nine error-raising helpers from #1667 `COLD`:
`_err_version_changed`, `_err_key_type_cs`, `_err_key_type_ci`, the
three `parse2` `_raise_*` helpers, and `_err_not_sequence`,
`_err_bad_length` and `_err_cannot_fetch`. Once #1739 dropped
`NOINLINE`, they became plain `static`, and GCC's early inliner put them
back into every caller. `_err_version_changed` was being inlined into
eight sites through `md_check_version()`, including the iterator step.
`COLD` is `cold, noinline`, so the helpers move out of line again
without bringing back `NOINLINE`.

Callgrind, rows that moved by 0.5% or more (all other rows flat):

| Build | Row | Before | After | Change |
|---|---|---|---|---|
| GIL | MultiDict `getitem_istr` | 767.0 | 736.0 | -4.04% |
| GIL | MultiDict `setitem_istr` | 896.0 | 891.1 | -0.55% |
| GIL | MultiDict `getitem_hit` | 164.0 | 165.0 | +0.61% |
| GIL | CIMultiDict `getall` | 916.8 | 921.5 | +0.51% |
| GIL | MultiDict / CIMultiDict `iter_keys` | 47.1 / 50.1 | 48.1 / 51.1
| +1 Ir per item |
| FT | CIMultiDict `delitem` | 483.8 | 477.8 | -1.24% |
| FT | CIMultiDict `ctor_items`, `reinit_items`, `ctor_small`,
`reinit_items_small` | | | -0.69% to -0.75% |
| FT | CIMultiDict `update`, `setitem_replace`, `getall` | | | -0.53% to
-0.57% |
| FT | MultiDict `delitem` | 405.8 | 402.8 | -0.74% |
| FT | MultiDict / CIMultiDict `iter_keys` | 83.9 / 86.9 | 84.8 / 87.8 |
+1 Ir per item |

Text size changes by +15 B on GIL and +552 B on FT, where GCC re-spends
the freed budget on `md_walk_with_hash()` and `_md_contains_locked()`.
The pure Python backend has no counterpart to these helpers.

## Are there changes in behavior for the user?

No.

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

No, it adds one attribute to each of nine existing helpers.

## Related issue number

Follow-up to #1667 and #1739.

## Checklist

... (continued)

793 of 1586 branches covered (50.0%)

Branch coverage included in aggregate %.

9326 of 10194 relevant lines covered (91.49%)

1.83 hits per line

Jobs
ID Job ID Ran Files Coverage
1 MyPy - 37770274933.1 08 Oct 2026 11:29AM UTC 98
85.9
GitHub Action Run
Source Files on build 37770274933
  • 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 #37770274933
  • 4540e807 on github
  • Prev Build on master (#37758426748)
  • Next Build on master (#37772235297)
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