mirror of
https://github.com/python/cpython.git
synced 2025-11-11 14:44:57 +00:00
Issue #21709: Improved implementation to cover the frozen module case.
This commit is contained in:
parent
307bccc6ff
commit
194bcaf4dc
1 changed files with 34 additions and 28 deletions
|
|
@ -51,34 +51,6 @@ __date__ = "07 February 2010"
|
||||||
# Miscellaneous module data
|
# Miscellaneous module data
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
#
|
|
||||||
# _srcfile is used when walking the stack to check when we've got the first
|
|
||||||
# caller stack frame.
|
|
||||||
#
|
|
||||||
if hasattr(sys, 'frozen'):
|
|
||||||
_srcfile = os.path.join('logging', '__init__.py')
|
|
||||||
else:
|
|
||||||
_srcfile = __file__
|
|
||||||
_srcfile = os.path.normcase(_srcfile)
|
|
||||||
|
|
||||||
|
|
||||||
if hasattr(sys, '_getframe'):
|
|
||||||
currentframe = lambda: sys._getframe(3)
|
|
||||||
else: #pragma: no cover
|
|
||||||
def currentframe():
|
|
||||||
"""Return the frame object for the caller's stack frame."""
|
|
||||||
try:
|
|
||||||
raise Exception
|
|
||||||
except Exception:
|
|
||||||
return sys.exc_info()[2].tb_frame.f_back
|
|
||||||
|
|
||||||
# _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
|
|
||||||
# findCaller() from being called.
|
|
||||||
#if not hasattr(sys, "_getframe"):
|
|
||||||
# _srcfile = None
|
|
||||||
|
|
||||||
#
|
#
|
||||||
#_startTime is used as the base when calculating the relative time of events
|
#_startTime is used as the base when calculating the relative time of events
|
||||||
#
|
#
|
||||||
|
|
@ -172,6 +144,40 @@ def addLevelName(level, levelName):
|
||||||
finally:
|
finally:
|
||||||
_releaseLock()
|
_releaseLock()
|
||||||
|
|
||||||
|
if hasattr(sys, '_getframe'):
|
||||||
|
currentframe = lambda: sys._getframe(3)
|
||||||
|
else: #pragma: no cover
|
||||||
|
def currentframe():
|
||||||
|
"""Return the frame object for the caller's stack frame."""
|
||||||
|
try:
|
||||||
|
raise Exception
|
||||||
|
except Exception:
|
||||||
|
return sys.exc_info()[2].tb_frame.f_back
|
||||||
|
|
||||||
|
#
|
||||||
|
# _srcfile is used when walking the stack to check when we've got the first
|
||||||
|
# caller stack frame, by skipping frames whose filename is that of this
|
||||||
|
# module's source. It therefore should contain the filename of this module's
|
||||||
|
# source file.
|
||||||
|
#
|
||||||
|
# Ordinarily we would use __file__ for this, but frozen modules don't always
|
||||||
|
# have __file__ set, for some reason (see Issue #21736). Thus, we get the
|
||||||
|
# filename from a handy code object from a function defined in this module.
|
||||||
|
# (There's no particular reason for picking addLevelName.)
|
||||||
|
#
|
||||||
|
|
||||||
|
_srcfile = os.path.normcase(addLevelName.__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
|
||||||
|
# findCaller() from being called. You can also do this if you want to avoid
|
||||||
|
# the overhead of fetching caller information, even when _getframe() is
|
||||||
|
# available.
|
||||||
|
#if not hasattr(sys, '_getframe'):
|
||||||
|
# _srcfile = None
|
||||||
|
|
||||||
|
|
||||||
def _checkLevel(level):
|
def _checkLevel(level):
|
||||||
if isinstance(level, int):
|
if isinstance(level, int):
|
||||||
rv = level
|
rv = level
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue