code: def get_validator(parent_path, prop_name):
      key = (parent_path, prop_name)
      if key not in ValidatorCache._cache:
          if "." not in parent_path and prop_name == "type":
              # Special case for .type property of traces
              validator = LiteralValidator(
                  "type", parent_path, parent_path
              )
          else:
              lookup_name = None
              if parent_path == "layout":
                  from .graph_objects import Layout
  
                  match = Layout._subplotid_prop_re.match(prop_name)
                  if match:
                      lookup_name = match.group(1)
  
              lookup_name = lookup_name or prop_name
              class_name = lookup_name.title() + "Validator"
              validator = getattr(
                  importlib.import_module(
                      "plotly.validators." + parent_path
                  ),
                  class_name,
              )(plotly_name=prop_name)
          ValidatorCache._cache[key] = validator
  
      return ValidatorCache._cache[key]
  
imports: import importlib
  from _plotly_utils.basevalidators import LiteralValidator
label_desc: Use image node_id 1 for calling the ValidatorCache obj's underlying member method code with example usage: obj.get_validator(parent_path, prop_name) and returns: ValidatorCache