[Python-Dev] Make stacklevel=2 by default in warnings.warn() (original) (raw)

Victor Stinner victor.stinner at gmail.com
Mon Sep 21 09🔞28 CEST 2015


2015-09-20 8:44 GMT+02:00 Serhiy Storchaka <storchaka at 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 :-/

I would describe this as a regression, not an enhancement.

It's hard to find a "good" default value. It's better to always specify stacklevel :-)

Victor



More information about the Python-Dev mailing list