code: def testBadClass(self):
      class _BadClass1:
          @configurable
          def __init__(self, a=1, b=2):
              pass
  
      class _BadClass2:
          @configurable
          def __init__(self, a=1, b=2):
              pass
  
          def from_config(self, cfg):  # noqa
              pass
  
      class _BadClass3:
          @configurable
          def __init__(self, a=1, b=2):
              pass
  
          # bad name: must be cfg
          @classmethod
          def from_config(cls, config):  # noqa
              pass
  
      with self.assertRaises(AttributeError):
          _ = _BadClass1(a=1)
  
      with self.assertRaises(TypeError):
          _ = _BadClass2(a=1)
  
      with self.assertRaises(TypeError):
          _ = _BadClass3(get_cfg())
  
imports: import os
  import tempfile
  import unittest
  import torch
  from omegaconf import OmegaConf
  from detectron2 import model_zoo
  from detectron2.config import configurable, downgrade_config, get_cfg, upgrade_config
  from detectron2.layers import ShapeSpec
  from detectron2.modeling import build_model
label_desc: Use image node_id 6 for calling the TestConfigurable obj's underlying member method code with example usage: obj.testBadClass() without return types