
    h*                         S SK r S SKrS SKrS SKJrJr  S SKJrJrJ	r	J
r
JrJr  S SKJr  S SKrS SKJrJrJr  \R$                  " 5       r " S S5      r " S S	5      r " S
 S5      r " S S5      rg)    N)OrderedDictdefaultdict)IOAnyDictListOptionalSet)tabulate)
GraphProtodefshelperc                   D    \ rS rSrSS jrS\R                  SS4S jrSrg)	AttrCoverage   returnNc                 0    S U l         [        5       U l        g N)namesetvaluesselfs    [/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/report/coverage.py__init__AttrCoverage.__init__   s    #'	 #    attrc                    U R                   S UR                   1;   d   eUR                   U l         [        R                  " U5      n[        U[        5      (       a  [        U5      nU R                  R                  [        U5      5        g r   )	r   r   get_attribute_value
isinstancelisttupler   addstr)r   r   values      r   r$   AttrCoverage.add   sd    yyT499----II	**40 eT""%LEE
#r   )r   r   r   N)	__name__
__module____qualname____firstlineno__r   onnxAttributeProtor$   __static_attributes__ r   r   r   r      s     &	$++ 	$ 	$r   r   c                   D    \ rS rSrSS jrS\R                  SS4S jrSrg)	NodeCoverage$   r   Nc                 :    S U l         [        [        5      U l        g r   )op_typer   r   attr_coveragesr   s    r   r   NodeCoverage.__init__%   s    &*7B<7Pr   nodec                 l   U R                   S UR                   4;   d   eU R                   cN  UR                   U l         U R                   c   e[        R                  " U R                   UR                  S9U l        UR
                   H+  nU R                  UR                     R                  U5        M-     g )N)domain)	r5   r   
get_schemar:   schema	attributer6   r   r$   )r   r8   r   s      r   r$   NodeCoverage.add)   s    ||dll3333<<<<DL<<+++//$,,t{{KDKNND		*..t4 #r   )r6   r5   r<   r(   )	r)   r*   r+   r,   r   r-   	NodeProtor$   r/   r0   r   r   r2   r2   $   s    Q	5 	54 	5r   r2   c                   D    \ rS rSrSS jrS\R                  SS4S jrSrg)	ModelCoverage5   r   Nc                 H    S U l         S U l        [        [        5      U l        g r   )r   graphr   r2   node_coveragesr   s    r   r   ModelCoverage.__init__6   s    #'	+/
7B<7Pr   modelc                 n   U R                   S UR                  R                   4;   d   eU R                   c;  UR                  R                   U l         U R                   c   eUR                  U l        UR                  R                   H+  nU R                  UR                     R                  U5        M-     g r   )r   rD   r8   rE   r5   r$   )r   rG   r8   s      r   r$   ModelCoverage.add;   s    yyT5;;#3#3444499((DI99(((DJKK$$D-11$7 %r   )rD   r   rE   r(   )	r)   r*   r+   r,   r   r-   
ModelProtor$   r/   r0   r   r   rA   rA   5   s    Q
	8 	8T 	8r   rA   c                      \ rS rSrSS jrS\R                  S\SS4S jrS\R                  S\SS4S	 jr
S
\R                  S\S\SS4S jrS\R                  S\S\SS4S jrS\\   SS4S jrS\\   S\\\      S\\   SS4S jrSrg)CoverageG   r   Nc                     [        [        5      [        [        5      S.U l        [        [        5      [        [        5      S.U l        g )N)loadedpassed)r   r2   bucketsrA   modelsr   s    r   r   Coverage.__init__H   s6    !,/!,/<

 "-0!-0<
r   r8   bucketc                 Z    U R                   U   UR                     R                  U5        g r   )rQ   r5   r$   )r   r8   rT   s      r   add_nodeCoverage.add_nodeR   s"    VT\\*..t4r   rD   c                 L    UR                    H  nU R                  X25        M     g r   )r8   rV   )r   rD   rT   r8   s       r   	add_graphCoverage.add_graphU   s    JJDMM$' r   rG   is_modelc                     U R                  UR                  U5        U(       a6  U R                  U   UR                  R                     R	                  U5        g g r   )rY   rD   rR   r   r$   )r   rG   rT   r[   s       r   	add_modelCoverage.add_modelY   sB    u{{F+KK 0 0155e< r   protoc                 j    [        U[        R                  5      (       d   eU R                  XU5        g r   )r!   r-   rJ   r]   )r   r_   rT   r[   s       r   	add_protoCoverage.add_proto_   s'    %1111uh/r   writerc           
         UR                  S5        UR                  S[        U R                  S   5       S[        U R                  S   5       S[        [        5       S35        UR                  S5        / n/ n/ n/ nU R                  S   R	                  5        GH  nUR
                  R	                  5        Vs/ s H'  nUR                   S[        UR                  5       3PM)     nnUR                  R                   V	s/ s H  n	XR
                  ;  d  M  U	 S	3PM     n
n	[        U5      [        U
5      -   nU(       a   [        R                  R                  U5      nOS
nUR                  UR                  U/5        UR                  UR                  5        GM     UR                  [        USS/SS95        UR                  S5        [        R                   R#                  S5      b  U R%                  XCU5        g g s  snf s  sn	f )Nz%---------- onnx coverage: ----------
z!Operators (passed/loaded/total): rP   /rO   
z%------------------------------------
z: z: 0zNo attributesOperatorzAttributes
(name: #values)plain)headerstablefmtCSVDIR)writelenrQ   _all_schemasr   r6   r   r<   
attributessortedoslinesepjoinappendr5   r   environget
report_csv)r   rc   rowsrP   all_opsexperimentalop_covattr_covcovered_attrsr   uncovered_attrsattrsattrs_columns                r   report_textCoverage.report_textc   s   =>/DLL4J0K/LAcRVR^R^_gRhNiMjjklop|l}k~  A  B	
 	=>"$ll8,335F !' 5 5 < < > >H ==/C$8#9: >   #MM444D444 4&4  
 =)F?,CCE!zzu5.KK67MM&..)! 6" 	#%BC 	
 	T::>>(#/OOG\: 01s   <.HH		H	ry   rP   rz   c                 <   [          H  nUR                  S;   d  M  UR                  UR                  5        UR                  [
        R                  R                  R                  :X  d  Md  UR                  UR                  5        M     UR                  5         [        R                  R                  [        [        R                  R                  S5      5      S5      n[        R                  R                  [        [        R                  R                  S5      5      S5      n[!        5       n[!        5       n/ n	[        R                  R#                  U5      (       ap  [%        U5       n
[&        R(                  " U
5      nUR*                  (       d   e[-        UR*                  5      n	U H  nUS   nUS	 X[        U5      '   M     S S S 5        [        R                  R#                  U5      (       aH  [%        U5       n[&        R(                  " U5      nU H  nUS   nUS	 X[        U5      '   M     S S S 5        [        R                  R                  S5      nU	SS  n[%        US	5       n
SU	;  a  U	R                  S5        UU	;  a  U	R                  [        U5      5        OUR/                  [        U5      5        [&        R0                  " XS
9nUR3                  5         U H^  nUnUU;   a  US-   nUU;  a  [!        5       UU'   U H  nSUU   U'   M     UU;   a  SUU   [        U5      '   MM  SUU   [        U5      '   M`     0 nSU;   a  US   nUS	 [5        U5       S[5        U5       S3U[        U5      '   SUS'   U H(  n[        U5      UU   S'   UR7                  UU   5        M*     UR7                  U5        S S S 5        [%        US	5       nSU	S'   [&        R0                  " XS
9nUR3                  5         SnU R8                   H  nU R8                  U    H  nSnU R8                  U   U   R:                   H  nUU;   d  M  US-  nM     SnUS:X  a  XR8                  S   ;   a  MQ  SnUS-  nX;  a  [!        5       X'   U H
  nSX   U'   M     [        U S[5        U R8                  U   U   R:                  5       SU 35      X   [        U5      '   M     M     WR=                  5         SU;   a  US   nUS	 [        U5      U;   a  U[        U5      	 [5        U R8                  S   5       SU S3U[        U5      '   SUS'   U H  nXU   S'   UR7                  X   5        M     UR7                  U5        S S S 5        [%        [        R                  R                  [        [        R                  R                  S5      5      S5      S	5       n[&        R>                  " U5      nUR7                  S[@        R@                  RC                  5       RE                  5       RG                  SS5      /5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN*= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       g = f)N>    ai.onnxrk   z	nodes.csvz
models.csvOpModelBACKEND   w)
fieldnamesz (Experimental)zSkipped!zPassed!zFailed!Summaryre   z node tests passedr   rO   rP   z nodes covered: z model tests passedzmetadata.csvzLatest UpdateT )$rn   r:   rt   r   support_levelr   OpSchemaSupportTypeEXPERIMENTALsortrq   pathrs   r%   ru   rv   r   isfileopencsv
DictReaderr   r"   remove
DictWriterwriteheaderrm   writerowrR   rE   clearrc   datetimenow	isoformatreplace)r   ry   rP   rz   r<   
nodes_pathmodels_pathexisting_nodesexisting_models
frameworks
nodes_filereaderrowopmodels_filerG   backendother_frameworksnode_writerr8   	node_nameother_framework	summariesmodel_writer
num_modelsrT   num_coveredmsgmetadata_filemetadata_writers                                 r   rw   Coverage.report_csv   s    #F}}/v{{+''4==+D+D+Q+QQ ''4	 #
 	WW\\

x();

 ggll

x()<
 <G=<GM "
77>>*%%j!Z
3((((!&"3"34
!CTBD	.13r7+ "	 " 77>>+&&k"k4!CLEG25CJ/ " # **..+%ab>*c"j:%!!$'j(!!#g,/ ''G5..KK##% 	<' $'8 8IN20;N9-+;EOy1/B ,<6>>GN9-c'l;>GN9-c'l;   )+IN**95	"9-),VQs7|nDV&WIc'l#'IdO&-0Yt$T*$$^D%9: '   +? #@ +s#{#JqM>>+ML$$&J++![[0E"#K $F 3E : I I6>'1,K !J
 $C) KK$99$'!OJ31<./?OFPO2?C 0@;>&-qT[[-@-G-V-V)W(XXhilhmn<O*3w<8' 1 &. OOO++I6	#I.7|y(c'l+ t{{8,-.a
|;NO G "+Ig(27&w/%%o&<= ) !!),U $V GGLLRZZ^^H56G
 !jj7O$$ ("3"3"7"7"9"C"C"E"M"McSV"WX
 
y "! #" #"@ $#V
 
sG   +AY?5Y,EY)A2Y;D5Y;A$Z
Y
Y&)
Y8;
Z

Z)rQ   rR   r(   )r)   r*   r+   r,   r   r-   r?   r%   rV   r   rY   rJ   boolr]   ra   r   r   r   r	   rw   r/   r0   r   r   rL   rL   G   s    
5T^^ 5S 5T 5(t ( ( (=t = =t =PT =0t 0 0t 0PT 0%;"S' %;d %;^vCyv*.x}*=vMQRUYv	vr   rL   )r   r   rq   collectionsr   r   typingr   r   r   r   r	   r
   r   r-   r   r   r   get_all_schemasrn   r   r2   rA   rL   r0   r   r   <module>r      s]   
   	 0 5 5   ) )##%$ $"5 5"8 8$A Ar   