
    bIg                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dl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mZ d dl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jL                  jO                  d ejP                         D  cg c]v  } | ejR                  ejT                  ejV                  ejX                  ejZ                  ej\                  ej^                  ej`                  ejb                  ejd                  h
vr| x c} d       dd       Z3ejL                  jO                  d ejP                         D  cg c]`  } | ejR                  ej`                  ejT                  ejV                  ejX                  ejZ                  ej\                  ej^                  hvr| b c} d       dd       Z4 G d dej@                        Z5 G d dej@                        Z6e7dk(  r% ejp                           ejp                  e9g       yyc c} w c c} w )    )annotationsN)Any)AttributeProto
GraphProto
ModelProtoOptionalProtoSequenceProtoTensorProto	TypeProto_custom_element_typescheckerdefshelpernumpy_helper)to_array_extended)Cast_19c                      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y)TestHelperAttributeFunctionsc                   t        j                  dd      }| j                  |j                  d       | j                  |j                  d       t        j                  |       t        j                  dd      }| j                  |j                  d       | j                  |j                  d       t        j                  |       y )Nfloat      ?g    _B)r   make_attributeassertEqualnamefr   check_attributeselfattrs     R/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/test/helper_test.pytest_attr_floatz,TestHelperAttributeFunctions.test_attr_float%   s    $$Wc2G,%%$$Wd3G,&%    c                   t        j                  dd      }| j                  |j                  d       | j                  |j                  d       t        j                  |       t        j                  dd      }| j                  |j                  d       | j                  |j                  d       t        j                  |       t        j                  dd      }| j                  |j                  d       | j                  |j                  d       t        j                  |       t        j                  dd      }| j                  |j                  d       | j                  |j                  d       t        j                  |       y )Nint      i  i  )r   r   r   r   ir   r   r   s     r    test_attr_intz*TestHelperAttributeFunctions.test_attr_int1   s"   $$UA.E*#%$$UA.E*#%$$UF3E*(%$$UF3E*(%r"   c                >   t        j                  dd      }| j                  |j                  d       | j                  |j                  d       t        j                  ddd      }| j                  |j                  d       | j                  |j                  d       y )Navalue doc)r   r   r   r   
doc_stringr   s     r    test_attr_doc_stringz1TestHelperAttributeFunctions.test_attr_doc_stringG   sx    $$S'2C("-$$S'59C(%0r"   c                .   t        j                  dd      }| j                  |j                  d       | j                  |j                  d       t        j                  |       t        j                  dd      }| j                  |j                  d       | j                  |j                  d       t        j                  |       t        j                  dd      }| j                  |j                  d       | j                  |j                  d       t        j                  |       t        j                  dd      }| j                  |j                  d       | j                  t        j                  |      d       t        j                  |       y )Nstrs   testtestr,   r"   )r   r   r   r   sr   r   get_attribute_valuer   s     r    test_attr_stringz-TestHelperAttributeFunctions.test_attr_stringO   s)   $$UG4E*)%$$UF3E*)%$$UF3E*)%$$UB/E*33D93?%r"   c                    t        j                  dddg      }| j                  |j                  d       | j                  t	        |j
                        ddg       t        j                  |       y )Nfloatsr          @r   r   r   r   listr7   r   r   r   s     r    test_attr_repeated_floatz5TestHelperAttributeFunctions.test_attr_repeated_floate   sW    $$XSz:H-dkk*S#J7%r"   c                    t        j                  dddg      }| j                  |j                  d       | j                  t	        |j
                        ddg       t        j                  |       y )Nints      )r   r   r   r   r:   r=   r   r   r   s     r    test_attr_repeated_intz3TestHelperAttributeFunctions.test_attr_repeated_intk   sV    $$VaV4F+dii1a&1%r"   c                    t        j                  dg d      }| j                  |j                  d       | j                  t	        |j
                        g d       t        j                  |       y )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_intsq   sQ    $$W.>?G,dkk*,@A%r"   c                    t        j                  dddg      }| j                  |j                  d       | j                  t	        |j
                        ddg       t        j                  |       y )Nstringsstr1str2s   str1s   str2)r   r   r   r   r:   rG   r   r   r   s     r    test_attr_repeated_strz3TestHelperAttributeFunctions.test_attr_repeated_strw   sY    $$Y0@AI.dll+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                  |j                  d       | j                  t        |j                        |       t        j                  |       y )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_proto}   s    K$5$5Drwwqz K$5$5Drwwqz	
 $$Y8I.dll+W5%r"   c                   ddg}g d}t        j                  dt        j                  t	        |      gt        j                  |      j                  t
        j                        d      }g d}t        j                  dt        j                  t	        |      gt        j                  |      j                  t
        j                        d      }t        j                  |||      }t        j                  d|      }| j                  |j                  d       t        j                   t        j"                  |             t        j$                  |       y )	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   s	   !fS** !''m$%-(//

;
 #++!''n%&.)00:
 11>;
 $$]MBM2##F$>$>t$DE%r"   c                   ddg}g d}t        j                  dt        j                  t	        |      gt        j                  |      j                  t
        j                        d      }g d}t        j                  dt        j                  t	        |      gt        j                  |      j                  t
        j                        d      }t        j                  |||      }||g}t        j                  d|      }| j                  |j                  d       t        j                   |       t        j"                  |      D ]  }	t        j$                  |	        y )	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   s"   !fS** !''m$%-(//

;
 #++!''n%&.)00:
 11>;
 )-8$$^_EN3%++D1 	+A''*	+r"   c                ,   t               t               g}d|d   _        d|d   _        t        j                  d|      }| j	                  |j                  d       | j	                  t        |j                        |       t        j                  |       y )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   ss    ,
-q	q	$$Xv6H-dkk*F3%r"   c                2   t               }t        j                  d|      }| j                  |j                  d       | j                  |j
                  |       | j                  |j                  t        j                         t               t               g}t        j                  d|      }| j                  |j                  d       | j                  t        |j                        |       | j                  |j                  t        j                         y )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*-N$=$=>ik*$$]E:M2d../7N$>$>?r"   c                :   t        j                  dg t        j                        }| j	                  |j
                  t        j                         | j	                  t        |j                        d       | j                  t        t         j                  dg        y )Nempty	attr_typer   )
r   r   r   STRINGSr   ry   r`   rG   assertRaises
ValueErrorr   s     r    test_attr_empty_listz1TestHelperAttributeFunctions.test_attr_empty_list   si    $$WbN<R<RSN$:$:;T\\*A.*f&;&;WbIr"   c                    | j                  t        d      5  t        j                  ddt        j
                         d d d        y # 1 sw Y   y xY w)NzInferred attribute type 'FLOAT'r2   g@r   )assertRaisesRegex	TypeErrorr   r   r   STRINGr   s    r    test_attr_mismatchz/TestHelperAttributeFunctions.test_attr_mismatch   sD    ##I/PQ 	P!!&#9N9NO	P 	P 	Ps   'AAc                   t               }| j                  t        j                  t        j                  |       t               }d|_        | j                  t        j                  t        j                  |       t               }d|_        d|_        d|_        | j                  t        j                  t        j                  |       y )Nr2   r   r?   )r   r   r   ValidationErrorr   r   r   r'   r   s     r    test_is_attr_legalz/TestHelperAttributeFunctions.test_is_attr_legal   s    '1173J3JDQ	'1173J3JDQ	'1173J3JDQr"   c                   	 	 	 	 	 	 	 	 	 	 dd	 	 	 	 	 	 	 	 	 	 ddfdfdfdfdfdfdg}t        d	      D ]C  }t               }d
|_         t        j                  |      |       t        j                  |       E t        d	      D ]e  }t               }d
|_        t        j                  |d      D ]
  } ||        | j                  t
        j                  t
        j                  |       g y )Nc                ,    t        | ||       || _        y N)setattrry   r   type_varr+   s       r    _setzETestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>._set   s     D#u%DIr"   c                4    |j                  |       || _        y r   )extendry   r   s       r    _extendzHTestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>._extend   s     JJuDIr"   c                6     | t         j                  dd      S )Nr   r   )r   rT   r   r   s    r    <lambda>zITestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>.<lambda>
  s    $t^%9%93D r"   c                6     | t         j                  dd      S )Nr'   r>   )r   INTr   s    r    r   zITestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>.<lambda>  s    $t^%7%7a@ r"   c                6     | 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 r"   c                N     | 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#    W.//sCj r"   c                N     | t         j                  | j                  ddg      S )Nr>   r?   )r   INTSr=   r   s    r    r   zITestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>.<lambda>  s     '$(;(;TYYAO r"   c                N     | 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#    W.00$,,t r"   d   r2   r?   )
r   r   r   AttributeProto.AttributeTyper   r1   r+   r   returnNone)
r   r   r   r   r   z	list[Any]r+   r   r   r   )
ranger   r   randomchoicer   r   sampler   r   )r   SET_ATTR_ir   funcr   r   s        @@r    test_is_attr_legal_verbosez7TestHelperAttributeFunctions.test_is_attr_legal_verbose   s7   	 	/	 	 		
 		 	/	 	 		
 	 E@H P
" * 	*B!#DDI#FMM(#D)##D)		* * 	VB!#DDIh2 T
g55w7N7NPTU	Vr"   Nr   r   )__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&,&&&&&&8+<&@JPR/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y)TestHelperNodeFunctionsc                   | j                  t        j                  d             t        j                  ddgdgd      }| j                  |j                  d       | j                  |j                  d       | j                  t        |j                        dg       | j                  t        |j                        dg       y )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))62/hnn-u5hoo.6r"   c                t    t        j                  ddgdgdd      }| j                  |j                  d       y )Nr   r   r   r2   r-   )r   r.   )r   r   r   r.   r   s     r    r/   z,TestHelperNodeFunctions.test_attr_doc_string1  s5    ##FSEC5vRWX,,e4r"   c                   | j                  t        j                  d             t        j                  ddgdgd      }| j                  |j                  d       | j                  t        |j                        dg       | j                  t        |j                        dg       | j                  t        |j                        d       | j                  |j                  d   t        j                  dd             y )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_arg5  s    () ##FSEC5AF))62hnn-u5hoo.6X//0!4++A.0E0EkST0UVr"   c                v    t        j                  ddgdgddd      }| j                  |j                  d       y )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@  s9    ##SEC5v%
 	-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                  |j                  d       | j                  t        |j                        d       | j                  |j                  d
   |       | j                  |j                  d   |       | j                  |j                  d       | j                  |j                  d
   |d
          y )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_graphF  sH   $$VcUSE:	$$US#J>	33C9J9JQPQFST
!!	"**30A0AAq6JK**30A0AAq6JK!
 	V,UZZ!,A	2A	2))2.))!,jm<r"   c                    t        j                  g dg g d d      }| j                  |j                  d       | j                  |j                  d       y )Nmy graphzmy docs)r   r   r   r   r.   )r   r   s     r    test_graph_docstringz,TestHelperNodeFunctions.test_graph_docstringY  sF    !!"j"b$	JZ0))9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      }| j                  t        t         j                  |d       t        j                  |d      }| j                  |j                  d       y )	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%%J**30A0AAq6JK**30A0AAq6JK	
	 	.&*;*;YAN%%ivF	00&9r"   c                    t        j                  g dg g       }t        j                  |d      }| j                  t	        |d             | j                  |j                  d       y )Nr   r2   r.   r   )r   r   r   assertFalsehasattrr   r.   )r   r   r   s      r    test_model_docstringz,TestHelperNodeFunctions.test_model_docstringj  sW    !!"j"b9%%e?	 	F34--v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                  j                         }d|_        d|_	        | j                  t        j                  t        j
                  |       y )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_propsr  s    !!"j"b9%%e?	F	
 	I&F	
 	I&''++-
'1173F3F	Rr"   c                    ddd  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gd
        |ddgd        j                  t        dg       y )!Nc           	         t        j                  g dg g       }t        j                  || D cg c]  }t        j                  |  c}      S c c}w )Nr   )opset_imports)r   r   make_model_gen_versionmake_opsetid)opset_versionsr   pairs      r    mk_modelz>TestHelperNodeFunctions.test_model_irversion.<locals>.mk_model  sJ    %%b*b"=E00FTUdv22D9U Us   A
c                N     |       }j                  |j                  |       y r   )r   
ir_version)r   r  modelr   r   s      r    r2   z:TestHelperNodeFunctions.test_model_irversion.<locals>.test  s#    ^,EU--z:r"   )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   list[tuple[str, int]]r   r   )r   r  r  r$   r   r   )r   r   )r   r2   r   s   ` @r    test_model_irversionz,TestHelperNodeFunctions.test_model_irversion  s.   		;
 	gYhZhZhZhZhZhZhZhZhZhZhZhZhZnq! !$ !$ !$ "%%&*h)*A.*h<r"   Nr   )r   r   r   r   r/   r   r   r   r   r   r   r   r  r   r"   r    r   r   (  s6    75	W9=&6

:7S"$=r"   r   c                     e Zd ZddZ ej
                   ej                  d      d      dd       ZddZ	ddZ
ddZddZ ej
                   ej                  d      d      dd	       Zdd
ZddZddZddZej$                  j'                   ej*                  ej.                  ej0                  fd             ej
                   ej                  d      d      dd              Zej$                  j'                   ej*                  d             ej
                   ej                  d      d      dd              Zej$                  j'                   ej*                  ej.                  ej0                  fd             ej
                   ej                  d      d      dd              ZddZddZddZy)TestHelperTensorFunctionsc                    dD cg c]  }|j                  d       }}t        j                  dt        j                  d|d      }| j                  |t        |j                               y c c}w )N)AmyBillyCindyDavidzutf-8r2   )r?   r?   Fr[   )encoder   rS   r
   r   r   r:   string_data)r   r3   string_listtensors       r    test_make_string_tensorz1TestHelperTensorFunctions.test_make_string_tensor  sf    2TUQqxx(UU##!((
 	d6+=+=&>? Vs   A-z1.26.0z'The test requires numpy 1.26.0 or laterc                z   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        j                  d            d   t        j                  d
t        j                  d            d   gt        j                  d
t        j                  d            d   t        j                  d
t        j                  d            d   gt        j                  d
t        j                  d            d   t        j                  d
t        j                  d            d   gt        j                  d
t        j                  d            d   t        j                  d
t        j                  d            d   gt        j                  d
t        j                  d            d   t        j                  d
t        j                  d            d   gg      }t        j                  dt        j                  |j                  |      }| j                  |j                  d       t         j                   j#                  t%        j&                  |t        j                        t)        j*                  |             y )Nr   r8   rC         @     ?     p??皙?dtype!f3F800000r   4000000040400000408000003DCC00003DCD00007FC000007F800000r2   rM   to)rU   ra   naninfrc   structunpackbytesfromhexr   rS   r
   BFLOAT16shaper   r   testingassert_equalCastevalr   to_array)r   np_array
np_resultsr"  s       r    test_make_bfloat16_tensorz3TestHelperTensorFunctions.test_make_bfloat16_tensor  s    88c
c
0 #&  **	
 XX MM$j(AB1EMM$j(AB1E
 MM$j(AB1EMM$j(AB1E
 MM$j(AB MM$j(AB1E	 MM$j(AB MM$j(AB1E	 MM$j(AB1EMM$j(AB1E+

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


IIj[%9%9:!!&)	
r"   c                T   t        j                  dt        j                  dgg d      }t	        j
                  |      }t        j                  g dt        j                        }t        j                  j                  t        j                  |t        j                        |       y )N
zero_pointr&   )r         ?r>   P  333333$@r   rI  r>   i  r  r*  r5  )r   rS   r
   FLOAT8E4M3FNr   rC  rU   ra   rc   r?  r@  rA  rB  r   yynpexpecteds       r    test_make_float8e4m3fn_tensorz7TestHelperTensorFunctions.test_make_float8e4m3fn_tensor  sq    +22QC9Q
 ##A&880

C


		({7O7O PRUVr"   c                T   t        j                  dt        j                  dgg d      }t	        j
                  |      }t        j                  g dt        j                        }t        j                  j                  t        j                  |t        j                        |       y )NrH  r	  )r   rI  r>   rJ  rK  gh㈵gh㈵>)r   rI  r>      r  r   r   r*  r5  )r   rS   r
   FLOAT8E4M3FNUZr   rC  rU   ra   rc   r?  r@  rA  rB  rN  s       r    test_make_float8e4m3fnuz_tensorz9TestHelperTensorFunctions.test_make_float8e4m3fnuz_tensor  ss    &&C7	
 ##A&886bjjI


		({7Q7Q RTWXr"   c                T   t        j                  dt        j                  dgg d      }t	        j
                  |      }t        j                  g dt        j                        }t        j                  j                  t        j                  |t        j                        |       y )NrH  r&   )r   rI  r>   rJ  `   )r   rI  r>      rX  r*  r5  )r   rS   r
   
FLOAT8E5M2r   rC  rU   ra   rc   r?  r@  rA  rB  rN  s       r    test_make_float8e5m2_tensorz5TestHelperTensorFunctions.test_make_float8e5m2_tensor  sq    +001#7M
 ##A&882"**E


		({7M7M NPSTr"   c                T   t        j                  dt        j                  dgg d      }t	        j
                  |      }t        j                  g dt        j                        }t        j                  j                  t        j                  |t        j                        |       y )NrH  r	  )r   rI  r>   rJ  rX  gHzgHz>)r   rI  r>   rY  rX  r   r   r*  r5  )r   rS   r
   FLOAT8E5M2FNUZr   rC  rU   ra   rc   r?  r@  rA  rB  rN  s       r    test_make_float8e5m2fnuz_tensorz9TestHelperTensorFunctions.test_make_float8e5m2fnuz_tensor
  ss    &&C9	
 ##A&888

K


		({7Q7Q RTWXr"   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        j                  d            d   t        j                  d
t        j                  d            d   gt        j                  d
t        j                  d            d   t        j                  d
t        j                  d            d   gt        j                  d
t        j                  d            d   t        j                  d
t        j                  d            d   gt        j                  d
t        j                  d            d   t        j                  d
t        j                  d            d   gt        j                  d
t        j                  d            d   t        j                  d
t        j                  d            d   gg      }d }|j                  t         j                        j                  t         j                        j                         } ||      j                  t         j                        j                         }t        j                   dt"        j$                  |j&                  |d      }| j)                  |j*                  d       t         j,                  j/                  t1        j2                  |t"        j$                        t5        j6                  |      d       y )Nr   r8   rC   r%  r&  r'  r(  r)  r*  r,  r-  r   r.  r/  r0  r1  3DCB0000r3  r4  c                    | dz	  S )Nr  r   )xs    r    truncatezITestHelperTensorFunctions.test_make_bfloat16_tensor_raw.<locals>.truncate?  s    7Nr"   r2   Tr[   r5  g-C6?)rtol)rU   ra   r7  r8  rc   r9  r:  r;  r<  rb   viewuint32flattenuint16tobytesr   rS   r
   r=  r>  r   r   r?  assert_allcloserA  rB  r   rC  )r   rD  rE  rc  values_as_intspacked_valuesr"  s          r    test_make_bfloat16_tensor_rawz7TestHelperTensorFunctions.test_make_bfloat16_tensor_raw  sl    88c
c
0 #&  **	
 XX MM$j(AB1EMM$j(AB1E
 MM$j(AB1EMM$j(AB1E
 MM$j(AB1EMM$j(AB1E
 MM$j(AB1EMM$j(AB1E
 MM$j(AB1EMM$j(AB1E#

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


""IIj[%9%9:!!&) 	# 	
r"   c                .   t        j                  g dt         j                        }t        j                  |D cg c]  }t        j                  |       c}t         j
                        }|j                         }t        j                  dt        j                  t        |j                        |d      }t        j                  |      }t         j                  j                  t!        j"                  |t        j                        |       y c c}w )NrL  r*  r2   Tr[   r5  )rU   ra   rc   r   float32_to_float8e4m3uint8ri  rS   r
   rM  r:   r>  r   rC  r?  r@  rA  rB  r   rQ  rb  f8rl  rO  rP  s          r    !test_make_float8e4m3fn_tensor_rawz;TestHelperTensorFunctions.test_make_float8e4m3fn_tensor_rawR  s    880

CXX6>?V))!,?rxx
 

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


		({7O7O PRUV @   Dc           	     2   t        j                  g dt         j                        }t        j                  |D cg c]  }t        j                  |d       c}t         j
                        }|j                         }t        j                  dt        j                  t        |j                        |d      }t        j                  |      }t         j                  j                  t!        j"                  |t        j                        |       y c c}w )N)r   rI  r>   rT  r  r*  T)uzr2   r[   r5  )rU   ra   rc   r   ro  rp  ri  rS   r
   rU  r:   r>  r   rC  r?  r@  rA  rB  rq  s          r    #test_make_float8e4m3fnuz_tensor_rawz=TestHelperTensorFunctions.test_make_float8e4m3fnuz_tensor_rawb  s    880

CXX?GH!V))!5HPRPXPX
 

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


		({7Q7Q RTWX Is   Dc                .   t        j                  g dt         j                        }t        j                  |D cg c]  }t        j                  |       c}t         j
                        }|j                         }t        j                  dt        j                  t        |j                        |d      }t        j                  |      }t         j                  j                  t!        j"                  |t        j                        |       y c c}w )Nr   rI  r>   rY  r  r*  r2   Tr[   r5  )rU   ra   rc   r   float32_to_float8e5m2rp  ri  rS   r
   rZ  r:   r>  r   rC  r?  r@  rA  rB  rq  s          r    test_make_float8e5m2_tensor_rawz9TestHelperTensorFunctions.test_make_float8e5m2_tensor_rawr  s    882"**EXX6>?V))!,?rxx
 

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


		({7M7M NPST @rt  c           
     4   t        j                  g dt         j                        }t        j                  |D cg c]  }t        j                  |dd       c}t         j
                        }|j                         }t        j                  dt        j                  t        |j                        |d      }t        j                  |      }t         j                  j                  t!        j"                  |t        j                        |       y c c}w )Nry  r*  T)fnrv  r2   r[   r5  )rU   ra   rc   r   rz  rp  ri  rS   r
   r]  r:   r>  r   rC  r?  r@  rA  rB  rq  s          r    #test_make_float8e5m2fnuz_tensor_rawz=TestHelperTensorFunctions.test_make_float8e5m2fnuz_tensor_raw  s    882"**EXXHPQ1V))!>Q((
 

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


		({7Q7Q RTWX Rs   D)r&   r  r  r  r  r&   r%   r%   rL   )i   z1.22.0z'The test requires numpy 1.22.0 or laterc                *   t         j                  dt         j                  di}t        j                  j                  ||   d   ||   d   dz   |      }t        j                  d||j                  |      }t        j                  t        j                  |j                        dz        }t        t        |j                              }t        j                  j!                  ||       t#        |      }t        j                  j!                  ||       y )Nr   r  ir	  r   r>   highsizerO  r8   )r
   UINT4INT4rU   r   randintr   rS   r>  mathceilprodr`   r;  
int32_datar?  r@  r   )	r   r+  rO   
type_rangedatarO  expected_data_sizeactual_data_sizerP  s	            r    test_make_4bit_tensorz/TestHelperTensorFunctions.test_make_4bit_tensor  s     wg

 yy  ua z%'8';a'?d ! 
 sE4::t< "YYrwwtzz':S'@AuQ\\23


 02DE  "


c*r"   c                   t        j                  |      }t        j                  dg|z  t         j                        j	                  |      }t        j                  dt        j                  |j                  |      }t        j                  |dz        }t        t        |j                              }t         j                  j!                  ||       y )Nr*  rO  r8   )rU   r  ra   int8reshaper   rS   r
   r  r>  r  r  r`   r;  r  r?  r@  )r   rO   	num_elemsr  rO  r  r  s          r    test_4bit_tensor_sizez/TestHelperTensorFunctions.test_4bit_tensor_size  s     GGDM	xxy(8@@FsK$4$4djj$G "YYy37uQ\\23


 02DEr"   )r  r  r  rL   c                   t         j                  dt         j                  di}t        j                  j                  ||   d   ||   d   dz   |      j                  t        j                        }t        j                  ||t         j                  k(        }t        j                  d|||j                         d	      }t        j                  |      }t        j                  j                  ||       y )
Nr  r  r   r>   r  )signedpacked_int4T)r\   )r
   r  r  rU   r   r  rb   rc   r   pack_float32_to_4bitrS   ri  r   rC  r?  r@  )r   r+  rO   r  r  packed_datarO  rP  s           r    test_make_4bit_raw_tensorz3TestHelperTensorFunctions.test_make_4bit_raw_tensor  s     wg

 yy  ua z%'8';a'?d ! 

&
 	 11%;#3#33
 5$(;(;(=4
 ##A&


c*r"   c                   g d}t        j                  dt        j                  d|      }g d}t        j                  dt        j                  d|      }dg}t        j
                  |||      }| j                  |j                  |       | j                  |j                  |       | j                  |j                  |       y )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    ***;#4#44f
 "++;+<+<4g
 d**=.+V68k2r"   c                    t        j                  dt        j                  d      }t	        j
                  |       t        j                  dt        j                  d      }t	        j
                  |       y )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  sT    **30A0A6J  $ **30A0A2F  $r"   c                    t        j                  dt        j                  d      }t	        j
                  |       t        j                  dt        j                  d      }t	        j
                  |       y )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  sT    11#{7H7H&Q  $ 11#{7H7H"M  $r"   Nr   )r   r   r   r#  unittestskipIfversion_utilsnumpy_older_thanrF  rR  rV  r[  r^  rm  rs  rw  r{  r~  parameterizedexpand	itertoolsproductr
   r  r  r  r  r  r  r  r  r   r"   r    r  r    s   	@ X__&&&x013
	3
jW	YU	Y X__&&&x017
	7
rW Y U Y"   ''	 0 01:	
 X__&&&x01+	+&   ''	:	

 X__&&&x01
F	
F   ''	 0 013W	

 X__&&&x01+	+$3%%r"   r  c                  $    e Zd ZddZddZddZy)&TestHelperOptionalAndSequenceFunctionsc                   g d}t        j                  dt        j                  d|      }t        j                  dt
        j                  |      }| j                  |j                  d       | j                  |j                  t
        j                         | j                  |j                  |       t        j                  dt        j                  ||g      }t        j                  dt
        j                  |      }| j                  |j                  d       | j                  |j                  t
        j                         | j                  |j                  |       t        j                  dt
        j                  d       }| j                  |j                  d       | j                  |j                  t
        j                         | j!                  |j#                  d             y )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   ***;#4#44f
 ''=#7#7}
 	/++]-A-AB..> !..#**!=1

 ''=#9#9
 	/++]-C-CD00/B ,,=#:#:$
 	++V400-2I2IJ//?@r"   c                ~   t        j                  ddg      }t        j                  d|      }t        j                  |      }t        j                  d|      }| j	                  |j
                  d       | j                  |j                  j                         | j	                  |j                  j                  j                  |j                         t        j                  |      }t        j                  |      }t        j                  d|      }| j	                  |j
                  d       | j                  |j                  j                         t        j                  d|      }| j	                  |j                  j                  j                  j                  j                  |j                         y )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"  su   "99AaSQ 00$5
 %==>OP"22$7
 	*//8)..<<=""00::O<P<P	

 %==>OP$==>QR"22$7
 	*//8)..<<=$44$5
 	""00::HHRR$$	
r"   c                    t        j                  dd       }t        j                  |      }t        j                  d|      }t        j                  ddd       }| j                  ||       y )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_infoC  sl    "99ATR$==>OP"22$7
 "(!G!G1D"
 	*,BCr"   Nr   )r   r   r   r  r  r  r   r"   r    r  r     s    AB
B
Dr"   r  c                  $    e Zd ZddZddZddZy)TestPrintableGraphc                >   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                  |      }| j                  d	|v |       y )
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_inputQ  s	   usO&<seD33C9J9JQCPQ
!!E--c;3D3DqcJ--o{?P?PSTRUV **30A0AA3GH""?K4E4EsQCP !
 **5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                  |      }| j                  d	|v |       y )
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_inputl  s    usO&<seD33C9J9JQCPQ
!!E**30A0AA3GH**30A0AA3GH""?K4E4EsQCP !

 **5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                  |      }| j                  d|       y )	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_dimensions  s    !!ec?%;cUCD**30A0AD6JK**30A0AD6JK""?K4E4EsQCP 	
 !!%(E"**51	mY/r"   Nr   )r   r   r   r  r  r  r   r"   r    r  r  P  s    
6
00r"   r  tensor_dtypec                ,    t        j                  |       S r   r   tensor_dtype_to_stringr  s    r    r   r         V::<H r"   )idsc                4   t         j                  j                  dd      j                  t	        j
                  |             }t	        j                  d| |j                  |      }t         j                  j                  |t        j                  |             y )Nr?   r%   r2   rM   )rU   r   randnrb   r   tensor_dtype_to_np_dtyperS   r>  r?  r@  r   rC  r  rD  r"  s      r    test_make_tensor_valsr    sq    , yyq!$++''5H |(..xF JJHl&;&;F&CDr"   c                ,    t        j                  |       S r   r  r  s    r    r   r     r  r"   c                R   t         j                  j                  dd      j                  t	        j
                  |             }t	        j                  d| |j                  |j                         d      }t         j                  j                  |t        j                  |             y )Nr?   r%   r2   Tr[   )rU   r   r  rb   r   r  rS   r>  ri  r?  r@  r   rC  r  s      r    test_make_tensor_rawr    s    ( yyq!$++''5H ^^F JJHl&;&;F&CDr"   c                  4   e Zd Zej                  j                  d      d
d       Zej                  j                  d      d
d       Zej                  j                  d      d
d       Zej                  j                  d      d
d       Z	d
dZ
d
dZd
dZy	)TestHelperMappingFunctionszerror::DeprecationWarningc                J    t        j                  t        j                        }y 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                J    t        j                  t        j                        }y 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78I8IJr"   c                J    t        j                  t        j                        }y 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                T    t        j                  t        j                  d            }y 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    ++BHHY,?@r"   c                    | j                  t        j                  t        j                        t        j                  d             y 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  s/    ++K,@,@A288ICV	
r"   c                    | j                  t        j                  t        j                        t        j
                         y 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78L8LM	
r"   c                j    | j                  t        j                  t        j                        d       y )Nr  )r   r   r  r
   r=  r   s    r    #test_tensor_dtype_to_field_bfloat16z>TestHelperMappingFunctions.test_tensor_dtype_to_field_bfloat16  s&    (()=)=>	
r"   Nr   )r   r   r   pytestmarkfilterwarningsr  r  r  r  r
  r  r  r   r"   r    r  r    s     [[ ;<? =? [[ ;<K =K [[ ;<< =< [[ ;<A =A



r"   r  c                     e Zd Zej                  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 Zy)TestAttrTypeToStrrT   r   r   r  GRAPHSPARSE_TENSORrz   r   r   r   TENSORSGRAPHSSPARSE_TENSORSr{   c                R    t        j                  |      }| j                  ||       y r   r   _attr_type_to_strr   )r   r   expected_strresults       r    test_attr_type_to_strz'TestAttrTypeToStr.test_attr_type_to_str  s$    & )))4.r"   c                R    t        j                  d      }| j                  |d       y )Ni'  r  r  )r   r  s     r    test_attr_type_to_str_undefinedz1TestAttrTypeToStr.test_attr_type_to_str_undefined  s"    ))$/-r"   c                    d }t         j                  j                         D ]0  \  }}| j                  t	        j
                   ||            |       2 y )Nc                l    t        t        |       rt        t        |       S d|  } t        t        |       S )Nfloat8)r   r   getattrr   s    r    _getz1TestAttrTypeToStr.test_custom_types.<locals>._get  s4    ,d34d;;D6?D0$77r"   )r   mapping_name_to_data_typeitemsr   r   r  )r   r&  kvs       r    test_custom_typesz#TestAttrTypeToStr.test_custom_types  sL    	8 *CCIIK 	JDAqV<<T!WEqI	Jr"   N)r   r   r   r  r  r   AttributeTyperT   r   r   r  r  r  rz   r   r   r   r  r  r  r{   r  r!  r+  r   r"   r    r  r    sN     ''))//9))--u5))00(;))00(;))//9))77I))44lC))00(;))..7))119=))119=))00(;))88:JK))55}E	
$/%$/.Jr"   r  __main__)r  r$   r   r   ):
__future__r   r  r  r   r9  r  typingr   numpyrU   r  r  r  onnxr   r   r   r   r	   r
   r   r   r   r   r   r   onnx.reference.op_runr   onnx.reference.ops.op_castr   rA  TestCaser   r   r  r  r  r  parametrizeget_all_tensor_dtypesr=  rM  rU  rZ  r]  r  r  r   	COMPLEX64
COMPLEX128r  r  r  r  r   main__file__)ts   0r    <module>r<     sv   #              4 6AV8#4#4 AVH=h// =DS% 1 1 S%l
MDX->-> MD`C0** C0L  .--/  $$&&""&&!!""

 	
" 	I'  *E+*E  .--/  $$&&""&&	


 	
 	I#  &E'&E#
!2!2 #
L#J)) #JL zHMMOFKK
 U>s   +A;I+
 A%I0
