code: def testTrainingRangeOp_BulkInferrerProducesExamples(self):
      self.train_on_examples(
          self.model, self.examples[:5], self.transform_graph
      )
      bulk_inferrer_examples = self._build_examples(5)
  
      # The BulkInferrer takes in the same Examples used to Trainer the Model,
      # and outputs 5 new examples to be used downstream. This creates additional
      # Examples artifacts in MLMD linked to the Model, but they should NOT be
      # returned as the Examples that the Model was trained on.
      self.put_execution(
          "BulkInferrer",
          inputs={
              "examples": self.unwrap_tfx_artifacts(self.examples),
              "model": self.unwrap_tfx_artifacts([self.model]),
          },
          outputs={
              "output_examples": self.unwrap_tfx_artifacts(
                  bulk_inferrer_examples
              )
          },
      )
  
      actual = self._training_range([self.model])
      self.assertArtifactListEqual(actual, self.examples[:5])
  
imports: from typing import List
  import tensorflow
  from tfx import types
  from tfx.dsl.input_resolution import resolver_op
  from tfx.dsl.input_resolution.ops import ops
  from tfx.dsl.input_resolution.ops import test_utils
  from tfx.orchestration.portable.input_resolution import exceptions
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 10 for calling the TrainingRangeOpTest obj's underlying member method code with example usage: obj.testTrainingRangeOp_BulkInferrerProducesExamples() without return types