U
    Mh                     @   s6   d Z G dd dZG dd deZG dd deZdS )zContains 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	   O/var/www/html/venv/lib/python3.8/site-packages/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|| _d| _d S )NF)superr   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rt|t|k rt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dd ZdS )_MapDatasetFetcherc                    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>4   s     z,_MapDatasetFetcher.fetch.<locals>.<listcomp>)r   hasattrr   r"   r   )r   r   r   r	   r%   r
   r   /   s    
z_MapDatasetFetcher.fetchN)r   r   r   r   r	   r	   r	   r
   r!   .   s   r!   N)__doc__r   r   r!   r	   r	   r	   r
   <module>   s   