(original) (raw)
On 20 September 2015 at 07:55, Nathaniel Smith <njs@pobox.com> wrote:
-- On Sat, Sep 19, 2015 at 11:44 PM, Serhiy Storchaka <storchaka@gmail.com> wrote:
\> For now the default value of the stacklevel parameter in warnings.warn() is
\> 1\. But in most cases stacklevel=2 is required, sometimes >2, and I don't
\> know cases that need stacklevel=1\. I propose to make the default value of
\> stacklevel to be 2\. I think that unlikely this will break existing code. But
\> rather can fix existing bugs. If stacklevel=1 is required (I don't know
\> cases), it can be explicitly specified.
+1
I don't have enough fingers to count how many times I've had to
explain how stacklevel= works to maintainers of widely-used packages
\-- they had no idea that this was even a thing they were getting
wrong.
OTOH I guess if there is anyone out there who's intentionally using
stacklevel=1 they might be reasonably surprised at this change. I
guess for some kinds of warnings stacklevel=2 is not obviously correct
\-- the one that comes to mind is "warning: the computer on the other
end of this network connection did something weird, continuing
anyway". OTOOH in this case I'm not sure stacklevel=1 is any better
either, since the thing being warned about has nothing to do with the
current call stack at all.
In this case you should use the logging module instead.
Gustavo J. A. M. Carneiro
Gambit Research
"The universe is always one step beyond logic." -- Frank Herbert
"The universe is always one step beyond logic." -- Frank Herbert