
    x-j                         d dl Z d dlZd dlZd dlZd dlZd Z G d d          Z G d d          Z G d d          Z G d	 d
          Z	 G d d          Z
dS )    Nc                 V    t          | t                    rd|  dS t          |           S )N")
isinstancestr)vs    f/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddle/distributed/fleet/base/graphviz.pycreprr	      s,    !S 1xxxq66M    c                       e Zd Zd Zd ZdS )Rankc                 >    || _         || _        || _        g | _        dS )zC
        kind: str
        name: str
        priority: int
        N)kindnameprioritynodes)selfr   r   r   s       r   __init__zRank.__init__   s$     		 


r
   c                     | j         sdS dd| j         dz   d                    d | j         D                       z   dz   S )N {zrank=;,c                     g | ]	}|j         
S  )r   .0nodes     r   
<listcomp>z Rank.__str__.<locals>.<listcomp>/   s    999d	999r
   })r   r   joinr   s    r   __str__zRank.__str__(   s_    z 	2 "di"""#hh99dj999::; 	
r
   N__name__
__module____qualname__r   r"   r   r
   r   r   r      s2        	 	 		
 	
 	
 	
 	
r
   r   c                   J    e Zd ZdZd Zd Zd ZddZd Zd Z	d	 Z
d
 Zd ZdS )Graphr   c                 L    || _         || _        g | _        g | _        i | _        d S N)titleattrsr   edgesrank_groups)r   r+   r,   s      r   r   zGraph.__init__7   s,    



r
   c                 *    |                                  S r*   )r"   r!   s    r   codez
Graph.code>   s    ||~~r
   c                     dt           j         }t           xj        dz  c_        t          |||          }|| j        |<   |S )Nz
rankgroup-   )r(   rank_counterr   r.   )r   r   r   r   ranks        r   
rank_groupzGraph.rank_groupA   sI    0E.00aD$))!%r
   r   c                     t          |||fi |}d|v r0| j        |d                  }|d= |j                            |           | j                            |           |S )Nr4   )Noder.   r   append)r   labelprefixdescriptionr,   r   r4   s          r   r   z
Graph.nodeH   sm    E6;88%88U??#E&M2DfJd###
$r
   c                 V    t          ||fi |}| j                            |           |S r*   )Edger-   r8   )r   sourcetargetr,   edges        r   r@   z
Graph.edgeR   s4    FF,,e,,
$r
   c                    t          |d          }|                    |                                            t          j                            t          j                            |          |d d         dz             }dd|d|g}t          j        |t          j	        t          j	        t          j	                   t          j        d|            |S )	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   compilezGraph.compileW   s    Hc""

4<<>>"""W\\GOOH%%x}u'<
 

 gxz:/??		
 	
 	
 	
 	BjBBCCCr
   c                     |                      |          }d|g}t          j        |t          j        t          j        t          j                   d S )NrJ   rF   )rX   rO   rP   rQ   )r   rT   imagerW   s       r   showz
Graph.showg   sR    X&&uo/??		
 	
 	
 	
 	
 	
r
   c                    t          | j                                        t          j        d                     }g }|D ]*}|                    t          |d                              +d                    |          dz   S )Nc                 :    | d         j         |d         j         k    S )Nr2   )r   )abs     r   <lambda>z"Graph._rank_repr.<locals>.<lambda>u   s    QqT]QqT]: r
   )keyr2   
)sortedr.   items	functools
cmp_to_keyr8   r   r    )r   ranksreprxs       r   
_rank_reprzGraph._rank_reprq   s    ""$$$:: 
 
 
  	# 	#AKKAaD		""""yy%%r
   c           	         ddt          | j                   g}| j        D ]5}|                    | dt          | j        |                    d           6|                    |                                            t          j        | j                   |d | j        D             z  }| j        D ]$}|                    t          |                     %|                    d           d
                    |          S )Nzdigraph G {ztitle = =r   c                 ,    g | ]}t          |          S r   )r   r   s     r   r   z!Graph.__str__.<locals>.<listcomp>   s    333#d))333r
   r   rb   )r	   r+   r,   r8   rj   randomshuffler   r-   r   r    )r   reprsattrri   s       r   r"   zGraph.__str__}   s   *uTZ((**

 J 	? 	?DLLD==5D)9#:#:===>>>>T__&&'''tz"""33
3333 	! 	!ALLQ    Syyr
   Nr   )r$   r%   r&   r3   r   r0   r5   r   r@   rX   r[   rj   r"   r   r
   r   r(   r(   4   s        L           
   
 
 

& 
& 
&         r
   r(   c                        e Zd ZdZddZd ZdS )r7   r2   r   c                     || _         | dt          j         | _        || _        || _        t          xj        dz  c_        d S )N_r2   )r9   r7   counterr   r;   r,   )r   r9   r:   r;   r,   s        r   r   zNode.__init__   sC    
....	&
r
   c           
          d                     | j        | j        | j        r9dd                    d | j                                        D                       z   nd          }|S )Nz {name} [label={label} {extra} ];r   c              3   D   K   | ]\  }}| d t          |           V  dS )rl   Nr	   )r   ra   values      r   	<genexpr>zNode.__str__.<locals>.<genexpr>   sK        0:Us++U5\\++     r
   r   )r   r9   extra)formatr   r9   r,   r    rd   )r   rp   s     r   r"   zNode.__str__   s    299* :	((  >Bj>N>N>P>P     
  : 
 
 r
   Nrr   )r$   r%   r&   rv   r   r"   r   r
   r   r7   r7      s<        G       r
   r7   c                       e Zd Zd Zd ZdS )r=   c                 0    || _         || _        || _        dS )z
        Link source to target.
        :param source: Node
        :param target: Node
        :param graph: Graph
        :param attrs: dic
        N)r>   r?   r,   )r   r>   r?   r,   s       r   r   zEdge.__init__   s     


r
   c           
          d                     | j        j        | j        j        | j        sdn;dd                    d | j                                        D                       z   dz             }|S )Nz{source} -> {target} {extra}r   [r   c              3   V   K   | ]$}|d           dt          |d                    V  %dS )r   rl   r2   Nry   )r   rq   s     r   r{   zEdge.__str__.<locals>.<genexpr>   sO        6:tAw11tAw11     r
   ])r>   r?   r|   )r}   r>   r   r?   r,   r    rd   )r   rh   s     r   r"   zEdge.__str__   s    -44;#;# z((  >Bj>N>N>P>P     	 5 
 
 r
   Nr#   r   r
   r   r=   r=      s2        
 
 
    r
   r=   c                   <    e Zd ZdZd ZddZddZd ZddZd	 Z	d
S )GraphPreviewGeneratorz0
    Generate a graph image for ONNX proto.
    c                     t          |ddd          | _        | j                            dd          | _        | j                            dd          | _        | j                            dd          | _        d S )	NrE   trueTB)layoutconcentraterankdirsame   r2   r   )r(   graphr5   op_rank
param_rankarg_rank)r   r+   s     r   r   zGraphPreviewGenerator.__init__   su    	
 
 

 z,,VQ77*//::
--fa88r
   temp.dotFc                 v    |s| j                             |           d S | j                             |           d S r*   )r   rX   r[   )r   rM   r[   s      r   __call__zGraphPreviewGenerator.__call__   s@     	"Jt$$$$$JOOD!!!!!r
   c                     d                     dddd|ddddd	t          |          d
dg          }| j                            |d|ddd|sdnddd	  	        S )Nrb   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	highlightr9   s        r   	add_paramzGraphPreviewGenerator.add_param   s    		*,I"
 
" z'#,:))(  

 

 
	
r
   c                 |    d}d|v r|d         }|d= | j                             d| dd|dd|sdnd	d
ddd
  
        S )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_opzGraphPreviewGenerator.add_op   ss    	&  {+I{#z 6   )#,:))(  
 
 	
r
   c           
      h    | j                             t          |          d|dddd|sdnd          S )	Nargr   r   r   z#999999z#ddddddr   )r:   r;   r   r   r   r   r   )r   r   r	   )r   r   r   s      r   add_argzGraphPreviewGenerator.add_arg  sF    z$KK'#,:))(  	
 	
 		
r
   c                 X    d}d|v r|d         }|d=  | j         j        ||fd|sdndi|S )NFr   r   z#00000r   )r   r@   )r   r>   r?   r   r   s        r   add_edgezGraphPreviewGenerator.add_edge  sd    	&  {+I{#tz
 
 #,9((
 	
 
 	
r
   N)r   F)F)
r$   r%   r&   __doc__r   r   r   r   r   r   r   r
   r   r   r      s         9 9 9" " " "
 
 
 
<
 
 
$

 

 

 



 

 

 

 

r
   r   )re   rR   rL   rn   rO   r	   r   r(   r7   r=   r   r   r
   r   <module>r      s.        				       
 
 
 
 
 
 
 
0[  [  [  [  [  [  [  [ |       4       <^
 ^
 ^
 ^
 ^
 ^
 ^
 ^
 ^
 ^
r
   