
    ti                     r    d dl Z d dlZd dlmZmZ d dlmZmZ d dlm	Z	  ed      Z
dgZ G d de	e
         Zy)    N)MappingSequence)AnyTypeVar)MapDataPipe_TSequenceWrapperMapDataPipec                   |    e Zd ZU dZee   eeef   z  ed<   	 d
dee   eeef   z  de	ddfdZ
dedefdZdef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
    sequencedeepcopyreturnNc                     |r	 t        j                  |      | _        y || _        y # t        $ r! t	        j
                  d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   )
stacklevel)copyr   r   	TypeErrorwarningswarn)selfr   r   s      j/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/torch/utils/data/datapipes/map/utils.py__init__z#SequenceWrapperMapDataPipe.__init__)   sT     ) $h 7 %DM  )X 
 !))s   ' 'AAindexc                      | j                   |   S N)r   )r   r   s     r   __getitem__z&SequenceWrapperMapDataPipe.__getitem__9   s    }}U##    c                 ,    t        | j                        S r   )lenr   )r   s    r   __len__z"SequenceWrapperMapDataPipe.__len__<   s    4==!!r   )T)__name__
__module____qualname____doc__r   r   r   r   __annotations__boolr   intr   r    r   r   r	   r	      sv    0 rlWS"W--- KO% wsBw'77%CG%	% $ $ $" "r   )r   r   collections.abcr   r   typingr   r   #torch.utils.data.datapipes.datapiper   r   __all__r	   r'   r   r   <module>r,      s7      -  ; T]'
(/"R /"r   