U
    ‰dª  ã                   @   sŠ   d dl mZmZ d dl mZ d dlmZ eedœdd„Zeedœdd„Zeedœd	d
„Z	eedœdd„Z
ddœdd„Zeedœdd„ZdS )é   )ÚRendezvousHandlerÚRendezvousParameters)Úrendezvous_handler_registry)Úcreate_handler)ÚparamsÚreturnc                 C   s   ddl m} | | ¡S )Nr   )Ústatic_tcp_rendezvous)Ú r   Úcreate_rdzv_handler)r   r   © r   úQ/tmp/pip-unpacked-wheel-ua33x9lu/torch/distributed/elastic/rendezvous/registry.pyÚ_create_static_handler   s    r   c                 C   s   ddl m} | | ¡S )Nr   )Úetcd_rendezvous)r	   r   r
   )r   r   r   r   r   Ú_create_etcd_handler   s    r   c                 C   s$   ddl m} || ƒ\}}t||| ƒS ©Nr   )Úcreate_backend)Zetcd_rendezvous_backendr   r   ©r   r   ÚbackendÚstorer   r   r   Ú_create_etcd_v2_handler   s    r   c                 C   s$   ddl m} || ƒ\}}t||| ƒS r   )Zc10d_rendezvous_backendr   r   r   r   r   r   Ú_create_c10d_handler    s    r   N)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_handlers(   s    r   c                 C   s
   t  | ¡S )aL  
    This method is used to obtain a reference to a :py:class`RendezvousHandler`.
    Custom rendezvous handlers can be registered by

    ::

      from torch.distributed.elastid.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   Úget_rendezvous_handler/   s    r   )Úapir   r   r   r   Zdynamic_rendezvousr   r   r   r   r   r   r   r   r   r   r   Ú<module>   s   