code: def testStaticRangeResolverFn_E2E(self):
      channel = canned_resolver_functions.static_range(
          channel_utils.artifact_query(
              artifact_type=test_utils.DummyArtifact
          ),
          start_span_number=0,
          end_span_number=5,
          keep_all_versions=True,
          exclude_span_numbers=[2, 10],
      )
      pipeline_node = test_utils.compile_inputs({"x": channel})
  
      spans = [0, 1, 2, 2, 3, 4, 5, 7, 10]
      versions = [0, 0, 0, 1, 0, 0, 0, 0, 0]
      mlmd_artifacts = self._insert_artifacts_into_mlmd(spans, versions)
  
      resolved = inputs_utils.resolve_input_artifacts(
          pipeline_node=pipeline_node, metadata_handle=self.mlmd_handle
      )
  
      # min_spans = 5 - 0 + 1 - 1 = 5, so a SkipSignal will not be raised even
      # though the excluded span 2 is in the range [0, 5]. Non-empty resolution
      # implies Trigger.
      self.assertNotEmpty(resolved)
  
      # The resolved artifacts should have (span, version) tuples of:
      # [(0, 0), (1, 0), (3, 0), (4, 0), (5, 0)].
      actual_artifacts = [r.mlmd_artifact for r in resolved[0]["x"]]
      expected_artifacts = [
          ma
          for ma in mlmd_artifacts
          if ma.properties["span"].int_value in {0, 1, 3, 4, 5}
      ]
      self.assertResolvedAndMLMDArtifactListEqual(
          actual_artifacts, expected_artifacts
      )
  
imports: from typing import Sequence
  import tensorflow
  from tfx import types
  from tfx.dsl.control_flow import for_each
  from tfx.dsl.input_resolution import canned_resolver_functions
  from tfx.dsl.input_resolution import resolver_op
  from tfx.dsl.input_resolution.ops import test_utils
  from tfx.orchestration import pipeline
  from tfx.orchestration.portable import inputs_utils
  from tfx.orchestration.portable.input_resolution import exceptions
  from tfx.types import channel_utils
  from tfx.types import resolved_channel
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 8 for calling the CannedResolverFunctionsTest obj's underlying member method code with example usage: obj.testStaticRangeResolverFn_E2E() without return types