
    Pi                     j    d dl mZmZmZ d dlmZmZ d dlmZ ddl	m	Z	  G d dee                   Z
dS )	    )AnyDictOptional)BaseNodeT)_SingleThreadedMapper   )_populate_queuec                        e Zd ZdZddee         dedef fdZddee	e
ef                  f fd	Zd
 Zde	e
ef         fdZ xZS )
Prefetchera;  Prefetches data from the source node and stores it in a queue.

    Args:
        source (BaseNode[T]): The source node to prefetch data from.
        prefetch_factor (int): The number of items to prefetch ahead of time.
        snapshot_frequency (int): The frequency at which to snapshot the state of the source node. Default is
            1, which means that the state of the source node will be snapshotted after every item. If set
            to a higher value, the state of the source node will be snapshotted after every snapshot_frequency
            items.
    r	   sourceprefetch_factorsnapshot_frequencyc                     t                                                       || _        || _        || _        d | _        d S N)super__init__r   r   r   _it)selfr   r   r   	__class__s       l/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torchdata/nodes/prefetch.pyr   zPrefetcher.__init__   s;    ."47;    Ninitial_statec                     t                                          |           | j        | j                                         | `t	          | j        | j        t          | j        |          | _        d S )N)r   r   workerr   r   )	r   resetr   	_shutdownr   r   r   r
   r   )r   r   r   s     r   r   zPrefetcher.reset#   sk    m$$$8H   (; 0"#6'
 
 
r   c                 *    t          | j                  S r   )nextr   r   s    r   r   zPrefetcher.next0   s    DH~~r   returnc                 4    | j                                         S r   )r   	get_stater    s    r   r#   zPrefetcher.get_state3   s    x!!###r   )r	   r   )__name__
__module____qualname____doc__r   r   intr   r   r   strr   r   r   r#   __classcell__)r   s   @r   r   r      s        	 	< <x{ <S <VY < < < < < <
 
8DcN#; 
 
 
 
 
 
  $4S> $ $ $ $ $ $ $ $r   r   N)typingr   r   r   torchdata.nodesr   r   torchdata.nodes.mapr   r
   r    r   r   <module>r/      s    ' & & & & & & & & & ' ' ' ' ' ' ' ' 5 5 5 5 5 5 , , , , , ,$$ $$ $$ $$ $$! $$ $$ $$ $$ $$r   