
    wiM                        d dl mZ d dlZd dlZd dlmZ d dlmZ d dl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'dZd(dZ	 d)d*dZ	 	 	 	 d+d,d#Zd-d%Zed&k    r e             dS dS ).    )annotationsN)defaultdict)Callable)Any)
GraphProto
ModelProto	NodeProtoboxz#0F9D58filledz#FFFFFF)shapecolorstyle	fontcolorr   octagonnamestrreturnc                *    t          j        |           S )N)jsondumps)r   s    e/root/.openclaw/workspace/chatterbox_venv_py311/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boolkwargsr   _NodeProducerc                     d fd}|S )	Nopr	   op_idintr   
pydot.Nodec                   | 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inputr   outputpydotNoder$   
doc_stringset_URL)
r*   r+   	node_nameiinput_r4   noder#   r%   r'   s
           r   really_get_op_nodez-GetOpNodeProducer.<locals>.really_get_op_node7   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*   r	   r+   r,   r   r-    )r%   r'   r=   s   `` r   GetOpNodeProducerr?   4   s/           r   LRgraphr   
str | Nonerankdirnode_producer_NodeProducer | None	pydot.Dotc                   |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%   )rC   label   r>   )r?   OP_STYLEr5   Dotr   r,   r2   r<   add_noder3   r6   r   r   
BLOB_STYLEadd_edgeEdger4   )rA   r   rC   rD   r%   pydot_graphpydot_nodespydot_node_countsr+   r*   op_node
input_name
input_nodeoutput_nameoutput_nodes                  r   GetPydotGraphrX   I   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   Nonec            
        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.)r\   defaultr^   z--embed_docstring
store_truez;Embed docstring as javascript alert. Useful for SVG format.)actionr^   rbr%   )r   rC   rD   r>   )argparseArgumentParseradd_argumentr   
parse_argsr   openr3   readParseFromStringrX   rA   r   rC   r?   r%   rJ   	write_dotr4   )parserargsmodelfidcontentrP   s         r   mainrp   r   s   $1BCCCF
'	     (	     5	     J    
 DLLE	dj$		 '3((**g&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '  [' 
 
 0
4<
 
	  K $+&&&&&s   ?*C55C9<C9__main__)r   r   r   r   )r   r   r   r   )F)r%   r&   r'   r   r   r(   )Nr@   NF)rA   r   r   rB   rC   r   rD   rE   r%   r&   r   rF   )r   rY   )
__future__r   rc   r   collectionsr   collections.abcr   typingr   r5   onnxr   r   r	   rJ   rM   r,   r6   r(   r   r$   r?   rX   rp   __name__r>   r   r   <module>rx      sk    # " " " " "   # # # # # # $ $ $ $ $ $        2 2 2 2 2 2 2 2 2 2 	  y!
)S)5:56   
    "    . *.!& & & & &R&' &' &' &'R zDFFFFF r   