
    bIg(-                       U d dl mZ d dlZd dlmZmZmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ ddZdd	Zg ad
ed<   g ad
ed<   	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZddZddZedk(  r e        yy)    )annotationsN)IOAnySequence)AttributeProtodefsload)collect_snippets)load_model_tests)Runnerc                &    t        d | D              S )Nc              3  :   K   | ]  }|j                   d k(    yw
ai.onnx.mlN)domain).0ss     \/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/backend/test/stat_coverage.py	<genexpr>zis_ml.<locals>.<genexpr>   s     9Aqxx<'9s   )any)schemass    r   is_mlr      s    9999    c                    | j                  d       |r| j                  d       n| j                  d       | j                  d       | j                  d       | j                  d       | j                  d       y )Nz# Test Coverage Reportz (ONNX-ML Operators)
z (ONNX Core Operators)
z## Outlines
z,* [Node Test Coverage](#node-test-coverage)
z.* [Model Test Coverage](#model-test-coverage)
z2* [Overall Test Coverage](#overall-test-coverage)
write)fmls     r   gen_outlinesr      s_    GG$%		()	*+GGOGG;<GG=>GGABr   zSequence[str]common_coveredexperimental_coveredc                   t        h d      t               t        fd| D              at        fd| D              }t        fd|D              }t        fd| D              at        fd| D              }t        fd|D              }t        t              t        |      z   t        |      z
  }t        t              t        |      z   t        |      z
  }|j                  d       |j                  d	       |rR|j                  d
t        t               d| dt        t              t        |      z  dz  ddt        |       d	       n|j                  d       |rV|j                  dj                  t        t              |t        t              t        |      z  dz  t        |                   n|j                  d       g d}	t        |t        |g}
|	D ]>  }|j                  d|dd   d|dd  j                         j                  dd       d       @ |j                  d       t        |	|
      D ]  \  }}|j                  d| d       |D ]  }|j                  d|        |v r|j                  dt        |          d       t        |         D ]Q  \  }}|j                  d        |j                  d!| d"       |j                  d#| d$       |j                  d%       S n'|v r|j                  d&       n|j                  d'       |j                  d(        |j                  d)       
 y )*N>   MultinomialRandomNormalRandomUniformRandomNormalLikeRandomUniformLikec              3     K   | ]a  }|j                   v rQ|j                  t        j                  j                  j
                  k(  r |j                  d k(  k(  r|j                    c ywr   namesupport_levelr   OpSchemaSupportTypeCOMMONr   r   r   r   
node_testss     r   r   z)gen_node_test_coverage.<locals>.<genexpr>4   sV      66ZOOt}}88???XX%",	 	
   A'A*c              3     K   | ]a  }|j                   vrQ|j                  t        j                  j                  j
                  k(  r |j                  d k(  k(  r|j                    c ywr   r)   r/   s     r   r   z)gen_node_test_coverage.<locals>.<genexpr>;   sV      66#OOt}}88???XX%",	 	
r1   c              3  ,   K   | ]  }|v s|  y wN r   r*   
generatorss     r   r   z)gen_node_test_coverage.<locals>.<genexpr>B   s     Ut$*BTdU   	c              3     K   | ]a  }|j                   v rQ|j                  t        j                  j                  j
                  k(  r |j                  d k(  k(  r|j                    c ywr   r*   r+   r   r,   r-   EXPERIMENTALr   r/   s     r   r   z)gen_node_test_coverage.<locals>.<genexpr>C   sV      "66ZOOt}}88EEEXX%",	 	
"r1   c              3     K   | ]a  }|j                   vrQ|j                  t        j                  j                  j
                  k(  r |j                  d k(  k(  r|j                    c ywr   r:   r/   s     r   r   z)gen_node_test_coverage.<locals>.<genexpr>J   sV      #66#OOt}}88EEEXX%",	 	
#r1   c              3  ,   K   | ]  }|v s|  y wr4   r5   r6   s     r   r   z)gen_node_test_coverage.<locals>.<genexpr>Q   s      $$*2D$r8   z# Node Test Coverage
z## Summary
zNode tests have covered /z (d   z.2fz%, z) generators excluded) common operators.

z6Node tests have covered 0/0 (N/A) common operators. 

zYNode tests have covered {}/{} ({:.2f}%, {} generators excluded) experimental operators.

z;Node tests have covered 0/0 (N/A) experimental operators.

)z!&#x1F49A;Covered Common Operatorsz"&#x1F494;No Cover Common Operatorsz'&#x1F49A;Covered Experimental Operatorsz(&#x1F494;No Cover Experimental Operatorsz* [	   z](# -z)

## z### z
There are z" test cases, listed as following:

<details>
	<summary>z</summary>

z
```python
z
```

</details>
z (random generator operator)
z (call for test cases)
z

z<br/>

)setr
   sortedr    r!   lenr   floatformatlowerreplacezip)r   r   r   common_no_covercommon_generatorexperimental_no_coverexperimental_generator
num_commonnum_experimentaltitles	all_liststlr   summarycoder7   r0   s     `             @@r   gen_node_test_coverager\   %   sc   
 	
J "#J  N   O UUU! ""  # ##  $ $.$  ^$s?';;cBR>SSJ !
#
$	%
$
%	& 
 GG$%GGN	&s>':&;1ZL IN#eJ&77#=cB#cJZF[E\ ]9:	
 	
JK	**0&() )*U3C-DDsJ*+	+	
 	
OPF 		I  F	#aeWC!" 5 5c3 ?@DEFGGDMFI& 1	#aS 	AGGd1#JJ"3z!}#5"66YZ &,JqM%: ,MGTGGM*GGiy?@GGk$y9:GGN+	, 
?GG<=GG67GGFO!	" 	
'r   c                   |j                  d       i }| D ]  }|||j                  <    i }g }t        d      D ]  }|j                  j	                  d      rt
        j                  j                  t
        j                  j                  t
        j                  j                  t              ddd|j                              }t
        j                  j                  |      st        d|d      |j                  |       t        j                  |      }	|j                  t
        j                  j                  |	d              |j!                          d	}
|D ]  }t#        |      }|r*d	}|j$                  D ]  }|j&                  d
k(  sd} |s9d}
|j                  d|j(                  j                   d       d}|j(                  j*                  D ]~  }|j,                  t.        v s|j,                  t0        v s)|dz  }|j2                  D ]A  }|j,                  |vri ||j,                  <   |j                  ||j,                     vrg ||j,                     |j                  <   |j4                  t6        j8                  k(  r_|j:                  ||j,                     |j                     vs||j,                     |j                     j                  |j:                         |j4                  t6        j<                  k(  ra|j>                  ||j,                     |j                     vs||j,                     |j                     j                  |j>                         R|j4                  t6        j@                  k(  ra|jB                  ||j,                     |j                     vs||j,                     |j                     j                  |jB                         |j4                  t6        jD                  k(  ra|jF                  ||j,                     |j                     vs||j,                     |j                     j                  |jF                         N|j4                  t6        jH                  k(  ra|jJ                  ||j,                     |j                     vs||j,                     |j                     j                  |jJ                         |j4                  t6        jL                  k(  ra|jN                  ||j,                     |j                     vs||j,                     |j                     j                  |jN                         J|j4                  t6        jP                  k(  ra|jR                  ||j,                     |j                     vs||j,                     |j                     j                  |jR                         |j4                  t6        jT                  k(  ra|jV                  ||j,                     |j                     vs||j,                     |j                     j                  |jV                         F|j4                  t6        jX                  k(  ra|jZ                  ||j,                     |j                     vs||j,                     |j                     j                  |jZ                         |j4                  t6        j\                  k(  s|j^                  ||j,                     |j                     vs||j,                     |j                     j                  |j^                         D  |j                  d|j(                  j                   d| dta        |j(                  j*                         ddtc        |      z  tc        ta        |j(                  j*                              z   d	       |j                  d       |j                  d       te        |      D ]  }|j                  d       |j                  d| dta        ||          dta        ||   jf                         d       te        ||   jf                        D ]D  }|||   v r'|j                  | dta        ||   |          d       1|j                  | d       F |j                  d        |j                  d        |
s|r|j                  d       y y y )Nz# Model Test Coverage
real)kindzonnx/backend/test/data/light/z..zUnable to find model .z
model.onnxFr   TrD   rC   r      z has z nodes. Of these, z are covered by node tests (g      Y@z%)


rE   z<summary>nodes</summary>

rF   z: z out of z attributes covered</summary>

z: 0
rG   z</details>


z+No model tests present for selected domain
)4r   r*   r   url
startswithospathnormpathjoindirname__file__existsFileNotFoundErrorappendr   prepare_model_datasortr	   opset_importr   graphnodeop_typer    r!   	attributetyper   FLOATr   INTiSTRINGr   TENSORrX   GRAPHgFLOATSfloatsINTSintsSTRINGSstringsTENSORStensorsGRAPHSgraphsrJ   rK   rI   
attributes)r   r   r   schema_dictschemaattrsmodel_pathsrt
model_name	model_dirmodel_writtenmodel_pb_pathmodel
ml_presentopsetnum_coveredrq   attroprs   s                       r   gen_model_test_coverager      s    GG%&K *#)FKK * .0EKF+ F66<=))RWW__X6dD"&&QJ 77>>*-'*?
~Q(OPPz*11"5Irww||I|DEF M$ J$]#J++ &<<</!%J&  $	#ekk&&'r*+KK$$ '	OD||~-AU1Uq  !NN "OD||50.0dll+yydll(;;9;dll+DII6yyN$8$8866t||)<TYY)GG!$,,/		:AA$&&In&8&8866t||)<TYY)GG!$,,/		:AA$&&In&;&;;66t||)<TYY)GG!$,,/		:AA$&&In&;&;;66t||)<TYY)GG!$,,/		:AA$&&In&:&::66t||)<TYY)GG!$,,/		:AA$&&In&;&;;;;eDLL.A$)).LL!$,,/		:AA$++Nn&9&9999E$,,,?		,JJ!$,,/		:AA$))Ln&<&<<<<uT\\/B499/MM!$,,/		:AA$,,On&<&<<<<uT\\/B499/MM!$,,/		:AA$,,On&;&;;;;eDLL.A$)).LL!$,,/		:AA$++NE"O'	OP 	
!!"%} 5U[[--./ 0k**U3u{{7G7G3H-IIJ(T	
 	
	./- 	$BGGM"GGB4r#eBi.!1#k"o>X>X:Y9ZZ{| $KO$>$>? 1	b	)GGykCb	)0D,E+FbIJGGyk/0	1
 GGN#	$ 	
"#UJ$V R	>?  =r   c                H    |j                  d       |j                  d       y )Nz# Overall Test Coverage
z## To be filled.
r   )r   r   r   s      r   gen_overall_test_coverager      s     GG'(GG !r   c                &    | j                  d       y )Nz.<!--- SPDX-License-Identifier: Apache-2.0 -->
r   )r   s    r   gen_spdxr     s    GG=>r   c                    t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t                                      } t         j                  j                  | d      }t        j                         }t        |      }t         j                  j                  |d      }t        |ddd      5 }t        |       t        |d       t        ||d       t        ||d       t        ||d       d d d        |rwt         j                  j                  |d      }t        |ddd      5 }t        |       t        |d	       t        ||d	       t        ||d	       t        ||d	       d d d        y y # 1 sw Y   xY w# 1 sw Y   y xY w)
NdocszTestCoverage.mdzw+ zutf-8)newlineencodingFzTestCoverage-ml.mdT)rd   re   rh   realpathri   rg   r   get_all_schemasr   openr   r   r\   r   r   )base_dirdocs_dirr   has_mlfnamer   s         r   mainr   	  sg   ww
8H8H8R(STUH ww||Hf-H""$G7^FGGLL#45E	eT2	8 5AQw51E2!'1e45 X';<%rG< 	8QKD!"7At4#GQ5%gq$7	8 	8 5 5	8 	8s   ?G>?GGG__main__)r   Sequence[defs.OpSchema]returnbool)r   IO[Any]r   r   r   None)r   r   r   r   r   r   r   r   )r   r   r   r   )r   r   )
__future__r   rd   typingr   r   r   onnxr   r   r	   onnx.backend.test.caser
   onnx.backend.test.loaderr   onnx.backend.test.runnerr   r   r   r    __annotations__r!   r\   r   r   r   r   __name__r5   r   r   <module>r      s    # 	 $ $ + + 3 5 +:	C !# "&( m (m$m)0m6:m	m`f@$f@)0f@6:f@	f@R"$")0"6:"	"?84 zF r   