
    ёi#                         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rS SKJ	r	  S r
S rS rS rS rS	 rS
 r " S S5      r " S S5      r " S S5      r\S 5       r\	S\4S j5       rg)    N)contextmanager)signature_safe_contextmanagerc                    [         R                  " SU [         R                  5      n/ nU H  u  p4UR                  S5      (       a   [	        U5      nUR                  X5/45        M;  UR                  S5      (       d  MS  UR                  S5      n[        U5      n/ nU H(  n	[	        U	5      nU(       d  M  UR                  U5        M*     UR                  X845        M     U$ )Nz'\(\s*(\w+)\s*,\s*(\{.*?\}|\[.*?\])\s*\){[z[])refindallDOTALL
startswith_parse_tensor_infoappendstrip_split_list_elements)
	input_strinput_tuplestensors_listvar_name	value_strtensor_infolist_content	dict_strstensor_listdict_strs
             \/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/utils/fwd_graph_utils.py_parse_tensorsr      s    ::2IryyL L+$$,Y7K= 9:!!#&&$??40L,\:IK%0:;&&{3 &  78  ,     c                 d    [         R                  " SU 5      nU(       a  UR                  S5      $ S $ )NzAPI_Name:\s*(\w+)   )r   searchgroup)	debug_strapi_name_matchs     r   _parse_api_namer#   1   s+    YY3Y?N&4>">$>r   c                     [         R                  " SU [         R                  5      nU(       a  [        UR	                  S5      5      $ / $ )NzInput:\s*(\[.*?\]  )r   r   r   r
   r   r    )r!   input_matchs     r   _parse_input_tensorsr'   6   s6    ))3Y		JK3>>+++A./FBFr   c                     [         R                  " SU [         R                  5      nU(       a  [        UR	                  S5      5      $ / $ )NzOutput:\s*(\[.*?\] )r   r%   )r!   output_matchs     r   _parse_output_tensorsr*   ;   s6    994iKL4@>,,,Q/0HbHr   c                 <   0 nU R                  5       R                  S5      nU H  nUR                  5       nU(       d  M  SU;   d  M$  UR                  SS5      u  pEUR                  5       nUR                  5       nUS:X  a0  [        R                  " SU5      nU(       a  UR	                  S5      nO]US:X  aO  UR                  S5       Vs/ s H2  owR                  5       (       d  M  [        UR                  5       5      PM4     nnOUS:X  a  S nXQU'   M     U$ s  snf )	N
:r   PlacezPlace\((\w+:\d+)\)Shape,None)r   splitr   r   r    int)r   resultlineslinekeyvalueplace_matchxs           r   r   r   @   s    FNN""4(Ezz|4C4KC+JC))+CKKMEg~ ii(=uE'--a0E16S1AO1AAWWYQWWY1AO&3K   M Ps   D'Dc                 Z   / n/ nSnU  Hi  nUS:X  a  US-  nOUS:X  a  US-  nUS:X  a8  US:X  a2  UR                  SR                  U5      R                  5       5        / nMX  UR                  U5        Mk     U(       a.  UR                  SR                  U5      R                  5       5        U$ )Nr   r   r   }r0    )r   joinr   )list_strelementscurrentbrace_countchars        r   r   r   V   s    HGK3;1KS[1K3;;!+OOBGGG,2245GNN4   (..01Or   c                 f    S / / S.n[        U 5      US'   [        U 5      US'   [        U 5      US'   U$ )N)API_NameInputOutputrE   rF   rG   )r#   r'   r*   )r!   r4   s     r   parse_debug_inforH   m   s?    r:F(3F:*95F7O,Y7F8Mr   c                   \    \ rS rSrSS\4S jjrS\4S jrS\4S jrS r	S\4S jr
S	 rS
rg)Edgev   r   c                 L    US   U l         US   U l        US   U l        X l        g )NNamer/   Dtype)nameshapedtypesource)selfr   rR   s      r   __init__Edge.__init__w   s+    '	 )
 )
r   returnc                     U R                   $ N)rO   rS   s    r   get_nameEdge.get_name}   s    yyr   c                     U R                   $ rX   rR   rY   s    r   
get_sourceEdge.get_source   s    {{r   c                     Xl         g rX   r]   )rS   rR   s     r   
set_sourceEdge.set_source   s    r   c           	      p    SU R                    SU R                   SU R                   SU R                   S3	$ )NzEdge(name='z', source='z	',shape='z	',dtype='z'))rO   rR   rP   rQ   rY   s    r   __str__Edge.__str__   s9    TYYK{4;;-yT]^b^h^h]iikllr   c                 R    U R                    SU R                   SU R                   3$ )Nz
shape:z
dtype:)rO   rP   rQ   rY   s    r   get_edge_infoEdge.get_edge_info   s%    ))HTZZLEEr   )rQ   rO   rP   rR   Nr=   )__name__
__module____qualname____firstlineno__dictrT   strrZ   r^   ra   rd   rg   __static_attributes__ r   r   rJ   rJ   v   s?    D # C m mFr   rJ   c                   R    \ rS rSrS rSS\4S jjrS\S\4S jrS\4S jr	S	 r
S
rg)Graph   c           	          SSK Jn  U" 5       U l        SSSSSSSS	S
.U l        SSSSSSSS	S
.U l        0 U l        / U l        g )Nr   )Digraphzrounded,filled,boldboxz#FFE4B5z#ffffffz1.3z0.84Arial)stylerP   color	fillcolor	fontcolorwidthheightfontnamez#999999)graphvizrv   dotorange_box_attrsgrey_box_attrsedgesnodes)rS   rv   s     r   rT   Graph.__init__   sd    $9*""	!
 +""	
 

r   rO   c                     U(       d  U R                   nU R                  R                  " X40 UD6  U R                  R	                  U5        g rX   )r   r   noder   r   )rS   rO   	node_attrs      r   add_nodeGraph.add_node   s7    ++Id.I.

$r   dstedgec                 z   UR                  5       nX0R                  ;  aU  UR                  5       (       d?  UR                  5       S-   nUR                  U5        U R	                  X@R
                  5        OU R                  U   nUR                  5       nU R                  R                  XQUR                  5       S9  g )N_SourceNode)label)	rZ   r   r^   ra   r   r   r   r   rg   )rS   r   r   	edge_namesrc_namesrcs         r   add_edgeGraph.add_edge   s    MMO	JJ& ??$$==?]:)h(=(=>::i(Doocd&8&8&:;r   c                 @    UR                  5       nXR                  U'   g rX   )rZ   r   )rS   r   r   s      r   
store_edgeGraph.store_edge   s    MMO	 $

9r   c                 8    U R                   R                  USS9  g )Nsvg)format)r   renderrS   	file_paths     r   r   Graph.render   s    	%0r   )r   r   r   r   r   Nri   )rj   rk   rl   rm   rT   ro   r   rJ   r   r   r   rp   rq   r   r   rs   rs      s7    8 S  <C <t <%t %1r   rs   c                   .    \ rS rSrS rS\4S jrS rSrg)GraphBuilder   c                 "    [        5       U l        g rX   )rs   graphrY   s    r   rT   GraphBuilder.__init__   s    W
r   forward_debug_infosc                 |   U H  n[        U5      nUS   nU R                  R                  U5        US    H<  nUS   nUS   nU H)  n[        X5      n	U R                  R	                  U	5        M+     M>     US    H:  n
U
S   nU
S   nU H'  n[        U5      n	U R                  R                  XIS9  M)     M<     M     g )NrE   rG   r   r   rF   )r   r   )rH   r   r   rJ   r   r   )rS   r   info
debug_infoapi_name	out_paramr   tensorsr   r   input_params              r   build_graphGraphBuilder.build_graph   s    'D)$/J!*-HJJ)'1	$Q<#A,#*K6DJJ))$/ $+ 2  *'2&q>%a.#*K,DJJ''H'@ $+  3 (r   c                 :    U R                   R                  U5        g rX   )r   r   r   s     r   
save_graphGraphBuilder.save_graph   s    

)$r   )r   N)	rj   rk   rl   rm   rT   listr   r   rp   rq   r   r   r   r      s    At A,%r   r   c               #     #    [         R                  " SS9 n [        R                  R	                  5       n[
        R                  " U5      n[        R                  " 5       n [
        R                  " U R	                  5       U5        [        R                  R                  5         Uv   [        R                  R                  5         [
        R                  " X!5        [
        R                  " U5        U R                  S5        UR                  U R                  5       R                  5       5         S S S 5        g ! [        R                  R                  5         [
        R                  " X!5        [
        R                  " U5        U R                  S5        UR                  U R                  5       R                  5       5        f = f! , (       d  f       g = f7f)Nzw+b)moder   )tempfileTemporaryFilesysstderrfilenoosdupioStringIOdup2flushcloseseekwritereaddecode)	temp_fileoriginal_stderr_fdsaved_stderr_fdstderr_outputs       r   capture_stderrr      s-    			U	+y ZZ..0&&!34
	;GGI$$&(:;JJJJGGO8HH_%NN1	 0 7 7 9: 
,	+ JJGGO8HH_%NN1	 0 7 7 9: 
,	+s8   GA
G"AD;)BG2	G;B
GG
GGr   c              #   @  #    Sn[         R                  " 5       n[        R                  R	                  S5      S   n [        R
                  " SS05        [        5        n[        R                  R                  R                  S5         S v   S S S 5        S S S 5        [        R
                  " SU05        UR                  5       n[        5       nS nU" UR                  S5      5      nSU-   S-   n[        R                  " U[        R                  5      nUR                  U5      n	UR!                  U	5        UR#                  U 5        g ! , (       d  f       N= f! , (       d  f       N= f! [        R
                  " SU05        UR                  5       n[        5       nS nU" UR                  S5      5      nSU-   S-   n[        R                  " U[        R                  5      nUR                  U5      n	UR!                  U	5        UR#                  U 5        f = f7f)	Nr=   FLAGS_enable_unique_nameT   c                 R    [         R                  " SU 5      nUR                  S5      $ )Nz^\t*r   )r   matchr    )sr   s     r   get_first_indent8capture_forward_subgraph_guard.<locals>.get_first_indent  s     HHWa(E;;q>!r   r,   z\nzForward Debug Info \{.*? ] } )r   r   paddle	framework	get_flags	set_flagsr   base
vlog_guardgetvaluer   lstripr   compiler
   r	   r   r   )
r   logstderr_buffer origin_enable_unique_name_statusbuilderr   indentpattern_strpatternmatchess
             r   capture_forward_subgraph_guardr      s    
CKKMM'-'7'7'A'A"( ("$&4d;< KK!!,,Q/ 0 
 	')IJ	
 $$&.	"
 "#**T"23fn'GG**["))4//#&G$9%+ 0/ 
 	')IJ	
 $$&.	"
 "#**T"23fn'GG**["))4//#&G$9%sN   :H"E- *E	EEE- B-H
E	E
E*&E- -B.HH)r   r   r   r   r   
contextlibr   r   paddle.base.wrapped_decoratorr   r   r#   r'   r*   r   r   rH   rJ   rs   r   r   ro   r   rq   r   r   <module>r      s    
 	 	 
  %  G.?
G
I
,.F F.81 81v% %< ; ;$  &c  &  &r   