Remaining fallout from 17911

The code module was using a private function from traceback in order to skip a
frame - used the direct interface to do that instead,

The decimal module suffered minor fallout from formatting changes ('None' as a
value is now not printed by traceback, the same as None was not before).

The cgitb module was passing a bogus exception type (type.__name__) into
format_exception, which uncovered that format_exception and print_exception had
been ignoring the etype for some time, so the compatibility thunk to the new
code now does the same thing.
This commit is contained in:
Robert Collins 2015-03-05 15:45:01 +13:00
parent 4330215880
commit 65e62e6fe7
1 changed files with 8 additions and 2 deletions

View File

@ -91,10 +91,13 @@ def print_exception(etype, value, tb, limit=None, file=None, chain=True):
occurred with a caret on the next line indicating the approximate
position of the error.
"""
# format_exception has ignored etype for some time, and code such as cgitb
# passes in bogus values as a result. For compatibility with such code we
# ignore it here (rather than in the new TracebackException API).
if file is None:
file = sys.stderr
for line in TracebackException(
etype, value, tb, limit=limit).format(chain=chain):
type(value), value, tb, limit=limit).format(chain=chain):
file.write(line)
@ -107,8 +110,11 @@ def format_exception(etype, value, tb, limit=None, chain=True):
these lines are concatenated and printed, exactly the same text is
printed as does print_exception().
"""
# format_exception has ignored etype for some time, and code such as cgitb
# passes in bogus values as a result. For compatibility with such code we
# ignore it here (rather than in the new TracebackException API).
return list(TracebackException(
etype, value, tb, limit=limit).format(chain=chain))
type(value), value, tb, limit=limit).format(chain=chain))
def format_exception_only(etype, value):