[Python-ideas] Deprecation utilities for the warnings module

Ilya Kulakov kulakov.ilya at gmail.com
Sat Sep 15 16:45:27 EDT 2018


>> Therefore it's not redundant to subclass *Warning for namespacing alone.
> 
> Not redundant? You mean you must subclass? In that case my concern stands. 


An unfortunate typo, meant "it's redundant". 

> And what does that match against? The module name of the exception type right?

It matches agains a location where warn is called after taking stacklevel into account.

Consider the following example:

test.py:
    import warnings
    warnings.warn("test")
    warnings.warn("__main__ from test", stacklevel=2)

$ python -c "import warnings, test; warnings.warn('__main__')"

    test.py:2: UserWarning: test
      warnings.warn("test")
    -c:1: UserWarning: __main__ from test
    -c:1: UserWarning: __main__

$ python -W "ignore:::test:" -c "import warnings, test; warnings.warn('__main__')"

    -c:1: UserWarning: __main__ from test
    -c:1: UserWarning: __main__

$ python -W "ignore:::__main__:" -c "import warnings, test; warnings.warn('__main__')"

    test.py:2: UserWarning: test
      warnings.warn("test")

End-user can distinguish warnings of the same category by specifying their origin (where warning is issued in runtime).




More information about the Python-ideas mailing list