class_docstr: Config class which controls how to run a pipeline.
  
  Attributes:
    supported_launcher_classes: A list of component launcher classes that are
      supported by the current pipeline. List sequence determines the order in
      which launchers are chosen for each component being run.
    default_component_configs: A list of default component configs which will
      be used as default component config to run each component in the pipeline.
      List sequence determines the order in which config are chosen for each
      component being run.
    component_config_overrides: component configs for customizing the launching
      of each component. The key is the component ID.
docstr: Validate the config settings.
docstr_tok: ["Validate","the","config","settings","."]
code: def _validate_configs(self):
      """Validate the config settings."""
      if len(self.supported_launcher_classes) > len(
          set(self.supported_launcher_classes)
      ):
          raise ValueError(
              "supported_launcher_classes must not have duplicate types"
          )
      default_component_config_classes = [
          type(config) for config in self.default_component_configs
      ]
      if len(default_component_config_classes) > len(
          set(default_component_config_classes)
      ):
          raise ValueError(
              "default_component_configs must not have configs with the same type"
          )
  
imports: from typing import Dict, List, Optional, Type
  from tfx.orchestration.config import base_component_config
  from tfx.orchestration.launcher import base_component_launcher
  from tfx.orchestration.launcher import in_process_component_launcher
label_desc: Use image node_id 2 for calling the PipelineConfig obj's underlying member method code with example usage: obj._validate_configs() without return types