
    Ng*                         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m	Z	m
Z
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 )    N)OrderedDictdefaultdict)IOAnyDictListOptionalSet)tabulate)
GraphProtodefshelperc                   0    e Zd ZddZdej        ddfdZdS )AttrCoveragereturnNc                 :    d | _         t                      | _        d S N)namesetvaluesselfs    ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/backend/test/report/coverage.py__init__zAttrCoverage.__init__   s    #'	 #    attrc                     | 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   r   N)__name__
__module____qualname__r   onnxAttributeProtor"    r   r   r   r      sM        & & & &	$+ 	$ 	$ 	$ 	$ 	$ 	$ 	$r   r   c                   0    e Zd ZddZdej        ddfdZdS )NodeCoverager   Nc                 F    d | _         t          t                    | _        d S r   )op_typer   r   attr_coveragesr   s    r   r   zNodeCoverage.__init__%   s    &*7B<7P7Pr   nodec                 
   | 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_schemar3   schema	attributer0   r   r"   )r   r1   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   r%   )r&   r'   r(   r   r)   	NodeProtor"   r+   r   r   r-   r-   $   sP        Q Q Q Q	5 	54 	5 	5 	5 	5 	5 	5r   r-   c                   0    e Zd ZddZdej        ddfdZdS )ModelCoverager   Nc                 T    d | _         d | _        t          t                    | _        d S r   )r   graphr   r-   node_coveragesr   s    r   r   zModelCoverage.__init__6   s&    #'	+/
7B<7P7Pr   modelc                     | j         d |j        j         fv sJ | j         &|j        j         | _         | j         J |j        | _        |j        j        D ]'}| j        |j                                     |           (d S r   )r   r;   r1   r<   r/   r"   )r   r=   r1   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   r%   )r&   r'   r(   r   r)   
ModelProtor"   r+   r   r   r9   r9   5   sP        Q Q Q Q
	8 	8T 	8 	8 	8 	8 	8 	8r   r9   c                       e Zd ZddZdej        deddfdZdej        deddfdZ	d	ej
        ded
eddfdZdej
        ded
eddfdZdee         ddfdZdee         deee                  dee         ddfdZdS )Coverager   Nc                     t          t                    t          t                    d| _        t          t                    t          t                    d| _        d S )N)loadedpassed)r   r-   bucketsr9   modelsr   s    r   r   zCoverage.__init__H   sP    !,//!,//<
 <

 "-00!-00<
 <
r   r1   bucketc                 \    | j         |         |j                                     |           d S r   )rE   r/   r"   )r   r1   rG   s      r   add_nodezCoverage.add_nodeR   s*    VT\*..t44444r   r;   c                 F    |j         D ]}|                     ||           d S r   )r1   rI   )r   r;   rG   r1   s       r   	add_graphzCoverage.add_graphU   s4    J 	( 	(DMM$''''	( 	(r   r=   is_modelc                     |                      |j        |           |r2| j        |         |j        j                                     |           d S d S r   )rK   r;   rF   r   r"   )r   r=   rG   rL   s       r   	add_modelzCoverage.add_modelY   sU    u{F+++ 	=K 0155e<<<<<	= 	=r   protoc                 l    t          |t          j                  sJ |                     |||           d S r   )r   r)   r?   rN   )r   rO   rG   rL   s       r   	add_protozCoverage.add_proto_   s6    %11111ufh/////r   writerc           
        
 |                     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): rD   /rC   
z%------------------------------------
c                 J    g | ] }|j          d t          |j                   !S )z: )r   lenr   ).0attr_covs     r   
<listcomp>z(Coverage.report_text.<locals>.<listcomp>o   sB        =::C$8$8::  r   c                 ,    g | ]}|j         v| d S )z: 0)r0   )rX   r   op_covs     r   rZ   z(Coverage.report_text.<locals>.<listcomp>s   s7       v444 444r   zNo attributesOperatorzAttributes
(name: #values)plain)headerstablefmtCSVDIR)writerW   rE   _all_schemasr   r0   r5   
attributessortedoslinesepjoinappendr/   r   environget
report_csv)r   rR   rowsrD   all_opsexperimentalcovered_attrsuncovered_attrsattrsattrs_columnr\   s             @r   report_textzCoverage.report_textc   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   rn   rD   ro   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 ra   z	nodes.csvz
models.csvOpModelBACKEND   w)
fieldnamesz (Experimental)zSkipped!zPassed!zFailed!SummaryrT   z node tests passedr   rC   rD   z nodes covered: z model tests passedzmetadata.csvzLatest UpdateT )$rc   r3   ri   r   support_levelr   OpSchemaSupportTypeEXPERIMENTALsortrf   pathrh   r#   rj   rk   r   isfileopencsv
DictReaderr}   r    remove
DictWriterwriteheaderrW   writerowrF   r<   clearrR   datetimenow	isoformatreplace)r   rn   rD   ro   r5   
nodes_pathmodels_pathexisting_nodesexisting_models
frameworks
nodes_filereaderrowopmodels_filer=   backendother_frameworksnode_writerr1   	node_nameother_framework	summariesmodel_writer
num_modelsrG   num_coveredmsgmetadata_filemetadata_writers                                 r   rl   zCoverage.report_csv   s{    # 	5 	5F}//v{+++'4=+D+QQQ ''444W\\
x(());
 

 gll
x(())<
 
 <G==<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 G "+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.[[ [r%   )r&   r'   r(   r   r)   r7   r#   rI   r   rK   r?   boolrN   rQ   r   rt   r   r	   rl   r+   r   r   rA   rA   G   s[       
 
 
 
5T^ 5S 5T 5 5 5 5(t ( ( ( ( ( (=t = =t =PT = = = =0t 0 0t 0PT 0 0 0 0%;"S' %;d %; %; %; %;^vCyv*.x}*=vMQRUYv	v v v v v vr   rA   )r   r   rf   collectionsr   r   typingr   r   r   r   r	   r
   r   r)   r   r   r   get_all_schemasrc   r   r-   r9   rA   r+   r   r   <module>r      sg  
 


  				 0 0 0 0 0 0 0 0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5        ) ) ) ) ) ) ) ) ) )#t#%%$ $ $ $ $ $ $ $"5 5 5 5 5 5 5 5"8 8 8 8 8 8 8 8$A A A A A A A A A Ar   