U
    Mh=                     @   sp   d dl mZ d dlmZmZ d dlmZ d dlmZ ddgZ	eddd	Z
d
d ZedG dd dee
 ZdS )    )_check_unpickable_fn)CallableTypeVar)functional_datapipe)MapDataPipeMapperMapDataPipe
default_fnT_coT)	covariantc                 C   s   | S N )datar   r   Y/var/www/html/venv/lib/python3.8/site-packages/torch/utils/data/datapipes/map/callable.pyr      s    mapc                       s\   e Zd ZU dZeed< eed< efeedd fddZe	dd	d
Z
edddZ  ZS )r   a  
    Apply the input function over each item from the source DataPipe (functional name: ``map``).

    The function can be any regular Python function or partial object. Lambda
    function is not recommended as it is not supported by pickle.

    Args:
        datapipe: Source MapDataPipe
        fn: Function being applied to each item

    Example:
        >>> # xdoctest: +SKIP
        >>> from torchdata.datapipes.map import SequenceWrapper, Mapper
        >>> def add_one(x):
        ...     return x + 1
        >>> dp = SequenceWrapper(range(10))
        >>> map_dp_1 = dp.map(add_one)
        >>> list(map_dp_1)
        [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        >>> map_dp_2 = Mapper(dp, lambda x: x + 1)
        >>> list(map_dp_2)
        [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    datapipefnN)r   r   returnc                    s"   t    || _t| || _d S r   )super__init__r   r   r   )selfr   r   	__class__r   r   r   0   s    
zMapperMapDataPipe.__init__)r   c                 C   s
   t | jS r   )lenr   )r   r   r   r   __len__:   s    zMapperMapDataPipe.__len__c                 C   s   |  | j| S r   )r   r   )r   indexr   r   r   __getitem__=   s    zMapperMapDataPipe.__getitem__)__name__
__module____qualname____doc__r   __annotations__r   r   r   intr   r	   r   __classcell__r   r   r   r   r      s   

N)Z'torch.utils.data.datapipes.utils.commonr   typingr   r   Z%torch.utils.data.datapipes._decoratorr   Z#torch.utils.data.datapipes.datapiper   __all__r	   r   r   r   r   r   r   <module>   s   