
    [Th                         S SK r S SKJr  S SKJrJr  S SKJr  S/rSr	\S\
S\S	   4S
 j5       r\\S\S	   4S j5       5       rg)    N)	Generator)contextmanager	ExitStack)recordworker_mainTORCH_WORKER_SERVER_SOCKETsocket_pathreturn)NNNc              #   |   #    SSK Jn  U" U 5      n S v   UR                  5         g ! UR                  5         f = f7f)Nr   )_WorkerServer)torch._C._distributed_c10dr   shutdown)r	   r   servers      _/var/www/auris/envauris/lib/python3.13/site-packages/torch/distributed/elastic/control_plane.py_worker_serverr      s.     8;'Fs   <' <9<c               #      #    [        5        n [        R                  R                  [        5      nUb  U R                  [        U5      5        Sv   SSS5        g! , (       d  f       g= f7f)aK  
This is a context manager that wraps your main entry function. This combines
the existing ``errors.record`` logic as well as a new ``_WorkerServer`` that
exposes handlers via a unix socket specified by
``Torch_WORKER_SERVER_SOCKET``.

Example

::

 @worker_main()
 def main():
     pass


 if __name__ == "__main__":
     main()

N)r   osenvirongetr   enter_contextr   )stackr	   s     r   r   r      sF     , 
jjnn%?@"{ ;< 
s   A,AA	A,
A)%A,)r   collections.abcr   
contextlibr   r   0torch.distributed.elastic.multiprocessing.errorsr   __all__r   strr   r        r   <module>r      sv    	 % 0 C  :   	2B(C   Y/0   r   