code: def testRangeConfigSpanWidthPresence(self):
      # Test RangeConfig.static_range behavior when span width is not given.
      span1_split1 = os.path.join(
          self._input_base_path, "span01", "split1", "data"
      )
      io_utils.write_string_file(span1_split1, "testing11")
  
      range_config = range_config_pb2.RangeConfig(
          static_range=range_config_pb2.StaticRange(
              start_span_number=1, end_span_number=1
          )
      )
      splits1 = [
          example_gen_pb2.Input.Split(
              name="s1", pattern="span{SPAN}/split1/*"
          )
      ]
  
      # RangeConfig cannot find zero padding span without width modifier.
      with self.assertRaisesRegex(
          ValueError, "Cannot find matching for split"
      ):
          utils.calculate_splits_fingerprint_span_and_version(
              self._input_base_path, splits1, range_config=range_config
          )
  
      splits2 = [
          example_gen_pb2.Input.Split(
              name="s1", pattern="span{SPAN:2}/split1/*"
          )
      ]
  
      # With width modifier in span spec, RangeConfig.static_range makes
      # correct zero-padded substitution.
      (
          _,
          span,
          version,
      ) = utils.calculate_splits_fingerprint_span_and_version(
          self._input_base_path, splits2, range_config=range_config
      )
      self.assertEqual(span, 1)
      self.assertIsNone(version)
      self.assertEqual(splits2[0].pattern, "span01/split1/*")
  
imports: import os
  import re
  import tensorflow
  from tfx.components.example_gen import utils
  from tfx.dsl.io import fileio
  from tfx.orchestration import data_types
  from tfx.proto import example_gen_pb2
  from tfx.proto import range_config_pb2
  from tfx.utils import io_utils
  from tfx.utils import json_utils
label_desc: Use image node_id 34 for calling the UtilsTest obj's underlying member method code with example usage: obj.testRangeConfigSpanWidthPresence() without return types