"filterwarnings"
Peter Otten
__peter__ at web.de
Wed Aug 26 03:32:31 EDT 2020
Stefan Ram wrote:
> I'm not sure I understand "filterwarnings" correctly.
> It does not suppress the warning within the "with" statement below.
> Outside of the "with" statement, it does work, but according
> to sources it also should work within the "with" statement.
>
> Console transcript:
>
> |Python 3.9....
> |Type "help", "copyright", "credits" or "license" for more information.
> |>>> import warnings
> |>>> with warnings.catch_warnings():
> |... warnings.filterwarnings("ignore", category=SyntaxWarning)
> |... print( 1 is 1 )
> |...
> |<stdin>:3: SyntaxWarning: "is" with a literal. Did you mean "=="?
> |True
> |>>> warnings.filterwarnings("ignore", category=SyntaxWarning)
> |>>> print( 1 is 1 )
> |True
>
> How could I make "filterwarnings" work inside the "with" statement?
> TIA!
It does work already:
>>> with warnings.catch_warnings():
... warnings.filterwarnings("ignore", category=UserWarning)
... warnings.warn("yadda")
...
>>> warnings.warn("yadda")
<stdin>:1: UserWarning: yadda
The problem is that you picked the wrong category. As SyntaxWarnings are
issued during compilation you need to trigger a compilation to see the
effect:
>>> with warnings.catch_warnings():
... warnings.filterwarnings("ignore", category=SyntaxWarning)
... exec("1 is 1")
...
>>> exec("1 is 1")
<string>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
More information about the Python-list
mailing list