python / python/cpython

warnings: adding new filter resets prior existing "once" filters

Offen
#153,128 8 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

interpreter-core type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug report

Bug description:

If a filter is defined with action="once", the occurrence tracking is reset each time a new filter is defined. This can override the ability to effectively use action="once" if the filter manipulation occurs in a library which the user cannot control (e.g. matplotlib).

For example, the following code will only output a warning once (i.e. works as intended):

import warnings

warnings.filterwarnings("once", "test warning", UserWarning)
warnings.warn("test warning", UserWarning)
warnings.warn("test warning", UserWarning)

However, simply inserting an unrelated filter prior to the second warning will cause both to be output:

warnings.filterwarnings("once", "test warning", UserWarning)
warnings.warn("test warning", UserWarning)

warnings.filterwarnings("ignore", "something unrelated")
warnings.warn("test warning", UserWarning)
CPython versions tested on:

3.14

Operating systems tested on:

Linux

Linked PRs
  • gh-153697

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem Reproducer für warnings.filterwarnings und warnings.warn im Issue und lokalisiere anschließend die warnings-Implementierung und ihre Tests in CPython. Als erledigt gilt, dass das Hinzufügen eines unabhängigen Filters die Auftretensverfolgung für einen vorhandenen Filter mit action="once" nicht mehr zurücksetzt; gh-153697 ist bereits mit diesem Issue verknüpft.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.