
    sg'                     <    d dl Z d dlZd dlmZ dgZ G d de      Zy)    N)MapDataPipeSequenceWrapperMapDataPipec                   $    e Zd ZdZddZd Zd Zy)r   a  
    Wraps a sequence object into a MapDataPipe.

    Args:
        sequence: Sequence object to be wrapped into an MapDataPipe
        deepcopy: Option to deepcopy input sequence object

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

    Example:
        >>> # xdoctest: +SKIP
        >>> from torchdata.datapipes.map import SequenceWrapper
        >>> dp = SequenceWrapper(range(10))
        >>> list(dp)
        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        >>> dp = SequenceWrapper({'a': 100, 'b': 200, 'c': 300, 'd': 400})
        >>> dp['a']
        100
    c                     |r	 t        j                  |      | _        y || _        y # t        $ r t	        j
                  d       || _        Y y w xY w)NzkThe input sequence can not be deepcopied, please be aware of in-place modification would affect source data)copydeepcopysequence	TypeErrorwarningswarn)selfr	   r   s      W/var/www/html/venv/lib/python3.12/site-packages/torch/utils/data/datapipes/map/utils.py__init__z#SequenceWrapperMapDataPipe.__init__$   sO    ) $h 7 %DM  )X !))s   ' %AAc                      | j                   |   S N)r	   )r   indexs     r   __getitem__z&SequenceWrapperMapDataPipe.__getitem__1   s    }}U##    c                 ,    t        | j                        S r   )lenr	   )r   s    r   __len__z"SequenceWrapperMapDataPipe.__len__4   s    4==!!r   N)T)__name__
__module____qualname____doc__r   r   r    r   r   r   r      s    0%$"r   )r   r   #torch.utils.data.datapipes.datapiper   __all__r   r   r   r   <module>r      s$      ; (
(*" *"r   