class_docstr: Launcher is the main entrance of nodes in TFleX.
  
  It handles TFX internal details like artifact resolving, execution
  triggering and result publishing.
class_docstr_tok: ["Launcher","is","the","main","entrance","of","nodes","in","TFleX",".","It","handles","TFX","internal","details","like","artifact","resolving",",","execution","triggering","and","result","publishing","."]
docstr: Executes underlying component implementation.
code: def _run_executor(
      self, execution_info: data_types.ExecutionInfo
  ) -> execution_result_pb2.ExecutorOutput:
      """Executes underlying component implementation."""
      if self._executor_operator is None:
          raise ValueError("Executor operator is undefined.")
  
      logging.info("Going to run a new execution: %s", execution_info)
  
      outputs_utils.make_output_dirs(execution_info.output_dict)
      try:
          executor_output = self._executor_operator.run_executor(
              execution_info
          )
          code = executor_output.execution_result.code
          if code != 0:
              result_message = (
                  executor_output.execution_result.result_message
              )
              err = (
                  f"Execution {execution_info.execution_id} "
                  f"failed with error code {code} and "
                  f"error message {result_message}"
              )
              logging.error(err)
              raise _ExecutionFailedError(err, executor_output)
          return executor_output
      except Exception:  # pylint: disable=broad-except
          outputs_utils.remove_output_dirs(execution_info.output_dict)
          raise
  
imports: import sys
  from typing import Any, Dict, List, Mapping, Optional, Type, TypeVar
  from absl import logging
  import attr
  import grpc
  import portpicker
  from tfx import types
  from tfx.dsl.compiler import placeholder_utils
  from tfx.dsl.io import fileio
  from tfx.orchestration import data_types_utils
  from tfx.orchestration import metadata
  from tfx.orchestration.portable import base_driver_operator
  from tfx.orchestration.portable import base_executor_operator
  from tfx.orchestration.portable import beam_executor_operator
  from tfx.orchestration.portable import cache_utils
  from tfx.orchestration.portable import data_types
  from tfx.orchestration.portable import docker_executor_operator
  from tfx.orchestration.portable import execution_publish_utils
  from tfx.orchestration.portable import execution_watcher
  from tfx.orchestration.portable import importer_node_handler
  from tfx.orchestration.portable import inputs_utils
  from tfx.orchestration.portable import outputs_utils
  from tfx.orchestration.portable import python_driver_operator
  from tfx.orchestration.portable import python_executor_operator
  from tfx.orchestration.portable import resolver_node_handler
  from tfx.orchestration.portable.input_resolution import exceptions
  from tfx.orchestration.portable.mlmd import context_lib
  from tfx.orchestration.portable.mlmd import execution_lib
  from tfx.proto.orchestration import driver_output_pb2
  from tfx.proto.orchestration import executable_spec_pb2
  from tfx.proto.orchestration import execution_result_pb2
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.utils import typing_utils
  from google.protobuf import message
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 6 for calling the Launcher obj's underlying member method code with example usage: obj._run_executor(execution_info) and returns: executor_output