bpo-28603: Fix formatting tracebacks for unhashable exceptions (#4014)

This commit is contained in:
Zane Bitter 2017-10-17 17:29:39 -04:00 committed by Serhiy Storchaka
parent 191e313820
commit de86073a76
9 changed files with 114 additions and 9 deletions

View file

@ -203,16 +203,16 @@ def print_exception():
seen = set()
def print_exc(typ, exc, tb):
seen.add(exc)
seen.add(id(exc))
context = exc.__context__
cause = exc.__cause__
if cause is not None and cause not in seen:
if cause is not None and id(cause) not in seen:
print_exc(type(cause), cause, cause.__traceback__)
print("\nThe above exception was the direct cause "
"of the following exception:\n", file=efile)
elif (context is not None and
not exc.__suppress_context__ and
context not in seen):
id(context) not in seen):
print_exc(type(context), context, context.__traceback__)
print("\nDuring handling of the above exception, "
"another exception occurred:\n", file=efile)