
    
Ng%                     >   d dl Z d dlZd dlmZ d dlmZmZmZmZ d dl	Z	d dl
mZmZmZ ddddd	Zd
diZeeege	j        f         ZdedefdZdedefdZ	 ddededefdZ	 	 	 	 ddedee         dedee         dede	j        fdZddZedk    r e             dS dS )    N)defaultdict)AnyCallableDictOptional)
GraphProto
ModelProto	NodeProtoboxz#0F9D58filledz#FFFFFF)shapecolorstyle	fontcolorr   octagonnamereturnc                 *    t          j        |           S )N)jsondumps)r   s    Q/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/tools/net_drawer.py_escape_labelr   &   s    :d    sc                     d}|t          |                               dd                              dd                              dd          z  }|dz  }|S )Nzjavascript:alert("'< >))r   replace)r   urls     r   _form_and_sanitize_docstringr$   +   sW    
C=##C--55c2>>FFsBOOOC3JCJr   Fembed_docstringkwargsc                 L     dt           dt          dt          j        f fd}|S )Nopop_idr   c                    | j         r| j          d| j         d| d}n| j         d| d}t          | j                  D ] \  }}|dt	          |          z   dz   |z   z  }!t          | j                  D ] \  }}|dt	          |          z   dz   |z   z  }!t          j        |fi 	}r)t          | j	                  }|
                    |           |S )N/z (op#r!   z
 input z
 output)r   op_type	enumerateinputstroutputpydotNoder$   
doc_stringset_URL)
r(   r)   	node_nameiinput_r1   noder#   r%   r&   s
           r   really_get_op_nodez-GetOpNodeProducer.<locals>.really_get_op_node5   s
   7 	57>>RZ>>e>>>II:44E444I"28,, 	< 	<IAvc!ff,s2V;;II"29-- 	= 	=IAvs1vv-3f<<IIz)..v.. 	.r}==CLLr   )r
   intr2   r3   )r%   r&   r:   s   `` r   GetOpNodeProducerr<   2   sF    y          r   LRgraphrankdirnode_producerc                    |t          dd|it          }t          j        ||          }i }t	          t
                    }t          | j                  D ]r\  }}	 ||	|          }
|                    |
           |	j	        D ]}||vrOt          j
        t          |t          ||                   z             fdt          |          it          }|||<   n||         }|                    |           |                    t          j        ||
                     |	j        D ]}||v r||xx         dz  cc<   t          j
        t          |t          ||                   z             fdt          |          it          }|||<   |                    |           |                    t          j        |
|                     t|S )Nr%   )r?   label    )r<   OP_STYLEr2   Dotr   r;   r.   r9   add_noder/   r3   r   r0   
BLOB_STYLEadd_edgeEdger1   )r>   r   r?   r@   r%   pydot_graphpydot_nodespydot_node_countsr)   r(   op_node
input_name
input_nodeoutput_nameoutput_nodes                  r   GetPydotGraphrS   G   s"    )VV/VXVV)D'222K)+K(3C(8(8uz** C C	r-E**W%%%( 	B 	BJ,,"Z!*s3DZ3P/Q/Q"QRR '
33 ! 

 +5J''(4
  ,,,  J!@!@AAAA9 
	C 
	CKk))!+...!3...*kC0A+0N,O,OOPP #K00  K
 (3K$  ---  G[!A!ABBBB
	C r   c            
         t          j        d          } |                     dt          dd           |                     dt          dd           |                     d	t          d
d           |                     ddd           |                                 }t                      }t          |j        d          5 }|                                }|	                    |           d d d            n# 1 swxY w Y   t          |j        |j        j        |j        t          dd|j        it                     }|                    |j                   d S )NzONNX net drawer)descriptionz--inputTzThe input protobuf file.)typerequiredhelpz--outputzThe output protobuf file.z	--rankdirr=   z&The rank direction of the pydot graph.)rV   defaultrX   z--embed_docstring
store_truez;Embed docstring as javascript alert. Useful for SVG format.)actionrX   rbr%   )r   r?   r@   rD   )argparseArgumentParseradd_argumentr0   
parse_argsr	   openr/   readParseFromStringrS   r>   r   r?   r<   r%   rE   	write_dotr1   )parserargsmodelfidcontentrK   s         r   mainrj   p   s   $1BCCCF
'	     (	     5	     J    
 DLLE	dj$		 '3((**g&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '  [' 
 
 0
4<
 
	  K $+&&&&&s   ?*C55C9<C9__main__)F)Nr=   NF)r   N)r]   r   collectionsr   typingr   r   r   r   r2   onnxr   r	   r
   rE   rH   r;   r3   _NodeProducerr0   r   r$   boolr<   rF   rS   rj   __name__rD   r   r   <module>rr      s  "   # # # # # # 0 0 0 0 0 0 0 0 0 0 0 0  2 2 2 2 2 2 2 2 2 2 	  y!
)S)5:56     
C C     " -0   . -1!& &&
3-& & M*	&
 & Y& & & &R&' &' &' &'R zDFFFFF r   