
    {-j#                         d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dlm	Z	 d Z
d Zd Zd Zd Zd	 Zd
 Z G d d          Z G d d          Z G d d          Zed             Ze	defd            ZdS )    N)contextmanager)signature_safe_contextmanagerc                    t          j        d| t           j                  }g }|D ]\  }}|                    d          r(t	          |          }|                    ||gf           B|                    d          rh|                    d          }t          |          }g }|D ](}	t	          |	          }|r|                    |           )|                    ||f           |S )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.11/site-packages/paddle/utils/fwd_graph_utils.py_parse_tensorsr      s
   :2Iry L L+ 9 9)$$ 	9,Y77KK= 9::::!!#&& 	9$??400L,\::IK% 4 40:: 4&&{333; 7888    c                 ^    t          j        d|           }|r|                    d          nd S )NzAPI_Name:\s*(\w+)   )r   searchgroup)	debug_strapi_name_matchs     r   _parse_api_namer#   1   s2    Y3Y??N&4>>"""$>r   c                     t          j        d| t           j                  }|r"t          |                    d                    ng S )NzInput:\s*(\[.*?\]  )r   r   r   r
   r   r    )r!   input_matchs     r   _parse_input_tensorsr'   6   s>    )3Y	JJK3>F>+++A..///BFr   c                     t          j        d| t           j                  }|r"t          |                    d                    ng S )NzOutput:\s*(\[.*?\] )r   r%   )r!   output_matchs     r   _parse_output_tensorsr*   ;   s>    94iKKL4@H>,,,Q//000bHr   c                    i }|                                                      d          }|D ]}|                                 }|rd|v r|                    dd          \  }}|                                 }|                                 }|dk    r-t          j        d|          }|r|                    d          }n.|dk    r d |                    d          D             }n|d	k    rd }|||<   |S )
N
:r   PlacezPlace\((\w+:\d+)\)Shapec                 x    g | ]7}|                                 t          |                                           8S  )r   int).0xs     r   
<listcomp>z&_parse_tensor_info.<locals>.<listcomp>N   s3    OOOAQWWYYOQWWYYOOOr   ,None)r   splitr   r   r    )r   resultlineslinekeyvalueplace_matchs          r   r   r   @   s    FNN""4((E    zz|| 	 C4KKC++JC))++CKKMMEg~~ i(=uEE 1'--a00EOOS1A1AOOO&F3KMr   c                 ~   g }g }d}| D ]w}|dk    r|dz  }n|dk    r|dz  }|dk    rC|dk    r=|                     d                    |                                                     g }b|                     |           x|r:|                     d                    |                                                     |S )Nr   r   r   }r6    )r   joinr   )list_strelementscurrentbrace_countchars        r   r   r   V   s    HGK 
! 
!3;;1KKS[[1K3;;;!++OOBGGG,,2244555GGNN4     2((..00111Or   c                 ~    d g g d}t          |           |d<   t          |           |d<   t          |           |d<   |S )N)API_NameInputOutputrI   rJ   rK   )r#   r'   r*   )r!   r9   s     r   parse_debug_inforL   m   sK    r::F(33F:*955F7O,Y77F8Mr   c                   L    e Zd ZddefdZdefdZdefdZd ZdefdZ	d	 Z
d
S )EdgerA   r   c                 b    |d         | _         |d         | _        |d         | _        || _        d S )NNamer/   Dtype)nameshapedtypesource)selfr   rU   s      r   __init__zEdge.__init__w   s1    '	 )
 )
r   returnc                     | j         S N)rR   rV   s    r   get_namezEdge.get_name}   s
    yr   c                     | j         S rZ   rU   r[   s    r   
get_sourcezEdge.get_source   s
    {r   c                     || _         d S rZ   r^   )rV   rU   s     r   
set_sourcezEdge.set_source   s    r   c           	      H    d| j          d| j         d| j         d| j         d	S )NzEdge(name='z', source='z	',shape='z	',dtype='z'))rR   rU   rS   rT   r[   s    r   __str__zEdge.__str__   s5    lTYll4;llll^b^hllllr   c                 4    | j          d| j         d| j         S )Nz
shape:z
dtype:)rR   rS   rT   r[   s    r   get_edge_infozEdge.get_edge_info   s$    )EETZEEEEEr   NrA   )__name__
__module____qualname__dictrW   strr\   r_   ra   rc   re   r1   r   r   rN   rN   v   s         D    #    C      m m m m mF F F F Fr   rN   c                   D    e Zd Zd ZddefdZdedefdZdefdZd	 Z	d
S )Graphc           	          ddl m}  |            | _        dddddddd	d
| _        dddddddd	d
| _        i | _        g | _        d S )Nr   )Digraphzrounded,filled,boldboxz#FFE4B5z#ffffffz1.3z0.84Arial)stylerS   color	fillcolor	fontcolorwidthheightfontnamez#999999)graphvizro   dotorange_box_attrsgrey_box_attrsedgesnodes)rV   ro   s     r   rW   zGraph.__init__   s    $$$$$$799*""	!
 	!
 +""	
 	
 



r   rA   rR   c                 t    |s| j         } | j        j        ||fi | | j                            |           d S rZ   )r|   rz   noder~   r   )rV   rR   	node_attrs      r   add_nodezGraph.add_node   sL     	,+IdD..I...
$r   dstedgec                    |                                 }|| j        vr\|                                sG|                                 dz   }|                    |           |                     || j                   n| j        |         }|                                }| j                            |||                                           d S )N_SourceNode)label)	r\   r}   r_   ra   r   r{   rz   r   re   )rV   r   r   	edge_namesrc_namesrcs         r   add_edgezGraph.add_edge   s    MMOO	DJ&& ??$$ ?==??]:)))h(=>>>:i(Dooc3d&8&8&:&:;;;;;r   c                 B    |                                 }|| j        |<   d S rZ   )r\   r}   )rV   r   r   s      r   
store_edgezGraph.store_edge   s!    MMOO	 $
9r   c                 >    | j                             |d           d S )Nsvg)format)rz   renderrV   	file_paths     r   r   zGraph.render   s     	%00000r   Nrf   )
rg   rh   ri   rW   rk   r   rN   r   r   r   r1   r   r   rm   rm      s          8   S        <C <t < < < <%t % % % %1 1 1 1 1r   rm   c                   &    e Zd Zd ZdefdZd ZdS )GraphBuilderc                 ,    t                      | _        d S rZ   )rm   graphr[   s    r   rW   zGraphBuilder.__init__   s    WW


r   forward_debug_infosc                    |D ]}t          |          }|d         }| j                            |           |d         D ]A}|d         }|d         }|D ],}t          ||          }	| j                            |	           -B|d         D ]B}
|
d         }|
d         }|D ]-}t          |          }	| j                            ||	           .Cd S )NrI   rK   r   r   rJ   )r   r   )rL   r   r   rN   r   r   )rV   r   info
debug_infoapi_name	out_paramr   tensorsr   r   input_params              r   build_graphzGraphBuilder.build_graph   s    ' 	A 	AD)$//J!*-HJ)))'1 0 0	$Q<#A,#* 0 0KX66DJ))$////0
  *'2 A A&q>%a.#* A AK,,DJ''H4'@@@@AA	A 	Ar   c                 :    | j                             |           d S rZ   )r   r   r   s     r   
save_graphzGraphBuilder.save_graph   s    
)$$$$$r   N)rg   rh   ri   rW   listr   r   r1   r   r   r   r      sR          At A A A A,% % % % %r   r   c               #     K   t          j        d          5 } t          j                                        }t          j        |          }t          j                    }	 t          j	        |                                 |           t          j        
                                 |V  t          j        
                                 t          j	        ||           t          j        |           |                     d           |                    |                                                                            n# t          j        
                                 t          j	        ||           t          j        |           |                     d           |                    |                                                                            w xY w	 d d d            d S # 1 swxY w Y   d S )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 Z..00&!344
	;GI$$&&(:;;;JJGO%7888H_%%%NN1	 0 0 7 7 9 9:::: JGO%7888H_%%%NN1	 0 0 7 7 9 9:::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s-   AG&A	D>(BG&>BGG&&G*-G*r   c              #   ~  K   d}t          j                    }t          j                            d          d         }	 t          j        ddi           t                      5 }t          j        j                            d          5  d V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        d|i           |	                                }t                      }d } ||                    d                    }d|z   dz   }t          j        |t          j                  }|                    |          }	|                    |	           |                    |            d S # t          j        d|i           |	                                }t                      }d } ||                    d                    }d|z   dz   }t          j        |t          j                  }|                    |          }	|                    |	           |                    |            w xY w)	NrA   FLAGS_enable_unique_nameT   c                 V    t          j        d|           }|                    d          S )Nz^\t*r   )r   matchr    )sr   s     r   get_first_indentz8capture_forward_subgraph_guard.<locals>.get_first_indent  s#    HWa((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KMMM'-'7'A'A"( ( ("$&4d;<<< 	 -K!,,Q//	 	 EEE		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	')IJ	
 	
 	
 $$&&..	" 	" 	"
 "!#**T"2"233fn'GG*[")44//#&&G$$$9%%%%%# 	')IJ	
 	
 	
 $$&&..	" 	" 	"
 "!#**T"2"233fn'GG*[")44//#&&G$$$9%%%%sT   $E; "%B/BB/B	B/B	 B/#E; /B33E; 6B37E; ;CH<)r   r   r   r   r   
contextlibr   r   paddle.base.wrapped_decoratorr   r   r#   r'   r*   r   r   rL   rN   rm   r   r   rk   r   r1   r   r   <module>r      s   
			 				 				 



  % % % % % %  G G G G G G  .? ? ?
G G G
I I I
  ,  .  F F F F F F F F.81 81 81 81 81 81 81 81v% % % % % % % %< ; ; ;$  &c  &  &  &  &  &  &r   