
    ϑi7                    R   S SK Jr  S SKrS SKrS SKr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KJr  S SKJr  S SKJrJrJrJr  S SKJr  S SKrS SKrS S	KJrJrJr  S S
KJrJ r   SSK!J"r"J#r#J$r$  SSK%J&r&J'r'J(r(  \(       a  S SK)Jr  S SK*J+r+  \" S5      r,\" S5      r-\" S5      r.\" S5      r/\0\1\2\3\4" S5      \54r6 " S S\45      r7 " S S5      r8 " S S5      r9\9" 5       q:\S 5       r;S r< " S S\7S9r= " S S \7S9r>S! r?S" r@S# rAS$ rB\S% 5       rCS& rDS' rES( rFS) rGS* rHS+ rIS, rJS- rKS. rL          SIS/ jrMS0 rNS1 rOS2 rP " S3 S45      rQS5 rRS6 rSS7 rTSJS8 jrUSJS9 jrVS: rW " S; S<\7S9rXS= rYS> rZ " S? S@5      r[ " SA SB\7S9r\SC r]SD r^SKSE jr_      SLSF jr`SMSG jraSNSH jrbg)O    )annotationsN)OrderedDict)contextmanager)is_dataclass)	lru_cache)TYPE_CHECKINGAnyCallableTypeVar)WeakValueDictionary)TransformOptionsdataclass_as_dictdataclass_from_dict)flattenmap_structure   )ENV_SOT_LOG_LEVELENV_SOT_SPECIALIZED_DIM_NUMBERSENV_STRICT_MODE)break_graph_functionspaddle_api_listpaddle_api_module_prefix)r
   )NestedStructureTT1T2T3c                  <   ^  \ rS rSr% 0 rS\S'   SU 4S jjrSrU =r$ )	Singleton@   zdict[Any, Any]
_instancesc                z   > X R                   ;  a  [        TU ]  " U0 UD6U R                   U '   U R                   U    $ N)r!   super__call__)clsargskwargs	__class__s      Z/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/jit/sot/utils/utils.pyr%   Singleton.__call__C   s9    nn$"''"2D"CF"CCNN3~~c""     )r'   r	   r(   r	   )	__name__
__module____qualname____firstlineno__r!   __annotations__r%   __static_attributes____classcell__)r)   s   @r*   r   r   @   s    !#J## #r,   r   c                  *    \ rS rSrS rS rSS jrSrg)NameGeneratorI   c                    SU l         Xl        g Nr   counterprefix)selfr<   s     r*   __init__NameGenerator.__init__J   s    r,   c                t    U R                   [        U R                  5      -   nU =R                  S-  sl        U$ Nr   )r<   strr;   r=   names     r*   nextNameGenerator.nextN   s,    {{S..r,   c                8    UR                  U R                  5      $ r#   )
startswithr<   rC   s     r*   
match_nameNameGenerator.match_nameS   s    t{{++r,   r:   N)rD   rB   returnbool)r.   r/   r0   r1   r>   rE   rI   r3   r-   r,   r*   r6   r6   I   s    
,r,   r6   c                  8    \ rS rSrS rSS jrS	S jrS
S jrSrg)SymbolRegistryW   c                j    [        SS9U l        [        5       U l        [	        5       U l        0 U l        g )N___t_)r<   )r6   symbol_generatorr   tmp_names_recordsetdeclared_symbolssymbol_tabler=   s    r*   r>   SymbolRegistry.__init__X   s+     -W = +*-%r,   c                6    U R                   R                  5       $ r#   )rR   rE   rW   s    r*   next_symbolSymbolRegistry.next_symbol^   s    $$))++r,   c                ~    XR                   ;   a  U R                   U   $ U R                  5       nX R                   U'   U$ r#   )rV   rZ   )r=   exprsymbols      r*   request_symbolSymbolRegistry.request_symbola   s@    $$$$$T**!!#"($r,   c                    U R                   U   nX0R                  ;   a  U$ U R                  R                  U5        SU SU" 5        S3$ )N(z := (z)))rV   rU   add)r=   r]   gen_expr_fnr^   s       r*   gen_exprSymbolRegistry.gen_exprh   sN    ""4(***M!!&)6(%b11r,   )rU   rR   rV   rS   NrK   rB   )r]   rB   rK   rB   )r]   rB   )	r.   r/   r0   r1   r>   rZ   r_   re   r3   r-   r,   r*   rN   rN   W   s    ,2r,   rN   c               #  8   #    [         n [        5       q S v   U q g 7fr#   )_symbol_registryrN   )original_registrys    r*   switch_symbol_registryrk   s   s      )%'	(s   c                     [         $ r#   )ri   r-   r,   r*   current_symbol_registryrm   |   s    r,   c                  $    \ rS rSrSS jrS rSrg)ResumeFnNameFactory   c                $    [        S5      U l        g )Nresume_)r6   genrW   s    r*   r>   ResumeFnNameFactory.__init__   s     +r,   c                :    U R                   R                  5       nU$ r#   )rs   rE   rC   s     r*   rE   ResumeFnNameFactory.next   s    xx}}r,   )rs   N)rK   None)r.   r/   r0   r1   r>   rE   r3   r-   r,   r*   ro   ro      s    ,r,   ro   )	metaclassc                  &    \ rS rSrS rS rS rSrg)SIRToCodeMap   c                    0 U l         g r#   _maprW   s    r*   r>   SIRToCodeMap.__init__   s	    	r,   c                4    X R                   UR                  '   g r#   )r~   rD   )r=   sircodes      r*   registerSIRToCodeMap.register   s    "		#((r,   c                L    U R                   R                  UR                  5      $ r#   )r~   getrD   )r=   r   s     r*   r   SIRToCodeMap.get   s    yy}}SXX&&r,   r}   N)r.   r/   r0   r1   r>   r   r   r3   r-   r,   r*   rz   rz      s    #'r,   rz   c                R    [         R                  " 5       nX::  a  [        USSS.6  g g N T)endflush)r   r   print)levelr'   	cur_levels      r*   logr      s'    !%%'It4( r,   c                H    [         R                  " 5       nX::  a  U" 5         g g r#   r   r   )r   fnr   s      r*   log_dor      s     !%%'I
 r,   c                j    [         R                  " 5       nX::  a  [        UR                  " U6 SSS9  g g r   )r   r   r   format)r   rB   r'   r   s       r*   
log_formatr      s0    !%%'Icjj$Rt4 r,   c                2    U [         R                  " 5       :*  $ r#   r   )r   s    r*   log_enabledr      s    %))+++r,   c                    [        U SS9  g )NT)r   )r   )msgs    r*   log_oncer      s    	#Tr,   c                   ^  U 4S jnU$ )Nc                 (  > [         R                  R                  R                  S 5      n T" U 0 UD6n [         R                  R                  R                  U5        U$ !   e = f! [         R                  R                  R                  U5        f = fr#   )paddle	frameworkcoreset_eval_frame)r'   r(   old_cbretvalfuncs       r*   no_eval_frame_func)no_eval_frame.<locals>.no_eval_frame_func   sy    !!&&55d;	94*6*F !!008		!!008s   A   A##A& &+Br-   )r   r   s   ` r*   no_eval_framer      s     r,   c                    U S;   $ )N)z
<listcomp>z
<dictcomp>z	<setcomp>z	<genexpr>r-   )rD   s    r*   is_comprehensive_namer      s    IIIr,   c                    [        U [        R                  R                  5      (       a  g[	        U S5      (       a  g[
        R                  " U 5      (       a  g[        U 5      =(       d	    U [        ;   $ )NF__self__)	
isinstancer   nnLayerhasattrinspectisclassin_paddle_moduler   r   s    r*   is_paddle_apir      sX    $		((tZ    D!<T_%<<r,   c                    [        U 5      (       a  g[        R                  " U [        R                  R                  5      (       + $ NT)r   r   check_fn_need_transformToStaticModeSOTr   s    r*   +already_unified_in_dynamic_and_static_graphr      s:    R77
))--  r,   c                .    [         R                  " U 5      $ r#   )r   "check_fn_need_capture_control_flowr   s    r*   need_capture_control_flowr      s    >>rBBr,   c                    [         R                  /nX;   a  g[        U [        R                  5      (       a  g[
        R                  " [        5       H"  u  p#X0L d  M  [        U[        5      (       d  M"    g   gNTF)	weakrefrefr   typesBuiltinFunctionTyper   
getmembersbuiltinstype)r   special_builtin_fnsmember_namemembers       r*   is_builtin_fnr      s^    ";;-	 "e//00&11(;<Jvt44  < r,   c                F   [        U S5      (       a  U R                  nUc  g[        SSUS5        [        U S5      (       a  [        SSU R                  S5        [        SS5        [         H'  nUR                  U5      (       d  M  [        SS	5          g
   [        SS5        g)Nr/   F   z&find paddle function with __module__: 
r.   z&                     with __name__  : z&                     with results   : z True
Tz False
)r   r/   r   r.   r   rH   )r   
module_strr<   s      r*   r   r      s    t\""__
A7TJ4$$;T]]D 	A78.F$$V,,Ay! / :r,   c                    U [         ;   $ r#   )r   r   s    r*   is_break_graph_apir      s    (((r,   c                    [         R                  " U 5      (       d  g[        U [        5      (       d  g1 Skn[	        [        U 5      5      nUR                  U5      $ )NF>   _make_asdict_fields_replace)r   r   
issubclasstuplerT   dirissubset)r&   namedtuple_attrs	cls_attrss      r*   is_namedtuple_classr      sH    ??3c5!!BCHI$$Y//r,   c                0   ^ ^^ UU U4S jn[        U/UQ76 $ )Nc                 ,   > T" U 6 (       a  T" U 6 $ T" U 6 $ r#   r-   )r'   false_fnpredtrue_fns    r*   replacemap_if.<locals>.replace  s    ;D>!r,   )r   )r   r   r   
structuresr   s   ```  r*   map_ifr     s    
 .:..r,   c              #     #    [        U 5       HH  n[        U[        5      (       a,  UR                  v   UR                  v   UR
                  v   MD  Uv   MJ     g 7fr#   )r   r   slicestartstopstep)	structureitems     r*   flatten_extendr     sB     	"dE""**))O))OJ #s   AAc                :   ^^^ U4S jnUUU4S jn[        XUTS9$ )z8support extended structures like slice and SliceVariablec                   > [        U [        5      (       a  g[        U 5      (       a  [        U [        5      (       d  gT" U 5      $ r   )r   r   r   r   )xr   s    r*   wrapped_pred#map_if_extend.<locals>.wrapped_pred#  s4    a??:a#6#6Awr,   c                V  > [        U [        5      (       a9  U R                  U R                  U R                  /n[        UTTT5      n[        U6 $ [        U 5      (       aC  [        U [        5      (       d.  [        U 5      n[        UTTT5      n[        [        U 5      U5      $ T" U 5      $ r#   )
r   r   r   r   r   map_if_extendr   r   r   r   )r   ldt_dictr   r   r   s      r*   wrapped_true_fn&map_if_extend.<locals>.wrapped_true_fn*  s    a%!!!&&!&&)Aaw9A!9??:a#6#6'*G#GT7HEG&tAw88qzr,   )r   r   r   )r   )r   r   r   r   r   r   s    ```  r*   r   r      s#     o r,   c                L   ^  U 4S jn[        [        [        U/UQ76 5      5      $ )Nc                    > T" U 6 (       a  gg)Nr   r   r-   )r'   r   s    r*   is_truecount_if.<locals>.is_true=  s    ;r,   )sumr   r   )r   r   r   s   `  r*   count_ifr   <  s$    
 w}W:z:;<<r,   c                  6    \ rS rSrS	S jrS rS rS rS rSr	g)
CacheiE  c                Z    U(       d  0 U l         O[        5       U l         SU l        X l        g r9   )cacher   hit_numcopy)r=   weakr  s      r*   r>   Cache.__init__F  s"    DJ,.DJ	r,   c                   U R                   " U0 UD6n[        U5      (       d  U R                  " U0 UD6$ X0R                  ;   a[  [	        SSUS5        U =R
                  S-  sl        U R                  U   nU R                  (       a  [        R                  " U5      nU$ U R                  " U0 UD6nXPR                  U'   U$ )Nr   zcache hit: r   r   )key_fnhashablevalue_fnr  r   r  r  deepcopy)r=   r'   r(   	cache_key
cache_itemvalues         r*   r%   Cache.__call__N  s    KK00		""==$1&11

"=)T2LLALI.Jyy!]]:6
t.v. %

9r,   c                F    U R                   R                  5         SU l        g r9   )r  clearr  rW   s    r*   r  Cache.clear]  s    

r,   c                    [         er#   NotImplementedErrorr=   r'   r(   s      r*   r
  Cache.key_fna      !!r,   c                    [         er#   r  r  s      r*   r  Cache.value_fnd  r  r,   )r  r  r  N)FF)
r.   r/   r0   r1   r>   r%   r  r
  r  r3   r-   r,   r*   r  r  E  s    ""r,   r  c                   ^  U 4S jnU$ )Nc                    > [         R                   " 5       nT" U 0 UD6n[         R                   " 5       nXB-
  n[        SU5        U$ )NzExecute time:)timer   )r'   r(   
start_timeresultend_timeexecution_timer   s         r*   wrapperexecute_time.<locals>.wrapperi  s?    YY[
t&v&99;!.o~.r,   r-   )r   r$  s   ` r*   execute_timer&  h  s     Nr,   c                    SU  SU SU S3$ )Nz(shape: z	, dtype: z, stop_gradient: )r-   )shapedtypestop_gradients      r*   meta_strr,  t  s    eWIeW,=m_ANNr,   c                 ,    [         R                  " 5       $ r#   )r   r   r-   r,   r*   is_strict_moder.  x  s      r,   c                t    U  Vs/ s H  n[        U5      PM     snR                  [        U5      5      $ s  snf r#   )idindexlir   its      r*   list_find_index_by_idr5  |  s-     RrBrFR &&r$x00 s   5c                \    [        U5      U  Vs/ s H  n[        U5      PM     sn;   $ s  snf r#   )r0  r2  s      r*   list_contain_by_idr7    s'    d8,22,,,,s   )c                .    [        U R                  U5      $ r#   )getattrr)   )objrD   s     r*   get_unbound_methodr;    s    3==$''r,   c                      \ rS rSrSrg)SotUndefinedVari  r-   N)r.   r/   r0   r1   r3   r-   r,   r*   r=  r=    s    r,   r=  c                J     [        U 5        g! [         a
  n S nAgS nAff = fr   )hash	TypeErrorr:  es     r*   r  r    s$    S	     
""c                J     [        U 5        g! [         a
  n S nAgS nAff = fr   )rB   	ExceptionrA  s     r*   	printablerF    s$    C rC  c                  $    \ rS rSrSrS rS rSrg)StepInfoi     c                    SU l         g N
step_countrW   s    r*   r>   StepInfo.__init__  s	    r,   c                4    U R                   U R                  :  $ r#   )rN  BACK_TRACE_STEPSrW   s    r*   need_back_traceStepInfo.need_back_trace  s    !6!666r,   rM  N)r.   r/   r0   r1   rQ  r>   rR  r3   r-   r,   r*   rH  rH    s    7r,   rH  c                  P    \ rS rSrS r\S 5       r\S 5       r\S 5       r	S r
Srg)	StepInfoManageri  c                .    0 U l         S U l        S U l        g r#   )step_recordcurrent_codecurrent_step_inforW   s    r*   r>   StepInfoManager.__init__  s     !%r,   c              #  B  #     U R                   nU R                  nXl         XR                  ;  a  [        5       U R                  U'   U R                  U   U l        U R                  =R                  S-  sl        S v   X l         X0l        g ! WU l         WU l        f = f7frA   )rX  rY  rW  rH  rN  )r=   r   old_codeold_infos       r*   
step_guardStepInfoManager.step_guard  s     	.((H--H $+++)1  &%)%5%5d%;D"""--2- (%-" !)D%-D"s   BA;B ?BBBc                `    U R                   S L=(       a    U R                   R                  5       $ r#   )rY  rR  rW   s    r*   rR  StepInfoManager.need_back_trace  s.     ""$. 9&&668	
r,   c                .    U R                   R                  $ r#   )rY  rN  rW   s    r*   current_stepStepInfoManager.current_step  s    %%000r,   c                T    U R                   R                  5         S U l        SU l        g rK  )rW  r  rX  rc  rW   s    r*   r  StepInfoManager.clear  s$      r,   )rX  rc  rY  rW  N)r.   r/   r0   r1   r>   r   r^  propertyrR  rc  r  r3   r-   r,   r*   rU  rU    sH    &
 . .  
 
 1 1r,   rU  c                   U R                   nU R                  n[        U5      S:  af  U[        R                  ;  a  U$ [        R                  U   n[        X15      (       a  US-   U-   $ UR                  S5      S   n[        U5      S:  a  Mf  g )Nr   .)r.   r/   lensysmodulesr   
rpartition)apiapi_namer   modules       r*   get_api_fullnamerq    s    ||HJ
j/A
S[[(OZ(6$$#h..**3/2
 j/A
 r,   c                     [         R                  " [        S 5       V Vs/ s H  u  pUPM	     nn n[        S U5      n[        S U5      n[	        U5      [	        U5      4$ s  snn f )Nc                6    [        U [        R                  5      $ r#   )r   npufunc)r   s    r*   <lambda>"get_numpy_ufuncs.<locals>.<lambda>  s    z&"((;r,   c                     U R                   S:H  $ rA   ninru  s    r*   rv  rw    s    		Qr,   c                     U R                   S:H  $ )N   ry  r{  s    r*   rv  rw    s    ar,   )r   r   rt  filterlist)_ru  ufuncsunary_ufuncsbinary_ufuncss        r*   get_numpy_ufuncsr    sq      **;

HA 	
   6?L7@MtM222s   A!c                `    SSK Jn  / n  UR                  U " 5       5        M  ! U a     U$ f = f)Nr   )SotCapturedStopIteration)paddle.jit.sot.utils.exceptionsr  append)r   r  ress      r*   do_until_stop_iterationr    s>    H
C
	JJrt  ( 	J	s   # --c                H    U R                  5         U R                  U5        U $ r#   )r  extend)original_listnew_contentss     r*   update_list_inplacer    s$     &r,   c                L   [        U S5      (       a  U R                  $ [        U S5      (       a  U R                  $ U R                  R                  n[        U S5      (       a?  [        U R                  S5      (       a$  U R                  R                  nUS;  a  U SU S3$ U S3$ )Nr0   r.   r)   r/   )__main__r   ri  z())r   r0   r.   r)   r/   )r:  
class_namerp  s      r*   get_obj_stable_reprr    s    sN##sJ||''J sK  WS]]L%I%I))11XQzl"--\r,   c                 |    [         R                  " 5       R                  5       n U S;   d
   SU  35       eSSSS.nX   $ )N)no001z%Unsupported specialized_dim_numbers: r   r   r}  )r   r   lower)specialized_dim_numbers_raw_strto_min_non_specialized_numbers     r*   get_min_non_specialized_numberr    sh    '++-335 $ + /  Q 
//N.OP	Q  	%! )IIr,   )
r   zNestedStructure[T1]r   zCallable[[T1], bool]r   zCallable[[T1], T2]r   zCallable[[T1], T3]rK   zNestedStructure[T2 | T3])r3  z	list[Any]r   r	   rK   int)r   zCallable[[], T]rK   list[T])r  r  r  r  rK   r  rg   )rK   r  )c
__future__r   r   r  r   rk  r  r   r   collectionsr   
contextlibr   dataclassesr   	functoolsr   typingr   r	   r
   r   r   numpyrt  r   paddle.jit.dy2static.utilsr   r   r   paddle.utilsr   r   envsr   r   r   paddle_api_configr   r   r   collections.abcpaddle._typingr   r   r   r   r   r  floatrB   rL   r   bytes
ConstTypesr   r6   rN   ri   rk   rm   ro   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r&  r,  r.  r5  r7  r;  r=  r  rF  rH  rU  rq  r  r  r  r  r  r-   r,   r*   <module>r     s%   #    
    # % $  8 8 '   
 0 
  (.CLT]T]T]5#tT$Z7
# #, ,2 22 "#  ) )
I 'Y ')5,  J	=C	&)0/$/
/  / !	/
 /8= "  "F	O!1-(
		 	7 7%	 %P
	3	*1"Jr,   