warnings: adding new filter resets prior existing "once" filters
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza con el reproductor de warnings.filterwarnings y warnings.warn incluido en el issue y, después, localiza la implementación de warnings y sus pruebas en CPython. Se considera completado cuando añadir un filtro no relacionado ya no restablece el seguimiento de ocurrencias de un filtro existente con action="once"; gh-153697 ya está vinculado a este issue.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- backend
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 25/100