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

aio-libs / multidict / 37118459982
86%

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

03 Oct 2026 11:04AM UTC coverage: 85.945%. Remained the same
37118459982

push

github

web-flow
Split entry_t into a shared compact layout and an anystr layout (#1656)

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

## What do these changes do?

Split `entry_t` into the key and value layout every table kind shares,
which is exactly what a compact table stores, and `anystr_entry_t`,
which embeds it and adds the identity and its hash. Before, `entry_t`
declared all four fields although a compact table holds only two, so
nothing stopped code from reaching `->identity` or `->hash` on a compact
entry. Code that is the same for every kind keeps using `entry_t*`; the
anystr branches reach the extra fields through `as_anystr()`, and
`load_hash()` now takes an `anystr_entry_t*`.

The emitted code is unchanged apart from the COLD
`_md_clone_after_holes()`, whose target is always anystr and which no
longer checks the kind (157 to 141 instructions on GIL). C extension
only; the pure-Python backend has no such layout.

## Are there changes in behavior for the user?

No.

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

No. It makes the per-kind layouts explicit types, so a wrong field
access on a compact entry no longer compiles silently.

## Related issue number

N/A

## Checklist

- [x] I think the code is well written
- [x] Unit tests for the changes exist (N/A: no behavior change; the
existing suite covers both table kinds)
- [x] Documentation reflects the changes (N/A: internal only)
- [ ] If you provide code modification, please add yourself to
`CONTRIBUTORS.txt` (N/A: no such file in this repo)
- [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`

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

Codegen: `tools/codegen_diff.py --ref 104f9848` on 3.14.7 and 3.14.7t;
after normalizing `.text.unlikely` relocation offsets (shifted by the
smaller cold function), only `_md_clone_after_holes` differs on both
build... (continued)

791 of 1582 branches covered (50.0%)

Branch coverage included in aggregate %.

9207 of 10051 relevant lines covered (91.6%)

1.83 hits per line

Jobs
ID Job ID Ran Files Coverage
1 MyPy - 37118459982.1 03 Oct 2026 11:05AM UTC 98
85.94
GitHub Action Run
Source Files on build 37118459982
  • 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 #37118459982
  • dd3227e5 on github
  • Prev Build on master (#37112550914)
  • Next Build on master (#37144706353)
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