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

aio-libs / multidict / 37227841074
86%

Build:
DEFAULT BRANCH: master
Ran 04 Oct 2026 07:20PM 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 07:19PM UTC coverage: 85.94%. Remained the same
37227841074

push

github

web-flow
Merge the repeated tails in hashtable.h (#1678)

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

## What do these changes do?

Removes three repetitions from `hashtable.h`:

- `_md_rebuild()` and `_md_rebuild_to_anystr()` ended with the same five
lines (zero the tail, build the indices, set the counters, publish);
they call `_md_publish_compacted()`.
- `md_get_all()` and `md_pop_all()` turned the collected values into
their result with the same tail; they call `_md_values_to_list()`.
- `_md_del_at_deferred()` wrote out what `_md_unlink_at()` already does;
it calls it.

`_md_del_at_held()` repeats `_md_unlink_at()` as well, but keeps its own
copy: through the helper `del d[key]` costs 1 to 3 instructions more,
and passing the table in as an argument instead moves the cost to
`pop()` (2 to 7 instructions). A comment says so.

No behaviour change. The pure-Python implementation is not affected.

## Are there changes in behavior for the user?

No. Instructions per operation under callgrind
(`benchmarks/callgrind_driver.py --include-multidict-only`, 3.14.7 and
3.14.7t, `MultiDict` and `CIMultiDict`): every row is unchanged on 3.14.
On 3.14t `update` is 6 instructions dearer per call (0.0%), and
`CIMultiDict(items)` and re-init with items are 0.3% to 0.6% cheaper (2
instructions per item). The `.text` section grows by 196 bytes on 3.14
and by 1.4 KB (0.5%) on 3.14t.

## 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
- [x] Unit tests for the changes exist (the existing suite; no behaviour
change)
- [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 Fable 5.1); not yet reviewed by a
human.... (continued)

792 of 1584 branches covered (50.0%)

Branch coverage included in aggregate %.

9330 of 10194 relevant lines covered (91.52%)

1.83 hits per line

Jobs
ID Job ID Ran Files Coverage
1 MyPy - 37227841074.1 04 Oct 2026 07:20PM UTC 98
85.94
GitHub Action Run
Source Files on build 37227841074
  • 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 #37227841074
  • 4111f5f8 on github
  • Prev Build on master (#37224964410)
  • Next Build on master (#37228402123)
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