
    Pii              	           d dl mZmZmZmZ d dlZdZdZdZdZ	dZ
dd	ed
edeeef         fdZdeeef         fdZ G d d          Z G d d          Z G d d          ZdS )    )AnyDictOptionalTupleN	worker_idfetcher_statefetcher_endeddataset_statedataset_iter_state datakey_lineagereturnc                     i }t          | t                    rWt          |           dk    rD|                                 D ].\  }}t	          |||fz             }|                    |           /n| ||<   |S )Nr   )
isinstancedictlenitems_flattenupdate)r   r   	flat_datakeyvalueflats         /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torchdata/stateful_dataloader/incremental_state.pyr   r      s     I$ &#d))a--**,, 	# 	#JCE;##788DT""""	# "&	+    r   c                 l   i }|                                  D ][\  }}t          |          dk    r|c S |d         }t          |          dk    r|||<   =|dd          }||vri ||<   |||         |<   \|                                 D ],\  }}t          |t                    rt	          |          ||<   -|S )Nr      )r   r   r   r   
_unflatten)r   nested_datar   r   prefixsuffixkvs           r   r   r       s    Koo'' , ,
Us88q==LLLQs88q=="'KQRR$$"$K&+FF## !!## + +1a 	+']]KNr   c                       e Zd ZdS )
_TombstoneN)__name__
__module____qualname__r   r   r   r&   r&   8   s        Dr   r&   c                       e Zd Zdeeeef                  fdZdeeef         fdZdee	ef         ddfdZ
deeeef                  fd	ZdS )
_IncrementalStateinitial_statec                 .    t          |          | _        d S N)r   
flat_state)selfr,   s     r   __init__z_IncrementalState.__init__=   s    "=11r   	new_statec                 d   t          |          }i }t                      }| j        r&t          | j                                                  }|                    |                                          }|D ]}| j        	|| j        vr||         ||<   ||vrt                      ||<   4| j        |         ||         }}	 t          |t          j                  r1t          |t          j                  rt          j	        ||          rn||k    rn# t          $ r Y nw xY w|||<   || _        |S r.   )r   setr/   keysunionr&   r   torchTensorequal	Exception)r0   r2   new_flat_statedelta_flat_stateall_keysr   
prev_value	new_values           r   generate_deltaz _IncrementalState.generate_delta@   s^   !),,55? 	34?//1122H>>."5"5"7"788 	. 	.C&#T_*D*D(6s(; %.(((2 %$(OC$8.:M	Jj%,77 JyRWR^<_<_ {:y99 ! !9,,    %.S!!(s    A	D
D
D D flat_delta_stater   Nc                     |                                 D ]N\  }}| j        i | _        t          |t                    r| j                            |d            D|| j        |<   Od S r.   )r   r/   r   r&   pop)r0   rA   r   r   s       r   apply_deltaz_IncrementalState.apply_deltab   sv    +1133 	. 	.KC&"$&*-- .##C....'-$$	. 	.r   c                 *    t          | j                  S r.   )r   r/   )r0   s    r   	get_statez_IncrementalState.get_statem   s    $/***r   )r'   r(   r)   r   r   strr   r1   r@   r   rD   rF   r   r   r   r+   r+   <   s        2htCH~&> 2 2 2 2  S#X            D	.D,< 	. 	. 	. 	. 	.+8DcN3 + + + + + +r   r+   c                       e Zd Zdeeeef                  fdZdeeef         deeef         fdZdeeef         ddfdZ	deeef         fd	Z
dS )
_IncrementalWorkerStateinitial_worker_state_dictc                 l   d | _         d | _        d }d }|rw|t                   | _         |                    t          d           }|                    t
          d           }|-|t                   | _        |                    t          d           }t          |          | _	        t          |          | _
        d S r.   )
_worker_id_fetcher_ended
_WORKER_IDget_DATASET_STATE_FETCHER_STATE_FETCHER_ENDED_DATASET_ITER_STATEr+   _incr_dataset_state_incr_fetcher_iter_state)r0   rJ   r
   fetcher_iter_stater   s        r   r1   z _IncrementalWorkerState.__init__r   s    "!$ 	R7
CDO599.$OOM599.$OOM(&3N&C#%2%6%67JD%Q%Q"#4]#C#C (9:L(M(M%%%r   new_state_dictr   c                    t           |v sJ |t                    | _        t           | j        t          d i}|                    t          d           }|"| j                            |          |t          <   |                    t          d           }|h|t                   | _        d }|                    t          d           }|| j
                            |          }t          |t          | j        i|t          <   |S r.   )rN   rL   rQ   rO   rP   rT   r@   rR   rM   rS   rU   )r0   rW   incr_state_dictds_stater   delta_iter_state
iter_states          r   r@   z&_IncrementalWorkerState.generate_delta   s    ^++++(4%tM!%%nd;;.2.F.U.UV^._._ON+&**>4@@$"/"?D#&**+>EEJ%#'#@#O#OPZ#[#[  $%5 3/ON+ r   delta_state_dictNc                 l   |t                    | _        |                    t          d           }|| j                            |           |                    t          d           }|K|t                   | _        |                    t          d           }|| j
                            |           d S d S d S r.   )rN   rL   rO   rP   rT   rD   rQ   rR   rM   rS   rU   )r0   r]   rZ   r   r\   s        r   rD   z#_IncrementalWorkerState.apply_delta   s    *:6#''==$00:::(,,^TBB$"/"?D&**+>EEJ%-99*EEEEE	 %$ &%r   c                     | j         ,t          | j         t          | j                                        ind }t
          | j        t          | j                                        t          |iS r.   )
rM   rR   rS   rU   rF   rN   rL   rP   rT   rQ   )r0   r   s     r   rF   z!_IncrementalWorkerState.get_state   sk     ".  3#T%B%L%L%N%N 
  	 D4>>@@M
 	
r   )r'   r(   r)   r   r   rG   r   r1   r@   rD   rF   r   r   r   rI   rI   q   s        N(4S>2J N N N N"T#s(^ S#X    0FDcN Ft F F F F
4S> 
 
 
 
 
 
r   rI   )r   )typingr   r   r   r   r7   rN   rQ   rR   rP   rS   r   r   r&   r+   rI   r   r   r   <module>ra      s6   . - - - - - - - - - - - 
   *  3 U D4D    $ucz*    0	 	 	 	 	 	 	 	2+ 2+ 2+ 2+ 2+ 2+ 2+ 2+jD
 D
 D
 D
 D
 D
 D
 D
 D
 D
r   