
    /jA*                        d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	m
Z
 d dlmZ d dlZd dlmZmZmZ  ej                    Z G d d          Z G d	 d
          Z G d d          Z G d d          ZdS )    )annotationsN)OrderedDictdefaultdict)IOAny)tabulate)
GraphProtodefshelperc                      e Zd ZddZd	dZdS )
AttrCoveragereturnNonec                :    d | _         t                      | _        d S N)namesetvaluesselfs    f/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/backend/test/report/coverage.py__init__zAttrCoverage.__init__   s     $	 #    attronnx.AttributeProtoc                    | j         d |j         hv sJ |j         | _         t          j        |          }t          |t                    rt          |          }| j                            t          |                     d S r   )	r   r   get_attribute_value
isinstancelisttupler   addstr)r   r   values      r   r!   zAttrCoverage.add   st    yT49-----I	*400 eT"" 	!%LLEE

#####r   Nr   r   )r   r   r   r   __name__
__module____qualname__r   r!    r   r   r   r      s<        & & & &	$ 	$ 	$ 	$ 	$ 	$r   r   c                      e Zd ZddZd	dZdS )
NodeCoverager   r   c                F    d | _         t          t                    | _        d S r   )op_typer   r   attr_coveragesr   s    r   r   zNodeCoverage.__init__&   s    #'7B<7P7Pr   nodeonnx.NodeProtoc                
   | j         d |j         fv sJ | j         :|j         | _         | j         J t          j        | j         |j                  | _        |j        D ]'}| j        |j                                     |           (d S )N)domain)	r-   r
   
get_schemar2   schema	attributer.   r   r!   )r   r/   r   s      r   r!   zNodeCoverage.add*   s    |dl33333<<DL<+++/$,t{KKKDKN 	5 	5D	*..t4444	5 	5r   Nr$   )r/   r0   r   r   r%   r)   r   r   r+   r+   %   s@        Q Q Q Q	5 	5 	5 	5 	5 	5r   r+   c                      e Zd ZddZd	dZdS )
ModelCoverager   r   c                T    d | _         d | _        t          t                    | _        d S r   )r   graphr   r+   node_coveragesr   s    r   r   zModelCoverage.__init__7   s&     $	(,
7B<7P7Pr   modelonnx.ModelProtoc                    | j         d |j        j         fv sJ | j         &|j        j         | _         | j         J |j        | _        |j        j        D ]'}| j        |j                                     |           (d S r   )r   r9   r/   r:   r-   r!   )r   r;   r/   s      r   r!   zModelCoverage.add<   s    yT5;#3444449(DI9(((DJK$ 	8 	8D-11$7777	8 	8r   Nr$   )r;   r<   r   r   r%   r)   r   r   r7   r7   6   s@        Q Q Q Q
	8 	8 	8 	8 	8 	8r   r7   c                  F    e Zd ZddZddZddZd dZd!dZd"dZd#dZ	dS )$Coverager   r   c                    t          t                    t          t                    d| _        t          t                    t          t                    d| _        d S )N)loadedpassed)r   r+   bucketsr7   modelsr   s    r   r   zCoverage.__init__I   sP    !,//!,//<
 <

 "-00!-00<
 <
r   r/   r0   bucketr"   c                \    | j         |         |j                                     |           d S r   )rC   r-   r!   )r   r/   rE   s      r   add_nodezCoverage.add_nodeS   s*    VT\*..t44444r   r9   onnx.GraphProtoc                F    |j         D ]}|                     ||           d S r   )r/   rG   )r   r9   rE   r/   s       r   	add_graphzCoverage.add_graphV   s4    J 	( 	(DMM$''''	( 	(r   r;   r<   is_modelboolc                    |                      |j        |           |r2| j        |         |j        j                                     |           d S d S r   )rJ   r9   rD   r   r!   )r   r;   rE   rK   s       r   	add_modelzCoverage.add_modelZ   sU    u{F+++ 	=K 0155e<<<<<	= 	=r   protoc                l    t          |t          j                  sJ |                     |||           d S r   )r   onnx
ModelProtorN   )r   rO   rE   rK   s       r   	add_protozCoverage.add_proto`   s6    %11111ufh/////r   writerIO[str]c           
       
 |                     d           |                     dt          | j        d                    dt          | j        d                    dt          t                     d           |                     d           g }g }g }g }| j        d                                         D ]
d 
j                                        D             }
fd	
j        j        D             }t          |          t          |          z   }|r t          j
                            |          }	nd
}	|                    
j        |	g           |                    
j                   |                     t          |ddgd                     |                     d           t          j                            d          |                     |||           d S d S )Nz%---------- onnx coverage: ----------
z!Operators (passed/loaded/total): rB   /rA   
z%------------------------------------
c                J    g | ] }|j          d t          |j                   !S )z: )r   lenr   ).0attr_covs     r   
<listcomp>z(Coverage.report_text.<locals>.<listcomp>p   sB        =::C$8$8::  r   c                ,    g | ]}|j         v| d S )z: 0)r.   )r[   r   op_covs     r   r]   z(Coverage.report_text.<locals>.<listcomp>t   s7       v444 444r   zNo attributesOperatorzAttributes
(name: #values)plain)headerstablefmtCSVDIR)writerZ   rC   _all_schemasr   r.   r4   
attributessortedoslinesepjoinappendr-   r   environget
report_csv)r   rT   rowsrB   all_opsexperimentalcovered_attrsuncovered_attrsattrsattrs_columnr_   s             @r   report_textzCoverage.report_textd   s#   =>>> BDL4J0K0K  B  BcRVR^_gRhNiNi  B  Blop|l}l}  B  B  B	
 	
 	
 	=>>>"$l8,3355 	* 	*F  & 5 < < > >  M   "M4  O
 =))F?,C,CCE /!zu55.KK6777MM&.))))#%BC   	
 	
 	
 	T:>>(##/OOGV\::::: 0/r   rq   	list[str]rB   list[str | None]rr   c                   t           D ]^}|j        dv rS|                    |j                   |j        t
          j        j        j        k    r|                    |j                   _|	                                 t          j                            t          t          j                            d                    d          }t          j                            t          t          j                            d                    d          }t!                      }t!                      }g }	t          j                            |          r{t%          |          5 }
t'          j        |
          }|j        sJ t-          |j                  }	|D ]}|d         }|d= ||t          |          <    	 d d d            n# 1 swxY w Y   t          j                            |          r^t%          |          5 }t'          j        |          }|D ]}|d         }|d= ||t          |          <    	 d d d            n# 1 swxY w Y   t          j                            d          }|	dd          }t%          |d	          5 }
d|	vr|	                    d           ||	vr#|	                    t          |                     n"|                    t          |                     t'          j        |
|	
          }|                                 |D ]g}|}||v r|dz   }||vr!t!                      ||<   |D ]}d||         |<   ||v rd||         t          |          <   Od||         t          |          <   hi }d|v r|d         }|d= t5          |           dt5          |           d|t          |          <   d|d<   |D ]5}t          |          ||         d<   |                    ||                    6|                    |           d d d            n# 1 swxY w Y   t%          |d	          5 }d|	d<   t'          j        ||	
          }|                                 d}| j        D ]}| j        |         D ]}d}| j        |         |         j        D ]}||v r|dz  }d}|dk    r|| j        d         v r@d}|dz  }||vr!t!                      ||<   |D ]}d||         |<   t          | dt5          | j        |         |         j                   d|           ||         t          |          <   |                                 d|v r|d         }|d= t          |          |v r|t          |          = t5          | j        d                    d| d|t          |          <   d|d<   |D ](}|||         d<   |                    ||                    )|                    |           d d d            n# 1 swxY w Y   t%          t          j                            t          t          j                            d                    d          d	          5 }t'          j        |          }|                    dt@          j         !                                "                                #                    dd          g           d d d            d S # 1 swxY w Y   d S )N>   ai.onnx rd   z	nodes.csvz
models.csvOpModelBACKEND   w)
fieldnamesz (Experimental)zSkipped!zPassed!zFailed!SummaryrW   z node tests passedr   rA   rB   z nodes covered: z model tests passedzmetadata.csvzLatest UpdateT )$rf   r2   rl   r   support_levelr
   OpSchemaSupportTypeEXPERIMENTALsortri   pathrk   r"   rm   rn   r   isfileopencsv
DictReaderr   r   remove
DictWriterwriteheaderrZ   writerowrD   r:   clearrT   datetimenow	isoformatreplace)r   rq   rB   rr   r4   
nodes_pathmodels_pathexisting_nodesexisting_models
frameworks
nodes_filereaderrowopmodels_filer;   backendother_frameworksnode_writerr/   	node_nameother_framework	summariesmodel_writer
num_modelsrE   num_coveredmsgmetadata_filemetadata_writers                                 r   ro   zCoverage.report_csv   sg    # 	5 	5F}//v{+++'4=+D+QQQ ''444W\\#bjnnX&>&>"?"?MM
gll3rz~~h'?'?#@#@,OO;F==<GMM "
7>>*%% 	2j!! 2Z
33((((!&"344
! 2 2CTBD	.1N3r77++2	2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 7>>+&& 	6k"" 6k44! 6 6CLEG25OCJJ//66 6 6 6 6 6 6 6 6 6 6 6 6 6 6 *..++%abb>*c"" 	,j:%%!!$'''j((!!#g,,//// ''G555.
KKKK##%%% H H 	<'' $'8 8IN220;N9-+; P PEOy1/BB6>>>GN9-c'll;;>GN9-c'll;;(*IN***95	"9-),V&W&Ws7||&W&W&WIc'll#'IdO& ; ;-0YYt$T*$$^D%9::::  +++?	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,@ +s## *	-{#JqM>+*MMML$$&&&J+  ![0  E"#K $F 3E : I - -6>>'1,K $C)) DK$999$'!OJO331<./? Q QOFPOE2?CC;>&nnT[-@-G-V)W)Wnnilnn< <OE*3w<<88', OOO+++I6	#I.7||y((c'll+t{8,--OO
OOO c'll# "+Ig( > >27&w/%%oe&<====!!),,,U*	- *	- *	- *	- *	- *	- *	- *	- *	- *	- *	- *	- *	- *	- *	-V GLLRZ^^H5566GG
 
 	 !j77O$$ ("3"7"7"9"9"C"C"E"E"M"McSV"W"WX  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s^   AF<<G G 57H99H= H==FPPP0F?W;;W?W?A.[[ [Nr$   )r/   r0   rE   r"   r   r   )r9   rH   rE   r"   r   r   )r;   r<   rE   r"   rK   rL   r   r   )rO   r<   rE   r"   rK   rL   r   r   )rT   rU   r   r   )rq   rx   rB   ry   rr   rx   r   r   )
r&   r'   r(   r   rG   rJ   rN   rS   rw   ro   r)   r   r   r?   r?   H   s        
 
 
 
5 5 5 5( ( ( (= = = =0 0 0 0%; %; %; %;^r r r r r rr   r?   )
__future__r   r   r   ri   collectionsr   r   typingr   r   r   rQ   r	   r
   r   get_all_schemasrf   r   r+   r7   r?   r)   r   r   <module>r      sa   # " " " " " 



  				 0 0 0 0 0 0 0 0                ) ) ) ) ) ) ) ) ) )#t#%%$ $ $ $ $ $ $ $"5 5 5 5 5 5 5 5"8 8 8 8 8 8 8 8$} } } } } } } } } }r   