
    Pi3                         d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl	m
Z
 d dlmZ e G d d                      Z G d d	e          Z G d
 de          ZdS )    N)	dataclass)AnyOptionalProtocol)QUEUE_TIMEOUT)ExceptionWrapperc                   0    e Zd ZU dZeed<   d ZdefdZdS )MonotonicIndexr   initialc                     | j         | _        d S N)r   _idxselfs    r/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torchdata/nodes/snapshot_store.py__post_init__zMonotonicIndex.__post_init__   s    L			    returnc                 4    | j         }| xj         dz  c_         |S )N   )r   )r   idxs     r   getzMonotonicIndex.get   s    i		Q		
r   N)__name__
__module____qualname__r   int__annotations__r   r    r   r   r
   r
      sP         GS! ! !S      r   r
   c                   h    e Zd ZdZdedefdZdedee         fdZdefdZ	de
j        d	edefd
ZdS )SnapshotStorezHProtocol for passing snapshot state around between threads and processessnapshotversionc                     d S r   r   r   r!   r"   s      r   appendzSnapshotStore.append       r   r   c                     d S r   r   )r   r"   s     r   pop_versionzSnapshotStore.pop_version   r&   r   c                     d S r   r   r   r!   s     r   append_initial_snapshotz%SnapshotStore.append_initial_snapshot"   r&   r   threadtimeoutc                     d S r   r   )r   r,   r-   s      r   get_initial_snapshotz"SnapshotStore.get_initial_snapshot%   r&   r   N)r   r   r   __doc__r   r   r%   r   r(   r+   	threadingThreadfloatr/   r   r   r   r    r       s        RRs S    3 8C=        9+; e PS      r   r    c                   ~    e Zd ZdZdZddZdededdfdZdede	e         fd	Z
deddfd
Zddej        dedefdZdS )QueueSnapshotStorez5A snapshot store that uses a queue to store snapshotsr   Nc                 t    t          j                    | _        t          j                    | _        d| _        d S )Ni)queueQueue_qr1   Lock_lock_max_versionr   s    r   __init__zQueueSnapshotStore.__init__.   s,    ${}}^%%
!&r   r!   r"   c                     | j         5  || j        k    rt          d|d| j                  || _        | j                            ||f           d d d            d S # 1 swxY w Y   d S )Nzversion=z0 is not strictly greater than self._max_version=)r<   r=   
ValueErrorr:   putr$   s      r   r%   zQueueSnapshotStore.append3   s    Z 	- 	-$+++ !`G!`!`DL]!`!`aaa 'DGKK(+,,,		- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   A	AA"%A"c                 6   d\  }}| j         5  | j        j        r`|| j        j        d         d         k    rD| j                                        \  }}| j        j        r|| j        j        d         d         k    Dd d d            n# 1 swxY w Y   ||k    r|S d S )N)NNr   )r<   r:   r8   
get_nowait)r   r"   vervals       r   r(   zQueueSnapshotStore.pop_version:   s    SZ 	0 	0'- 0Gtw}Q/?/B$B$B7--//S '- 0Gtw}Q/?/B$B$B	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 '>>J4s   A-BB
B
c                 <    |                      || j                   d S r   )r%   SNAPSHOT_INIT_VERSIONr*   s     r   r+   z*QueueSnapshotStore.append_initial_snapshotE   s    Hd899999r         N@r,   r-   c           
      4   d }d }t          j                     }|t          j                     |z
  |k     rk	 | j                            t                    \  }}n# t          j        $ r Y nw xY w|                                sn|t          j                     |z
  |k     k|)t          |t                    r|	                                 ||| j
        k    rAt          dt          j                     |z
   d|                                d|d|          |S )N)r-   z%Failed to get initial snapshot after z seconds! thread.is_alive()=z, snapshot=z, ver=)timer:   r   r   r8   Emptyis_alive
isinstancer   reraiserG   RuntimeError)r   r,   r-   r!   rD   ack_t0s         r   r/   z'QueueSnapshotStore.get_initial_snapshotH   sV   49;;#7'#A#A $M B BXX;   ??$$   49;;#7'#A#A Jx9I$J$Jsd&@@@ B	f8L  B  BX^XgXgXiXi  B  Bnv  B  B{~  B  B   s   #A A+*A+)r   N)rH   )r   r   r   r0   rG   r>   r   r   r%   r   r(   r+   r1   r2   r3   r/   r   r   r   r5   r5   )   s        ??' ' ' '
-s -S -T - - - -	3 	8C= 	 	 	 	: : : : : : 9+; e WZ      r   r5   )r8   r1   rJ   dataclassesr   typingr   r   r   torchdata.nodes.constantsr   !torchdata.nodes.exception_wrapperr   r
   r    r5   r   r   r   <module>rU      s	         ! ! ! ! ! ! * * * * * * * * * * 3 3 3 3 3 3 > > > > > > 	 	 	 	 	 	 	 	    H    6 6 6 6 6 6 6 6 6 6r   