
    
Ng                         d dl Z d dlZd dlZd dlZd dlmZmZmZ d dlZ	d dl
Z
d dlZd dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ  G d dej                  Z G d dej                  Z G d	 d
ej                  Z G d dej                  Z G d dej                  Z ej!        "                    dd  ej#                    D             d           de$ddfd            Z%ej!        "                    dd  ej#                    D             d           de$ddfd            Z& G d dej                  Z' G d dej                  Z(e)dk    r" ej*                      ej*        e+g           dS dS )    N)AnyListTuple)AttributeProto
GraphProto
ModelProtoOptionalProtoSequenceProtoTensorProto	TypeProtocheckerdefshelpernumpy_helper)to_array_extendedc                       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	dd
Z
ddZddZddZddZddZddZddZddZddZdS )TestHelperAttributeFunctionsreturnNc                    t          j        dd          }|                     |j        d           |                     |j        d           t          j        |           t          j        dd          }|                     |j        d           |                     |j        d           t          j        |           d S )Nfloat      ?g    _B)r   make_attributeassertEqualnamefr   check_attributeselfattrs     Q/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/test/helper_test.pytest_attr_floatz,TestHelperAttributeFunctions.test_attr_float"   s    $Wc22G,,,%%%%%%$Wd33G,,,&&&%%%%%    c                    t          j        dd          }|                     |j        d           |                     |j        d           t          j        |           t          j        dd          }|                     |j        d           |                     |j        d           t          j        |           t          j        dd          }|                     |j        d           |                     |j        d           t          j        |           t          j        dd          }|                     |j        d           |                     |j        d           t          j        |           d S )Nint      i  i  )r   r   r   r   ir   r   r   s     r    test_attr_intz*TestHelperAttributeFunctions.test_attr_int.   sT   $UA..E***###%%%$UA..E***###%%%$UF33E***(((%%%$UF33E***(((%%%%%r"   c                 4   t          j        dd          }|                     |j        d           |                     |j        d           t          j        ddd          }|                     |j        d           |                     |j        d           d S )Navalue doc)r   r   r   r   
doc_stringr   s     r    test_attr_doc_stringz1TestHelperAttributeFunctions.test_attr_doc_stringD   s    $S'22C((("---$S'599C(((%00000r"   c                    t          j        dd          }|                     |j        d           |                     |j        d           t          j        |           t          j        dd          }|                     |j        d           |                     |j        d           t          j        |           t          j        dd          }|                     |j        d           |                     |j        d           t          j        |           t          j        dd          }|                     |j        d           |                     t          j        |          d           t          j        |           d S )Nstrs   testtestr,   r"   )r   r   r   r   sr   r   get_attribute_valuer   s     r    test_attr_stringz-TestHelperAttributeFunctions.test_attr_stringL   s]   $UG44E***)))%%%$UF33E***)))%%%$UF33E***)))%%%$UB//E***3D993???%%%%%r"   c                     t          j        dddg          }|                     |j        d           |                     t	          |j                  ddg           t          j        |           d S )Nfloatsr          @r   r   r   r   listr7   r   r   r   s     r    test_attr_repeated_floatz5TestHelperAttributeFunctions.test_attr_repeated_floatb   sk    $XSz::H---dk**S#J777%%%%%r"   c                     t          j        dddg          }|                     |j        d           |                     t	          |j                  ddg           t          j        |           d S )Nints      )r   r   r   r   r:   r=   r   r   r   s     r    test_attr_repeated_intz3TestHelperAttributeFunctions.test_attr_repeated_inth   si    $VaV44F+++di1a&111%%%%%r"   c                     t          j        dg d          }|                     |j        d           |                     t	          |j                  g d           t          j        |           d S )Nmixed)r>   r?         @      @)r   r8   rC   rD   r9   r   s     r    (test_attr_repeated_mixed_floats_and_intszETestHelperAttributeFunctions.test_attr_repeated_mixed_floats_and_intsn   sq    $W.>.>.>??G,,,dk**,@,@,@AAA%%%%%r"   c                     t          j        dddg          }|                     |j        d           |                     t	          |j                  ddg           t          j        |           d S )Nstringsstr1str2s   str1s   str2)r   r   r   r   r:   rG   r   r   r   s     r    test_attr_repeated_strz3TestHelperAttributeFunctions.test_attr_repeated_strt   sm    $Y0@AAI...dl++gw-?@@@%%%%%r"   c           	         t          j        dt          j        dt	          j        d                    t          j        dt          j        dt	          j        d                    g}t          j        d|          }|                     |j        d           |                     t          |j
                  |           t          j        |           d S )Nr*   r>   r>   r   	data_typedimsvalsbtensors)r   make_tensorr   FLOATnponesr   r   r   r:   rR   r   r   )r   rR   r   s      r    test_attr_repeated_tensor_protoz<TestHelperAttributeFunctions.test_attr_repeated_tensor_protoz   s    K$5Drwqzz   K$5Drwqzz  	
 $Y88I...dl++W555%%%%%r"   c                    ddg}g d}t          j        dt          j        t	          |          gt          j        |                              t
          j                  d          }g d}t          j        dt          j	        t	          |          gt          j        |                              t
          j
                  d          }t          j        |||          }t          j        d|          }|                     |j        d           t          j        t          j        |                     t          j        |           d S )	Nr%   g    9?g    -?g   `Q?sparse_valuesFr   rN   rO   rP   rawr?   r%   r&   indicessparse_attr)r   rS   r   rT   lenrU   arrayastypefloat32INT64int64make_sparse_tensorr   r   r   r   check_sparse_tensorr4   r   )r   dense_shaperZ   values_tensorlinear_indicesindices_tensorsparse_tensorr   s           r    test_attr_sparse_tensor_protoz:TestHelperAttributeFunctions.test_attr_sparse_tensor_proto   s7   !fSSS* !'m$$%-((//
;;
 
 
 #+!'n%%&.))00::
 
 
 1>;
 
 $]MBBM222#F$>t$D$DEEE%%%%%r"   c                    ddg}g d}t          j        dt          j        t	          |          gt          j        |                              t
          j                  d          }g d}t          j        dt          j	        t	          |          gt          j        |                              t
          j
                  d          }t          j        |||          }||g}t          j        d|          }|                     |j        d           t          j        |           t          j        |          D ]}	t          j        |	           d S )	Nr%   rY   rZ   Fr[   r]   r^   sparse_attrs)r   rS   r   rT   r`   rU   ra   rb   rc   rd   re   rf   r   r   r   r   r   r4   rg   )
r   rh   rZ   ri   rj   rk   rl   repeated_sparser   r3   s
             r    'test_attr_sparse_tensor_repeated_protoszDTestHelperAttributeFunctions.test_attr_sparse_tensor_repeated_protos   sW   !fSSS* !'m$$%-((//
;;
 
 
 #+!'n%%&.))00::
 
 
 1>;
 
 )-8$^_EEN333%%%+D11 	+ 	+A'****	+ 	+r"   c                 J   t                      t                      g}d|d         _        d|d         _        t          j        d|          }|                     |j        d           |                     t          |j                  |           t          j        |           d S )Nr*   r   rQ   r>   graphs)	r   r   r   r   r   r:   rs   r   r   )r   rs   r   s      r    test_attr_repeated_graph_protoz;TestHelperAttributeFunctions.test_attr_repeated_graph_proto   s    ,,
-q	q	$Xv66H---dk**F333%%%%%r"   c                 4   t                      }t          j        d|          }|                     |j        d           |                     |j        |           |                     |j        t          j                   t                      t                      g}t          j        d|          }|                     |j        d           |                     t          |j
                  |           |                     |j        t          j                   d S )N
type_prototype_protos)r   r   r   r   r   tptyper   
TYPE_PROTOr:   rw   TYPE_PROTOS)r   rv   r   typess       r    test_attr_type_protoz1TestHelperAttributeFunctions.test_attr_type_proto   s    [[
$\:>>L111*---N$=>>>ikk*$]E::M222d.//777N$>?????r"   c                 0   t          j        dg t          j                  }|                     |j        t          j                   |                     t          |j                  d           |                     t          t           j        dg            d S )Nempty	attr_typer   )
r   r   r   STRINGSr   ry   r`   rG   assertRaises
ValueErrorr   s     r    test_attr_empty_listz1TestHelperAttributeFunctions.test_attr_empty_list   sz    $WbN<RSSSN$:;;;T\**A...*f&;WbIIIIIr"   c                     |                      t          d          5  t          j        ddt          j                   d d d            d S # 1 swxY w Y   d S )NzInferred attribute type 'FLOAT'r2   g@r   )assertRaisesRegex	TypeErrorr   r   r   STRINGr   s    r    test_attr_mismatchz/TestHelperAttributeFunctions.test_attr_mismatch   s    ##I/PQQ 	P 	P!&#9NOOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   "AAAc                    t                      }|                     t          j        t          j        |           t                      }d|_        |                     t          j        t          j        |           t                      }d|_        d|_        d|_        |                     t          j        t          j        |           d S )Nr2   r   r?   )r   r   r   ValidationErrorr   r   r   r'   r   s     r    test_is_attr_legalz/TestHelperAttributeFunctions.test_is_attr_legal   s    '173JDQQQ	'173JDQQQ	'173JDQQQQQr"   c           
         dt           dt           j        dt          dt          dd f
ddt           dt           j        dt          t                   dt          dd f
dfdfd	fd
fdfdfdg}t          d          D ]H}t                      }d|_         t          j        |          |           t          j
        |           It          d          D ]e}t                      }d|_        t          j        |d          D ]} ||           |                     t          j        t          j
        |           fd S )Nr   type_varr+   r   c                 6    t          | ||           || _        d S N)setattrry   r   r   r   r+   s       r    _setzETestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>._set   s!     D#u%%%DIIIr"   c                 >    |                     |           || _        d S r   )extendry   r   s       r    _extendzHTestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>._extend   s!     JJuDIIIr"   c                 4     | t           j        dd          S )Nr   r   )r   rT   r   r   s    r    <lambda>zITestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>.<lambda>  s    $$t^%93DD r"   c                 4     | t           j        dd          S )Nr'   r>   )r   INTr   s    r    r   zITestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>.<lambda>  s    $$t^%7a@@ r"   c                 4     | t           j        dd          S )Nr3   s   str)r   r   r   s    r    r   zITestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>.<lambda>	  s    $$t^%:CHH r"   c                 B     | t           j        | j        ddg          S )Nr   r8   )r   FLOATSr7   r   r   s    r    r   zITestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>.<lambda>  s%    WW./sCj  r"   c                 B     | t           j        | j        ddg          S )Nr>   r?   )r   INTSr=   r   s    r    r   zITestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>.<lambda>  s     ''$(;TYAOO r"   c                 B     | t           j        | j        ddg          S )N   a   b)r   r   rG   r   s    r    r   zITestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>.<lambda>  s%    WW.0$,t  r"   d   r2   r?   )r   AttributeTyper1   r   r   ranger   randomchoicer   r   sampler   r   )r   SET_ATTR_ir   funcr   r   s        @@r    test_is_attr_legal_verbosez7TestHelperAttributeFunctions.test_is_attr_legal_verbose   s   	 	!/	 	 		
 	 	 	 		 	!/	 c	 		
 	 	 	 	 EDDD@@@@HHHH    POOO   
" ** 	* 	*B!##DDI#FM(##D)))#D))))** 	V 	VB!##DDIh22  T



g5w7NPTUUUU	V 	Vr"   r   N)__name__
__module____qualname__r!   r(   r/   r5   r;   r@   rE   rJ   rW   rm   rq   rt   r}   r   r   r   r    r"   r    r   r   !   s~       
& 
& 
& 
&& & & &,1 1 1 1& & & &,& & & && & & && & & && & & && & & && & & &8+ + + +<& & & &@ @ @ @J J J JP P P PR R R R/V /V /V /V /V /Vr"   r   c                   ^    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	dd
Z
ddZddZdS )TestHelperNodeFunctionsr   Nc                    |                      t          j        d                     t          j        ddgdgd          }|                     |j        d           |                     |j        d           |                     t          |j	                  dg           |                     t          |j
                  dg           d S )NReluXYr2   )r   )
assertTruer   hasr   	make_noder   op_typer   r:   inputoutputr   node_defs     r    test_node_no_argz(TestHelperNodeFunctions.test_node_no_arg&  s    (()))#FSEC5vFFF)6222///hn--u555ho..66666r"   c                 r    t          j        ddgdgdd          }|                     |j        d           d S )Nr   r   r   r2   r-   )r   r.   )r   r   r   r.   r   s     r    r/   z,TestHelperNodeFunctions.test_attr_doc_string.  sA    #FSEC5vRWXXX,e44444r"   c                    |                      t          j        d                     t          j        ddgdgd          }|                     |j        d           |                     t          |j                  dg           |                     t          |j	                  dg           |                     t          |j                  d           |                     |j        d         t          j        dd                     d S )Nr   r   r   r>   )	arg_valuer   r   )r   r   r   r   r   r   r   r:   r   r   r`   	attributer   r   s     r    test_node_with_argz*TestHelperNodeFunctions.test_node_with_arg2  s    (())) #FSEC5AFFF)6222hn--u555ho..666X/00!444+A.0EkST0U0UVVVVVr"   c                 t    t          j        ddgdgddd          }|                     |j        d           d S )Nr   r   r   r2   r-   ztest.domain)r   r.   domain)r   r   r   r   r   s     r    test_node_domainz(TestHelperNodeFunctions.test_node_domain=  sJ    #SEC5v%
 
 
 	-88888r"   c                    t          j        ddgdg          }t          j        dddgdg          }t          j        dt          j        ddg          g}t          j        ||gdt          j        dt          j        ddg          gt          j        dt          j        ddg          gd |	          }|                     |j        d           |                     t          |j	                  d           |                     |j	        d
         |           |                     |j	        d         |           |                     |j
        d           |                     |j        d
         |d
                    d S )Nr   r   r   AddZr>   r?   r2   r.   
value_infor   r,   )r   r   make_tensor_value_infor   rT   
make_graphr   r   r`   noder.   r   )r   	node_def1	node_def2r   graphs        r    
test_graphz"TestHelperNodeFunctions.test_graphC  sd   $VcUSE::	$US#J>>	3C9JQPQFSST
!	"*30AAq6JJK*30AAq6JJK!
 
 
 	V,,,UZ!,,,A	222A	222)2...)!,jm<<<<<r"   c                     t          j        g dg g d d          }|                     |j        d           |                     |j        d           d S )Nmy graphzmy docs)r   r   r   r   r.   )r   r   s     r    test_graph_docstringz,TestHelperNodeFunctions.test_graph_docstringV  sS    !"j"b$	JJZ000)955555r"   c                    t          j        ddgdg          }t          j        |gdt          j        dt          j        ddg          gt          j        dt          j        ddg          g          }|                     t          t           j        |d           t          j        |d          }| 	                    |j
        d           d S )	Nr   r   r   r2   r>   r?   )xxx)producer_name)r   r   r   r   r   rT   r   AttributeError
make_modelr   r   )r   r   	graph_def	model_defs       r    
test_modelz"TestHelperNodeFunctions.test_model[  s    #FSEC599%J*30AAq6JJK*30AAq6JJK	
 
	 	.&*;YANNN%ivFFF	0&99999r"   c                     t          j        g dg g           }t          j        |d          }|                     t	          |d                     |                     |j        d           d S )Nr   r2   r.   r   )r   r   r   assertFalsehasattrr   r.   )r   r   r   s      r    test_model_docstringz,TestHelperNodeFunctions.test_model_docstringg  sl    !"j"b99%e???	 	F33444-v66666r"   c                    t          j        g dg g           }t          j        |d          }t          j        |ddd           t	          j        |           t          j        |ddd           t	          j        |           |j                                        }d|_        d|_	        | 
                    t          j        t          j        |           d S )Nr   r2   r   z
test;graph)TitleKeywordsr   Other)r   r   r   set_model_propsr   check_modelmetadata_propsaddkeyr+   r   r   )r   r   r   dupes       r    test_model_metadata_propsz1TestHelperNodeFunctions.test_model_metadata_propso  s    !"j"b99%e???	FF	
 	
 	
 	I&&&FF	
 	
 	
 	I&&&'++--
'173F	RRRRRr"   c                     dt           t          t          t          f                  dt          fddt           t          t          t          f                  dt          dd f fd} |dgd            |dgd	            |d
gd            |dgd            |dgd            |dgd            |dgd            |dgd            |dgd            |dgd            |dgd            |dgd            |dgd            |dgd            |dgd            |dgd            |dgd            |dgd            |dgd            |ddgd                                t          d g           d S )!Nopset_versionsr   c                 p    t          j        g dg g           }t          j        |d | D                       S )Nr   c                 *    g | ]}t          j        | S r   )r   make_opsetid).0pairs     r    
<listcomp>zRTestHelperNodeFunctions.test_model_irversion.<locals>.mk_model.<locals>.<listcomp>  s     UUUdv2D9UUUr"   )opset_imports)r   r   make_model_gen_version)r   r   s     r    mk_modelz>TestHelperNodeFunctions.test_model_irversion.<locals>.mk_model  sF    %b*b"==E0UUnUUU   r"   
ir_versionc                 T     |           }                     |j        |           d S r   )r   r   )r   r   modelr   r   s      r    r2   z:TestHelperNodeFunctions.test_model_irversion.<locals>.test  s1    H^,,EU-z:::::r"   )r,   	      )r,   
   r&   )r,         )r,         )r,      )r,      )r,         )r,      )r,      )r,      )r,      r  )r,      )r,      r  )zai.onnxr  )
ai.onnx.mlr?   )r  r%   )r  r  )r  r&   )zai.onnx.trainingr>   )r,   r   )r   r   r1   r$   r   r   r   )r   r2   r   s   ` @r    test_model_irversionz,TestHelperNodeFunctions.test_model_irversion  s9   	T%S/%: 	z 	 	 	 		;eCHo!6 	;C 	;D 	; 	; 	; 	; 	; 	; 	;
 	gYhZhZhZhZhZhZhZhZhZhZhZhZnq!!! !$$$ !$$$ !$$$ "%%%%&***h)*A...*h<<<<<r"   r   )r   r   r   r   r/   r   r   r   r   r   r   r   r  r   r"   r    r   r   %  s        7 7 7 75 5 5 5	W 	W 	W 	W9 9 9 9= = = =&6 6 6 6

: 
: 
: 
:7 7 7 7S S S S"#= #= #= #= #= #=r"   r   c                      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	dd
Z
ddZddZddZej                             ej        ej        ej        fd                     ej         ej        d          d          dd                        Zej                             ej        ej        ej        fd                    dd            ZddZddZddZdS )TestHelperTensorFunctionsr   Nc                     d dD             }t          j        dt          j        d|d          }|                     |t          |j                             d S )Nc                 8    g | ]}|                     d           S )zutf-8)encode)r   r3   s     r    r   zETestHelperTensorFunctions.test_make_string_tensor.<locals>.<listcomp>  s$    UUUQqxx((UUUr"   )AmyBillyCindyDavidr2   )r?   r?   Fr[   )r   rS   r   r   r   r:   string_data)r   string_listtensors      r    test_make_string_tensorz1TestHelperTensorFunctions.test_make_string_tensor  sh    UU2TUUU#!(
 
 
 	d6+=&>&>?????r"   c                    t          j        ddgddgddgddgt           j        t           j        ggt           j        	          }t          j        t          j        d
t                              d                    d         t          j        d
t                              d                    d         gt          j        d
t                              d                    d         t          j        d
t                              d                    d         gt          j        d
t                              d                    d         t          j        d
t                              d                    d         gt          j        d
t                              d                    d         t          j        d
t                              d                    d         gt          j        d
t                              d                    d         t          j        d
t                              d                    d         gg          }t          j
        dt          j        |j        |          }|                     |j        d           t           j                            |t%          j        |                     d S )Nr   r8   rC         @     ?     p??皙?dtype!f3F800000r   4000000040400000408000003DCC00003DCD00007FC000007F800000r2   rM   )rU   ra   naninfrc   structunpackbytesfromhexr   rS   r   BFLOAT16shaper   r   testingassert_equalr   to_array)r   np_array
np_resultsr!  s       r    test_make_bfloat16_tensorz3TestHelperTensorFunctions.test_make_bfloat16_tensor  s@   8c
c
0 #&  *	
 	
 	
 X M$j(A(ABB1EM$j(A(ABB1E
 M$j(A(ABB1EM$j(A(ABB1E
 M$j(A(ABB M$j(A(ABB1E	 M$j(A(ABB M$j(A(ABB1E	 M$j(A(ABB1EM$j(A(ABB1E+
 

: #!*	
 
 
 	f---


L,A&,I,IJJJJJr"   c                     t          j        dt          j        dgg d          }t	          j        |          }t          j        g dt          j                  }t          j	        
                    ||           d S )N
zero_pointr&   )r         ?r>   P  333333$@r   rD  r>   i  r  r)  )r   rS   r   FLOAT8E4M3FNr   r>  rU   ra   rc   r<  r=  r   yynpexpecteds       r    test_make_float8e4m3fn_tensorz7TestHelperTensorFunctions.test_make_float8e4m3fn_tensor  sv    +2QC9Q9Q9Q
 
 #A&&8000
CCC

#.....r"   c                     t          j        dt          j        dgg d          }t	          j        |          }t          j        g dt          j                  }t          j	        
                    ||           d S )NrC  r	  )r   rD  r>   rE  rF  gh㈵gh㈵>)r   rD  r>      r  r   r   r)  )r   rS   r   FLOAT8E4M3FNUZr   r>  rU   ra   rc   r<  r=  rI  s       r    test_make_float8e4m3fnuz_tensorz9TestHelperTensorFunctions.test_make_float8e4m3fnuz_tensor  sx    &C777	
 
 #A&&8666bjIII

#.....r"   c                     t          j        dt          j        dgg d          }t	          j        |          }t          j        g dt          j                  }t          j	        
                    ||           d S )NrC  r&   )r   rD  r>   rE  `   )r   rD  r>      rS  r)  )r   rS   r   
FLOAT8E5M2r   r>  rU   ra   rc   r<  r=  rI  s       r    test_make_float8e5m2_tensorz5TestHelperTensorFunctions.test_make_float8e5m2_tensor  sv    +01#7M7M7M
 
 #A&&8222"*EEE

#.....r"   c                     t          j        dt          j        dgg d          }t	          j        |          }t          j        g dt          j                  }t          j	        
                    ||           d S )NrC  r	  )r   rD  r>   rE  rS  gHzgHz>)r   rD  r>   rT  rS  r   r   r)  )r   rS   r   FLOAT8E5M2FNUZr   r>  rU   ra   rc   r<  r=  rI  s       r    test_make_float8e5m2fnuz_tensorz9TestHelperTensorFunctions.test_make_float8e5m2fnuz_tensor  sx    &C999	
 
 #A&&8888
KKK

#.....r"   c                    t          j        ddgddgddgddgt           j        t           j        ggt           j        	          }t          j        t          j        d
t                              d                    d         t          j        d
t                              d                    d         gt          j        d
t                              d                    d         t          j        d
t                              d                    d         gt          j        d
t                              d                    d         t          j        d
t                              d                    d         gt          j        d
t                              d                    d         t          j        d
t                              d                    d         gt          j        d
t                              d                    d         t          j        d
t                              d                    d         gg          }d }|	                    t           j                  
                    t           j                                                  } ||          	                    t           j                                                  }t          j        dt"          j        |j        |d          }|                     |j        d           t           j                            |t1          j        |                     d S )Nr   r8   rC   r$  r%  r&  r'  r(  r)  r+  r,  r   r-  r.  r/  r0  3DCB0000r2  r3  c                     | dz	  S )Nr  r   )xs    r    truncatezITestHelperTensorFunctions.test_make_bfloat16_tensor_raw.<locals>.truncate0  s    7Nr"   r2   Tr[   )rU   ra   r4  r5  rc   r6  r7  r8  r9  rb   viewuint32flattenuint16tobytesr   rS   r   r:  r;  r   r   r<  r=  r   r>  )r   r?  r@  r^  values_as_intspacked_valuesr!  s          r    test_make_bfloat16_tensor_rawz7TestHelperTensorFunctions.test_make_bfloat16_tensor_raw
  s   8c
c
0 #&  *	
 	
 	
 X M$j(A(ABB1EM$j(A(ABB1E
 M$j(A(ABB1EM$j(A(ABB1E
 M$j(A(ABB1EM$j(A(ABB1E
 M$j(A(ABB1EM$j(A(ABB1E
 M$j(A(ABB1EM$j(A(ABB1E#
 

4	 	 	 "4499")DDLLNN 0077	BBJJLL#!*
 
 
 	f---


L,A&,I,IJJJJJr"   c                    t          j        g dt           j                  }t          j        d |D             t           j                  }|                                }t          j        dt          j        t          |j
                  |d          }t          j        |          }t           j                            ||           d S )NrG  r)  c                 6    g | ]}t          j        |          S r   r   float32_to_float8e4m3r   r]  s     r    r   zOTestHelperTensorFunctions.test_make_float8e4m3fn_tensor_raw.<locals>.<listcomp>B  #    ???V)!,,???r"   r2   Tr[   )rU   ra   rc   uint8rc  r   rS   r   rH  r:   r;  r   r>  r<  r=  r   rL  f8re  rJ  rK  s         r    !test_make_float8e4m3fn_tensor_rawz;TestHelperTensorFunctions.test_make_float8e4m3fn_tensor_raw?  s    8000
CCCX??h???rx
 
 
 

!.hn%%
 
 
 #A&&

#.....r"   c                    t          j        g dt           j                  }t          j        d |D             t           j                  }|                                }t          j        dt          j        t          |j
                  |d          }t          j        |          }t           j                            ||           d S )N)r   rD  r>   rO  r  r)  c                 :    g | ]}t          j        |d           S )T)uzri  rk  s     r    r   zQTestHelperTensorFunctions.test_make_float8e4m3fnuz_tensor_raw.<locals>.<listcomp>R  s(    HHH!V)!555HHHr"   r2   Tr[   )rU   ra   rc   rm  rc  r   rS   r   rP  r:   r;  r   r>  r<  r=  rn  s         r    #test_make_float8e4m3fnuz_tensor_rawz=TestHelperTensorFunctions.test_make_float8e4m3fnuz_tensor_rawO  s    8000
CCCXHHxHHHPRPX
 
 
 

!0hn%%
 
 
 #A&&

#.....r"   c                    t          j        g dt           j                  }t          j        d |D             t           j                  }|                                }t          j        dt          j        t          |j
                  |d          }t          j        |          }t           j                            ||           d S )Nr   rD  r>   rT  r  r)  c                 6    g | ]}t          j        |          S r   r   float32_to_float8e5m2rk  s     r    r   zMTestHelperTensorFunctions.test_make_float8e5m2_tensor_raw.<locals>.<listcomp>b  rl  r"   r2   Tr[   )rU   ra   rc   rm  rc  r   rS   r   rU  r:   r;  r   r>  r<  r=  rn  s         r    test_make_float8e5m2_tensor_rawz9TestHelperTensorFunctions.test_make_float8e5m2_tensor_raw_  s    8222"*EEEX??h???rx
 
 
 

!,hn%%
 
 
 #A&&

#.....r"   c                    t          j        g dt           j                  }t          j        d |D             t           j                  }|                                }t          j        dt          j        t          |j
                  |d          }t          j        |          }t           j                            ||           d S )Nrv  r)  c                 <    g | ]}t          j        |d d           S )T)fnrs  rx  rk  s     r    r   zQTestHelperTensorFunctions.test_make_float8e5m2fnuz_tensor_raw.<locals>.<listcomp>r  s*    QQQ1V)!>>>QQQr"   r2   Tr[   )rU   ra   rc   rm  rc  r   rS   r   rX  r:   r;  r   r>  r<  r=  rn  s         r    #test_make_float8e5m2fnuz_tensor_rawz=TestHelperTensorFunctions.test_make_float8e5m2fnuz_tensor_rawo  s    8222"*EEEXQQQQQ(
 
 
 

!0hn%%
 
 
 #A&&

#.....r"   )r&   r  r  r  r  r&   r%   r%   rL   )i   z1.22.0z'The test requires numpy 1.22.0 or laterc                 J   t           j        dt           j        di}t          j                            ||         d         ||         d         dz   |          }t          j        d||j        |          }t          |          }t          j
                            ||           d S )Nr   r  ir	  r   r>   highsizerJ  )r   UINT4INT4rU   r   randintr   rS   r;  r   r<  r=  )r   r*  rO   
type_rangedatarJ  rK  s          r    test_make_4bit_tensorz/TestHelperTensorFunctions.test_make_4bit_tensor  s     wg

 y  ua z%'8';a'?d ! 
 
 sE4:t<<""

c*****r"   )r  r  r  rL   c                    t           j        dt           j        di}t          j                            ||         d         ||         d         dz   |          }t          j        ||t           j        k              }t          j        d|||	                                d	          }t          j        |          }t          j                            ||           d S )
Nr  r  r   r>   r  )signedpacked_int4T)r\   )r   r  r  rU   r   r  r   pack_float32_to_4bitrS   rc  r   r>  r<  r=  )r   r*  rO   r  r  packed_datarJ  rK  s           r    test_make_4bit_raw_tensorz3TestHelperTensorFunctions.test_make_4bit_raw_tensor  s     wg

 y  ua z%'8';a'?d ! 
 
 1%;#33
 
 
 5$(;(;(=(=4
 
 
 #A&&

c*****r"   c                 r   g d}t          j        dt          j        d|          }g d}t          j        dt          j        d|          }dg}t          j        |||          }|                     |j        |           |                     |j        |           |                     |j	        |           d S )Ng?g@gffffff
@g@g      @r2   r&   rM   )r>   r%   r&   r	  r  test_indicesr  )
r   rS   r   rT   rd   rf   r   valuesr^   rO   )r   r  ri   r^   rk   rh   sparses          r    test_make_sparse_tensorz1TestHelperTensorFunctions.test_make_sparse_tensor  s    ****;#44f
 
 
 "//+;+<4g
 
 
 d*=.+VV666888k22222r"   c                     t          j        dt          j        d          }t	          j        |           t          j        dt          j        d          }t	          j        |           d S )Nr   )r?   r  r   r   )r   r   r   rT   r   check_value_infor   vis     r    test_make_tensor_value_infoz5TestHelperTensorFunctions.test_make_tensor_value_info  sZ    *30A6JJ $$$ *30A2FF $$$$$r"   c                     t          j        dt          j        d          }t	          j        |           t          j        dt          j        d          }t	          j        |           d S )Nr   )r?   r%   r   r   )r   make_sparse_tensor_value_infor   rT   r   r  r  s     r    "test_make_sparse_tensor_value_infoz<TestHelperTensorFunctions.test_make_sparse_tensor_value_info  sZ    1#{7H&QQ $$$ 1#{7H"MM $$$$$r"   r   )r   r   r   r"  rA  rM  rQ  rV  rY  rf  rp  rt  rz  r~  parameterizedexpand	itertoolsproductr   r  r  unittestskipIfversion_utilsnumpy_older_thanr  r  r  r  r  r   r"   r    r  r    s       	@ 	@ 	@ 	@0K 0K 0K 0Kd/ / / /	/ 	/ 	/ 	// / / /	/ 	/ 	/ 	/3K 3K 3K 3Kj/ / / / / / / / / / / / / / / /"  ''	 01:	
 	
  X_&&x001 
+ 
+ 
+	  
+  ''	 013W	
 	
 
+ + + 
+$3 3 3 3% % % %% % % % % %r"   r  c                   &    e Zd ZddZddZddZdS )&TestHelperOptionalAndSequenceFunctionsr   Nc                    g d}t          j        dt          j        d|          }t          j        dt
          j        |          }|                     |j        d           |                     |j	        t
          j                   |                     |j
        |           t          j        dt          j        ||g          }t          j        dt
          j        |          }|                     |j        d           |                     |j	        t
          j                   |                     |j        |           t          j        dt
          j        d           }|                     |j        d           |                     |j	        t
          j                   |                     |                    d                     d S )Nr  r2   r  rM   )r   	elem_typer+   )r   r  r  tensor_value)r   rS   r   rT   make_optionalr	   TENSORr   r   r  r  make_sequencer
   SEQUENCEsequence_value	UNDEFINEDr   HasField)r   r  ri   optionalvalues_sequenceoptional_nones         r    test_make_optionalz9TestHelperOptionalAndSequenceFunctions.test_make_optional  s   ****;#44f
 
 
 '=#7}
 
 
 	///+]-ABBB.>>> !.#*!=1
 
 

 '=#9
 
 
 	///+]-CDDD0/BBB ,=#:$
 
 
 	+V4440-2IJJJ//??@@@@@r"   c                     t          j        ddg          }t          j        d|          }t          j        |          }t          j        d|          }|                     |j        d           |                     |j        j                   |                     |j        j        j	        |j                   t          j
        |          }t          j        |          }t          j        d|          }|                     |j        d           |                     |j        j                   t          j        d|          }|                     |j        j        j	        j        j	        |j                   d S )Nr?   r&   r  r;  r2   r   rv   )r   make_tensor_type_protomake_value_infomake_optional_type_protor   r   r   ry   optional_typer  make_sequence_type_protosequence_type)r   tensor_type_prototensor_val_intooptional_type_protooptional_val_infosequence_type_protosequence_value_infos          r    test_make_optional_value_infozDTestHelperOptionalAndSequenceFunctions.test_make_optional_value_info  s   "9AaSQQQ 0$5
 
 
 %=>OPP"2$7
 
 
 	*/888).<==="0:O<P	
 	
 	

 %=>OPP$=>QRR"2$7
 
 
 	*/888).<===$4$5
 
 
 	"0:HR$	
 	
 	
 	
 	
r"   c                     t          j        dd           }t          j        |          }t          j        d|          }t          j        ddd           }|                     ||           d S )Nr?   r  r2   r  )r   r  r;  )r   r  r  r  make_tensor_sequence_value_infor   )r   r  r  sequence_val_infosequence_val_info_prims        r    test_make_seuence_value_infozCTestHelperOptionalAndSequenceFunctions.test_make_seuence_value_info  s    "9ATRRR$=>OPP"2$7
 
 
 "(!G1D"
 "
 "
 	*,BCCCCCr"   r   )r   r   r   r  r  r  r   r"   r    r  r    s\        A A A AB
 
 
 
B
D 
D 
D 
D 
D 
Dr"   r  c                   &    e Zd ZddZddZddZdS )TestPrintableGraphr   Nc                    t          j        dddgdg          }t          j        dt          j        dg          g}t          j        |gdt          j        dt          j        dg          t          j        dt          j        dg          gt          j        dt          j        dg          gt          j        dt          j        dgdg          gd |          }t          j        |          }|                     d	|v |           d S )
Nr   r   Y_Initializerr   r   r>   r2   r   zI) optional inputs with matching initializers (
  %Y_Initializer[FLOAT, 1]	r   r   r   r   rT   r   rS   printable_graphr   r   r   r   r   	graph_strs        r    *test_initializer_with_matching_graph_inputz=TestPrintableGraph.test_initializer_with_matching_graph_input  s   usO&<seDD3C9JQCPPQ
!E-c;3DqcJJ-o{?PSTRUVV *30AA3GGH"?K4EsQCPP !
 
 
 *511	 		
 	
 	
 	
 	
r"   c                    t          j        dddgdg          }t          j        dt          j        dg          g}t          j        |gdt          j        dt          j        dg          gt          j        dt          j        dg          gt          j        dt          j        dgdg          gd |          }t          j        |          }|                     d	|v |           d S )
Nr   r   r  r   r   r>   r2   r   z+) initializers (
  %Y_Initializer[FLOAT, 1]r  r  s        r    (test_initializer_no_matching_graph_inputz;TestPrintableGraph.test_initializer_no_matching_graph_input9  s    usO&<seDD3C9JQCPPQ
!E*30AA3GGH*30AA3GGH"?K4EsQCPP !

 

 

 *511	 		
 	
 	
 	
 	
r"   c                    t          j        t          j        dddgdg          gdt          j        dt          j        d g          gt          j        dt          j        d g          gt          j        dt          j        dgdg          gd           }t          j        |          }t          j	        |           t          j
        |          }|                     d|           d S )	Nr   r   r  r   r2   r>   r   zX[FLOAT, ?])r   r   r   r   r   rT   rS   r   r   r   r  assertIn)r   r   r  r  s       r    test_unknown_dimensionsz*TestPrintableGraph.test_unknown_dimensionsQ  s    !ec?%;cUCCD*30AD6JJK*30AD6JJK"?K4EsQCPP 	
 	
 	
 !%((E"""*511	mY/////r"   r   )r   r   r   r  r  r  r   r"   r    r  r    sP        
 
 
 
6
 
 
 
00 0 0 0 0 0r"   r  tensor_dtypec                     g | ]v}|t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j	        t           j
        h
vt|wS r   )r   r:  rH  rP  rU  rX  r  r  r   	COMPLEX64
COMPLEX128r   ts     r    r   r   e  sv        $&"&!"

 
 	

 
 
r"   c                 *    t          j        |           S r   r   tensor_dtype_to_stringr  s    r    r   r   v      V:<HH r"   )idsr   c                 .   t           j                            dd                              t	          j        |                     }t	          j        d| |j        |          }t           j        	                    |t          j        |                     d S )Nr?   r%   r2   rM   )rU   r   randnrb   r   tensor_dtype_to_np_dtyperS   r;  r<  r=  r   r>  r  r?  r!  s      r    test_make_tensor_valsr  c  s    , yq!$$++'55 H |(.x  F JHl&;F&C&CDDDDDr"   c                     g | ]`}|t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        hv^|aS r   )	r   r:  r   rH  rP  rU  rX  r  r  r  s     r    r   r     sj        $&"&	


 

 	


 

 

r"   c                 *    t          j        |           S r   r  r  s    r    r   r     r  r"   c                 T   t           j                            dd                              t	          j        |                     }t	          j        d| |j        |                                d          }t           j	        
                    |t          j        |                     d S )Nr?   r%   r2   Tr[   )rU   r   r  rb   r   r  rS   r;  rc  r<  r=  r   r>  r  s      r    test_make_tensor_rawr    s    ( yq!$$++'55 H ^  F JHl&;F&C&CDDDDDr"   c                   F   e Zd Zej                            d          dd            Zej                            d          dd            Zej                            d          dd            Zej                            d          dd            Z	ddZ
dd	Zdd
ZdS )TestHelperMappingFunctionszerror::DeprecationWarningr   Nc                 B    t          j        t          j                  }d S r   )r   r  r   rT   r   _s     r    /test_tensor_dtype_to_np_dtype_not_throw_warningzJTestHelperMappingFunctions.test_tensor_dtype_to_np_dtype_not_throw_warning  s    +K,=>>r"   c                 B    t          j        t          j                  }d S r   )r   $tensor_dtype_to_storage_tensor_dtyper   rT   r  s     r    ;test_tensor_dtype_to_storage_tensor_dtype_not_throw_warningzVTestHelperMappingFunctions.test_tensor_dtype_to_storage_tensor_dtype_not_throw_warning  s    78IJJr"   c                 B    t          j        t          j                  }d S r   )r   tensor_dtype_to_fieldr   rT   r  s     r    ,test_tensor_dtype_to_field_not_throw_warningzGTestHelperMappingFunctions.test_tensor_dtype_to_field_not_throw_warning  s    ():;;r"   c                 R    t          j        t          j        d                    }d S Nrc   )r   np_dtype_to_tensor_dtyperU   r*  r  s     r    /test_np_dtype_to_tensor_dtype_not_throw_warningzJTestHelperMappingFunctions.test_np_dtype_to_tensor_dtype_not_throw_warning  s     +BHY,?,?@@r"   c                     |                      t          j        t          j                  t          j        d                     d S r   )r   r   r  r   r:  rU   r*  r   s    r    &test_tensor_dtype_to_np_dtype_bfloat16zATestHelperMappingFunctions.test_tensor_dtype_to_np_dtype_bfloat16  sA    +K,@AA28ICVCV	
 	
 	
 	
 	
r"   c                 ~    |                      t          j        t          j                  t          j                   d S r   )r   r   r  r   r:  UINT16r   s    r    2test_tensor_dtype_to_storage_tensor_dtype_bfloat16zMTestHelperMappingFunctions.test_tensor_dtype_to_storage_tensor_dtype_bfloat16  s;    78LMM	
 	
 	
 	
 	
r"   c                 j    |                      t          j        t          j                  d           d S )N
int32_data)r   r   r  r   r:  r   s    r    #test_tensor_dtype_to_field_bfloat16z>TestHelperMappingFunctions.test_tensor_dtype_to_field_bfloat16  s7    ()=>>	
 	
 	
 	
 	
r"   r   )r   r   r   pytestmarkfilterwarningsr  r  r  r  r  r  r
  r   r"   r    r  r    s         [ ;<<? ? ? =<? [ ;<<K K K =<K [ ;<<< < < =<< [ ;<<A A A =<A
 
 
 


 
 
 

 
 
 
 
 
r"   r  c                      e Zd Zej                            ej        j        dfej        j        dfej        j	        dfej        j
        dfej        j        dfej        j        dfej        j        dfej        j        dfej        j        d	fej        j        d
fej        j        dfej        j        dfej        j        dfej        j        dfg          d             Zd ZdS )TestAttrTypeToStrrT   r   r   r  GRAPHSPARSE_TENSORrz   r   r   r   TENSORSGRAPHSSPARSE_TENSORSr{   c                 Z    t          j        |          }|                     ||           d S r   r   _attr_type_to_strr   )r   r   expected_strresults       r    test_attr_type_to_strz'TestAttrTypeToStr.test_attr_type_to_str  s0    & ))44.....r"   c                 Z    t          j        d          }|                     |d           d S )Ni'  r  r  )r   r  s     r    test_attr_type_to_str_undefinedz1TestAttrTypeToStr.test_attr_type_to_str_undefined  s.    )$//-----r"   N)r   r   r   r  r  r   r   rT   r   r   r  r  r  rz   r   r   r   r  r  r  r{   r  r  r   r"   r    r  r    s        '')/9)-u5)0(;)0(;)/9)7I)4lC)0(;).7)19=)19=)0(;)8:JK)5}E	
 $/ /% $/. . . . .r"   r  __main__),r  r   r6  r  typingr   r   r   numpyrU   r  r  r  onnxr   r   r   r	   r
   r   r   r   r   r   r   onnx.reference.op_runr   TestCaser   r   r  r  r  r  parametrizeget_all_tensor_dtypesr$   r  r  r  r  r   main__file__r   r"   r    <module>r'     s          # # # # # # # # # #                                       4 3 3 3 3 3AV AV AV AV AV8#4 AV AV AVH~= ~= ~= ~= ~=h/ ~= ~= ~=Bd% d% d% d% d% 1 d% d% d%N	MD MD MD MD MDX-> MD MD MD`C0 C0 C0 C0 C0* C0 C0 C0L  --//  " 	IH'   *E E E E E+ *E  --//   	IH#   &Es Et E E E' &E#
 #
 #
 #
 #
!2 #
 #
 #
L. . . . .) . . .8 zHMOOOFK
 r"   