
    h,                        % S SK r S SKJrJrJrJrJr  S SKJrJ	r	J
r
  S SKJr  S SKJr  S SKJr  S\\	R"                     S\4S	 jrS
\\   S\SS4S jr/ q\\   \S'   / q\\   \S'   S\\	R"                     S
\\   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 jr\S:X  a  \" 5         gg)    N)IOAnyDictListSequence)AttributeProtodefsload)collect_snippets)load_model_tests)Runnerschemasreturnc                 &    [        S U  5       5      $ )Nc              3   >   #    U  H  oR                   S :H  v   M     g7f
ai.onnx.mlN)domain).0ss     Y/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/stat_coverage.py	<genexpr>is_ml.<locals>.<genexpr>   s     9Axx<'s   )any)r   s    r   is_mlr      s    9999    fmlc                    U R                  S5        U(       a  U R                  S5        OU R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        g )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)r   r   s     r   gen_outlinesr"      s_    GG$%		()	*+GGOGG;<GG=>GGABr   common_coveredexperimental_coveredc                   ^^^ [        1 Sk5      m[        5       m[        UU4S jU  5       5      q[        UU4S jU  5       5      n[        U4S jU 5       5      n[        UU4S jU  5       5      q[        UU4S jU  5       5      n[        U4S jU 5       5      n[        [        5      [        U5      -   [        U5      -
  n[        [        5      [        U5      -   [        U5      -
  nUR                  S5        UR                  S	5        U(       aR  UR                  S
[        [        5       SU S[        [        5      [        U5      -  S-  S S[        U5       S3	5        OUR                  S5        U(       aV  UR                  SR                  [        [        5      U[        [        5      [        U5      -  S-  [        U5      5      5        OUR                  S5        / SQn	[        U[        U/n
U	 H?  nUR                  SUSS   SUSS  R                  5       R                  SS5       S35        MA     UR                  S5        [        X5       GH  u  pUR                  SU S35        U H  nUR                  SU 35        UT;   a  UR                  S[        TU   5       S35        [        TU   5       HQ  u  pUR                  S 5        UR                  S!U S"35        UR                  S#U S$35        UR                  S%5        MS     O)UT;   a  UR                  S&5        OUR                  S'5        UR                  S(5        M     UR                  S)5        GM     g )*N>   MultinomialRandomNormalRandomUniformRandomNormalLikeRandomUniformLikec              3      >#    U  Hl  nUR                   T;   d  M  UR                  [        R                  R                  R
                  :X  d  MI  UR                  S :H  T:X  d  M^  UR                   v   Mn     g7fr   namesupport_levelr	   OpSchemaSupportTypeCOMMONr   r   r   r   
node_testss     r   r   )gen_node_test_coverage.<locals>.<genexpr>3   se      A66Z 	 OOt}}88??? 	 XX%",	 	   A70A7A7$A7c              3      >#    U  Hl  nUR                   T;  d  M  UR                  [        R                  R                  R
                  :X  d  MI  UR                  S :H  T:X  d  M^  UR                   v   Mn     g7fr   r,   r2   s     r   r   r4   :   se      A66# 	 OOt}}88??? 	 XX%",	 	r5   c              3   6   >#    U  H  oT;   d  M
  Uv   M     g 7fN r   r-   
generatorss     r   r   r4   A   s     Ut*BTdd   		c              3      >#    U  Hl  nUR                   T;   d  M  UR                  [        R                  R                  R
                  :X  d  MI  UR                  S :H  T:X  d  M^  UR                   v   Mn     g7fr   r-   r.   r	   r/   r0   EXPERIMENTALr   r2   s     r   r   r4   B   se      "A66Z 	 OOt}}88EEE 	 XX%",	 	r5   c              3      >#    U  Hl  nUR                   T;  d  M  UR                  [        R                  R                  R
                  :X  d  MI  UR                  S :H  T:X  d  M^  UR                   v   Mn     g7fr   r>   r2   s     r   r   r4   I   se      #A66# 	 OOt}}88EEE 	 XX%",	 	r5   c              3   6   >#    U  H  oT;   d  M
  Uv   M     g 7fr8   r9   r:   s     r   r   r4   P   s      $.*2D.r<   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coder;   r3   s     `             @@r   gen_node_test_coverager`   $   sG   
 	
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 	#aeWC!" 5 5c3 ?@DE GGDMF&	#aSAGGd1#JJ"3z!}#5"66YZ &,JqM%:MGGGM*GGiy?@GGk$y9:GGN+	 &; 
?GG<=GG67GGFO! " 	
' 'r   c                    UR                  S5        0 nU  H  nXCUR                  '   M     0 n/ n[        SS9 GH  nUR                  R	                  S5      (       a  [
        R                  R                  [
        R                  R                  [
        R                  R                  [        5      SSSUR                  5      5      n[
        R                  R                  U5      (       d  [        SU< S35      eUR                  U5        M  [        R                  " U5      n	UR                  [
        R                  R                  U	S5      5        GM     UR!                  5         S	n
U GH  n[#        U5      nU(       a4  S	nUR$                   H  nUR&                  S
:X  d  M  SnM     U(       d  MH  Sn
UR                  SUR(                  R                   S35        SnUR(                  R*                   GH  nUR,                  [.        ;   d  UR,                  [0        ;   d  M.  US-  nUR2                   GHx  nUR,                  U;  a  0 UUR,                  '   UR                  UUR,                     ;  a  / UUR,                     UR                  '   UR4                  [6        R8                  :X  ac  UR:                  UUR,                     UR                     ;  a7  UUR,                     UR                     R                  UR:                  5        M  M  UR4                  [6        R<                  :X  ae  UR>                  UUR,                     UR                     ;  a8  UUR,                     UR                     R                  UR>                  5        GM]  GM`  UR4                  [6        R@                  :X  ae  URB                  UUR,                     UR                     ;  a8  UUR,                     UR                     R                  URB                  5        GM  GM  UR4                  [6        RD                  :X  ae  URF                  UUR,                     UR                     ;  a8  UUR,                     UR                     R                  URF                  5        GMc  GMf  UR4                  [6        RH                  :X  ae  URJ                  UUR,                     UR                     ;  a8  UUR,                     UR                     R                  URJ                  5        GM  GM  UR4                  [6        RL                  :X  ae  URN                  UUR,                     UR                     ;  a8  UUR,                     UR                     R                  URN                  5        GMi  GMl  UR4                  [6        RP                  :X  ae  URR                  UUR,                     UR                     ;  a8  UUR,                     UR                     R                  URR                  5        GM  GM  UR4                  [6        RT                  :X  ae  URV                  UUR,                     UR                     ;  a8  UUR,                     UR                     R                  URV                  5        GMo  GMr  UR4                  [6        RX                  :X  ae  URZ                  UUR,                     UR                     ;  a8  UUR,                     UR                     R                  URZ                  5        GM  GM  UR4                  [6        R\                  :X  d  GM  UR^                  UUR,                     UR                     ;  d  GMC  UUR,                     UR                     R                  UR^                  5        GM{     GM     UR                  SUR(                  R                   SU S[a        UR(                  R*                  5       SS[c        U5      -  [c        [a        UR(                  R*                  5      5      -   S3	5        UR                  S5        UR                  S5        [e        U5       H  nUR                  S5        UR                  SU S[a        UU   5       S[a        UU   Rf                  5       S35        [e        UU   Rf                  5       HH  nUUU   ;   a(  UR                  U S[a        UU   U   5       S35        M4  UR                  U S35        MJ     UR                  S5        M     UR                  S5        GM     U
(       d  U(       a  UR                  S5        g g g )Nz# Model Test Coverage
real)kindzonnx/backend/test/data/light/z..zUnable to find model .z
model.onnxFr   TrH   rG   r      z has z nodes. Of these, z are covered by node tests (g      Y@z%)


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

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

z: 0
rK   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   TENSORr\   GRAPHgFLOATSfloatsINTSintsSTRINGSstringsTENSORStensorsGRAPHSgraphsrN   rO   rM   
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_coveredru   attroprw   s                       r   gen_model_test_coverager      s    GG%&K#)FKK   .0EKF+66<==))RWW__X6dD"&&QJ 77>>*--'*?
~Q(OPPz*11"5Irww||I|DE , M$]#J++<<</!%J ,  $	#ekk&&'r*+KK$$D||~-AU1Uq  !NND||50.0dll+yydll(;;9;dll+DII6yyN$8$8866t||)<TYY)GG!$,,/		:AA$&&I Hn&8&8866t||)<TYY)GG!$,,/		:AA$&&I Hn&;&;;66t||)<TYY)GG!$,,/		:AA$&&I Hn&;&;;66t||)<TYY)GG!$,,/		:AA$&&I Hn&:&::66t||)<TYY)GG!$,,/		:AA$&&I Hn&;&;;;;eDLL.A$)).LL!$,,/		:AA$++N Mn&9&9999E$,,,?		,JJ!$,,/		:AA$))L Kn&<&<<<<uT\\/B499/MM!$,,/		:AA$,,O Nn&<&<<<<uT\\/B499/MM!$,,/		:AA$,,O Nn&;&;;;;eDLL.A$)).LL!$,,/		:AA$++NE + %P 	
!!"%} 5U[[--./ 0k**U3u{{7G7G3H-IIJ(T	
 	
	./-BGGM"GGB4r#eBi.!1#k"o>X>X:Y9ZZ{| $KO$>$>?	b	)GGykCb	)0D,E+FbIJGGyk/0	 @
 GGN#   	
"#U %V R	>?  =r   c                 H    UR                  S5        UR                  S5        g )Nz# Overall Test Coverage
z## To be filled.
r    )r   r   r   s      r   gen_overall_test_coverager      s     GG'(GG !r   c                 &    U R                  S5        g )Nz.<!--- SPDX-License-Identifier: Apache-2.0 -->
r    )r   s    r   gen_spdxr     s    GG=>r   c                     [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [        5      5      5      5      5      n [         R                  R                  U S5      n[        R                  " 5       n[        U5      n[         R                  R                  US5      n[        USSSS9 n[        U5        [        US5        [        X%S5        [        X%S5        [        X%S5        S S S 5        U(       aq  [         R                  R                  US5      n[        USSSS9 n[        U5        [        US	5        [        X%S	5        [        X%S	5        [        X%S	5        S S S 5        g g ! , (       d  f       N= f! , (       d  f       g = f)
NdocszTestCoverage.mdzw+ zutf-8)newlineencodingFzTestCoverage-ml.mdT)rh   ri   rl   realpathrm   rk   r	   get_all_schemasr   openr   r"   r`   r   r   )base_dirdocs_dirr   has_mlfnamer   s         r   mainr     sK   ww
8H8H8R(STUH ww||Hf-H""$G7^FGGLL#45E	eT2	8AQw51E2!'e4 
9 X';<%rG<QKD!"7t4#G5%g$7 =<  
9	8 =<s   <G;<G
G
G __main__)r   N)rh   typingr   r   r   r   r   onnxr   r	   r
   onnx.backend.test.caser   onnx.backend.test.loaderr   onnx.backend.test.runnerr   r/   boolr   r"   r#   str__annotations__r$   r`   r   r   r   r   __name__r9   r   r   <module>r      sS   
 0 0 + + 3 5 +:8DMM* :t :	CBsG 	C 	C$ 	C !# "&( hsm (mdmm$m)+Cm6:m	m`f@dmm$f@)+Cf@6:f@	f@R"dmm$")+C"6:"	"?3 ?D ?84 zF r   