code: def _build_dataset(
      self,
      num_elements_per_file,
      num_files,
      num_epochs,
      seed=None,
      reshuffle_each_iteration=None,
      symbolic_checkpoint=None,
  ):
      file_infos = []
      for _ in range(num_files):
          file_infos.append(
              {
                  "path": "unused",
                  "num_elements": num_elements_per_file,
              }
          )
  
      def reader_factory(files):
          return dataset_ops.Dataset.range(
              num_elements_per_file
              * array_ops.shape(files, out_type=dtypes.int64)[0]
          )
  
      dataset = shuffle_ops.index_shuffle(
          file_infos,
          reader_factory,
          seed=seed,
          reshuffle_each_iteration=reshuffle_each_iteration,
      )
      dataset = dataset.repeat(num_epochs)
      if symbolic_checkpoint:
          options = options_lib.Options()
          options.experimental_symbolic_checkpoint = symbolic_checkpoint
          dataset = dataset.with_options(options)
      return dataset
  
imports: from absl.testing import parameterized
  import numpy
  from tensorflow.python.data.experimental.ops import shuffle_ops
  from tensorflow.python.data.kernel_tests import checkpoint_test_base
  from tensorflow.python.data.kernel_tests import test_base
  from tensorflow.python.data.ops import dataset_ops
  from tensorflow.python.data.ops import options
  from tensorflow.python.framework import combinations
  from tensorflow.python.framework import dtypes
  from tensorflow.python.ops import array_ops
  from tensorflow.python.platform import test
label_desc: Use image node_id 1 for calling the IndexShuffleCheckpointTest obj's underlying member method code with example usage: obj._build_dataset(num_elements_per_file, num_files, num_epochs, seed, reshuffle_each_iteration, symbolic_checkpoint) and returns: dataset, dataset_ops