def format_exception_only(etype, value): |
"""Format the exception part of a traceback. |
|
The arguments are the exception type and value such as given by |
sys.last_type and sys.last_value. The return value is a list of |
strings, each ending in a newline. |
|
Normally, the list contains a single string; however, for |
SyntaxError exceptions, it contains several lines that (when |
printed) display detailed information about where the syntax |
error occurred. |
|
The message indicating which exception occurred is always the last |
string in the list. |
|
""" |
|
|
|
|
|
|
|
if (isinstance(etype, BaseException) or |
isinstance(etype, types.InstanceType) or |
etype is None or type(etype) is str): |
return [_format_final_exc_line(etype, value)] |
|
stype = etype.__name__ |
|
if not issubclass(etype, SyntaxError): |
-> return [_format_final_exc_line(stype, value)] |
|
|
lines = [] |
try: |
msg, (filename, lineno, offset, badline) = value.args |
except Exception: |
pass |
else: |
filename = filename or "<string>" |
lines.append(' File "%s", line %d\n' % (filename, lineno)) |
if badline is not None: |
lines.append(' %s\n' % badline.strip()) |
if offset is not None: |
caretspace = badline[:offset].lstrip() |
|
caretspace = ((c.isspace() and c or ' ') for c in caretspace) |
|
lines.append(' %s^\n' % ''.join(caretspace)) |
value = msg |
|
lines.append(_format_final_exc_line(stype, value)) |
return lines |