
    IЦi                     x    S SK r S SKrS SKJr  S SKJrJr  S\S\4S jrS\R                  4S jr	 " S S	5      r
g)
    N)Template)AnyListenv_namereturnc                 n    [         R                  R                  U S5      nUc  SU  S3n[        U5      eU$ )z
Tries to retrieve environment variable. Raises ``ValueError``
if no environment variable found.

Args:
    env_name (str): Name of the env variable
NzEnvironment variable z expected, but not set)osenvironget
ValueError)r   valuemsgs      b/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/distributed/elastic/utils/api.pyget_env_variable_or_raiser      s;     JJNN8T*E}%hZ/EFoL    c                  X   [         R                  " SS [         R                  [         R                  S9n U  HF  nUu  p#n  n[         R                   " X#U5      n UR	                  S5        UR                  S5        Us  $    [        S5      e! [         a    UR                  5          Mr  f = f)N	localhost)hostportfamilytype)r   r   r   zFailed to create a socket)	socketgetaddrinfo	AF_UNSPECSOCK_STREAMbindlistenOSErrorcloseRuntimeError)addrsaddrr   r   proto_ss          r   get_socket_with_portr&      s    tF,<,<6CUCUE $(!eQMM&.	FF#$HHQKH  2
33  	GGI	s   #BB)(B)c                   H    \ rS rSrSrSr\S\\   S\	S\\	   4S j5       r
Srg	)
macros.   zK
Defines simple macros for caffe2.distributed.launch cmd args substitution
z${local_rank}args
local_rankr   c                     / nU  HT  n[        U[        5      (       a+  [        U5      R                  US9nUR	                  U5        MC  UR	                  U5        MV     U$ )N)r+   )
isinstancestrr   safe_substituteappend)r*   r+   args_subargsubs        r   
substitutemacros.substitute5   sT    C#s##sm33z3J$$  r    N)__name__
__module____qualname____firstlineno____doc__r+   staticmethodr   r   r.   r4   __static_attributes__r6   r   r   r(   r(   .   s=     !Jc  S	  r   r(   )r	   r   stringr   typingr   r   r.   r   r&   r(   r6   r   r   <module>r@      s@    
     4fmm 4  r   