code: def types(
      self, func_names: Optional[List[str]] = None
  ) -> Dict[str, str]:
      out: Dict[str, str] = {}
      for func_name in func_names or list(self.params.keys()):
          func = getattr(self.base_class, func_name)
          arg_types = parse_types(func)[0][0]
          for key in self.params[func_name].keys():
              if key in out and out[key] != arg_types[key]:
                  raise ValueError(
                      (
                          f"Found inconsistent types for argument {key}. "
                          f"Expected type {out[key]} but found type "
                          f"{arg_types[key]}."
                      )
                  )
              out[key] = arg_types[key]
      return out
  
file_path: AutoGL/autogl/module/nas/space/gasso_space/utils/inspector.py
imports: import re
  import inspect
  from collections import OrderedDict
  from typing import Dict, List, Any, Optional, Callable, Set
  from .typing import parse_types
label_desc: Use image node_id 6 for calling the Inspector obj's underlying member method code with example usage: obj.types(func_names) and returns: out