class_docstr: Dataloader which wraps another dataloader and only returns a limited
  number of items.
  
  This is useful for Iterable datasets where the length of the datasets isn't known.
  Such datasets can wrap their returned iterators with this class. See
  :func:`SyntheticImageStreamingDataset.iterator` for an example.
  
  Attribute accesses are passed to the wrapped dataloader.
code: def __next__(self) -> Any:
      if self._count >= self.limit:
          raise StopIteration
      self._count += 1
      try:
          return next(self._iter)
      except StopIteration:
          if self.wrap_around:
              # create a new iterator to load data from the beginning
              logging.info(
                  f"Wrapping around after {self._count - 1} calls. Limit: {self.limit}"
              )
              try:
                  self._iter = iter(self.dataloader)
                  return next(self._iter)
              except StopIteration:
                  raise RuntimeError(
                      "Looks like the dataset is empty, "
                      "have you configured it properly?"
                  )
          else:
              raise RuntimeError(
                  f"StopIteration raised before {self.limit} items were returned"
              )
  
file_path: ClassyVision/classy_vision/dataset/dataloader_limit_wrapper.py
imports: import logging
  from typing import Any, Iterable, Iterator
  from .dataloader_wrapper import DataloaderWrapper
label_desc: Use image node_id 3 for calling the DataloaderLimitWrapper obj's underlying member method code with example usage: obj.__next__() and returns: next, next