class_docstr: GTSRB Dataset
  
  homepage="https://benchmark.ini.rub.de"
class_docstr_tok: ["GTSRB","Dataset","homepage=","''","https",":","\/\/benchmark.ini.rub.de","''"]
code: def _datapipe(
      self, resource_dps: List[IterDataPipe]
  ) -> IterDataPipe[Dict[str, Any]]:
      if self._split == "train":
          images_dp, ann_dp = Demultiplexer(
              resource_dps[0],
              2,
              self._classify_train_archive,
              drop_none=True,
              buffer_size=INFINITE_BUFFER_SIZE,
          )
      else:
          images_dp, ann_dp = resource_dps
          images_dp = Filter(
              images_dp, path_comparator("suffix", ".ppm")
          )
  
      # The order of the image files in the .zip archives perfectly match the order of the entries in the
      # (possibly concatenated) .csv files. So we're able to use Zipper here instead of a IterKeyZipper.
      ann_dp = CSVDictParser(ann_dp, delimiter=";")
      dp = Zipper(images_dp, ann_dp)
  
      dp = hint_shuffling(dp)
      dp = hint_sharding(dp)
  
      return Mapper(dp, self._prepare_sample)
  
file_path: vision/torchvision/prototype/datasets/_builtin/gtsrb.py
imports: import pathlib
  from typing import Any, Dict, List, Optional, Tuple, Union
  from torchdata.datapipes.iter import CSVDictParser, Demultiplexer, Filter, IterDataPipe, Mapper, Zipper
  from torchvision.prototype.datasets.utils import Dataset, EncodedImage, HttpResource, OnlineResource
  from torchvision.prototype.datasets.utils._internal import hint_sharding, hint_shuffling, INFINITE_BUFFER_SIZE, path_comparator
  from torchvision.prototype.tv_tensors import Label
  from torchvision.tv_tensors import BoundingBoxes
  from .._api import register_dataset, register_info
label_desc: Use image node_id 5 for calling the GTSRB obj's underlying member method code with example usage: obj._datapipe(resource_dps) and returns: Mapper