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

aio-libs / multidict / 34846098293
87%

Build:
DEFAULT BRANCH: master
Ran 14 Sep 2026 12:56PM UTC
Jobs 1
Files 34
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

14 Sep 2026 12:55PM UTC coverage: 86.048%. Remained the same
34846098293

push

github

web-flow
Enable sanitizers in the debug build and add a ThreadSanitizer CI job (#1455)

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

## What do these changes do?

`MULTIDICT_DEBUG_BUILD=1` now also builds the C extension with
AddressSanitizer and UndefinedBehaviorSanitizer (skipped on Windows).
A new `MULTIDICT_TSAN_BUILD=1` switches to ThreadSanitizer instead,
since it can't share a binary with ASan/UBSan. AGENTS.md documents
exact usage, including the `LD_PRELOAD`/`PYTHONMALLOC=malloc` dance
ASan needs and why TSan needs a CPython actually built with
`--with-thread-sanitizer` to avoid false positives from the
interpreter's own locks.

A CI job (`tsan`, alongside `benchmark` at the same level) builds such
a free-threaded CPython from the official source tarball, installs
multidict against it with `MULTIDICT_TSAN_BUILD=1`, and runs the suite
with `halt_on_error=1` so a detected race fails the job outright.

## Are there changes in behavior for the user?

No. Both sanitizer modes are opt-in via environment variables; the
default build is unaffected.

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

No. The sanitizer flags only apply under `MULTIDICT_DEBUG_BUILD=1`,
and the new CI job is self-contained and independent of the rest of
the test matrix.

## Related issue number

N/A

## Checklist

- [x] I think the code is well written
- [ ] Unit tests for the changes exist
- [x] Documentation reflects the changes
- [ ] If you provide code modification, please add yourself to
`CONTRIBUTORS.txt`
- [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>

Verified locally (GitHub Actions itself wasn't exercised, only the
equivalent commands and interpreters):

- ASan+UBSan: full suite passes (`pytest -q`, C extension) except
  `test_leaks.py`, which fails under ASan for unrelated... (continued)

715 of 1430 branches covered (50.0%)

Branch coverage included in aggregate %.

5212 of 5458 relevant lines covered (95.49%)

1.91 hits per line

Jobs
ID Job ID Ran Files Coverage
1 MyPy - 34846098293.1 14 Sep 2026 12:56PM UTC 68
86.05
GitHub Action Run
Source Files on build 34846098293
  • Tree
  • List 34
  • 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 #34846098293
  • c288eb58 on github
  • Prev Build on master (#34830718957)
  • Next Build on master (#34862819179)
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