class_docstr: Pipeline info from orchestration system.
  
  Attributes:
    pipeline_name: name of the pipeline. We expect this to be unique for
      different pipelines.
    pipeline_root: root directory of the pipeline. We expect this to be unique
      for different pipelines.
    run_id: optional uuid for a single run of the pipeline.
code: def __init__(
      self,
      pipeline_name: str,
      pipeline_root: Union[str, ph.Placeholder],
      run_id: Optional[str] = None,
  ):
      self.pipeline_name = pipeline_name
      self.pipeline_root = pipeline_root
      self.run_id = run_id
  
imports: from typing import Any, Dict, List, Optional, Type, Union
  from tfx import types
  from tfx.dsl.placeholder import placeholder
  from tfx.utils import json_utils
label_desc: Use image node_id 1 to create a new PipelineInfo object  with example: obj = PipelineInfo(pipeline_name, pipeline_root, run_id)