
    קg                         d dl Z d dlmZmZ d dlmZ d dlmZ dgZdZ	ede
ded	         fd
            Zeeded	         fd                        ZdS )    N)contextmanager	ExitStack)	Generator)recordworker_mainTORCH_WORKER_SERVER_SOCKETsocket_pathreturn)NNNc              #      K   ddl m}  ||           }	 d V  |                                 d S # |                                 w xY w)Nr   )_WorkerServer)torch._C._distributed_c10dr   shutdown)r	   r   servers      c/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/distributed/elastic/control_plane.py_worker_serverr      sa      888888];''Fs	   / Ac               #      K   t                      5 } t          j                            t                    }|"|                     t          |                     dV  ddd           dS # 1 swxY w Y   dS )aw  
    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      s      * 
 jnn%?@@"{ ; ;<<<                 s   AA++A/2A/)r   
contextlibr   r   typingr   0torch.distributed.elastic.multiprocessing.errorsr   __all__r   strr   r        r   <module>r      s    				 0 0 0 0 0 0 0 0       C C C C C C  :   	2B(C     Y/0       r   