
    Ǆg                     <    d dl Z d dlZd dlmZ dgZ G d de      Zy)    N)IterDataPipeIterableWrapperIterDataPipec                   $    e Zd ZdZddZd Zd Zy)r   a  
    Wraps an iterable object to create an IterDataPipe.

    Args:
        iterable: Iterable object to be wrapped into an IterDataPipe
        deepcopy: Option to deepcopy input iterable object for each
            iterator. The copy is made when the first element is read in ``iter()``.

    .. note::
        If ``deepcopy`` is explicitly set to ``False``, users should ensure
        that the data pipeline doesn't contain any in-place operations over
        the iterable instance to prevent data inconsistency across iterations.

    Example:
        >>> # xdoctest: +SKIP
        >>> from torchdata.datapipes.iter import IterableWrapper
        >>> dp = IterableWrapper(range(10))
        >>> list(dp)
        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    c                      || _         || _        y N)iterabledeepcopy)selfr   r	   s      m/home/mcse/projects/flask_80/flask-venv/lib/python3.12/site-packages/torch/utils/data/datapipes/iter/utils.py__init__z$IterableWrapperIterDataPipe.__init__!   s          c              #      K   | j                   }| j                  r 	 t        j                  | j                         }|E d {    y # t        $ r t	        j
                  d       Y +w xY w7 )w)NzlThe input iterable can not be deepcopied, please be aware of in-place modification would affect source data.)r   r	   copy	TypeErrorwarningswarn)r
   source_datas     r   __iter__z$IterableWrapperIterDataPipe.__iter__%   s`     mm==
"mmDMM:   Y
 	s3   A,A A, A*A,A'$A,&A''A,c                 ,    t        | j                        S r   )lenr   )r
   s    r   __len__z#IterableWrapperIterDataPipe.__len__5   s    4==!!r   N)T)__name__
__module____qualname____doc__r   r   r    r   r   r   r      s    *! "r   )r   r   #torch.utils.data.datapipes.datapiper   __all__r   r   r   r   <module>r      s$      < )
)+", +"r   