code: def test_buggy_getattr_class(self):
      class NoCall:
          def __getattr__(
              self, name
          ):  # Not invoked for class attribute.
              raise IndexError  # Bug.
  
      class CallA(NoCall):
          def __call__(self, ci):  # Bug does not matter.
              pass
  
      class CallB(NoCall):
          def __call__(oui, a, b, c):  # Non-standard 'self'.
              pass
  
      for meth, mtip in (
          (NoCall, default_tip),
          (CallA, default_tip),
          (NoCall(), ""),
          (CallA(), "(ci)"),
          (CallB(), "(a, b, c)"),
      ):
          with self.subTest(meth=meth, mtip=mtip):
              self.assertEqual(get_spec(meth), mtip)
  
imports: from idlelib import calltip
  import unittest
  from unittest.mock import Mock
  import textwrap
  import types
  import re
  from idlelib.idle_test.mock_tk import Text
  from test.support import MISSING_C_DOCSTRINGS
label_desc: Use image node_id 14 for calling the Get_argspecTest obj's underlying member method code with example usage: obj.test_buggy_getattr_class() without return types