
    Αia                    |    S SK Jr  S SKrS SKrS SKJr  SSKJr  \(       a  SSKJ	r	   " S S5      r
 " S	 S
\
5      rg)    )annotationsN)TYPE_CHECKING   )Status)	Containerc                      \ rS rSrS rSrg)PodSpec   c                    SR                  S [        S5       5       5      U l        / U l        / U l        SU l        S U l        SU l        SU l        SU l	        g )N c              3  N   #    U  H  n[         R                  " S 5      v   M     g7f)abcdefghijklmnopqrstuvwxyzN)randomchoice).0_s     a/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/launch/job/pod.py	<genexpr>#PodSpec.__init__.<locals>.<genexpr>   s       
AIAFMM677s   #%   r   )
joinrange_name_init_containers_containers_rank_init_timeout_restart	_replicas
_exit_codeselfs    r   __init__PodSpec.__init__   s[    WW 
AFq
 


 24,.
 
!    )r   r!   r   r   r   r   r    r   N)__name__
__module____qualname____firstlineno__r$   __static_attributes__ r&   r   r	   r	      s    r&   r	   c                    ^  \ rS rSrU 4S jrS rS r\S 5       r\S 5       r	\	R                  S 5       r	\S 5       r\R                  S	 5       r\S
 5       r\S 5       rS r\S 5       rS r\S 5       rS rSS jrSS jr\S 5       rS rS rS rS rSS jrSS jr\R:                  /\R<                  /SS4S jrSr U =r!$ ) Pod/   c                "   > [         TU ]  5         g N)superr$   )r#   	__class__s    r   r$   Pod.__init__0   s    r&   c                T    SU R                    SU R                   SU R                   3$ )NzPod: z, replicas z	, status )namereplicasstatusr"   s    r   __str__Pod.__str__3   s)    DII;k$--	$++O	
r&   c                    / nU R                    H4  nUR                  [        R                  :X  d  M#  UR	                  U5        M6     U$ r1   )r   r8   r   FAILEDappend)r#   cscs      r   failed_containerPod.failed_container8   s9    !!Axx6==(		! " 	r&   c                    U R                   $ r1   )r   r"   s    r   r6   Pod.name?       zzr&   c                    U R                   $ r1   )r    r"   s    r   r7   Pod.replicasC   s    ~~r&   c                &    [        US5      U l        g Nr   )maxr    r#   rs     r   r7   rF   G   s    Qr&   c                    U R                   $ r1   r   r"   s    r   rankPod.rankK   rD   r&   c                    Xl         g r1   rM   rJ   s     r   rN   rO   O   s    
r&   c                    U R                   $ r1   )r   r"   s    r   restartPod.restartS   s    }}r&   c                    U R                   $ r1   )r   r"   s    r   
containersPod.containersW   s    r&   c                n    [        U R                  5      Ul        U R                  R                  U5        g r1   )lenr   rN   r=   r#   r?   s     r   add_containerPod.add_container[   s(    T%%&"r&   c                    U R                   $ r1   )r   r"   s    r   init_containersPod.init_containers_   s    $$$r&   c                n    [        U R                  5      Ul        U R                  R                  U5        g r1   )rX   r   rN   r=   rY   s     r   add_init_containerPod.add_init_containerc   s(    T**+$$Q'r&   c                f    U R                    H!  nUR                  S:w  d  M  UR                  s  $    gNr   )r   	exit_coderY   s     r   rd   Pod.exit_codeg   s-    !!A{{a{{" " r&   c                    U R                    H.  nUR                  5         UR                  U R                  5        M0     U R                   H  nUR                  5         M     U =R
                  S-  sl        g rH   )r   startwaitr   r   r   )r#   ir?   s      r   deploy
Pod.deployn   sX    &&AGGIFF4%%& ' !!AGGI " 	r&   c                >   U R                    H>  n[        U[        5      (       a  Uc  UR                  U5        M.  UR	                  5         M@     [        U[        5      (       a:  U R                  U5      (       d#  U R                    H  nUR	                  SS9  M     ggg )NT)forceF)r   
isinstanceintsend_signal	terminater   )r#   siginttimeoutr?   s       r   stopPod.stopx   s    !!A&#&&7?f%	 " gs##99W%%))AKKdK+ * $r&   c                Z    U R                    H  nUR                  U5      (       a  M    g   gNFT)r   rh   )r#   rs   r?   s      r   r   Pod.join   s'    !!A66'?? " r&   c                    U R                  5       (       a  [        R                  $ U R                  5       (       a  [        R                  $ U R                  5       (       a  [        R                  $ [        R                  $ r1   )	is_failedr   r<   is_completed	COMPLETED
is_runningRUNNINGREADYr"   s    r   r8   
Pod.status   sU    >>== ###??>>!||r&   c                     / U l         / U l        g r1   )r   r   r"   s    r   reset	Pod.reset   s     "r&   c                j    U R                    H#  nUR                  [        R                  :X  d  M#    g   g)NTF)r   r8   r   r<   rY   s     r   rz   Pod.is_failed   s*    !!Axx6==( " r&   c                j    U R                    H#  nUR                  [        R                  :w  d  M#    g   grw   )r   r8   r   r|   rY   s     r   r{   Pod.is_completed   s,    !!Axx6+++ " r&   c                j    U R                    H#  nUR                  [        R                  :w  d  M#    g   grw   )r   r8   r   r~   rY   s     r   r}   Pod.is_running   s*    !!Axx6>>) " r&   c                    Ucn  [        U R                  5      S:  a  U R                  S   R                  5         [        U R                  5      S:  a  U R                  S   R                  5         g g U R                  U   R                  5         g rc   )rX   r   logsr   r#   idxs     r   r   Pod.logs   sy    ;4##$q(  #((*4(()A-%%a(--/ . S!&&(r&   c                    Uc  U R                   S   R                  5         g U R                   U   R                  5         g rc   )r   tailr   s     r   r   Pod.tail   s5    ;Q$$&S!&&(r&   r   r   c                   [         R                   " 5       U-   nUS:  d  [         R                   " 5       U:  a  U R                  U R                  -    H!  nUR                  U;   d  M  UR                  s  $    U R                  U R                  -    Vs/ s H  ofR                  PM     nn[	        [        U5      5      S:X  a  US   U;   a  US   $ [         R                  " U5        US:  a  M  [         R                   " 5       U:  a  M  ggs  snf )zV
watch return if any container status in any_list
or all container status in all_list
r   r   N)timer   r   r8   rX   setsleep)r#   all_listany_listintervalrs   endr?   ss           r   watch	Pod.watch   s     iikG#kTYY[3.**T-=-==88x'88O > $(#8#84;K;K#KL#Ka#KAL3q6{aAaDH$4tJJx  kTYY[3.
 Ms   D	)r   r   r   r    )   Nr1   )"r'   r(   r)   r*   r$   r9   r@   propertyr6   r7   setterrN   rR   rU   rZ   r]   r`   rd   rj   rt   r   r8   r   rz   r{   r}   r   r   r   r|   r<   r   r+   __classcell__)r3   s   @r   r.   r.   /   s@   

     __# #   
[[       # % %(   
 
)) ""#--! !r&   r.   )
__future__r   r   r   typingr   r8   r   	containerr   r	   r.   r,   r&   r   <module>r      s4    #     $ (e!' e!r&   