code: def testResolveInputArtifacts_OutputKeyUnset(self):
      pipeline = self.load_pipeline_proto(
          "pipeline_for_input_resolver_test_output_key_unset.pbtxt"
      )
      my_trainer = pipeline.nodes[0].pipeline_node
      my_pusher = pipeline.nodes[1].pipeline_node
  
      with self.get_metadata() as m:
          # Publishes Trainer with one output channels. `output_model`
          # will be consumed by the Pusher in the different run.
          output_model = self.make_model(uri="my_output_model_uri")
          output_artifacts = self.fake_execute(
              m,
              my_trainer,
              input_map=None,
              output_map={"model": [output_model]},
          )
          output_model = output_artifacts["model"][0]
  
          # Gets inputs for pusher. Should get back what the first Model
          # published in the `output_model` channel.
          pusher_inputs = inputs_utils.resolve_input_artifacts(
              metadata_handle=m, pipeline_node=my_pusher
          )[0]
          self.assertArtifactMapEqual(
              {"model": [output_model]}, pusher_inputs
          )
  
imports: import collections
  import os
  import tensorflow
  from tfx import types
  from tfx.dsl.compiler import placeholder_utils
  from tfx.orchestration import metadata
  from tfx.orchestration.portable import data_types
  from tfx.orchestration.portable import execution_publish_utils
  from tfx.orchestration.portable import inputs_utils
  from tfx.orchestration.portable.input_resolution import exceptions
  from tfx.orchestration.portable.mlmd import context_lib
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.utils import test_case_utils
  from google.protobuf import text_format
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 4 for calling the InputsUtilsTest obj's underlying member method code with example usage: obj.testResolveInputArtifacts_OutputKeyUnset() without return types