
    Vh                         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 j                  e      ZdgZded	efd
Zded	efdZded	efdZded	efdZddZddZded	efdZy)    N   )rendezvous_handler_registryRendezvousHandlerRendezvousParameters)create_handler)   
   )entry_pointsget_rendezvous_handlerparamsreturnc                 0    ddl m} |j                  |       S )Nr   )static_tcp_rendezvous) r   create_rdzv_handler)r   r   s     ]/home/dcms/DCMS/lib/python3.12/site-packages/torch/distributed/elastic/rendezvous/registry.py_create_static_handlerr      s    ' 44V<<    c                 0    ddl m} |j                  |       S )Nr   )etcd_rendezvous)r   r   r   )r   r   s     r   _create_etcd_handlerr   "   s    !..v66r   c                 >    ddl m}  ||       \  }}t        |||       S Nr   )create_backend)etcd_rendezvous_backendr   r   r   r   backendstores       r   _create_etcd_v2_handlerr   (   "    7#F+NGU%&11r   c                 >    ddl m}  ||       \  }}t        |||       S r   )c10d_rendezvous_backendr   r   r   s       r   _create_c10d_handlerr#   0   r    r   c                      t        j                  dt               t        j                  dt               t        j                  dt               t        j                  dt
               y )Netcdzetcd-v2c10dstatic)handler_registryregisterr   r   r#   r    r   r   _register_default_handlersr+   8   sF    f&:;i)@Af&:;h(>?r   c                     t        d      } | D ]E  }	 | |j                     j                         }t        j                  |j                   |              G y # t
        $ r% t        j                  d|j                  d       Y vw xY w)Nztorchrun.handlers)groupz3Exception while registering out of tree plugin %s: T)exc_info)r
   nameloadr(   r)   	Exceptionlogwarning)discovered_handler_generatorshandler_generatorget_handlers      r   _register_out_of_tree_handlersr7   ?   s    $07J$K!: 		78I8N8NOTTVK%%&7&<&<kmL	  	KKE!&&  	s   AA+BBc                 ,    t        j                  |       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   s    r   r   r   N   s    , **622r   )r   N)loggingsysapir   r(   r   r   dynamic_rendezvousr   version_infoimportlib_metadatar
   importlib.metadata	getLogger__name__r2   __all__r   r   r   r#   r+   r7   r   r*   r   r   <module>rC      s     
 
 / g//g!#
$=#7 =<M =7!5 7:K 72$8 2=N 22!5 2:K 2@3#7 3<M 3r   