本文整理汇总了Python中traceback.py方法的典型用法代码示例。如果您正苦于以下问题:Python traceback.py方法的具体用法?Python traceback.py怎么用?Python traceback.py使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类traceback
的用法示例。
在下文中一共展示了traceback.py方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: format_exc
# 需要导入模块: import traceback [as 别名]
# 或者: from traceback import py [as 别名]
def format_exc(exc: Exception, limit: int = -1, msg: Optional[str] = None):
"""
Format `Exceptions` for use with `Stoq` error handling
"""
# Inspired from https://github.com/python/cpython/blob/3.7/Lib/traceback.py#L560-L563
tb = traceback.format_tb(exc.__traceback__, limit=limit)[0].split('\n')[0].strip()
stype = type(exc).__qualname__
smod = type(exc).__module__
if smod not in ('__main__', 'builtins'):
stype = f'{smod}.{stype}'
exc_str = f'{tb} ; {stype}: {str(exc)}'
if msg:
return f'{msg}: {exc_str}'
else:
return exc_str
示例2: _writeTracebackMessage
# 需要导入模块: import traceback [as 别名]
# 或者: from traceback import py [as 别名]
def _writeTracebackMessage(logger, typ, exception, traceback):
"""
Write a traceback to the log.
@param typ: The class of the exception.
@param exception: The L{Exception} instance.
@param traceback: The traceback, a C{str}.
"""
msg = TRACEBACK_MESSAGE(reason=exception, traceback=traceback, exception=typ)
msg = msg.bind(**_error_extraction.get_fields_for_exception(logger, exception))
msg.write(logger)
# The default Python standard library traceback.py formatting functions
# involving reading source from disk. This is a potential performance hit
# since disk I/O can block. We therefore format the tracebacks with in-memory
# information only.
#
# Unfortunately, the easiest way to do this is... exciting.
示例3: load_experiment_config_file
# 需要导入模块: import traceback [as 别名]
# 或者: from traceback import py [as 别名]
def load_experiment_config_file():
# Load the config file, this holds information about data, black box fn etc.
try:
cfg_filename = "config.cfg"
config = SafeConfigParser(allow_no_value=True)
config.read(cfg_filename)
if not config.has_option("HPOLIB", "is_not_original_config_file"):
logger.critical("Config file in directory %s seems to be an"
" original config which was not created by wrapping.py. "
"Are you sure that you are in the right directory?" %
os.getcwd())
sys.exit(1)
return config
except IOError as e:
logger.critical("Could not open config file in directory %s",
os.getcwd())
sys.exit(1)
示例4: _fixed_getinnerframes
# 需要导入模块: import traceback [as 别名]
# 或者: from traceback import py [as 别名]
def _fixed_getinnerframes(etb, context=1,tb_offset=0):
LNUM_POS, LINES_POS, INDEX_POS = 2, 4, 5
records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))
# If the error is at the console, don't build any context, since it would
# otherwise produce 5 blank lines printed out (there is no file at the
# console)
rec_check = records[tb_offset:]
try:
rname = rec_check[0][1]
if rname == '<ipython console>' or rname.endswith('<string>'):
return rec_check
except IndexError:
pass
aux = traceback.extract_tb(etb)
assert len(records) == len(aux)
for i, (file, lnum, _, _) in zip(range(len(records)), aux):
maybeStart = lnum-1 - context//2
start = max(maybeStart, 0)
end = start + context
lines = ulinecache.getlines(file)[start:end]
buf = list(records[i])
buf[LNUM_POS] = lnum
buf[INDEX_POS] = lnum - 1 - start
buf[LINES_POS] = lines
records[i] = tuple(buf)
return records[tb_offset:]
# Helper function -- largely belongs to VerboseTB, but we need the same
# functionality to produce a pseudo verbose TB for SyntaxErrors, so that they
# can be recognized properly by ipython.el's py-traceback-line-re
# (SyntaxErrors have to be treated specially because they have no traceback)
示例5: _format_list
# 需要导入模块: import traceback [as 别名]
# 或者: from traceback import py [as 别名]
def _format_list(self, extracted_list):
"""Format a list of traceback entry tuples for printing.
Given a list of tuples as returned by extract_tb() or
extract_stack(), return a list of strings ready for printing.
Each string in the resulting list corresponds to the item with the
same index in the argument list. Each string ends in a newline;
the strings may contain internal newlines as well, for those items
whose source text line is not None.
Lifted almost verbatim from traceback.py
"""
Colors = self.Colors
list = []
for filename, lineno, name, line in extracted_list[:-1]:
item = ' File %s"%s"%s, line %s%d%s, in %s%s%s\n' % \
(Colors.filename, filename, Colors.Normal,
Colors.lineno, lineno, Colors.Normal,
Colors.name, name, Colors.Normal)
if line:
item += ' %s\n' % line.strip()
list.append(item)
# Emphasize the last entry
filename, lineno, name, line = extracted_list[-1]
item = '%s File %s"%s"%s, line %s%d%s, in %s%s%s%s\n' % \
(Colors.normalEm,
Colors.filenameEm, filename, Colors.normalEm,
Colors.linenoEm, lineno, Colors.normalEm,
Colors.nameEm, name, Colors.normalEm,
Colors.Normal)
if line:
item += '%s %s%s\n' % (Colors.line, line.strip(),
Colors.Normal)
list.append(item)
#from pprint import pformat; print 'LISTTB', pformat(list) # dbg
return list
示例6: _some_str
# 需要导入模块: import traceback [as 别名]
# 或者: from traceback import py [as 别名]
def _some_str(self, value):
# Lifted from traceback.py
try:
return str(value)
except:
return '<unprintable %s object>' % type(value).__name__
#----------------------------------------------------------------------------
示例7: format_traceback
# 需要导入模块: import traceback [as 别名]
# 或者: from traceback import py [as 别名]
def format_traceback(self, tb=None):
omit_last = False
if not tb:
try:
raise Exception()
except:
omit_last = True
_, _, tb = sys.exc_info()
assert tb is not None
frames = []
final_source = ''
while tb:
if omit_last and not tb.tb_next:
break
formatted, colored = self.format_traceback_frame(tb)
# special case to ignore runcode() here.
if not (os.path.basename(formatted[0]) == 'code.py' and formatted[2] == 'runcode'):
final_source = colored
frames.append(formatted)
tb = tb.tb_next
lines = traceback.format_list(frames)
return ''.join(lines), final_source
示例8: _format_exception
# 需要导入模块: import traceback [as 别名]
# 或者: from traceback import py [as 别名]
def _format_exception(self, value, tb, seen=None):
# Implemented from built-in traceback module:
# https://github.com/python/cpython/blob/a5b76167dedf4d15211a216c3ca7b98e3cec33b8/Lib/traceback.py#L468
exc_type, exc_value, exc_traceback = type(value), value, tb
if seen is None:
seen = set()
seen.add(id(exc_value))
if exc_value and PY3:
if exc_value.__cause__ is not None and id(exc_value.__cause__) not in seen:
for text in self._format_exception(exc_value.__cause__,exc_value.__cause__.__traceback__, seen=seen):
yield text
yield u"\nThe above exception was the direct cause of the following exception:\n\n"
elif exc_value.__context__ is not None and id(exc_value.__context__) not in seen and not exc_value.__suppress_context__:
for text in self._format_exception(exc_value.__context__, exc_value.__context__.__traceback__, seen=seen):
yield text
yield u"\nDuring handling of the above exception, another exception occurred:\n\n"
if exc_traceback is not None:
yield u'Traceback (most recent call last):\n'
formatted, colored_source = self.format_traceback(exc_traceback)
yield formatted
if not str(value) and exc_type is AssertionError:
value.args = (colored_source,)
title = traceback.format_exception_only(exc_type, value)
yield u''.join(title).strip() + u'\n'
示例9: format_traceback
# 需要导入模块: import traceback [as 别名]
# 或者: from traceback import py [as 别名]
def format_traceback(exc_info):
traceback_template = '''Traceback (most recent call last):
File "%(filename)s", line %(lineno)s, in %(name)s
%(type)s: %(message)s\n'''# Skipping the "actual line" item
# Also note: we don't walk all the way through the frame stack in this example
# see hg.python.org/cpython/file/8dffb76faacc/Lib/traceback.py#l280
# (Imagine if the 1/0, below, were replaced by a call to test() which did 1/0.)
exc_type, exc_value, exc_traceback = exc_info # most recent (if any) by default
'''
Reason this _can_ be bad: If an (unhandled) exception happens AFTER this,
or if we do not delete the labels on (not much) older versions of Py, the
reference we created can linger.
traceback.format_exc/print_exc do this very thing, BUT note this creates a
temp scope within the function.
'''
traceback_details = {
'filename': exc_traceback.tb_frame.f_code.co_filename,
'lineno' : exc_traceback.tb_lineno,
'name' : exc_traceback.tb_frame.f_code.co_name,
'type' : exc_type.__name__,
'message' : exc_value.message, # or see traceback._some_str()
}
del(exc_type, exc_value, exc_traceback) # So we don't leave our local labels/objects dangling
# This still isn't "completely safe", though!
# "Best (recommended) practice: replace all exc_type, exc_value, exc_traceback
# with sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2]
return "\n" + traceback.format_exc() + "\n\n" + traceback_template % traceback_details + "\n\n"