code: def _get_property_value(
      artifact: metadata_store_pb2.Artifact, property_name: str
  ) -> Optional[types.Property]:
      if property_name in artifact.properties:
          return data_types_utils.get_metadata_value(
              artifact.properties[property_name]
          )
      elif property_name in artifact.custom_properties:
          return data_types_utils.get_metadata_value(
              artifact.custom_properties[property_name]
          )
      return None
  
imports: import collections
  import itertools
  from typing import Mapping, Optional, Sequence
  from absl import logging
  from tfx import types
  from tfx.dsl.io import fileio
  from tfx.orchestration import data_types_utils
  from tfx.orchestration import metadata
  from tfx.orchestration import node_proto_view
  from tfx.orchestration.experimental.core import task
  from tfx.orchestration.portable.mlmd import event_lib
  from tfx.orchestration.portable.mlmd import execution_lib
  from tfx.orchestration.portable.mlmd import store_ext
  from tfx.proto.orchestration import garbage_collection_policy_pb2
  from tfx.orchestration.experimental.core import garbage_collection_extensions
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 6 for calling a global function with example usage: _get_property_value(artifact, property_name) and returns: None, data_types_utils, data_types_utils