code: def _make_pipeline(
      self,
      pipeline_root,
      pipeline_run_id,
      pipeline_type: Literal[
          "standard", "chore", "lifetime"
      ] = "standard",
  ):
      if pipeline_type == "standard":
          pipeline = test_sync_pipeline.create_pipeline()
      elif pipeline_type == "chore":
          pipeline = test_sync_pipeline.create_chore_pipeline()
      elif pipeline_type == "lifetime":
          pipeline = (
              test_sync_pipeline.create_resource_lifetime_pipeline()
          )
      else:
          raise ValueError(
              f"Unsupported pipeline type: {pipeline_type}. Supported types:"
              ' "standard", "chore", and "lifetime".'
          )
  
      runtime_parameter_utils.substitute_runtime_parameter(
          pipeline,
          {
              compiler_constants.PIPELINE_ROOT_PARAMETER_NAME: pipeline_root,
              compiler_constants.PIPELINE_RUN_ID_PARAMETER_NAME: pipeline_run_id,
          },
      )
      return pipeline
  
imports: import itertools
  import os
  from typing import Literal
  import uuid
  from absl.testing import parameterized
  from absl.testing.absltest import mock
  import tensorflow
  from tfx.dsl.compiler import constants
  from tfx.orchestration import data_types_utils
  from tfx.orchestration.experimental.core import constants
  from tfx.orchestration.experimental.core import mlmd_state
  from tfx.orchestration.experimental.core import pipeline_state
  from tfx.orchestration.experimental.core import service_jobs
  from tfx.orchestration.experimental.core import sync_pipeline_task_gen
  from tfx.orchestration.experimental.core import task
  from tfx.orchestration.experimental.core import task_gen_utils
  from tfx.orchestration.experimental.core import task_queue
  from tfx.orchestration.experimental.core import test_utils
  from tfx.orchestration.experimental.core.testing import test_sync_pipeline
  from tfx.orchestration import mlmd_connection_manager
  from tfx.orchestration.portable import runtime_parameter_utils
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.utils import status
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 2 for calling the SyncPipelineTaskGeneratorTest obj's underlying member method code with example usage: obj._make_pipeline(pipeline_root, pipeline_run_id, pipeline_type) and returns: pipeline