On 01/09/2021 09:27, Steven D'Aprano wrote:
Maybe I'm missing something, but I don't think that there is anyway to
remove a warning from the warnings filter list so that it will be shown
again.

Example:

     >>> import warnings
     >>> warnings.warn("something happened")
     <stdin>:1: UserWarning: something happened
     >>> warnings.warn("something happened")
     >>>

Once a warning has been displayed, it won't be displayed again until you
exit the interpreter and start a new session. That's usually what we
want, but sometimes I do want to re-display the warning.

The warnings module has a function, reset_warnings, but it does too
much, removing all the filters including those set at interpreter
startup. I'd like a function to remove a single item, something like
this:

     >>> warnings.warn("something happened")
     <stdin>:1: UserWarning: something happened
     >>> warnings.warn("something happened")
     >>>
     >>> warnings.forget(UserWarning("something happened"))
     >>> warnings.warn("something happened")
     <stdin>:1: UserWarning: something happened

or similar.

Thoughts?

Instead of removing it you might add a filter to get a similar effect:

>>> import warnings
>>> def bark(): warnings.warn("woof!")

>>> bark()

Warning (from warnings module):
  File "<pyshell#76>", line 1
UserWarning: woof!
>>> bark()
>>> warnings.filterwarnings("always", "woof!")
>>> bark()

Warning (from warnings module):
  File "<pyshell#76>", line 1
UserWarning: woof!
>>> bark()

Warning (from warnings module):
  File "<pyshell#76>", line 1
UserWarning: woof!



_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/ACGKU2FBXM4VFXAMKQTHFQFK3X3EBWPL/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to