
    ti              	       v    d dl mZ d dlmZ d dlmZ d dlmZ dgZ ed       G d dee	e
ef                   Zy)	    )Iterator)IOBase)functional_datapipe)IterDataPipeStreamReaderIterDataPiperead_from_streamc                   Z    e Zd ZdZ	 ddeeeef      dedz  ddfdZ	de
eeef      fdZy)	r   a  
    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')]
    Ndatapipechunkreturnc                      || _         || _        y N)r
   r   )selfr
   r   s      r/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/torch/utils/data/datapipes/iter/streamreader.py__init__z!StreamReaderIterDataPipe.__init__    s     !
    c              #      K   | j                   D ]:  \  }}	 |j                  | j                        }|s|j                          5||f 5 y wr   )r
   readr   close)r   furlstreamds       r   __iter__z!StreamReaderIterDataPipe.__iter__&   sO      MM 	 LD&KK

+LLNQi 	 s   AAr   )__name__
__module____qualname____doc__r   tuplestrr   intr   r   bytesr    r   r   r   r      sW    ( OS$U3;%78ADt	 (5e#45  r   N)collections.abcr   ior   %torch.utils.data.datapipes._decoratorr   #torch.utils.data.datapipes.datapiper   __all__r   r   r!   r   r"   r   r   <module>r(      sJ    $  E < &
& '(! |E#u*,=> !  )! r   