code: def resolve_union_channels(
      mlmd_handle: mlmd_cm.HandleLike,
      channels: Sequence[pipeline_pb2.InputSpec.Channel],
  ) -> List[types.Artifact]:
      """Evaluate InputSpec.channels."""
      seen = set()
      result = []
      for channel in channels:
          for artifact in resolve_single_channel(mlmd_handle, channel):
              if artifact.id not in seen:
                  seen.add(artifact.id)
                  result.append(artifact)
      return result
  
file_path: tfx/tfx/orchestration/portable/input_resolution/channel_resolver.py
imports: from typing import List, Optional, Sequence, Tuple
  from absl import logging
  from tfx import types
  from tfx.orchestration import mlmd_connection_manager
  from tfx.orchestration.portable.mlmd import event_lib
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.types import artifact_utils
  import ml_metadata
  from ml_metadata import errors
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 6 for calling a global function with example usage: resolve_union_channels(mlmd_handle, channels) and returns: result