U
    <ºcƒ  ã                   @   s8   d Z G dd„ deƒZG dd„ deƒZG dd„ deƒZdS )zÈ"Contains definitions of the methods used by the _BaseDataLoaderIter to fetch
data from an iterable-style or map-style dataset. This logic is shared in both
single- and multi-processing data loading.
c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_BaseDatasetFetcherc                 C   s   || _ || _|| _|| _d S ©N)ÚdatasetÚauto_collationÚ
collate_fnÚ	drop_last©Úselfr   r   r   r   © r	   úA/tmp/pip-unpacked-wheel-gikjz4vx/torch/utils/data/_utils/fetch.pyÚ__init__   s    z_BaseDatasetFetcher.__init__c                 C   s
   t ƒ ‚d S r   )ÚNotImplementedError)r   Úpossibly_batched_indexr	   r	   r
   Úfetch   s    z_BaseDatasetFetcher.fetchN)Ú__name__Ú
__module__Ú__qualname__r   r   r	   r	   r	   r
   r      s   r   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )Ú_IterableDatasetFetcherc                    s*   t t| ƒ ||||¡ t|ƒ| _d| _d S )NF)Úsuperr   r   ÚiterÚdataset_iterÚendedr   ©Ú	__class__r	   r
   r      s    
   ÿ
z _IterableDatasetFetcher.__init__c              	   C   s   | j r
t‚| jr|g }|D ]:}z| t| jƒ¡ W q tk
rP   d| _ Y  qTY qX qt|ƒdksv| jr†t|ƒt|ƒk r†t‚n
t| jƒ}|  |¡S )NTé    )	r   ÚStopIterationr   ÚappendÚnextr   Úlenr   r   )r   r   ÚdataÚ_r	   r	   r
   r      s$    ÿÿ
z_IterableDatasetFetcher.fetch©r   r   r   r   r   Ú__classcell__r	   r	   r   r
   r      s   r   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )Ú_MapDatasetFetcherc                    s   t t| ƒ ||||¡ d S r   )r   r"   r   r   r   r	   r
   r   0   s    
   ÿz_MapDatasetFetcher.__init__c                    sP   ˆ j r<tˆ jdƒr(ˆ jjr(ˆ j |¡}qF‡ fdd„|D ƒ}n
ˆ j| }ˆ  |¡S )NÚ__getitems__c                    s   g | ]}ˆ j | ‘qS r	   )r   )Ú.0Úidx©r   r	   r
   Ú
<listcomp>:   s     z,_MapDatasetFetcher.fetch.<locals>.<listcomp>)r   Úhasattrr   r#   r   )r   r   r   r	   r&   r
   r   5   s    
z_MapDatasetFetcher.fetchr    r	   r	   r   r
   r"   /   s   r"   N)Ú__doc__Úobjectr   r   r"   r	   r	   r	   r
   Ú<module>   s   