The warnings.filterwarnings() function uses a regular expression for
message and module arguments. My request is only about the Python
command line interface.

By the way, an user requested to use a regex for the module field of
-W option and PYTHONWARNINGS env var:
https://bugs.python.org/issue34624

Victor

On Fri, Apr 16, 2021 at 3:22 PM Ivan Pozdeev via Python-Dev
<python-dev@python.org> wrote:
>
> It'll probably be easier to change the warnings filter semantic 
> (https://docs.python.org/3/library/warnings.html#the-warnings-filter)
> to which those values are directly passed.
>
> On 16.04.2021 16:07, Victor Stinner wrote:
> > Hi,
> >
> > I propose to change the -W command line option and the PYTHONWARNINGS
> > environment variable to use the message as a regular expression in
> > Python 3.10. Or does anyone have a reason to keep the current behavior
> > as it is?
> >
> > I created https://bugs.python.org/issue43862 for this change.
> >
> > --
> >
> > Python provides two ways to specify warnings filters:
> >
> > * -W command line option: can be used multiple times
> > * PYTHONWARNINGS environment variable: can contain multiple options
> > separated by commas
> >
> > While the Python API warnings.filterwarnings(action, message="", ...)
> > uses the message as a regular expression, -W and PYTHONWARNINGS
> > require to match *exactly* the *whole* message.
> >
> > For example, if you only want to ignore the new distutils deprecation
> > warning, you must write exactly:
> >
> > $ ./python -X dev -W 'ignore:The distutils package is deprecated and
> > slated for removal in Python 3.12. Use setuptools or check PEP 632 for
> > potential alternatives:DeprecationWarning' -c 'import distutils'
> >
> > I use -X dev to show DeprecationWarning, or you can also use -Wdefault
> > if you prefer.
> >
> > If the deprecation warning changes in Python or if you have a single
> > typo, the warning is not ignored. Example with a typo ("3.13" rather
> > than "3.12"):
> >
> > $ ./python -X dev -W 'ignore:The distutils package is deprecated and
> > slated for removal in Python 3.13. Use setuptools or check PEP 632 for
> > potential alternatives:DeprecationWarning' -c 'import distutils'
> > <string>:1: DeprecationWarning: The distutils package is deprecated
> > and slated for removal in Python 3.12. Use setuptools or check PEP 632
> > for potential alternatives
> >
> > The PYTHONWARNINGS has another limitation: you cannot specify a
> > message if it contains a comma (","). Hopefully, Python doesn't raise
> > warnings containing comma, right? Well... Just one example:
> >
> > Lib/distutils/sysconfig.py:554:        warnings.warn('SO is
> > deprecated, use EXT_SUFFIX', DeprecationWarning, 2)
> >
> > You cannot only ignore the message:
> >
> > $ PYTHONWARNINGS='ignore:SO is deprecated, use
> > EXT_SUFFIX:DeprecationWarning' ./python -c 'import sys;
> > print(sys.warnoptions); print(len(sys.warnoptions))'
> > Invalid -W option ignored: invalid action: 'use EXT_SUFFIX'
> > ['ignore:SO is deprecated', ' use EXT_SUFFIX:DeprecationWarning']
> > 2
> >
> > You can only try to use "module" and "lineno" parameters of a warning
> > filter, which are more fragile and hard to use to use.
> >
> > Victor
>
> --
> Regards,
> Ivan
>
> _______________________________________________
> Python-Dev mailing list -- python-dev@python.org
> To unsubscribe send an email to python-dev-le...@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at 
> https://mail.python.org/archives/list/python-dev@python.org/message/ADUDHMNJIYERRA5MHF4GGB2OXV2XJC37/
> Code of Conduct: http://python.org/psf/codeofconduct/



-- 
Night gathers, and now my watch begins. It shall not end until my death.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/IIWWB5IZ32H3O4QHYUGRA2D7DYMVSUIY/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to