class_docstr: Strategy that resolves artifacts if predicates are met.
  
  This resolver strategy is used by TFX internally to support conditional.
  Not intended to be directly used by users.
class_docstr_tok: ["Strategy","that","resolves","artifacts","if","predicates","are","met",".","This","resolver","strategy","is","used","by","TFX","internally","to","support","conditional",".","Not","intended","to","be","directly","used","by","users","."]
code: def resolve_artifacts(
      self,
      metadata_handle: metadata.Metadata,
      input_dict: Dict[str, List[types.Artifact]],
  ) -> Optional[Dict[str, List[types.Artifact]]]:
      for placeholder_pb in self._predicates:
          context = placeholder_utils.ResolutionContext(
              exec_info=portable_data_types.ExecutionInfo(
                  input_dict=input_dict
              )
          )
          predicate_result = (
              placeholder_utils.resolve_placeholder_expression(
                  placeholder_pb, context
              )
          )
          if not isinstance(predicate_result, bool):
              raise ValueError(
                  "Predicate evaluates to a non-boolean result."
              )
  
          if not predicate_result:
              raise exceptions.SkipSignal(
                  "Predicate evaluates to False."
              )
      return input_dict
  
file_path: tfx/tfx/dsl/input_resolution/strategies/conditional_strategy.py
imports: from typing import Dict, List, Optional
  from tfx import types
  from tfx.dsl.compiler import placeholder_utils
  from tfx.dsl.components.common import resolver
  from tfx.orchestration import metadata
  from tfx.orchestration.portable import data_types
  from tfx.orchestration.portable.input_resolution import exceptions
  from tfx.proto.orchestration import placeholder_pb2
label_desc: Use image node_id 2 for calling the ConditionalStrategy obj's underlying member method code with example usage: obj.resolve_artifacts(metadata_handle, input_dict) and returns: input_dict