code: def testLatestSpan_MinSpan(self):
      artifacts = self._get_artifacts_for_rolling_range_tests()
      _, a20, a31, a30, a71, a82 = artifacts
  
      # min_span=9 is greater than the largest span in artifacts, which is 8.
      actual = self._latest_span(artifacts, min_span=9)
      self.assertEqual(actual, [])
  
      # Although n=3, there are only 2 artifacts with a span >= 7.
      actual = self._latest_span(artifacts, min_span=7, n=3)
      self.assertEqual(actual, [a71, a82])
  
      # Tests version conflicts when keep_all_versions=False
      actual = self._latest_span(artifacts, min_span=2, n=3)
      self.assertEqual(actual, [a31, a71, a82])
  
      # Tests version conflicts when keep_all_versions=True. Note that 5 artifacts
      # are returned even when n=4, because n is the number of spans, NOT the
      # number of artifacts to return.
      actual = self._latest_span(
          artifacts, min_span=2, n=4, keep_all_versions=True
      )
      self.assertEqual(actual, [a20, a30, a31, a71, a82])
  
      actual = self._latest_span(
          artifacts, min_span=2, n=5, keep_all_versions=True
      )
      self.assertEqual(actual, [a20, a30, a31, a71, a82])
  
imports: from typing import Sequence
  import tensorflow
  from tfx import types
  from tfx.dsl.input_resolution.ops import ops
  from tfx.dsl.input_resolution.ops import test_utils
  from tfx.types import artifact
label_desc: Use image node_id 8 for calling the LatestSpanOpTest obj's underlying member method code with example usage: obj.testLatestSpan_MinSpan() without return types