
    wi5                    0   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 d dlZd dl	Z
d dlm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	Zd)d
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*d            Z&ej#        $                    dd  ej%                    D             d           ej#        $                    ddd gdd!g          d+d#                        Z' G d$ d%ej                  Z( G d& d'ej                  Z)e*d(k    r ej+                     dS dS ),    )annotationsN)Any)AttributeProto
GraphProto
ModelProtoOptionalProtoSequenceProtoTensorProto	TypeProtocheckerdefshelpernumpy_helperarray
np.ndarrayreturnnpt.NDArray[np.uint8]c                @   |                                                      t          j                                                  }| j        }|dz  dk    }|r|                    |dz   gd           |dz  }|dddxx         dz  cc<   |ddd         |ddd         z  S )	z[Convert a numpy array to flatten, packed int4/uint4. Elements must be in the correct range.      Frefcheck   N   r   ravelviewnpuint8copysizeresize)r   
array_flatr!   	odd_sizeds       e/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/onnx/test/helper_test.py
_pack_4bitr&   !   s     ##BH--2244J:DqAI 64!8*u555$Jqt!taddjA...    c                   |                                                      t          j                                                  }| j        }|dz  }|r|                    |d|z
  z   gd           |dz  }|dddxx         dz  cc<   |dddxx         dz  cc<   |dddxx         dz  cc<   |d	dd         |ddd         z  |ddd         z  |ddd         z  S )
z[Convert a numpy array to flatten, packed int2/uint2. Elements must be in the correct range.r   Fr      r   Nr      r   r   )r   r#   r!   pad_lens       r%   
_pack_2bitr,   .   s    ##BH--2244J:DQhG B41w;/05AAA$Jqt!tqt!tqt!taddjA..ADqD1AAJqtRStDTTTr'   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ddZddZddZddZddZddZdS )TestHelperAttributeFunctionsr   Nonec                   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     r%   test_attr_floatz,TestHelperAttributeFunctions.test_attr_float>   s    $Wc22G,,,%%%%%%$Wd33G,,,&&&%%%%%r'   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intr)      i  i  )r   r3   r4   r5   ir   r7   r8   s     r%   test_attr_intz*TestHelperAttributeFunctions.test_attr_intJ   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   r3   r4   r5   
doc_stringr8   s     r%   test_attr_doc_stringz1TestHelperAttributeFunctions.test_attr_doc_string`   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testrD   r'   )r   r3   r4   r5   sr   r7   get_attribute_valuer8   s     r%   test_attr_stringz-TestHelperAttributeFunctions.test_attr_stringh   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floatsr2          @r   r3   r4   r5   listrO   r   r7   r8   s     r%   test_attr_repeated_floatz5TestHelperAttributeFunctions.test_attr_repeated_float~   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intsr   r   )r   r3   r4   r5   rR   rU   r   r7   r8   s     r%   test_attr_repeated_intz3TestHelperAttributeFunctions.test_attr_repeated_int   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         @      @)r2   rP   rY   rZ   rQ   r8   s     r%   (test_attr_repeated_mixed_floats_and_intszETestHelperAttributeFunctions.test_attr_repeated_mixed_floats_and_ints   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   r3   r4   r5   rR   r]   r   r7   r8   s     r%   test_attr_repeated_strz3TestHelperAttributeFunctions.test_attr_repeated_str   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 )NrB   r   r   r5   	data_typedimsvalsbtensors)r   make_tensorr
   FLOATr   onesr3   r4   r5   rR   rh   r   r7   )r9   rh   r:   s      r%   test_attr_repeated_tensor_protoz<TestHelperAttributeFunctions.test_attr_repeated_tensor_proto   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r5   rd   re   rf   rawr   r)   r>   indicessparse_attr)r   ri   r
   rj   lenr   r   astypefloat32INT64int64make_sparse_tensorr3   r4   r5   r   check_sparse_tensorrL   r7   )r9   dense_shapero   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)   rn   ro   Frp   rr   rs   sparse_attrs)r   ri   r
   rj   ru   r   r   rv   rw   rx   ry   rz   r3   r4   r5   r   r7   rL   r{   )
r9   r|   ro   r}   r~   r   r   repeated_sparser:   rK   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 )NrB   r   rg   r   graphs)	r   r5   r   r3   r4   rR   r   r   r7   )r9   r   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   r3   r4   r5   tptyper   
TYPE_PROTOrR   r   TYPE_PROTOS)r9   r   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   r3   r   STRINGSr4   r   ru   r]   assertRaises
ValueErrorr8   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'rJ   g@r   )assertRaisesRegex	TypeErrorr   r3   r   STRINGr9   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 )NrJ   r2   r   )r   r   r   ValidationErrorr7   r5   r6   r?   r8   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dd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:   r   type_AttributeProto.AttributeTypevarrI   rC   r   r   r/   c                6    t          | ||           || _        d S N)setattrr   r:   r   r   rC   s       r%   _setzETestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>._set  s!     D#u%%%DIIIr'   	list[Any]c                >    |                     |           || _        d S r   )extendr   r   s       r%   _extendzHTestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>._extend  s!     JJuDIIIr'   c                4     | t           j        dd          S )Nr6   r2   )r   rj   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 )NrK   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 )Nr2   rP   )r   FLOATSrO   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   INTSrU   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   r]   r   s    r%   r   zITestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>.<lambda>-  s%    WW.0$,t  r'   d   rJ   r   )
r:   r   r   r   r   rI   rC   r   r   r/   )
r:   r   r   r   r   r   rC   r   r   r/   )
ranger   r5   randomchoicer   r7   sampler   r   )r9   SET_ATTR_ir:   funcr   r   s        @@r%   test_is_attr_legal_verbosez7TestHelperAttributeFunctions.test_is_attr_legal_verbose  si   	 	 	 		 	 	 	 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'   Nr   r/   )__name__
__module____qualname__r;   r@   rG   rM   rS   rV   r[   r`   rl   r   r   r   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   r/   c                   |                      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YrJ   )r5   )
assertTruer   hasr   	make_noder4   op_typer5   rR   inputoutputr9   node_defs     r%   test_node_no_argz(TestHelperNodeFunctions.test_node_no_argB  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   rJ   rE   )r5   rF   )r   r   r4   rF   r   s     r%   rG   z,TestHelperNodeFunctions.test_attr_doc_stringJ  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   r4   r   rR   r   r   ru   	attributer3   r   s     r%   test_node_with_argz*TestHelperNodeFunctions.test_node_with_argN  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   rJ   rE   ztest.domain)r5   rF   domain)r   r   r4   r   r   s     r%   test_node_domainz(TestHelperNodeFunctions.test_node_domainY  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   rJ   rF   
value_infor   rD   )r   r   make_tensor_value_infor
   rj   
make_graphr4   r5   ru   noderF   r   )r9   	node_def1	node_def2r   graphs        r%   
test_graphz"TestHelperNodeFunctions.test_graph_  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   r4   r5   rF   )r9   r   s     r%   test_graph_docstringz,TestHelperNodeFunctions.test_graph_docstringr  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   rJ   r   r   )xxx)producer_name)r   r   r   r   r
   rj   r   AttributeError
make_modelr4   r   )r9   r   	graph_def	model_defs       r%   
test_modelz"TestHelperNodeFunctions.test_modelw  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   rJ   rF   r5   )r   r   r   assertFalsehasattrr4   rF   )r9   r   r   s      r%   test_model_docstringz,TestHelperNodeFunctions.test_model_docstring  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   rJ   r   z
test;graph)TitleKeywordsr   Other)r   r   r   set_model_propsr   check_modelmetadata_propsaddkeyrC   r   r   )r9   r   r   dupes       r%   test_model_metadata_propsz1TestHelperNodeFunctions.test_model_metadata_props  s    !"j"b99%e???	FF	
 	
 	
 	I&&&FF	
 	
 	
 	I&&&'++--
'173F	RRRR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'gd            |d(gd            |dd$gd                                 t          d)g           d S ),Nopset_versionslist[tuple[str, int]]r   r   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_versionr=   r/   c                T     |           }                     |j        |           d S r   )r4   r  )r  r  modelr  r9   s      r%   rJ   z:TestHelperNodeFunctions.test_model_irversion.<locals>.test  s1    H^,,EU-z:::::r'   )rD   	   r   )rD   
   r>   )rD      r*   )rD         )rD      )rD      )rD   r      )rD      )rD      )rD      )rD      r  )rD      )rD      r  )rD      )rD      r  )rD      r  )zai.onnxr  )
ai.onnx.mlr   )r*  r)   )r*  r   )r*  r>   )zai.onnx.trainingr   )rD   r   )r  r  r   r   )r  r  r  r=   r   r/   )r   r   )r9   rJ   r  s   ` @r%   test_model_irversionz,TestHelperNodeFunctions.test_model_irversion  s8   	 	 	 		; 	; 	; 	; 	; 	; 	;
 	gYhZhZhZhZhZhZhZhZhZhZhZhZhZhZhZnq!!! !$$$ !$$$ !$$$ "%%%%&***h)*A...*h<<<<<r'   Nr   )r   r   r   r   rG   r   r   r   r   r   r   r	  r+  r   r'   r%   r   r   A  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ddZddZej                             ej        ej        ej        fd                    dd            Zej                             ej        d                    dd            Zej                             ej        ej        ej        fd                    dd            ZddZej                             ej        ej        ej        fd                    dd            Zej                             ej        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dZ#dS )TestHelperTensorFunctionsr   r/   c                    d dD             }t          j        dt          j        d|d          }|                     |t          |j                             d S )Nc                8    g | ]}|                     d           S )zutf-8)encode)r  rK   s     r%   r  zETestHelperTensorFunctions.test_make_string_tensor.<locals>.<listcomp>  s$    UUUQqxx((UUUr'   )AmyBillyCindyDavidrJ   )r   r   Frp   )r   ri   r
   r   r4   rR   string_data)r9   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        d
t          j        |j	        |          }| 
                    |j        d
           t           j                            t          j        |                              t           j                  |                    t&          j                                      t           j                             d S )Nr2   rP   rY         @     ?     p??皙?dtyperJ   rc   )r   r   naninfrw   r   ri   r
   BFLOAT16shaper4   r5   testingassert_equalr   to_arrayr   uint16rv   	ml_dtypesbfloat16)r9   np_arrayr7  s      r%   test_make_bfloat16_tensorz3TestHelperTensorFunctions.test_make_bfloat16_tensor  s    8c
c
0 #&  *	
 	
 	
 #!*	
 
 
 	f---

!&))..ry99OOI.//44RY??	
 	
 	
 	
 	
r'   c                n   t          j        dt          j        dgg d          }t	          j        |          }t          j        g dt          j	                  }t          j
                            |                    t          j                  |                    t          j                             d S )N
zero_pointr>   )r         ?r   P  333333$@r   rO  r   i  r  r?  )r   ri   r
   FLOAT8E4M3FNr   rG  r   r   rI  float8_e4m3fnrE  rF  r   r   r9   yynpexpecteds       r%   test_make_float8e4m3fn_tensorz7TestHelperTensorFunctions.test_make_float8e4m3fn_tensor  s    +2QC9Q9Q9Q
 
 #A&&8000	8OPPP

 2 2HMM"(4K4KLLLLLr'   c                n   t          j        dt          j        dgg d          }t	          j        |          }t          j        g dt          j	                  }t          j
                            |                    t          j                  |                    t          j                             d S )NrN  r  )r   rO  r   rP  rQ  gh㈵gh㈵>)r   rO  r      r  r   r   r?  )r   ri   r
   FLOAT8E4M3FNUZr   rG  r   r   rI  float8_e4m3fnuzrE  rF  r   r   rU  s       r%   test_make_float8e4m3fnuz_tensorz9TestHelperTensorFunctions.test_make_float8e4m3fnuz_tensor  s    &C777	
 
 #A&&8666i>WXXX

 2 2HMM"(4K4KLLLLLr'   c                n   t          j        dt          j        dgg d          }t	          j        |          }t          j        g dt          j	                  }t          j
                            |                    t          j                  |                    t          j                             d S )NrN  r>   )r   rO  r   rP  `   )r   rO  r      r`  r?  )r   ri   r
   
FLOAT8E5M2r   rG  r   r   rI  float8_e5m2rE  rF  r   r   rU  s       r%   test_make_float8e5m2_tensorz5TestHelperTensorFunctions.test_make_float8e5m2_tensor  s    +01#7M7M7M
 
 #A&&8222):OPPP

 2 2HMM"(4K4KLLLLLr'   c                n   t          j        dt          j        dgg d          }t	          j        |          }t          j        g dt          j	                  }t          j
                            |                    t          j                  |                    t          j                             d S )NrN  r  )r   rO  r   rP  r`  gHzgHz>)r   rO  r   ra  r`  r   r   r?  )r   ri   r
   FLOAT8E5M2FNUZr   rG  r   r   rI  float8_e5m2fnuzrE  rF  r   r   rU  s       r%   test_make_float8e5m2fnuz_tensorz9TestHelperTensorFunctions.test_make_float8e5m2fnuz_tensor  s    &C999	
 
 #A&&8(((	0I
 
 
 	
 2 2HMM"(4K4KLLLLLr'   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        |j        t          j        |          d          }t           j                            t          j        |                              t           j                  |           d S )Nr2   rP   rY   r:  r;  r<  r=  r>  r?  rJ   Trp   )r   r   rA  rB  rI  rJ  r   rH  r   ri   r
   rC  rD  r   tobytes_little_endianrE  assert_allcloserG  )r9   r   r7  s      r%   test_make_bfloat16_tensor_rawz7TestHelperTensorFunctions.test_make_bfloat16_tensor_raw  s    c
c
0 #&  $	
 	
 	
 $ry// 	 #!*3E::
 
 
 	
""<#8#@#@#E#Ebi#P#PRWXXXXXr'   c                   t          j        g dt          j                  }|                                }t          j        dt          j        t          |j
                  |d          }t          j        |          }t           j                            |                    t           j                  |                    t           j                             d S )NrR  r?  rJ   Trp   )r   r   rI  rT  tobytesr   ri   r
   rS  rR   rD  r   rG  rE  rF  r   r   r9   rX  packed_valuesrV  rW  s        r%   !test_make_float8e4m3fn_tensor_rawz;TestHelperTensorFunctions.test_make_float8e4m3fn_tensor_raw'  s    8000	8OPPP ((**!.hn%%
 
 
 #A&&

 2 2HMM"(4K4KLLLLLr'   c                0   t          j        g dt           j                  }|                    t          j                  }|                                }t          j        dt          j
        t          |j                  |d          }t          j        |          }t           j                            |                    t           j                  |                    t          j                                      t           j                             d S )N)r   rO  r   r[  r  r?  rJ   Trp   )r   r   rw   rv   rI  r]  rn  r   ri   r
   r\  rR   rD  r   rG  rE  rF  r   r   )r9   rX  f8rp  rV  rW  s         r%   #test_make_float8e4m3fnuz_tensor_rawz=TestHelperTensorFunctions.test_make_float8e4m3fnuz_tensor_raw4  s    8000
CCC__Y677

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

HHRXOOI566;;BHEE	
 	
 	
 	
 	
r'   c                   t          j        g dt          j                  }|                                }t          j        dt          j        t          |j
                  |d          }t          j        |          }t           j                            |                    t           j                  |                    t           j                             d S N)r   rO  r   ra  r  r?  rJ   Trp   )r   r   rI  rc  rn  r   ri   r
   rb  rR   rD  r   rG  rE  rF  r   r   ro  s        r%   test_make_float8e5m2_tensor_rawz9TestHelperTensorFunctions.test_make_float8e5m2_tensor_rawE  s    8222):OPPP ((**!,hn%%
 
 
 #A&&

 2 2HMM"(4K4KLLLLLr'   c                   t          j        g dt          j                  }|                                }t          j        dt          j        t          |j
                  |d          }t          j        |          }t           j                            |                    t           j                  |                    t           j                             d S rv  )r   r   rI  rg  rn  r   ri   r
   rf  rR   rD  r   rG  rE  rF  r   r   ro  s        r%   #test_make_float8e5m2fnuz_tensor_rawz=TestHelperTensorFunctions.test_make_float8e5m2fnuz_tensor_rawR  s    8222):STTT ((**!0hn%%
 
 
 #A&&

 2 2HMM"(4K4KLLLLLr'   c                   t          j        dt          j        dgddddddt	          j        t          j                  j        g          }t          j	        |          }t	          j
        g d	t          j        
          }t          j                            |                    t          j                  |           d S )Nscaler  r   gX9v?r2   g      ?rP   g @)r   |         r~        r?  )r   ri   r
   
FLOAT8E8M0r   finforw   maxr   rG  r   r   rE  rF  r   rU  s       r%   test_make_float8e8m0_tensorz5TestHelperTensorFunctions.test_make_float8e8m0_tensor_  s    "CsCc28BJ+?+?+CD	
 
 #A&&8===RXNNN

 2 2H=====r'   c                   t          j        g dt           j                  }|                                }t	          j        dt          j        t          |j	                  |d          }t          j        |          }t          j        g dt          j                  }t           j                            |                    t           j                  |                    t           j                             d S )N)x   r|  r}  r~  r     r?  rJ   Trp   )g      ?g      ?r2   rP   r:  i    )r   r   r   rn  r   ri   r
   r  rR   rD  r   rG  rI  float8_e8m0fnurE  rF  r   )r9   e8m0_rawrp  rV  rW  rX  s         r%   test_make_float8e8m0_tensor_rawz9TestHelperTensorFunctions.test_make_float8e8m0_tensor_rawj  s    8:::"(KKK ((**!,hn%%
 
 
 #A&&83339;S
 
 
 	
HHRXMM"(##	
 	
 	
 	
 	
r'   )r>   r   r*   r   r*   r>   r)   r)   rb   )i   c                2   t           j        dt           j        di}t          j                            ||         d         ||         d         dz   |          }t          j        d||j        |          }t          j
        t          j        |j                  dz            }t          t          |j                            }t          j                            ||           t#          j        |          }t          j                            ||           d S )N)r   r   )ir  r   r   highr!   rV  rP   )r
   UINT4INT4r   r   randintr   ri   rD  mathceilprodru   bytes
int32_datarE  rF  r   rG  	r9   r@  re   
type_rangedatarV  expected_data_sizeactual_data_sizerW  s	            r%   test_make_4bit_tensorz/TestHelperTensorFunctions.test_make_4bit_tensor}  s     wg

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

 02DEEE #A&&

T*****r'   c                   t          j        |          }t          j        dg|z  t           j                                      |          }t          j        dt          j        |j	        |          }t          j        |dz            }t          t          |j                            }t           j                            ||           d S )Nr?  rV  rP   )r   r  r   int8reshaper   ri   r
   r  rD  r  r  ru   r  r  rE  rF  r9   re   	num_elemsr  rV  r  r  s          r%   test_4bit_tensor_sizez/TestHelperTensorFunctions.test_4bit_tensor_size       GDMM	xy(888@@FFsK$4dj$GG "Yy377uQ\2233

 02DEEEEEr'   )r  r  r  rb   c                v   t           j                            dd|t           j                  }t	          |          }t          j        d|||                                d          }t          j	        |          }t           j
                            |                    t           j                  |           d S )Nr   r!  r  r!   r@  packed_int4Trq   )r   r   r  r   r&   r   ri   rn  r   rG  rE  rF  r   r9   r@  re   r  packed_datarV  rW  s          r%   test_make_4bit_raw_tensorz3TestHelperTensorFunctions.test_make_4bit_raw_tensor  s     y  $bh GG &&5$(;(;(=(=4
 
 
 #A&&

 2 2D99999r'   c                   t          j        g dt          j                  }|                    t           j                  }t          |          }t          j        dt          j
        |j        |                                d          }t          j        |          }t           j                            |                    t           j                  |           d S )N)r   rO  r   r[  r  r?  packed_fp4e2m1Tr  )r   r   rI  float4_e2m1fnr   r   r&   r   ri   r
   
FLOAT4E2M1rD  rn  r   rG  rE  rF  )r9   r  rX  r  rV  rW  s         r%   test_make_float4e2m1_raw_tensorz9TestHelperTensorFunctions.test_make_float4e2m1_raw_tensor  s    x000	8OPPP99RX&& **"J!!
 
 
 #A&&

 2 2H=====r'   c                2   t           j        dt           j        di}t          j                            ||         d         ||         d         dz   |          }t          j        d||j        |          }t          j
        t          j        |j                  dz            }t          t          |j                            }t          j                            ||           t#          j        |          }t          j                            ||           d S )N)r   r)   )r  r   r   r   r  rV  r:  )r
   UINT2INT2r   r   r  r   ri   rD  r  r  r  ru   r  r  rE  rF  r   rG  r  s	            r%   test_make_2bit_tensorz/TestHelperTensorFunctions.test_make_2bit_tensor  s     vg

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

 02DEEE #A&&

T*****r'   c                   t          j        |          }t          j        dg|z  t           j                                      |          }t          j        dt          j        |j	        |          }t          j        |dz            }t          t          |j                            }t           j                            ||           d S )Nr  r?  rV  r:  )r   r  r   r  r  r   ri   r
   r  rD  r  r  ru   r  r  rE  rF  r  s          r%   test_2bit_tensor_sizez/TestHelperTensorFunctions.test_2bit_tensor_size  r  r'   c                v   t           j                            dd|t           j                  }t	          |          }t          j        d|||                                d          }t          j	        |          }t           j
                            |                    t           j                  |           d S )Nr   r   r  packed_int2Tr  )r   r   r  r   r,   r   ri   rn  r   rG  rE  rF  r   r  s          r%   test_make_2bit_raw_tensorz3TestHelperTensorFunctions.test_make_2bit_raw_tensor  s     y  RX FF &&5$(;(;(=(=4
 
 
 #A&&

 2 2D99999r'   c                n   t          j        dt          j        dgg d          }t	          j        |          }t          j        g dt          j	                  
                    t          j                  }t          j                            |
                    t          j                  |           d S )NrN  r  )r   rO  r   rP  g333333i)r   rO  r   r*   g      ir  r?  )r   ri   r
   r  r   rG  r   r   rI  r  r   r   rE  rF  rU  s       r%   test_make_float4e2m1_tensorz5TestHelperTensorFunctions.test_make_float4e2m1_tensor  s    "C...	
 
 #A&&8(((	0G
 
 

$rx.. 	 	
 2 2H=====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      @rJ   r>   rc   )r   r)   r>   r  r  test_indicesr  )
r   ri   r
   rj   rx   rz   r4   valuesrs   re   )r9   r  r}   rs   r   r|   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
   rj   r   check_value_infor9   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
   rj   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'   Nr   )$r   r   r   r8  rL  rY  r^  rd  rh  rl  rq  rt  rw  ry  r  r  parameterizedexpand	itertoolsproductr
   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r'   r%   r-  r-    s       	@ 	@ 	@ 	@
 
 
 
2M M M M	M 	M 	M 	MM M M MM M M MY Y Y Y*M M M M
 
 
 
"M M M MM M M M	> 	> 	> 	>
 
 
 
&  ''	 01:	
 	
 + + + +&  ''	:	
 	
 

F 
F 
F 

F  ''	 013W	
 	
 
: : : 
:> > > >  ''	 01:	
 	
 + + + +&  ''	:	
 	
 

F 
F 
F 

F  ''	 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   r/   c                   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  rJ   r  rc   )r5   	elem_typerC   )r5   r  r  tensor_value)r   ri   r
   rj   make_optionalr   TENSORr4   r5   r  r  make_sequencer	   SEQUENCEsequence_value	UNDEFINEDr   HasField)r9   r  r}   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  rD  rJ   r5   r   )r   make_tensor_type_protomake_value_infomake_optional_type_protor4   r5   r   r   optional_typer  make_sequence_type_protosequence_type)r9   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_infoL  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  rJ   r  )r5   r  rD  )r   r  r  r  make_tensor_sequence_value_infor4   )r9   r  r  sequence_val_infosequence_val_info_prims        r%   test_make_sequence_value_infozDTestHelperOptionalAndSequenceFunctions.test_make_sequence_value_infom  s    "9ATRRR$=>OPP"2$7
 
 
 "(!G1D"
 "
 "
 	*,BCCCCCr'   Nr   )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   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          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   rJ   r   zI) optional inputs with matching initializers (
  %Y_Initializer[FLOAT, 1]	r   r   r   r
   rj   r   ri   printable_graphr   r9   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   rJ   r   z+) initializers (
  %Y_Initializer[FLOAT, 1]r  r  s        r%   (test_initializer_no_matching_graph_inputz;TestPrintableGraph.test_initializer_no_matching_graph_input  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   rJ   r   r   zX[FLOAT, ?])r   r   r   r   r
   rj   ri   r   r   r  r  assertIn)r9   r   r  r   s       r%   test_unknown_dimensionsz*TestPrintableGraph.test_unknown_dimensions  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'   Nr   )r   r   r   r  r  r  r   r'   r%   r  r  z  sP        
 
 
 
6
 
 
 
00 0 0 0 0 0r'   r  tensor_dtypec                2    g | ]}|t           j        k    |S r   r
   r   r  ts     r%   r  r    %    JJJ1!{7I2I2IQ2I2I2Ir'   c                *    t          j        |           S r   r   tensor_dtype_to_stringr  s    r%   r   r         V:<HH r'   )idsr=   r/   c                   t          j        |           }| t          j        t          j        t          j        t          j        hv rt          j        d|          }n t          j
                            dd          }|                    |          }t          j        d| |j        |          }t          j        |          }| t          j        t          j        t          j        t          j        t          j        t          j        hv rR|j        |j        k    sJ |j        |j        k    sJ |                                |                                k    sJ d S t          j                            ||           d S )Nr  r   r)   rJ   rc   )r   tensor_dtype_to_np_dtyper
   UINT8UINT16UINT32UINT64r   create_random_intr   r   randnrv   ri   rD  rG  rf  rb  r\  rS  rC  r  r@  rn  rE  rF  )r  np_typerK  r7  roundtrip_arrays        r%   test_make_tensor_valsr    s_    -l;;G	    1&'BB9??1a((w''H|(.x  F #+F33O""    $6666$6666&&((H,<,<,>,>>>>>>>

/:::::r'   c                2    g | ]}|t           j        k    |S r   r	  r
  s     r%   r  r    r  r'   c                *    t          j        |           S r   r  r  s    r%   r   r     r  r'   vals_as_bytesTFvals_as_nparrayboolc                   t          j        |           }| t          j        t          j        t          j        t          j        hv rt          j        d|          }n t          j
                            dd          }|                    |          }|rt|}| t          j        t          j        t          j        hv rt!          |          }| t          j        t          j        hv rt'          |          }t          j        |          }n|}t          j        d| |j        |d          }t          j        |          }| t          j        t          j        t          j        t          j        t          j        t          j        hv rR|j        |j        k    sJ |j        |j        k    sJ |                                |                                k    sJ d S t          j         !                    ||           d S )Nr  r   r)   rJ   Trp   )"r   r  r
   r  r  r  r  r   r  r   r   r  rv   r  r  r  r&   r  r  r,   rj  ri   rD  rG  rf  rb  r\  rS  rC  r  r@  rn  rE  rF  )r  r   r  rK  np_array_intermediaterf   r7  r  s           r%   test_make_tensor_rawr%    s    -l;;G	    1&'BB9??1a((w''H  ("
 
 

 %/x$8$8!
 
 
 %/x$8$8!12GHH^  F #+F33O""    $6666$6666&&((H,<,<,>,>>>>>>>

/:::::r'   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   r/   c                B    t          j        t          j                  }d S r   )r   r  r
   rj   r9   _s     r%   /test_tensor_dtype_to_np_dtype_not_throw_warningzJTestHelperMappingFunctions.test_tensor_dtype_to_np_dtype_not_throw_warning0  s    +K,=>>r'   c                B    t          j        t          j                  }d S r   )r   $tensor_dtype_to_storage_tensor_dtyper
   rj   r)  s     r%   ;test_tensor_dtype_to_storage_tensor_dtype_not_throw_warningzVTestHelperMappingFunctions.test_tensor_dtype_to_storage_tensor_dtype_not_throw_warning4  s    78IJJr'   c                B    t          j        t          j                  }d S r   )r   tensor_dtype_to_fieldr
   rj   r)  s     r%   ,test_tensor_dtype_to_field_not_throw_warningzGTestHelperMappingFunctions.test_tensor_dtype_to_field_not_throw_warning8  s    ():;;r'   c                R    t          j        t          j        d                    }d S )Nrw   )r   np_dtype_to_tensor_dtyper   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 S r   )r4   r   r  r
   rC  rI  rJ  r   s    r%   &test_tensor_dtype_to_np_dtype_bfloat16zATestHelperMappingFunctions.test_tensor_dtype_to_np_dtype_bfloat16@  s:    +K,@AA9CU	
 	
 	
 	
 	
r'   c                ~    |                      t          j        t          j                  t          j                   d S r   )r4   r   r-  r
   rC  INT32r   s    r%   2test_tensor_dtype_to_storage_tensor_dtype_bfloat16zMTestHelperMappingFunctions.test_tensor_dtype_to_storage_tensor_dtype_bfloat16E  s;    78LMM	
 	
 	
 	
 	
r'   c                j    |                      t          j        t          j                  d           d S )Nr  )r4   r   r0  r
   rC  r   s    r%   #test_tensor_dtype_to_field_bfloat16z>TestHelperMappingFunctions.test_tensor_dtype_to_field_bfloat16K  s7    ()=>>	
 	
 	
 	
 	
r'   Nr   )r   r   r   pytestmarkfilterwarningsr+  r.  r1  r4  r6  r9  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 )TestAttrTypeToStrrj   r   r   r  GRAPHSPARSE_TENSORr   r   r   r   TENSORSGRAPHSSPARSE_TENSORSr   c                Z    t          j        |          }|                     ||           d S r   r   _attr_type_to_strr4   )r9   r   expected_strresults       r%   test_attr_type_to_strz'TestAttrTypeToStr.test_attr_type_to_strR  s0    & ))44.....r'   c                Z    t          j        d          }|                     |d           d S )Ni'  r  rG  )r9   rJ  s     r%   test_attr_type_to_str_undefinedz1TestAttrTypeToStr.test_attr_type_to_str_undefinedh  s.    )$//-----r'   N)r   r   r   r  r  r   AttributeTyperj   r   r   r  rA  rB  r   r   r   r   rC  rD  rE  r   rK  rM  r   r'   r%   r@  r@  Q  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   r   r   )r  r=   r   r/   )r  r=   r   r"  r   r/   ),
__future__r   r  r  r   unittesttypingr   rI  numpyr   numpy.typingnptr  r<  onnxr   r   r   r   r	   r
   r   r   r   r   r   r&   r,   TestCaser.   r   r-  r  r  r=  parametrizeget_all_tensor_dtypesr  r%  r'  r@  r   mainr   r'   r%   <module>r[     s   # " " " " "                                                         
/ 
/ 
/ 
/U U U UAV AV AV AV AV8#4 AV AV AVHA= A= A= A= A=h/ A= A= A=Hb% b% b% b% b% 1 b% b% b%J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 JJ,,..JJJHH   
 ;  ;  ; 
 ;F JJ,,..JJJHH   
 	5M	+,   
8; 8; 8;  8;v!
 !
 !
 !
 !
!2 !
 !
 !
H. . . . .) . . .8 zHMOOOOO r'   