
    Αi	                     P    S SK r S SKrS SKrS SKrS SKJr  SSKJr   " S S5      rg)    N)closing   )Devicec                   V    \ rS rSrS rS rSS jrS rSS jrS r	S r
\S	 5       rS
rg)Node   c                 z   [         R                  " 5       U l        U R                  5       U l        / U l        / U l        [        R                  " SS5      nUR                  S5      n[        US   5      U l        [        US   5      U l        [        R                  " U R                  U R                  5      U l        g )N
PORT_RANGEz35100:64000:r   r   )r   parse_devicedeviceget_host_ipip
free_ports_allocated_portsosgetenvsplitint_port_start	_port_endrandomrandint	_port_cur)self
port_ranges     f/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/launch/context/node.py__init__Node.__init__   s    ))+""$ "YY|];
%%c*
z!}-Z]+(8(8$..I    c                      [         R                  " 5       U l        [         R                  " [         R                  " U R                  5      5      U l        U R
                  $ !    g= f)Nz	127.0.0.1)socketgethostnamehostnamegethostbynamegetfqdnr   r   s    r   r   Node.get_host_ip&   sI    	"..0DM**6>>$--+HIDG77N	s   AA! !A%c                    [         R                  R                  S5      c?  [        U5       Vs/ s H  o0R	                  5       PM     nnU =R
                  U-  sl        U$ [        [         R                  R                  S5      5      n[        [        XR-   XR-   U-   S5      5      nU =R
                  U-  sl        U$ s  snf )NFLAGS_FIXED_PORTr   )r   environgetrangeget_free_portr   r   list)r   nrankir   
start_ports         r   get_free_portsNode.get_free_ports.   s    ::>>,-58=aA1,,.JAOOz)O  RZZ^^,>?@Jj'):Q)>BJ OOz)O Bs   B<c                     U R                   $ )N)r   r'   s    r   get_ports_occupiedNode.get_ports_occupied:   s    r    c           
         [        [        R                  " [        R                  [        R                  5      5       nUR	                  [        R
                  [        R                  [        R                  " SSS5      5         UR                  SU45        UR                  5       S   sS S S 5        $ !    S S S 5        g= f! , (       d  f       g = f)Niir   r    )r   r"   AF_INETSOCK_STREAM
setsockopt
SOL_SOCKET	SO_LINGERstructpackbindgetsockname)r   portss      r   _get_free_portNode._get_free_port=   s    V]]6>>63E3EFG1LL!!6#3#3V[[q!5LDz"}}q) HG HGGGs$   AC%B33B?5C?C
Cc                     U =R                   S-  sl         U R                   U R                  :  a  U R                  U l         g g )Nr   )r   r   r   r'   s    r   _update_port_curNode._update_port_curH   s2    !>>DNN*!--DN +r    c                     [        S5       HH  nU R                  U R                  5      nUS:  a  U R                  5         Us  $ U R                  5         MJ     U R                  $ )Nd   r   )r-   rH   r   rK   )r   _rets      r   r.   Node.get_free_portM   sT    sA%%dnn5CQw%%'
%%'  ~~r    c                    [        [        R                  " [        R                  [        R                  5      5       n[	        [        S5      (       a/  UR                  [        R                  [        R                  S5        UR                  U[        U5      45      nUS:X  a
   S S S 5        g S S S 5        g! , (       d  f       g = f)NSO_REUSEPORTr   r   TF)
r   r"   r=   r>   hasattrr?   r@   rS   
connect_exr   )r   r   rF   sockresults        r   is_server_readyNode.is_server_readyX   s    V]]6>>63E3EFG4 v~.. 1 163F3FJ__b#d)_5F{ HG  HGGs   A(B8.B88
C)r   r   r   r   r   r   r$   r   N)r   r   )r   )__name__
__module____qualname____firstlineno__r   r   r4   r7   rH   rK   r.   classmethodrX   __static_attributes__ r    r   r   r      s:    J
	.
	 
 
r    r   )	r   r   r"   rB   
contextlibr   r   r   r   r`   r    r   <module>rb      s%    
     K Kr    