
    sg                     H    d Z  G d d      Z G d de      Z G d de      Zy)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                       e Zd Zd Zd Zy)_BaseDatasetFetcherc                 <    || _         || _        || _        || _        y N)datasetauto_collation
collate_fn	drop_last)selfr   r   r   r	   s        P/var/www/html/venv/lib/python3.12/site-packages/torch/utils/data/_utils/fetch.py__init__z_BaseDatasetFetcher.__init__	   s    ,$"    c                     t         r   )NotImplementedError)r
   possibly_batched_indexs     r   fetchz_BaseDatasetFetcher.fetch   s    !!r   N)__name__
__module____qualname__r   r    r   r   r   r      s    #"r   r   c                   $     e Zd Z fdZd Z xZS )_IterableDatasetFetcherc                 X    t         |   ||||       t        |      | _        d| _        y )NF)superr   iterdataset_iterended)r
   r   r   r   r	   	__class__s        r   r   z _IterableDatasetFetcher.__init__   s)    .*iH M
r   c                    | j                   rt        | j                  reg }|D ]'  }	 |j                  t	        | j
                               ) t        |      dk(  s#| j                  r2t        |      t        |      k  rt        t	        | j
                        }| j                  |      S # t        $ r d| _         Y  pw xY w)NT    )	r   StopIterationr   appendnextr   lenr	   r   )r
   r   data_s       r   r   z_IterableDatasetFetcher.fetch   s    ::D+ KKT%6%6 78 4yA~3t9s3I/J#J##))*Dt$$ % !%DJs   $B**B>=B>)r   r   r   r   r   __classcell__)r   s   @r   r   r      s    
%r   r   c                       e Zd Zd Zy)_MapDatasetFetcherc                 .   | j                   ret        | j                  d      r2| j                  j                  r| j                  j                  |      }n,|D cg c]  }| j                  |    }}n| j                  |   }| j	                  |      S c c}w )N__getitems__)r   hasattrr   r*   r   )r
   r   r$   idxs       r   r   z_MapDatasetFetcher.fetch/   sz    t||^49R9R||001GH5KLcS)LL<< 67Dt$$ Ms   BN)r   r   r   r   r   r   r   r(   r(   .   s    %r   r(   N)__doc__r   r   r(   r   r   r   <module>r.      s.   " "%1 %6	%, 	%r   