
    
Ng,                        U d dl Z d dlmZmZ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ee	j                 defd	Zd
ee         deddfdZg aee         ed<   g aee         ed<   dee	j                 d
ee         deddfdZdee	j                 d
ee         deddfdZdee	j                 d
ee         deddfdZd
ee         ddfdZddZedk    r e             dS dS )    N)IOAnyDictListSequence)AttributeProtodefsload)collect_snippets)load_model_tests)Runnerschemasreturnc                 4    t          d | D                       S )Nc              3   ,   K   | ]}|j         d k    V  dS 
ai.onnx.mlN)domain).0ss     [/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/backend/test/stat_coverage.py	<genexpr>zis_ml.<locals>.<genexpr>   s)      99Aqx<'999999    )any)r   s    r   is_mlr      s    99999999r   fmlc                 2   |                      d           |r|                      d           n|                      d           |                      d           |                      d           |                      d           |                      d           d S )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BBBBBr   common_coveredexperimental_coveredc                 h   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
  }|                    d           |                    d	           |rh|                    d
t          t                     d| dt          t                    t          |          z  dz  ddt          |           d	           n|                    d           |rp|                    d                    t          t                    |t          t                    t          |          z  dz  t          |                               n|                    d           g d}	t          |t          |g}
|	D ]T}|                    d|dd           d|dd          	                                
                    dd           d           U|                    d           t          |	|
          D ]?\  }}|                    d| d           |D ]}|                    d|            |v r|                    dt          |                    d           t          |                   D ]a\  }}|                    d            |                    d!| d"           |                    d#| d$           |                    d%           bn/|v r|                    d&           n|                    d'           |                    d(           	|                    d)           Ad S )*N>   MultinomialRandomNormalRandomUniformRandomNormalLikeRandomUniformLikec              3      K   | ]B}|j         v r7|j        t          j        j        j        k    r|j        d k    k    9|j         V  CdS r   namesupport_levelr	   OpSchemaSupportTypeCOMMONr   r   r   r   
node_testss     r   r   z)gen_node_test_coverage.<locals>.<genexpr>3   sg        6ZOt}8???X%",,	 	
 -,,, r   c              3      K   | ]B}|j         vr7|j        t          j        j        j        k    r|j        d k    k    9|j         V  CdS r   r+   r1   s     r   r   z)gen_node_test_coverage.<locals>.<genexpr>:   sg        6##Ot}8???X%",,	 	
 -,,, r   c              3   $   K   | ]
}|v |V  d S N r   r,   
generatorss     r   r   z)gen_node_test_coverage.<locals>.<genexpr>A   s-      UUt$*BTBTdBTBTBTBTUUr   c              3      K   | ]B}|j         v r7|j        t          j        j        j        k    r|j        d k    k    9|j         V  CdS r   r,   r-   r	   r.   r/   EXPERIMENTALr   r1   s     r   r   z)gen_node_test_coverage.<locals>.<genexpr>B   sg       " "6ZOt}8EEEX%",,	 	
 -,,," "r   c              3      K   | ]B}|j         vr7|j        t          j        j        j        k    r|j        d k    k    9|j         V  CdS r   r:   r1   s     r   r   z)gen_node_test_coverage.<locals>.<genexpr>I   sg       # #6##Ot}8EEEX%",,	 	
 -,,,# #r   c              3   $   K   | ]
}|v |V  d S r5   r6   r7   s     r   r   z)gen_node_test_coverage.<locals>.<genexpr>P   s6       $ $$*2D2D2D2D2D2D$ $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coder8   r2   s     `             @@r   gen_node_test_coverager\   $   sH   
 	
 	
 	
 J "##J         N          O UUUUUUUUU! " " " " "" " "   # # # # # ## # #   $ $ $ $ $.$ $ $   ^$$s?';';;cBR>S>SSJ !!
#
$
$	%
$
%
%	& 
 GG$%%%GGN L	:s>':': : :Z : :N##eJ&7&77#=^: :FIJZF[F[: : :	
 	
 	
 	
 	
JKKK Q	**0&()) )**U3C-D-DDsJ*++	+ +	
 	
 	
 	
 	
OPPP  F 		I  F F	DaeDD!"" 5 5c3 ? ?DDDEEEEGGDMMMFI&&  1	a 	 	AGGJ1JJJZ3z!}#5#5ZZZ   &,JqM%:%: , ,MGTGGM***GG????@@@GG9$999:::GGN++++	, 
??GG<====GG6777GGFOOOO	' r   c                    |                     d           i }| D ]}|||j        <   i }g }t          d          D ]}|j                            d          rt
          j                            t
          j                            t
          j        	                    t                    ddd|j                            }t
          j                            |          st          d|d          |                    |           t          j        |          }	|                    t
          j                            |	d                     |                                 d	}
|D ]~}t#          |          }|rd	}|j        D ]}|j        d
k    rd}|s0d}
|                     d|j        j         d           d}|j        j        D ]f}|j        t.          v s|j        t0          v rF|dz  }|j        D ]8}|j        |vr
i ||j        <   |j        ||j                 vrg ||j                 |j        <   |j        t6          j        k    rP|j        ||j                 |j                 vr0||j                 |j                                     |j                   |j        t6          j        k    rQ|j        ||j                 |j                 vr0||j                 |j                                     |j                   
|j        t6          j         k    rQ|j!        ||j                 |j                 vr0||j                 |j                                     |j!                   p|j        t6          j"        k    rQ|j#        ||j                 |j                 vr0||j                 |j                                     |j#                   |j        t6          j$        k    rQ|j%        ||j                 |j                 vr0||j                 |j                                     |j%                   <|j        t6          j&        k    rQ|j'        ||j                 |j                 vr0||j                 |j                                     |j'                   |j        t6          j(        k    rQ|j)        ||j                 |j                 vr0||j                 |j                                     |j)                   |j        t6          j*        k    rQ|j+        ||j                 |j                 vr0||j                 |j                                     |j+                   n|j        t6          j,        k    rQ|j-        ||j                 |j                 vr0||j                 |j                                     |j-                   |j        t6          j.        k    rO|j/        ||j                 |j                 vr0||j                 |j                                     |j/                   :h|                     d|j        j         d| dta          |j        j                   ddtc          |          z  tc          ta          |j        j                            z   d	           |                     d           |                     d           te          |          D ]}|                     d           |                     d| dta          ||                    dta          ||         j3                   d           te          ||         j3                  D ]Y}|||         v r5|                     | dta          ||         |                    d           A|                     | d           Z|                     d           |                     d           |
s|r|                     d           d S d S d S )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 * *#)FK   .0EKF+++ F F6<== 
	F))RW__X66dD"&QQ J 7>>*-- Q'(O
(O(O(OPPPz****1"55Irw||I|DDEEEEM$ J$ J$]## 	%J+ & &<<//!%J % $	*ek&***+++K$ '	O '	OD|~--AU1U1Uq  !N "O "OD|500.0dl+ydl(;;;9;dl+DI6yN$8886t|)<TY)GGG!$,/	:AA$&IIIn&8886t|)<TY)GGG!$,/	:AA$&IIIn&;;;6t|)<TY)GGG!$,/	:AA$&IIIn&;;;6t|)<TY)GGG!$,/	:AA$&IIIn&:::6t|)<TY)GGG!$,/	:AA$&IIIn&;;;;eDL.A$).LLL!$,/	:AA$+NNNn&9999E$,,?	,JJJ!$,/	:AA$)LLLn&<<<<uT\/B49/MMM!$,/	:AA$,OOOn&<<<<uT\/B49/MMM!$,/	:AA$,OOOn&;;;;eDL.A$).LLL!$,/	:AA$+NNN	T! T T T TU[-..T Tk***U3u{7G3H3H-I-IIT T T	
 	
 	
 	
	.///-- 	$ 	$BGGM"""GG|B||#eBi..||#k"o>X:Y:Y|||   $KO$>?? 1 1	b	))GGyIICb	)0D,E,EIIIJJJJGGy///0000GGN####	"#### @R @	>?????@ @ @ @r   c                 Z    |                     d           |                     d           d S )Nz# Overall Test Coverage
z## To be filled.
r   )r   r   r   s      r   gen_overall_test_coverager      s0     GG'(((GG !!!!!r   c                 0    |                      d           d S )Nz.<!--- SPDX-License-Identifier: Apache-2.0 -->
r   )r   s    r   gen_spdxr     s    GG=>>>>>r   c                  8   t           j                            t           j                            t           j                            t           j                            t           j                            t                                                            } t           j                            | d          }t          j                    }t          |          }t           j                            |d          }t          |ddd          5 }t          |           t          |d           t          ||d           t          ||d           t          ||d           d d d            n# 1 swxY w Y   |rt           j                            |d          }t          |ddd          5 }t          |           t          |d	           t          ||d	           t          ||d	           t          ||d	           d d d            d S # 1 swxY w Y   d S d S )
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   w
8H8H8R8R(S(STTUU H w||Hf--H"$$G7^^FGLL#455E	eT2	8	8	8 5AQw5111E222!'1e4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5  8X';<<%rG<<< 	8QKKKD!!!"7At444#GQ555%gq$777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	88 8s&   AE--E14E1-AHHH__main__)r   N)rd   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__r6   r   r   <module>r      sM   
				 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + + + + + + + + + 3 3 3 3 3 3 5 5 5 5 5 5 + + + + + +:8DM* :t : : : :	CBsG 	C 	C$ 	C 	C 	C 	C !# " " "&( hsm ( ( (mdm$m)+Cm6:m	m m m m`f@dm$f@)+Cf@6:f@	f@ f@ f@ f@R"dm$")+C"6:"	" " " "?3 ?D ? ? ? ?8 8 8 84 zDFFFFF r   