Skip to content

gh-159792: Suppress once-filtered warnings across modules - #159829

Open
limadog9 wants to merge 1 commit into
python:mainfrom
limadog9:gh-159792-warnings-once
Open

limadog9 wants to merge 1 commit into
python:mainfrom
limadog9:gh-159792-warnings-once

Conversation

@limadog9

@limadog9 limadog9 commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #159792.

The accelerated warnings implementation used the supplied per-module registry for the "once" action. As a result, the same warning was emitted again from another module, contrary to the documented behavior and the pure-Python implementation.

Always use the global once registry for this action. Add a shared regression that emits the same warning on different lines in two modules; it fails with the unmodified C implementation and passes with this fix and with the Python implementation.

Validation on Linux x86-64 debug builds:

  • test_warnings and test_logging passed in GIL and free-threaded builds (494 test cases in each; expected skips).
  • ./python -X context_aware_warnings=1 -m test test_warnings passed.
  • ./python -m test -R 3:3 -m test_once_across_modules test_warnings passed with no reference leaks.
  • Ruff, NEWS reStructuredText lint, patchcheck, and git diff --check passed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

warnings.simplefilter("once") emits the same warning once per module

1 participant