code: def _import_class_or_module(self, name):
          
          try:
              path, base = self.py_sig_re.match(name).groups()
          except:
              raise ValueError(
                  "Invalid class or module '%s' specified for inheritance diagram" % name)
          fullname = (path or '') + base
          path = (path and path.rstrip('.'))
          if not path:
              path = base
          try:
              module = __import__(path, None, None, [])
              # We must do an import of the fully qualified name.  Otherwise if a
              # subpackage 'a.b' is requested where 'import a' does NOT provide
              # 'a.b' automatically, then 'a.b' will not be found below.  This
              # second call will force the equivalent of 'import a.b' to happen
              # after the top-level import above.
              my_import(fullname)
              
          except ImportError:
              raise ValueError(
                  "Could not import class or module '%s' specified for inheritance diagram" % name)
  
          try:
              todoc = module
              for comp in fullname.split('.')[1:]:
                  todoc = getattr(todoc, comp)
          except AttributeError:
              raise ValueError(
                  "Could not find class or module '%s' specified for inheritance diagram" % name)
  
          # If a class, just return it
          if inspect.isclass(todoc):
              return [todoc]
          elif inspect.ismodule(todoc):
              classes = []
              for cls in todoc.__dict__.values():
                  if inspect.isclass(cls) and cls.__module__ == todoc.__name__:
                      classes.append(cls)
              return classes
          raise ValueError(
              "'%s' does not resolve to a class or module" % name)
docs: Import a class using its fully-qualified *name*.