New submission from Jim Jewett:

warnings.warn(stacklevel=2) is a longstanding idiom.

It broke in 3.3 because python itself added some additional infrastructure 
frames in between; now stacklevel should be 8 or 10 in some releases.

issue24305 adds a workaround for 3.5, to ignore internal frames -- defined as 
those which contain both 'importlib' and '_bootstrap' in filename.

I would prefer to see a supported hook, so that either the caller or the 
program setup could list other modules or packages to ignore when counting 
frames.  That way, I could write

mycall(otherlib(foo))

and otherlib could ensure that the warning pointed to mycall, rather than to 
something internal to otherlib, even if otherlib were refactored to a different 
stack depth.

Ignoring just the import machinery would of course be a good default.

----------
components: Library (Lib)
messages: 251328
nosy: Jim.Jewett
priority: normal
severity: normal
status: open
title: Warnings stacklevel frames to skip
type: enhancement
versions: Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue25216>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to