bpo-28603: Fix formatting tracebacks for unhashable exceptions (#4014)
diff --git a/Lib/idlelib/run.py b/Lib/idlelib/run.py
index 39e0c11..6440e67 100644
--- a/Lib/idlelib/run.py
+++ b/Lib/idlelib/run.py
@@ -203,16 +203,16 @@
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)