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)