class_docstr: Creates mini-batches of data (functional name: ``batch``).
  
  An outer dimension will be added as ``batch_size`` if ``drop_last`` is set to ``True``, or ``length % batch_size`` for the
  last batch if ``drop_last`` is set to ``False``.
  
  Args:
      datapipe: Iterable DataPipe being batched
      batch_size: The size of each batch
      drop_last: Option to drop the last batch if it's not full
      wrapper_class: wrapper to apply onto each batch (type ``List``) before yielding,
          defaults to ``DataChunk``
  
  Example:
      >>> # xdoctest: +SKIP
      >>> from torchdata.datapipes.iter import IterableWrapper
      >>> dp = IterableWrapper(range(10))
      >>> dp = dp.batch(batch_size=3, drop_last=True)
      >>> list(dp)
      [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
class_docstr_tok: ["Creates","mini-batches","of","data","(","functional","name",":","``","batch","``",")",".","An","outer","dimension","will","be","added","as","``","batch_size","``","if","``","drop_last","``","is","set","to","``","True","``",",","or","``","length","%","batch_size","``","for","the","last","batch","if","``","drop_last","``","is","set","to","``","False","``",".","Args",":","datapipe",":","Iterable","DataPipe","being","batched","batch_size",":","The","size","of","each","batch","drop_last",":","Option","to","drop","the","last","batch","if","it","'s","not","full","wrapper_class",":","wrapper","to","apply","onto","each","batch","(","type","``","List","``",")","before","yielding",",","defaults","to","``","DataChunk","``","Example",":",">",">",">","#","xdoctest",":","+SKIP",">",">",">","from","torchdata.datapipes.iter","import","IterableWrapper",">",">",">","dp","=","IterableWrapper","(","range","(","10",")",")",">",">",">","dp","=","dp.batch","(","batch_size=3",",","drop_last=True",")",">",">",">","list","(","dp",")","[","[","0",",","1",",","2","]",",","[","3",",","4",",","5","]",",","[","6",",","7",",","8","]","]"]
code: def __len__(self) -> int:
      if isinstance(self.datapipe, Sized):
          if self.drop_last:
              return len(self.datapipe) // self.batch_size
          else:
              return (
                  len(self.datapipe) + self.batch_size - 1
              ) // self.batch_size
      else:
          raise TypeError(
              f"{type(self).__name__} instance doesn't have valid length"
          )
  
imports: import warnings
  from collections import defaultdict
  from typing import Any, Callable, DefaultDict, Iterator, List, Optional, Sized, TypeVar
  import torch.utils.data.datapipes.iter.sharding
  from torch.utils.data.datapipes._decorator import functional_datapipe
  from torch.utils.data.datapipes.datapipe import DataChunk, IterDataPipe
  from torch.utils.data.datapipes.utils.common import _check_unpickable_fn
label_desc: Use image node_id 3 for calling the BatcherIterDataPipe obj's underlying member method code with example usage: obj.__len__() and returns: unknown, unknown