
    QVji                         d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	  ed          Z
dgZ G d de	e
                   ZdS )    N)IterableIteratorSized)TypeVar)IterDataPipe_TIterableWrapperIterDataPipec                   X    e Zd ZdZd
dee         deddfdZdee         fdZ	de
fd	ZdS )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]
    TiterabledeepcopyreturnNc                 "    || _         || _        d S )N)r   r   )selfr   r   s      _/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/utils/data/datapipes/iter/utils.py__init__z$IterableWrapperIterDataPipe.__init__$   s          c              #      K   | j         }| j        r?	 t          j        | j                   }n$# t          $ r t	          j        d           Y nw xY w|E d {V  d S )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      m= 	
"mDM::
    Y    
 s   , AAc                     t          | j        t                    rt          | j                  S t	          t          |           j         d          )Nz# instance doesn't have valid length)
isinstancer   r   lenr   type__name__)r   s    r   __len__z#IterableWrapperIterDataPipe.__len__8   sF    dmU++ 	&t}%%%4::.SSSTTTr   )T)r   
__module____qualname____doc__r   r   boolr   r   r   intr    r   r   r	   r	      s         *! !" ! ! ! ! ! !(2,     U U U U U U Ur   )r   r   collections.abcr   r   r   typingr   #torch.utils.data.datapipes.datapiper   r   __all__r	   r%   r   r   <module>r*      s      5 5 5 5 5 5 5 5 5 5       < < < < < < WT]](
)-U -U -U -U -U,r"2 -U -U -U -U -Ur   