
    Αi                    $    S SK Jr   " S S5      rg)    )annotationsc                      \ rS rSrSrSS jrSS jr S       SS jjrSS jr S         SS jjr	SS	 jr
SSS
 jjrSrg)AOATraceback   z^
When error occurs, print the chain of "original aoa_statement -> ... -> current expression".
c                f    / U l         / U l        SU l        SU l        SU l        0 U l        0 U l        g )N )recordslast_error_chainlast_error_messagelast_error_stagelast_error_type
parent_mapchild_macro_map)selfs    p/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/flex_checkpoint/aoa/traceback.py__init__AOATraceback.__init__   s8    #%+-')%'$&13/1    c                N    U H  nU R                   R                  US5        M!     g)zDRegister the original aoa_statements as the root nodes of the chain.N)r   
setdefault)r   expressionsexprs      r   register_rootsAOATraceback.register_roots    s     DOO&&tT2  r   Nc                r    U=(       d    SnU H&  nXQ:X  a  M
  XR                   U'   X@R                  U'   M(     g)z`Record the children expressions obtained by the parent expression, and mark the macro name used.ExpandedN)r   r   )r   parentchildren
macro_namemacrochilds         r   record_childrenAOATraceback.record_children%   s:     (jE%+OOE"*/  '	 r   c                    / n[        5       nUnUbL  XC;  aG  UR                  U5        UR                  U5        U R                  R	                  U5      nUb  XC;  a  MG  UR                  5         U$ )zRBuild the chain from the root to expr by tracing back from the current expression.)setappendaddr   getreverse)r   r   chainvisitedcurs        r   build_chainAOATraceback.build_chain0   se    %o#"4LLKK//%%c*C o#"4 	r   c                    X0l         Xl        X l        U=(       d    SU l        U R                  R                  SUUU R                  US.5        g)z'Record the error chain and information.r   error)typestagemessage
error_typer*   N)r
   r   r   r   r	   r&   )r   error_messager2   r*   r4   s        r   	add_errorAOATraceback.add_error<   sO     !&"/ %)/R("22	
r   c                *   / nSnSU S3nS[        U5      -  nU R                  (       Ga  UR                  U5        SnUR                  S5        U R                  S   R                  SS5      nUR                  S	U 35        [	        U R                  S
S  S
S9 Hu  u  pxXW-  n	UR                  SS5      n
U R
                  R                  XR                  =(       d    S5      nUR                  U	 SU 35        UR                  U	 S	U
 35        Mw     U R                  (       a  U R                  =(       d    SnU R                  (       a  SU R                   S3OSn[        U R                  5      nX^-  n	U R                  R                  SS5      nUR                  U	 S35        UR                  U	 SU U SU 35        UR                  U5        O3UR                  U5        UR                  S5        UR                  U5        SR                  U5      $ )Nz AOA Traceback (related chain) z=====z    z| Origin AOA Statementr   
 z|->    )startr   z| Errorz []r   z| Errorz|-> (z) z(No trace records))lenr
   r&   replace	enumerater   r(   r   r   r   join)r   linesheader_textheaderfooterindent_unitorigin_exprlevelr   indentsingle_line_exprr    	err_title	stage_str	err_levelsingle_line_msgs                   r   format_tracebackAOATraceback.format_tracebackR   s   7}D)s6{"   LL  KLL12//2::4EKLL4}-.()>)>qr)B!L$,#'<<c#: ,,00//=: xr%12xt,<+=>?  M && 00;G	 ,, ../q1 
   5 56	$0"&"9"9"A"A$"Lxw/0heI;ykO;LM LL LL LL-.LL yyr   c                l    U R                  5       nU(       a  UR                  U5        g [        U5        g N)rQ   r0   print)r   loggertexts      r   rU   AOATraceback.print   s&    $$&LL$Kr   )r   r
   r   r   r   r   r	   )returnNone)r   	list[str]rY   rZ   rT   )r   strr   r[   r   z
str | NonerY   rZ   )r   r\   rY   r[   )r   )
r5   r\   r2   r\   r*   r[   r4   r\   rY   rZ   )rY   r\   )__name__
__module____qualname____firstlineno____doc__r   r   r"   r-   r6   rQ   rU   __static_attributes__ r   r   r   r      s    23 JN	0	0%.	0<F	0		0
" 

 
 	

 
 

,, \ r   r   N)
__future__r   r   rc   r   r   <module>re      s    #s sr   