code: def testSequentialRollingRangeResolverFn_E2E(self):
      xs = canned_resolver_functions.sequential_rolling_range(
          channel_utils.artifact_query(
              artifact_type=test_utils.DummyArtifact
          ),
          start_span_number=1,
          num_spans=3,
          skip_num_recent_spans=1,
          keep_all_versions=False,
          exclude_span_numbers=[5],
      )
      with for_each.ForEach(xs) as each_x:
          inputs = {"x": each_x}
      pipeline_node = test_utils.compile_inputs(inputs)
  
      spans = [1, 2, 3, 3, 4, 5, 7]
      versions = [0, 0, 1, 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
      )
      self.assertNotEmpty(
          resolved
      )  # Non-empty resolution implies Trigger.
  
      # The resolved artifacts should have (span, version) tuples of:
      # [(1, 0), (2, 0), (3, 1)], [(2, 0), (3, 1), (4,0)].
      expected_artifact_idxs = [[0, 1, 2], [1, 2, 4]]
      for i, artifacts in enumerate(resolved):
          actual_artifacts = [r.mlmd_artifact for r in artifacts["x"]]
          expected_artifacts = [
              mlmd_artifacts[j] for j in expected_artifact_idxs[i]
          ]
          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 16 for calling the CannedResolverFunctionsTest obj's underlying member method code with example usage: obj.testSequentialRollingRangeResolverFn_E2E() without return types