
    Αi                         S SK r S SKrS SKrS SKrS SKrS r " S S5      r " S S5      r " S S5      r " S	 S
5      r	 " S S5      r
g)    Nc                 N    [        U [        5      (       a  SU  S3$ [        U 5      $ )N")
isinstancestr)vs    f/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/fleet/base/graphviz.pycreprr	      s%    !S1#Qxq6M    c                        \ rS rSrS rS rSrg)Rank   c                 6    Xl         X l        X0l        / U l        g)z#
kind: str
name: str
priority: int
N)kindnameprioritynodes)selfr   r   r   s       r   __init__Rank.__init__   s     		 
r
   c                     U R                   (       d  gSSU R                   S3-   SR                  U R                    Vs/ s H  oR                  PM     sn5      -   S-   $ s  snf )N {zrank=;,})r   r   joinr   )r   nodes     r   __str__Rank.__str__(   s`    zz dii["#hhdjj9jd		j9:; 	
 :s   A
)r   r   r   r   N__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r
   r   r   r      s    		
r
   r   c                   R    \ rS rSrSrS rS rS rSS jrS r	S r
S	 rS
 rS rSrg)Graph4   r   c                 F    Xl         X l        / U l        / U l        0 U l        g N)titleattrsr   edgesrank_groups)r   r,   r-   s      r   r   Graph.__init__7   s"    



r
   c                 "    U R                  5       $ r+   )r   )r   s    r   code
Graph.code>   s    ||~r
   c                     S[         R                   3n[         =R                  S-  sl        [        XU5      nX@R                  U'   U$ )Nz
rankgroup-   )r(   rank_counterr   r/   )r   r   r   r   ranks        r   
rank_groupGraph.rank_groupA   sE    E../0aD)!%r
   c                     [        XU40 UD6nSU;   a0  U R                  US      nUS	 UR                  R                  U5        U R                  R                  U5        U$ )Nr7   )Noder/   r   append)r   labelprefixdescriptionr-   r   r7   s          r   r   
Graph.nodeH   s^    E;8%8U?##E&M2DfJJd#

$r
   c                 T    [        X40 UD6nU R                  R                  U5        U$ r+   )Edger.   r<   )r   sourcetargetr-   edges        r   rE   
Graph.edgeR   s(    F,e,

$r
   c                    [        US5      nUR                  U R                  5       5        [        R                  R                  [        R                  R                  U5      US S S-   5      nSSUSU/n[        R                  " U[        R                  [        R                  [        R                  S9  [        R                  " SU 35        U$ )	Nwpdfdotz-Tpdfz-ostdinstdoutstderrzwrite block debug graph to )openwriter   ospathr   dirname
subprocessPopenPIPEloggingwarning)r   dot_pathfile
image_pathcmds        r   compileGraph.compileW   s    Hc"

4<<>"WW\\GGOOH%x}u'<

 gxz://????		
 	5j\BCr
   c                     U R                  U5      nSU/n[        R                  " U[        R                  [        R                  [        R                  S9  g )NrP   rL   )r^   rU   rV   rW   )r   rZ   imager]   s       r   show
Graph.showg   s?    X&uo//????		
r
   c                     [        U R                  R                  5       [        R                  " S 5      S9n/ nU H   nUR                  [        US   5      5        M"     SR                  U5      S-   $ )Nc                 @    U S   R                   US   R                   :  $ )Nr5   )r   )abs     r   <lambda>"Graph._rank_repr.<locals>.<lambda>u   s    QqT]]QqT]]:r
   )keyr5   
)sortedr/   items	functools
cmp_to_keyr<   r   r   )r   ranksreprxs       r   
_rank_reprGraph._rank_reprq   sg    ""$$$:
 AKKAaD	" yy%%r
   c           	      ,   SS[        U R                  5       3/nU R                   H0  nUR                  U S[        U R                  U   5       S35        M2     UR                  U R	                  5       5        [
        R                  " U R                  5        XR                   Vs/ s H  n[        U5      PM     sn-  nU R                   H  nUR                  [        U5      5        M     UR                  S5        SR                  U5      $ s  snf )Nzdigraph G {ztitle = =r   r   rk   )r	   r,   r-   r<   rs   randomshuffler   r   r.   r   )r   reprsattrr   rr   s        r   r   Graph.__str__}   s    uTZZ()*

 JJDLLD65D)9#:";1=>  	T__&'tzz"

3
#d)
33ALLQ   	Syy 4s   (D)r-   r.   r   r/   r,   Nr   )r!   r"   r#   r$   r6   r   r2   r8   r   rE   r^   rb   rs   r   r%   r&   r
   r   r(   r(   4   s4    L
 

& r
   r(   c                   (    \ rS rSrSrSS jrS rSrg)r;      r5   c                     Xl         U S[        R                   3U l        X0l        X@l        [        =R                  S-  sl        g )N_r5   )r=   r;   counterr   r?   r-   )r   r=   r>   r?   r-   s        r   r   Node.__init__   s6    
ha~.	&
r
   c           
          SR                  U R                  U R                  U R                  (       a3  SSR	                  S U R                  R                  5        5       5      -   OSS9nU$ )Nz {name} [label={label} {extra} ];r   c              3   F   #    U  H  u  pU S [        U5       3v   M     g7f)rv   Nr	   ).0rj   values      r   	<genexpr>Node.__str__.<locals>.<genexpr>   s%      >P
se1U5\N+>Ps   !r   )r   r=   extra)formatr   r=   r-   r   rm   )r   ry   s     r   r   Node.__str__   sj    299** ::	 (( >Bjj>N>N>P 
  : 
 r
   )r-   r?   r=   r   Nr|   )r!   r"   r#   r$   r   r   r   r%   r&   r
   r   r;   r;      s    Gr
   r;   c                        \ rS rSrS rS rSrg)rB      c                 (    Xl         X l        X0l        g)zf
Link source to target.
:param source: Node
:param target: Node
:param graph: Graph
:param attrs: dic
N)rC   rD   r-   )r   rC   rD   r-   s       r   r   Edge.__init__   s     
r
   c           
         SR                  U R                  R                  U R                  R                  U R                  (       d  SO5SSR                  S U R                  R                  5        5       5      -   S-   S9nU$ )Nz{source} -> {target} {extra}r   [r   c              3   L   #    U  H  oS     S[        US   5       3v   M     g7f)r   rv   r5   Nr   )r   rz   s     r   r   Edge.__str__.<locals>.<genexpr>   s*      >PdAwiqtAw 01>Ps   "$])rC   rD   r   )r   rC   r   rD   r-   r   rm   )r   rq   s     r   r   Edge.__str__   s~    -44;;##;;## zz (( >Bjj>N>N>P  	 5 
 r
   )r-   rC   rD   Nr    r&   r
   r   rB   rB      s    
r
   rB   c                   H    \ rS rSrSrS rSS jrSS jrS rSS jr	S r
S	rg
)GraphPreviewGenerator   z(
Generate a graph image for ONNX proto.
c                     [        USSSS9U l        U R                  R                  SS5      U l        U R                  R                  SS5      U l        U R                  R                  SS5      U l        g )	NrK   trueTB)layoutconcentraterankdirsame   r5   r   )r(   graphr8   op_rank
param_rankarg_rank)r   r,   s     r   r   GraphPreviewGenerator.__init__   sd    	

 zz,,VQ7**//:

--fa8r
   c                     U(       d  U R                   R                  U5        g U R                   R                  U5        g r+   )r   r^   rb   )r   rS   rb   s      r   __call__GraphPreviewGenerator.__call__   s'    JJt$JJOOD!r
   c                     SR                  SSSSUSSSSS	[        U5      S
S/5      nU R                  R                  USUSSSU(       d  SOSSSS9	$ )Nrk   z<<table cellpadding="5">z  <tr>z    <td bgcolor="#2b787e">z    <b>z    </b>z	    </td>z  </tr>z    <td>z    </td>  </tr>z	</table>>paramnonerounded,filled,bold1.3z#148b97orange#ffffffArial)r>   r?   shapestylewidthcolor	fontcolorfontname)r   r   r   r   )r   r   	data_type	highlightr=   s        r   	add_paramGraphPreviewGenerator.add_param   s{    		*,I"
" zz'#,)(  

 
	
r
   c                     SnSU;   a  US   nUS	 U R                   R                  SU S3SUSSU(       d  SOS	S
SSSS9
$ )NFr   z<<B>z</B>>opboxzrounded, filled, boldz#303A3Ar   r   r   r   z0.84)	r>   r?   r   r   r   r   r   r   height)r   r   )r   opTypekwargsr   s       r   add_opGraphPreviewGenerator.add_op   sf    	& {+I{#zz6(% )#,)(  
 	
r
   c                 j    U R                   R                  [        U5      SUSSSSU(       d  SS9$ SS9$ )	Nargr   r   r   z#999999z#ddddddr   )r>   r?   r   r   r   r   r   )r   r   r	   )r   r   r   s      r   add_argGraphPreviewGenerator.add_arg  sN    zz$K'#,)  	
 		
 3;  	
 		
r
   c                 t    SnSU;   a  US   nUS	 U R                   R                  " UU4SU(       d  SOS0UD6$ )NFr   r   z#00000r   )r   rE   )r   rC   rD   r   r   s        r   add_edgeGraphPreviewGenerator.add_edge  sT    	& {+I{#zz
 #,(
 	
 	
r
   )r   r   r   r   N)ztemp.dotF)F)r!   r"   r#   r$   __doc__r   r   r   r   r   r   r%   r&   r
   r   r   r      s%    9"
<
$



r
   r   )rn   rX   rR   rw   rU   r	   r   r(   r;   rB   r   r&   r
   r   <module>r      sR      	  
 
0[  [ | 4 <^
 ^
r
   