
    Pi,                     \   d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
 ddlZddlmZ ddlmZmZmZ ddlmZmZmZmZmZ dd	lmZmZmZmZmZmZ dd
lm Z   e	d          Z!dede
e"df         fdZ#de!de"de!fdZ$ ed           G d d                      Z%d Z&dee'ef         fdZ(dS )z"Contains definitions of the methods used by the _BaseDataLoaderIter workers.

These **needs** to be in global scope since Py2 doesn't support serializing
static methods.
    N)	dataclass)AnyDictOptionalTypeVarUnion)ExceptionWrapper)	HAS_NUMPYMP_STATUS_CHECK_INTERVALsignal_handling)_generate_state_IterableDatasetStopIteration_ResumeIterationManagerWatchdog
WorkerInfo   )_DATASET_ITER_STATE_DATASET_STATE_FETCHER_ENDED_FETCHER_STATE_IncrementalWorkerState
_WORKER_ID)StatefulTobjreturnc                 ^    t          | t                    r|                                 }nd }|S N)
isinstancer   
state_dict)r   	obj_states     x/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torchdata/stateful_dataloader/worker.pytry_to_serializer#   .   s0    #x   NN$$			    r    c                 ^    t          | t                    r|                     |           | S | S r   )r   r   load_state_dict)r   r    s     r"   try_to_deserializer'   7   s2    #x   J'''
Jr$   T)frozenc                   b    e Zd ZU dZeed<   eeee	e
f         ef                  ed<   dZeed<   dS )_AckStartupz:Dummy class used to ack startup and return state at time 0	worker_idinitial_stateFis_deltaN)__name__
__module____qualname____doc__int__annotations__r   r   r   strr   r	   r-   bool r$   r"   r*   r*   >   sU         DDNNNE$sCx.2B"BCDDDDHdr$   r*   c                 
   	 t          j                     t          j        d           ||
z   }t	          j        |           t          j        |           t          r.t          ||
          }dd l	}|j                            |           ddl
m} ddlm} t          j                    }t          ||          r%|J |                    |            |||          }t!          |
|||          t          j        j        j        j        _        ddl
m} d }d }d }d}	 |	 |	|
           |;|                    | ||||          }t1          |
| ||          }t3          |          }nt3          |          }|t4                   t7          ||t4                             }|                    | ||||          }|t8                   ^| |j        k    rS|t8                   t<                   4t7          |j        |t8                   t<                             }|||_        d|_         d}|!                    t1          |
| ||                    }d}~n## tD          $ r tG          d	|
 
          }Y nw xY wd}tI                      }|%                                r`	 |&                    tN                    }n# tP          j)        $ r Y Cw xY wt          |tT                    r,|+                    |tU          |
|p||          f           ~~t          |tX                    rd}t          ||          r/|j        J |                    |j                    |||          }	 |                    | ||||          }t1          |
| ||          }t3          |          }n## tD          $ r tG          d	|
 
          }Y nw xY w|+                    |tU          |
|p|          f           ~h||-                                s|sJ n|-                                s|r|\  }\  } }!d }"||}#d }n	 	 |.                    |           }#n-# t^          $ r  | |j        k    s ta          |
          }#d}Y nw xY w|!s|r(t1          |
| ||          }$|!                    |$          }"~$n## tD          $ r tG          d	|
 
          }#Y nw xY w|+                    ||#|
|"ff           ~#~~ ~~"|%                                `n# tb          $ r Y nw xY w|-                                r*|2                                 |3                                 d S d S )Nr   r   )IterDataPipe)apply_random_seed)idnum_workersseeddataset_DatasetKindFTzin DataLoader worker process )where)timeout)r+   r,   r-   )r+   r,   )4r   _set_worker_signal_handlerstorchset_num_threadsrandomr<   manual_seedr
   r   numpytorch.utils.datar8   torch.utils.data.graph_settingsr9   	Generatorr   r   utilsdata_utilsworker_worker_infor?   create_fetcher_make_state_dictr   r   r'   r   Iterabler   dataset_iterendedgenerate_delta	Exceptionr	   r   is_alivegetr   queueEmptyr*   putr   is_setfetchStopIterationr   KeyboardInterruptcancel_join_threadclose)%dataset_kindr=   index_queue
data_queue
done_eventauto_collation
collate_fn	drop_last	base_seedinit_fnr+   r;   persistent_workersshared_seedworker_stater<   np_seednpr8   r9   
shared_rngr?   init_exceptionfetcherr,   r-   incremental_worker_staterS   iteration_endwatchdogridxindexsnapshotdelta_state_dictrL   r    s%                                        r"   _worker_loopr{   G   s   (o 	3555a   9$D$ 	$%i;;GINN7###111111EEEEEE_&&
g|,, 	=***"";///''<<G6@kg7
 7
 7
&3 	211111 %	a"	"""#&55lG^]girss 0L'SZ [ [+B=+Q+Q(( ,C<+P+P(/;0,~:VWWG&55lG^]girss/;#|'<<<'78KLX+= ' 4 ,^ <=P Q, ,L  ,77C 4 ). % 8 G G$YgwOO! !    	a 	a 	a-4_T]4_4_```NNN	a "$$!! N	6OO,DOEE;   ![)) *#&/~?^Q^iq     "A/00  %g|44 E6---**16222//DDGi*99,Q_akmvwwG$4YgW^$_$_M/F}/U/U,,  i i i%5<g\e<g<g%h%h%hNNNi ;R`Rqdq#r#r#rsttt!!((**;m;;;""$$   %&"C"%#)%!%_	-&}}U33( - - -+|/DDD!<YGG )--   '= '%5iwX_%`%`
+C+R+RS]+^+^(&  _ _ _ ,2]R[2]2]^^^DDD	_ NNC$	3C!DEFFFc5!%5] !! N	6^      %%''' s   DS8 D/I S8 I/,S8 .I//(S8 J4 3S8 4KS8 KBS8 !:N S8 N<9S8 ;N<<A2S8 0Q R  'Q0-R  /Q00/R  S8  S =S8 ?S  7S8 8
TTc                    ddl m} ||j        k    rLt          t	          |j                  t          |j        i}d }|j        |j        urt	          |j                  }nd }t	          |          }t          | t          |t          |iS )Nr   r>   )rH   r?   rR   r   r#   rS   r   rT   r=   r   r   r   )r+   rb   rr   r=   r?   fetcher_statedataset_states          r"   rQ   rQ     s    ------|,,,!1'2F!G!GGM
 w66,W_==M(11 	I r$   ))r1   rY   rE   dataclassesr   typingr   r   r   r   r   rC   torch._utilsr	   torch.utils.data._utilsr
   r   r   torch.utils.data._utils.workerr   r   r   r   r   incremental_stater   r   r   r   r   r   statefulr   r   dictr#   r'   r*   r{   r4   rQ   r6   r$   r"   <module>r      s'      ! ! ! ! ! ! 6 6 6 6 6 6 6 6 6 6 6 6 6 6  ) ) ) ) ) ) X X X X X X X X X X                                   GCLL# %d
"3    A 4 A     $       F F FR4S>      r$   