code: def test_enqueuer(
      shuffle: bool, skip: int, rank_size: Tuple[int, int], workers: int
  ) -> None:
      epoch_len = 100
      rank, size = rank_size
  
      # Ensure that the enqueuer reliably returns what the sampler is returning.
      sampler = keras._Sampler(
          epoch_len, rank, size, shuffle, 777, skip
      )
  
      with keras._build_enqueuer(
          sequence=IdentitySequence(100),
          workers=workers,
          use_multiprocessing=False,
          max_queue_size=10,
          shard_rank=rank,
          num_shards=size,
          repeat=False,
          shuffle=shuffle,
          shuffle_seed=777,
          prior_batches_trained=skip,
      ) as enqueuer:
          assert list(enqueuer.data()) == list(
              sampler.yield_epoch()
          ), "first epoch was wrong"
          assert list(enqueuer.data()) == list(
              sampler.yield_epoch()
          ), "second epoch was wrong"
          assert list(enqueuer.data()) == list(
              sampler.yield_epoch()
          ), "third epoch was wrong"
  
imports: from typing import Tuple
  import numpy
  import pytest
  from tensorflow.keras.utils import Sequence
  import determined
  from determined import keras
  from determined.common import check
  from tests.experiment import tf_utils
label_desc: Use image node_id 10 for calling a global function with example usage: test_enqueuer(shuffle, skip, rank_size, workers) without return types