diff options
author | Gregory P. Smith <greg@krypto.org> | 2015-10-22 13:09:50 -0700 |
---|---|---|
committer | Gregory P. Smith <greg@krypto.org> | 2015-10-22 13:09:50 -0700 |
commit | 7427a79e12a418a76d4660799b1c75785b5ea46d (patch) | |
tree | 033760d6f09ebaf73ad7c3d1a7238f72415edc5c /Lib/logging | |
parent | 1256b3c677172967f158693b0af8de0125ed687d (diff) | |
download | cpython-git-7427a79e12a418a76d4660799b1c75785b5ea46d.tar.gz |
Issue #21709: Fix the logging module to not depend upon __file__ being set
properly to get the filename of its caller from the stack. This allows it
to work if run in a frozen or embedded environment where the module's
.__file__ attribute does not match its code object's .co_filename.
This same much simpler always correct approach has already been deployed and
used widely in Python 3.4 per the issue referenced above.
Diffstat (limited to 'Lib/logging')
-rw-r--r-- | Lib/logging/__init__.py | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index bd4afeb1aa..2c0f14f5b0 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -59,18 +59,6 @@ try: except NameError: _unicode = False -# -# _srcfile is used when walking the stack to check when we've got the first -# caller stack frame. -# -if hasattr(sys, 'frozen'): #support for py2exe - _srcfile = "logging%s__init__%s" % (os.sep, __file__[-4:]) -elif __file__[-4:].lower() in ['.pyc', '.pyo']: - _srcfile = __file__[:-4] + '.py' -else: - _srcfile = __file__ -_srcfile = os.path.normcase(_srcfile) - # next bit filched from 1.5.2's inspect.py def currentframe(): """Return the frame object for the caller's stack frame.""" @@ -82,6 +70,12 @@ def currentframe(): if hasattr(sys, '_getframe'): currentframe = lambda: sys._getframe(3) # done filching +# +# _srcfile is used when walking the stack to check when we've got the first +# caller stack frame. +# +_srcfile = currentframe.__code__.co_filename + # _srcfile is only used in conjunction with sys._getframe(). # To provide compatibility with older versions of Python, set _srcfile # to None if _getframe() is not available; this value will prevent |