class_docstr: Responsible for launching driver, executor and publisher of component.
docstr: Execute the component, includes driver, executor and publisher.
  
  Returns:
    The execution decision of the launch.
docstr_tok: ["Execute","the","component",",","includes","driver",",","executor","and","publisher",".","Returns",":","The","execution","decision","of","the","launch","."]
code: def launch(self) -> portable_data_types.ExecutionInfo:
      """Execute the component, includes driver, executor and publisher.
  
      Returns:
        The execution decision of the launch.
      """
      absl.logging.info(
          "Running driver for %s", self._component_info.component_id
      )
      execution_decision = self._run_driver(
          self._input_dict, self._output_dict, self._exec_properties
      )
  
      if not execution_decision.use_cached_results:
          absl.logging.info(
              "Running executor for %s",
              self._component_info.component_id,
          )
          # Make a deep copy for input_dict and exec_properties, because they should
          # be immutable in this context.
          # output_dict can still be changed, specifically properties.
          self._run_executor(
              execution_decision.execution_id,
              copy.deepcopy(execution_decision.input_dict),
              execution_decision.output_dict,
              copy.deepcopy(execution_decision.exec_properties),
          )
  
      absl.logging.info(
          "Running publisher for %s", self._component_info.component_id
      )
      self._run_publisher(output_dict=execution_decision.output_dict)
  
      return portable_data_types.ExecutionInfo(
          input_dict=execution_decision.input_dict,
          output_dict=execution_decision.output_dict,
          exec_properties=execution_decision.exec_properties,
          execution_id=execution_decision.execution_id,
      )
  
imports: import abc
  import copy
  from typing import Any, Dict, List, Optional, cast
  import absl
  from tfx import types
  from tfx.dsl.components.base import base_node
  from tfx.dsl.components.base import executor_spec
  from tfx.dsl.components.common import resolver
  from tfx.orchestration import data_types
  from tfx.orchestration import metadata
  from tfx.orchestration import publisher
  from tfx.orchestration.config import base_component_config
  from tfx.orchestration.portable import data_types
label_desc: Use image node_id 7 for calling the BaseComponentLauncher obj's underlying member method code with example usage: obj.launch() and returns: portable_data_types