class_docstr: Allows previously-generated Artifacts to be used in a new pipeline run.
  
  By implementing this in a class (instead of a function), we reduce the
  number of MLMD reads when reusing the outputs of multiple nodes in the same
  pipeline run.
class_docstr_tok: ["Allows","previously-generated","Artifacts","to","be","used","in","a","new","pipeline","run",".","By","implementing","this","in","a","class","(","instead","of","a","function",")",",","we","reduce","the","number","of","MLMD","reads","when","reusing","the","outputs","of","multiple","nodes","in","the","same","pipeline","run","."]
docstr: Puts a ParentContext edge in MLMD.
docstr_tok: ["Puts","a","ParentContext","edge","in","MLMD","."]
code: def put_parent_context(self):
      """Puts a ParentContext edge in MLMD."""
      if (
          not self._base_run_context
          or not self._new_pipeline_run_context
      ):
          logging.warning(
              "base run context %s or new pipeline run context %s not found.",
              self._base_run_context.name,
              self._new_pipeline_run_context.name,
          )
          return
  
      context_lib.put_parent_context_if_not_exists(
          self._mlmd,
          parent_id=self._base_run_context.id,
          child_id=self._new_pipeline_run_context.id,
      )
  
imports: import collections
  import concurrent.futures
  import enum
  from typing import Collection, Dict, Final, List, Mapping, Optional, OrderedDict, Sequence, Set, Tuple
  import uuid
  from absl import logging
  from tfx.dsl.compiler import compiler_utils
  from tfx.dsl.compiler import constants
  from tfx.orchestration import metadata
  from tfx.orchestration import node_proto_view
  from tfx.orchestration.portable import execution_publish_utils
  from tfx.orchestration.portable.mlmd import context_lib
  from tfx.orchestration.portable.mlmd import execution_lib
  from tfx.proto.orchestration import pipeline_pb2
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 6 for calling the _ArtifactRecycler obj's underlying member method code with example usage: obj.put_parent_context() without return types