o
    Zh                     @   s   d dl Z d dlZddlmZmZmZ ddlmZ ej	dk r$d dl
mZ nd dlmZ e eZdgZded	efd
dZded	efddZded	efddZded	efddZdddZdddZded	efddZdS )    N   )rendezvous_handler_registryRendezvousHandlerRendezvousParameters)create_handler)   
   )entry_pointsget_rendezvous_handlerparamsreturnc                 C      ddl m} || S )Nr   )static_tcp_rendezvous) r   create_rdzv_handler)r   r    r   \/var/www/auris/lib/python3.10/site-packages/torch/distributed/elastic/rendezvous/registry.py_create_static_handler      
r   c                 C   r   )Nr   )etcd_rendezvous)r   r   r   )r   r   r   r   r   _create_etcd_handler"   r   r   c                 C   $   ddl m} || \}}t||| S Nr   )create_backend)Zetcd_rendezvous_backendr   r   r   r   backendstorer   r   r   _create_etcd_v2_handler(      r   c                 C   r   r   )Zc10d_rendezvous_backendr   r   r   r   r   r   _create_c10d_handler0   r   r   c                   C   s4   t dt t dt t dt t dt d S )NZetcdzetcd-v2Zc10dZstatic)handler_registryregisterr   r   r   r   r   r   r   r   _register_default_handlers8   s   r"   c               	   C   s^   t dd} | D ]%}z| |j  }t|j|  W q ty,   tjd|jdd Y qw d S )Nztorchrun.handlers)groupz3Exception while registering out of tree plugin %s: T)exc_info)r	   nameloadr    r!   	Exceptionlogwarning)Zdiscovered_handler_generatorsZhandler_generatorZget_handlerr   r   r   _register_out_of_tree_handlers?   s   

r*   c                 C   s
   t | S )aL  
    Obtain a reference to a :py:class`RendezvousHandler`.

    Custom rendezvous handlers can be registered by

    ::

      from torch.distributed.elastic.rendezvous import rendezvous_handler_registry
      from torch.distributed.elastic.rendezvous.registry import get_rendezvous_handler


      def create_my_rdzv(params: RendezvousParameters):
          return MyCustomRdzv(params)


      rendezvous_handler_registry.register("my_rdzv_backend_name", create_my_rdzv)

      my_rdzv_handler = get_rendezvous_handler(
          "my_rdzv_backend_name", RendezvousParameters
      )
    )r    r   )r   r   r   r   r
   N   s   
)r   N)loggingsysapir   r    r   r   Zdynamic_rendezvousr   version_infoimportlib_metadatar	   importlib.metadata	getLogger__name__r(   __all__r   r   r   r   r"   r*   r
   r   r   r   r   <module>   s    



