
    ti                     T    d Z ddlm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.
    )NoReturnc                        e Zd ZddZdefdZy)_BaseDatasetFetcherreturnNc                 <    || _         || _        || _        || _        y N)datasetauto_collation
collate_fn	drop_last)selfr	   r
   r   r   s        c/home/ubuntu/crypto_trading_bot/.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   r   N)__name__
__module____qualname__r   r   r    r   r   r   r   
   s    #"x "r   r   c                   &     e Zd Zd 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)NTr   )	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   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.fetch1   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+   0   s    %r   r+   N)__doc__typingr   r   r   r+   r   r   r   <module>r2      s3   
 " "%1 %6	%, 	%r   