
    h%                     D   S SK r S SKrS SKJr  S SKJrJrJrJr  S SK	r	S SK
JrJrJr  SSSSS	.rS
S0r\\\/\	R"                  4   rS\S\4S jrS\S\4S jr SS\S\S\4S jjr    SS\S\\   S\S\\   S\S\	R0                  4S jjrSS jr\S:X  a  \" 5         gg)    N)defaultdict)AnyCallableDictOptional)
GraphProto
ModelProto	NodeProtoboxz#0F9D58filledz#FFFFFF)shapecolorstyle	fontcolorr   octagonnamereturnc                 .    [         R                  " U 5      $ )N)jsondumps)r   s    O/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/tools/net_drawer.py_escape_labelr   &   s    ::d    sc                     SnU[        U 5      R                  SS5      R                  SS5      R                  SS5      -  nUS-  nU$ )Nzjavascript:alert("'< >))r   replace)r   urls     r   _form_and_sanitize_docstringr$   +   sK    
C=##C-55c2>FFsBOOC3JCJr   embed_docstringkwargsc                 T   ^ ^ S[         S[        S[        R                  4U U4S jjnU$ )Nopop_idr   c                   > U R                   (       a   U R                    SU R                   SU S3nOU R                   SU S3n[        U R                  5       H  u  p4US[	        U5      -   S-   U-   -  nM     [        U R
                  5       H  u  p5US[	        U5      -   S-   U-   -  nM     [        R                  " U40 T	D6nT(       a&  [        U R                  5      nUR                  U5        U$ )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_node-GetOpNodeProducer.<locals>.really_get_op_node5   s    7777)1RZZLeWA>I::,eE7!4I"288,IAc!f,s2V;;I -"299-IAs1v-3f<<I .zz).v..r}}=CLLr   )r
   intr2   r3   )r%   r&   r:   s   `` r   GetOpNodeProducerr=   2   s.    y     r   graphrankdirnode_producerc                 H   Uc  [        SSU0[        D6n[        R                  " XS9n0 n[	        [
        5      n[        U R                  5       GHN  u  pU" X5      n
UR                  U
5        U	R                   H  nX;  aB  [        R                  " [        U[        X{   5      -   5      4S[        U5      0[        D6nXU'   OXk   nUR                  U5        UR                  [        R                  " X5      5        M     U	R                    H  nX;   a  X}==   S-  ss'   [        R                  " [        U[        X}   5      -   5      4S[        U5      0[        D6nXU'   UR                  U5        UR                  [        R                  " X5      5        M     GMQ     U$ )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/VXV))D2K)+K(3C(8uzz*	*W%((J,"ZZ!*s3D3P/Q"QR'
3 !

 +5J'(4
  ,  J!@A # 99K)!.!3.**kC0A0N,OOP#K0 K
 (3$  -  G!AB % +4 r   c            
      x   [         R                  " SS9n U R                  S[        SSS9  U R                  S[        SSS9  U R                  S	[        S
SS9  U R                  SSSS9  U R	                  5       n[        5       n[        UR                  S5       nUR                  5       nUR                  U5        S S S 5        [        UR                  UR                  R                  UR                  [        SSUR                  0[         D6S9nUR#                  UR$                  5        g ! , (       d  f       Nw= f)NzONNX net drawer)descriptionz--inputTzThe input protobuf file.)typerequiredhelpz--outputzThe output protobuf file.z	--rankdirLRz&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   mainrk   p   s9   $$1BCF
'	   (	   5	   J  
 DLE	djj$	3((*g& 
   [[' 
 00
4<
	K $++& 
 	s   "D++
D9__main__)F)NrY   NF)r   N)r^   r   collectionsr   typingr   r   r   r   r2   onnxr   r	   r
   rE   rH   r<   r3   _NodeProducerr0   r   r$   boolr=   rF   rS   rk   __name__rD   r   r   <module>rs      s  "   # 0 0  2 2 	 y!
)S)5::56  
C C  "-0. -1!&&
3-& & M*	&
 & YY&R&'R zF r   