class_docstr: EqualPropertyValues operator.
docstr: Returns artifacts with matching custom property (or property) values.
docstr_tok: ["Returns","artifacts","with","matching","custom","property","(","or","property",")","values","."]
code: def apply(
      self,
      input_list: Sequence[types.Artifact],
  ) -> Sequence[types.Artifact]:
      """Returns artifacts with matching custom property (or property) values."""
      output_artifact_list = []
      for artifact in input_list:
          if self.is_custom_property:
              if not artifact.has_custom_property(self.property_key):
                  logging.warning(
                      "The artifact %s does not contain the custom property %s.",
                      artifact,
                      self.property_key,
                  )
                  return []
              actual_property_value = artifact.get_custom_property(
                  self.property_key
              )
          else:
              if not artifact.has_property(self.property_key):
                  logging.warning(
                      "The artifact %s does not contain the property %s.",
                      artifact,
                      self.property_key,
                  )
                  return []
              actual_property_value = getattr(
                  artifact, self.property_key
              )
  
          if actual_property_value == self.property_value:
              output_artifact_list.append(artifact)
  
      return output_artifact_list
  
file_path: tfx/tfx/dsl/input_resolution/ops/equal_property_values_op.py
imports: from typing import Sequence, Union
  from absl import logging
  from tfx import types
  from tfx.dsl.input_resolution import resolver_op
  from tfx.utils import json_utils
label_desc: Use image node_id 1 for calling the EqualPropertyValues obj's underlying member method code with example usage: obj.apply(input_list) and returns: output_artifact_list, list, list