code: def test_print_exception_unhashable(self):
      class UnhashableException(Exception):
          def __eq__(self, other):
              return True
  
      ex1 = UnhashableException("ex1")
      ex2 = UnhashableException("ex2")
      try:
          raise ex2 from ex1
      except UnhashableException:
          try:
              raise ex1
          except UnhashableException:
              with captured_stderr() as output:
                  with mock.patch.object(
                      run, "cleanup_traceback"
                  ) as ct:
                      ct.side_effect = lambda t, e: t
                      run.print_exception()
  
      tb = output.getvalue().strip().splitlines()
      self.assertEqual(11, len(tb))
      self.assertIn("UnhashableException: ex2", tb[3])
      self.assertIn("UnhashableException: ex1", tb[10])
  
imports: from idlelib import run
  import io
  import sys
  from test.support import captured_output, captured_stderr
  import unittest
  from unittest import mock
  import idlelib
  from idlelib.idle_test.mock_idle import Func
label_desc: Use image node_id 1 for calling the ExceptionTest obj's underlying member method code with example usage: obj.test_print_exception_unhashable() and returns: True