On 21.09.15 10:18, Victor Stinner wrote:
2015-09-20 8:44 GMT+02:00 Serhiy Storchaka <storch...@gmail.com>:
I propose to make the default value of stacklevel to be 2.
I think that unlikely this will break existing code.

Consider this simple script:
---
import warnings
warnings.warn("here")
---

Currrent output:
---
x.py:3: UserWarning: here
   warnings.warn("here")
---

=> it shows the script name (x.py), the line number and the line, as expected.

Now try stacklevel=2:
---
import warnings
warnings.warn("here", stacklevel=2)
---

New output:
---
sys:1: UserWarning: here
---

"sys:1" is not really useful :-/

This is not new. The same output we get when run a module that correctly emits a warning at module level (with explicit stacklevel=2).

$ ./python -Wa Lib/imp.py
sys:1: PendingDeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses

If this message looks confusing for you, we can avoid it if stop skipping frames further if frame.f_back is None. This will got rid of "sys:1:" in both cases, explicit and implicit stacklevel=2.


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to