
    bIg*                        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y)    )annotationsN)OrderedDictdefaultdict)IOAny)tabulate)
GraphProtodefshelperc                      e Zd ZddZddZy)AttrCoveragec                0    d | _         t               | _        y N)namesetvaluesselfs    ^/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/backend/test/report/coverage.py__init__zAttrCoverage.__init__   s     $	 #    c                   | j                   d |j                   hv sJ |j                   | _         t        j                  |      }t        |t              rt        |      }| j                  j                  t        |             y r   )	r   r   get_attribute_value
isinstancelisttupler   addstr)r   attrvalues      r   r   zAttrCoverage.add   sa    yyT499----II	**40 eT"%LEE
#r   NreturnNone)r   zonnx.AttributeProtor"   r#   __name__
__module____qualname__r   r    r   r   r   r      s    &	$r   r   c                      e Zd ZddZddZy)NodeCoveragec                :    d | _         t        t              | _        y r   )op_typer   r   attr_coveragesr   s    r   r   zNodeCoverage.__init__&   s    #'7B<7Pr   c                d   | j                   d |j                   fv sJ | j                   O|j                   | _         | j                   J t        j                  | j                   |j                        | _        |j
                  D ]*  }| j                  |j                     j                  |       , y )N)domain)	r,   r
   
get_schemar/   schema	attributer-   r   r   )r   noder   s      r   r   zNodeCoverage.add*   s    ||dll3333<<<<DL<<+++//$,,t{{KDKNN 	5D		*..t4	5r   Nr!   )r3   onnx.NodeProtor"   r#   r$   r(   r   r   r*   r*   %   s    Q	5r   r*   c                      e Zd ZddZddZy)ModelCoveragec                H    d | _         d | _        t        t              | _        y r   )r   graphr   r*   node_coveragesr   s    r   r   zModelCoverage.__init__7   s     $	(,
7B<7Pr   c                b   | j                   d |j                  j                   fv sJ | j                   :|j                  j                   | _         | j                   J |j                  | _        |j                  j                  D ]*  }| j                  |j                     j                  |       , y r   )r   r8   r3   r9   r,   r   )r   modelr3   s      r   r   zModelCoverage.add<   s    yyT5;;#3#3444499((DI99(((DJKK$$ 	8D-11$7	8r   Nr!   )r;   onnx.ModelProtor"   r#   r$   r(   r   r   r6   r6   6   s    Q
	8r   r6   c                  T    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	y)Coveragec                    t        t              t        t              d| _        t        t              t        t              d| _        y )N)loadedpassed)r   r*   bucketsr6   modelsr   s    r   r   zCoverage.__init__I   s6    !,/!,/<

 "-0!-0<
r   c                Z    | j                   |   |j                     j                  |       y r   )rB   r,   r   )r   r3   buckets      r   add_nodezCoverage.add_nodeS   s"    VT\\*..t4r   c                J    |j                   D ]  }| j                  ||        y r   )r3   rF   )r   r8   rE   r3   s       r   	add_graphzCoverage.add_graphV   s#    JJ 	(DMM$'	(r   c                    | j                  |j                  |       |r6| j                  |   |j                  j                     j	                  |       y y r   )rH   r8   rC   r   r   )r   r;   rE   is_models       r   	add_modelzCoverage.add_modelZ   sB    u{{F+KK 0 0155e< r   c                b    t        |t        j                        sJ | j                  |||       y r   )r   onnx
ModelProtorK   )r   protorE   rJ   s       r   	add_protozCoverage.add_proto`   s&    %111ufh/r   c           
        |j                  d       |j                  dt        | j                  d          dt        | j                  d          dt        t               d       |j                  d       g }g }g }g }| j                  d   j	                         D ]  }|j
                  j	                         D cg c]&  }|j                   dt        |j                         ( }}|j                  j                  D 	cg c]  }	|	|j
                  vr|	 d	 }
}	t        |      t        |
      z   }|r t        j                  j                  |      }nd
}|j                  |j                  |g       |j                  |j                          |j                  t        |ddgd             |j                  d       t        j                   j#                  d      | j%                  |||       y y c c}w c c}	w )Nz%---------- onnx coverage: ----------
z!Operators (passed/loaded/total): rA   /r@   
z%------------------------------------
z: z: 0zNo attributesOperatorzAttributes
(name: #values)plain)headerstablefmtCSVDIR)writelenrB   _all_schemasr   r-   r   r1   
attributessortedoslinesepjoinappendr,   r   environget
report_csv)r   writerrowsrA   all_opsexperimentalop_covattr_covcovered_attrsr   uncovered_attrsattrsattrs_columns                r   report_textzCoverage.report_textd   s   =>/DLL4J0K/LAcRVR^R^_gRhNiMjjklop|l}k~  A  B	
 	=>"$ll8,335 	*F !' 5 5 < < > ==/C$8#9:M  #MM44v444 &O 
 =)F?,CCE!zzu5.KK67MM&..)!	*" 	#%BC 	
 	T::>>(#/OOGV\: 01s   ;+G5 G:c                   t         D ]y  }|j                  dv s|j                  |j                         |j                  t
        j                  j                  j                  k(  s_|j                  |j                         { |j                          t        j                  j                  t        t        j                  j                  d            d      }t        j                  j                  t        t        j                  j                  d            d      }t!               }t!               }g }	t        j                  j#                  |      rjt%        |      5 }
t'        j(                  |
      }|j*                  sJ t-        |j*                        }	|D ]  }|d   }|d= ||t        |      <    	 d d d        t        j                  j#                  |      rGt%        |      5 }t'        j(                  |      }|D ]  }|d   }|d= ||t        |      <    	 d d d        t        j                  j                  d      }|	dd  }t%        |d	      5 }
d|	vr|	j                  d       ||	vr|	j                  t        |             n|j/                  t        |             t'        j0                  |
|	
      }|j3                          |D ]T  }|}||v r|dz   }||vrt!               ||<   |D ]
  }d||   |<    ||v rd||   t        |      <   Dd||   t        |      <   V i }d|v r|d   }|d= t5        |       dt5        |       d|t        |      <   d|d<   |D ]'  }t        |      ||   d<   |j7                  ||          ) |j7                  |       d d d        t%        |d	      5 }d|	d<   t'        j0                  ||	
      }|j3                          d}| j8                  D ]  }| j8                  |   D ]  }d}| j8                  |   |   j:                  D ]  }||v s|dz  } d}|dk(  r|| j8                  d   v rId}|dz  }||vrt!               ||<   |D ]
  }d||   |<    t        | dt5        | j8                  |   |   j:                         d|       ||   t        |      <     j=                          d|v r|d   }|d= t        |      |v r|t        |      = t5        | j8                  d          d| d|t        |      <   d|d<   |D ]  }|||   d<   |j7                  ||            |j7                  |       d d d        t%        t        j                  j                  t        t        j                  j                  d            d      d	      5 }t'        j>                  |      }|j7                  dt@        j@                  jC                         jE                         jG                  dd      g       d d d        y # 1 sw Y   [xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N>   ai.onnx rX   z	nodes.csvz
models.csvOpModelBACKEND   w)
fieldnamesz (Experimental)zSkipped!zPassed!zFailed!SummaryrR   z node tests passedr   r@   rA   z nodes covered: z model tests passedzmetadata.csvzLatest UpdateT )$r[   r/   ra   r   support_levelr
   OpSchemaSupportTypeEXPERIMENTALsortr^   pathr`   r   rb   rc   r   isfileopencsv
DictReaderrx   r   remove
DictWriterwriteheaderrZ   writerowrC   r9   clearre   datetimenow	isoformatreplace)r   rg   rA   rh   r1   
nodes_pathmodels_pathexisting_nodesexisting_models
frameworks
nodes_filereaderrowopmodels_filer;   backendother_frameworksnode_writerr3   	node_nameother_framework	summariesmodel_writer
num_modelsrE   num_coveredmsgmetadata_filemetadata_writers                                 r   rd   zCoverage.report_csv   s=    # 	5F}}/v{{+''4==+D+D+Q+QQ ''4		5
 	WW\\

x();

 ggll

x()<
 <G=<GM "
77>>*%j! 2Z
3((((!&"3"34
! 2CTBD	.1N3r7+2	2 77>>+&k" 6k4! 6CLEG25OCJ/66 **..+%ab>*c" 	,j:%!!$'j(!!#g,/ ''G5..
KK##% H 	<' $'8 8IN20;N9-+; PEOy1/BP6>>GN9-c'l;>GN9-c'l;H )+IN**95	"9-),VQs7|nDV&WIc'l#'IdO& ;-0Yt$T*$$^D%9:;   +?	,@ +s# *	-{#JqM>>+*ML$$&J++ ![[0 E"#K $F 3E : I I -6>'1,K-
 $C) DKK$99$'!OJO31<./? QOFPOE2?CQ;>&-qT[[-@-G-V-V)W(XXhilhmn<OE*3w<8'. OOO++I6	#I.7|y(c'l+t{{8,-.a
|;NO c'l# "+Ig( >27&w/%%oe&<=> !!),U*	-V GGLLRZZ^^H56G
 	 !jj7O$$ ("3"3"7"7"9"C"C"E"M"McSV"WX	 	y2 26 6	, 	,@*	- *	-V	 	sG   AX(3XEX)-A5X6#D(X6#A#YXX&)X36X?YNr!   )r3   r4   rE   r   r"   r#   )r8   zonnx.GraphProtorE   r   r"   r#   )r;   r<   rE   r   rJ   boolr"   r#   )rO   r<   rE   r   rJ   r   r"   r#   )re   zIO[str]r"   r#   )rg   	list[str]rA   zlist[str | None]rh   r   r"   r#   )
r%   r&   r'   r   rF   rH   rK   rP   ro   rd   r(   r   r   r>   r>   H   sK    
5(=0%;^v v*:vJSv	vr   r>   )
__future__r   r   r   r^   collectionsr   r   typingr   r   r   rM   r	   r
   r   get_all_schemasr[   r   r*   r6   r>   r(   r   r   <module>r      s_    # 
  	 0    ) )#t##%$ $"5 5"8 8$A Ar   