class_docstr: Given IO streams and their label names, yield bytes with label name as tuple.
  
  (functional name: ``read_from_stream``).
  
  Args:
      datapipe: Iterable DataPipe provides label/URL and byte stream
      chunk: Number of bytes to be read from stream per iteration.
          If ``None``, all bytes will be read until the EOF.
  
  Example:
      >>> # xdoctest: +SKIP
      >>> from torchdata.datapipes.iter import IterableWrapper, StreamReader
      >>> from io import StringIO
      >>> dp = IterableWrapper([("alphabet", StringIO("abcde"))])
      >>> list(StreamReader(dp, chunk=1))
      [('alphabet', 'a'), ('alphabet', 'b'), ('alphabet', 'c'), ('alphabet', 'd'), ('alphabet', 'e')]
code: def __iter__(self):
      for furl, stream in self.datapipe:
          while True:
              d = stream.read(self.chunk)
              if not d:
                  stream.close()
                  break
              yield (furl, d)
  
imports: from typing import Tuple
  from torch.utils.data.datapipes._decorator import functional_datapipe
  from torch.utils.data.datapipes.datapipe import IterDataPipe
label_desc: Use image node_id 2 for calling the StreamReaderIterDataPipe obj's underlying member method code with example usage: obj.__iter__() without return types