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/