
    Αi~                     @    S SK r S SKrS SKJr  SSKJr   " S S5      rg)    N)ProcessContext   )Statusc                      \ rS rSrSr/ S0 S4S jr\S 5       r\S 5       r\R                  S 5       r\S	 5       r
\
R                  S
 5       r
\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r0 4S jrS rS rS rSS jrSS jr\S 5       r\S 5       rS rS S jrS!S jrSrg)"	Container   zW
TODO(kuizhiqing) A container can be run by process/thread or just a callable function
Fc                     Xl         X l        S U l        S U l        X0l        S U l        SU l        SU l        S U l        SU l	        U(       a  SU l
        g SU l
        g )N   
   Fwa)_entrypoint_rank_out_err_env_proc_retry_grace_period_log_handler_shelllog_mode)self
entrypointrankenvoverwrite_logs        g/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/launch/job/container.py__init__Container.__init__   sT    %
			
 ,#    c                     U R                   $ N)r   r   s    r   r   Container.env,       yyr"   c                     U R                   $ r$   r   r%   s    r   r   Container.entrypoint0   s    r"   c                     Xl         g r$   r)   )r   entrys     r   r   r*   4   s     r"   c                     U R                   $ r$   r   r%   s    r   r   Container.rank8   s    zzr"   c                     Xl         g r$   r.   )r   rs     r   r   r/   <   s    
r"   c                     U R                   $ r$   r   r%   s    r   outfileContainer.outfile@   r'   r"   c                     Xl         g r$   r3   )r   outs     r   r4   r5   D       	r"   c                     U R                   $ r$   r   r%   s    r   errfileContainer.errfileH   r'   r"   c                     Xl         g r$   r:   )r   errs     r   r;   r<   L   r8   r"   c                     U R                   $ r$   r   r%   s    r   shellContainer.shellP   s    {{r"   c                     Xl         g r$   r@   )r   rA   s     r   rA   rB   T   s    r"   c                 t   UR                  5        VVs0 s H  u  p4[        U[        5      (       d  M  X4_M      nnnU R                  R	                  U5        UR                  5        VVs0 s H  u  p4[        U[        5      (       d  M  X4_M      nnnU R                  R	                  U5        g s  snnf s  snnf r$   )items
isinstancestrr   update)r   r   kwargskvs        r   
update_envContainer.update_envX   s     #		Bz!S/AtqtB		#)<<>H>41Z35G$!$>H		 	 C Is   B.B.*B4	B4c                     U R                   R                  5        H=  u  p[        U[        5      (       a  [        U[        5      (       a  M1   SU SU S35       e   g )Nzenv :z must be str)r   rE   rF   rG   )r   rJ   rK   s      r   _validate_envContainer._validate_env_   sQ    IIOO%DAa%%*Q*<*< qc1#\*< &r"   c                     U(       d  g  [         R                  R                  U5      n[         R                  R                  U5      (       d  [         R                  " USS9  [        XR                  5      $ !    g = f)NT)exist_ok)ospathdirnameisdirmakedirsopenr   )r   pthds      r   _get_fdContainer._get_fde   sY    	$A77==##A-]]++	s   A,A7 7A;c                    U R                   (       a   U R                   R                  5       (       a  gU R                  5         U R                  U R                  5      =(       d    [
        R                  U l        U R                  U R                  :X  a  U R                  U l	        OHU R                  (       a7  U R                  U R                  5      =(       d    [
        R                  U l	        U R                  (       af  U R                  (       dU  [        U R                  5      U l        U R                  R                  SS5        U R                  R                  5       U l        [!        U R"                  U R$                  U R                  U R                  U R&                  S9U l         U R                   R)                  5         g )NTr      )r   r7   r>   rA   )r   aliverP   r\   r   sysstdout_stdoutr   _stderrstderrr   rY   seektell_log_start_offsetr   r   r   r   startr%   s    r   ri   Container.startq   s   ::$****,,||DII.<#**99		!<<DLYY<<		2@cjjDL99T.. $TYYD""1a(%)%6%6%;%;%=D"#		++

 	

r"   c                     U R                   (       a!  U R                   R                  5         S U l         U R                  (       a;  U R                  R                  5       (       a  U R                  R	                  U5      $ g g r$   )r   closer   r`   	terminate)r   forces     r   rm   Container.terminate   sZ    ##% $D::$****,,::''.. -:r"   Nc                 \     U R                   R                  U5        g! [         a     gf = f)NTF)r   wait	Exception)r   timeouts     r   rq   Container.wait   s,    	JJOOG$ 		s    
++c                 \    U R                   (       a  U R                   R                  5       $ S$ )Nr	   )r   	exit_coder%   s    r   rv   Container.exit_code   s     )-tzz##%;;r"   c                    U R                   (       d  [        R                  $ U R                   R                  5       (       a  [        R                  $ U R                   R                  5       S:X  a  [        R                  $ [        R                  $ )Nr   )r   r   UNINITr`   RUNNINGrv   	COMPLETEDFAILEDr%   s    r   statusContainer.status   s[    zz== ::>>!ZZ!!#q(###== r"   c                    [         R                  R                  SS5      R                  5       nUS:X  d  US:X  aP  SU R                   SU R
                   SU R                   SU R                   S	U R                   S
U R                   3$ SU R                   SU R
                   SU R                   SU R                   S	U R                   3
$ )NFLAGS_print_launcher_envfalsetrue1zContainer rank z status z cmd z code z log z 
env )
rT   environgetlowerr   r}   r   rv   r;   r   )r   
need_prints     r   __str__Container.__str__   s   ZZ^^$>HNNP
:#4$TZZLU4K[K[J\\bcgcqcqbrrwx|  yE  yE  xF  FM  NR  NW  NW  MX  Y  Y HT[[MtGWGWFXX^_c_m_m^nnstx  uA  uA  tB  C  	Cr"   c                 z   U R                   (       d  g Uc  [        R                  n US:w  d  US:w  a<  US:X  a  X R                  :  a  U R                  nU R                   R	                  X#5        [        U5       H7  nU R                   R                  5       nU(       d    gUR                  U5        M9     g!    g = f)Nr   r   FT)r   ra   rb   rh   rf   rangereadlinewrite)r   fnoffsetwhencelimit_lines          r   logsContainer.logs   s      :B	{fkQ;6,B,B#B!33F!!&&v65\((113 	 "
 	s   A8B6  B6 6B:c                     U R                   (       d  g  U R                   R                  SS5        U R                   R                  5       nWU:  a  U R                  X!-
  SS9  g U R                  SSS9  g !    N.= f)Nr   r_   )r   r   )r   rf   rg   r   )r   lengtheds      r   tailContainer.tail   sr      	""1a(""'')B ;IIR[I3IIQqI)	s   6A4 4A8)r   r   r   r   r   rh   r   r   r   r   r   rd   rc   r   )Fr$   )Nr   r   i  )i  )__name__
__module____qualname____firstlineno____doc__r    propertyr   r   setterr   r4   r;   rA   rL   rP   r\   ri   rm   rq   rv   r}   r   r   r   __static_attributes__ r"   r   r   r      sd    #%22U 6        ! !   
[[    ^^    ^^    \\    !
6/ < < ! !C,*r"   r   )rT   ra   /paddle.distributed.launch.utils.process_contextr   r}   r   r   r   r"   r   <module>r      s    
 
 J |* |*r"   