
    wi                        d dl m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
mZmZmZmZmZmZmZ erd dlmZ  G d dej                  Zedk    r ej                     dS dS )	    )annotationsN)TYPE_CHECKING)
GraphProtoSparseTensorProtoTensorProtocheckerhelpernumpy_helpershape_inference)Sequencec                     e Zd Zed:d            Z	 d;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=dZd=d Zd=d!Zd=d"Ze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=d0Z'd=d1Z(d=d2Z)d=d3Z*d=d4Z+d5 Z,d6 Z-d7 Z.d8 Z/d9S )>TestCheckerreturnr   c                
   t           j                            dd                              t           j                  }t          j        dt          j        d|	                    d          
                                          S )N      test)r   r      name	data_typedimsvalsnprandomrandnastypefloat32r	   make_tensorr   FLOATreshapetolistselfnp_arrays     f/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/onnx/test/checker_test.py_sample_float_tensorz TestChecker._sample_float_tensor   j    9??1a((//
;;!!'!!!$$++--	
 
 
 	
    spvalshapeSequence[int]valuesindices_shapeindicesr   strr   c                Z   t                      }|j                            |           t          |          }|j                            t          j        |t          j	        |f|                     |j
                            t          j        dt          j	        ||                     |S )Nspind)r   r   extendlenr.   CopyFromr	   r    r   INT64r0   )r%   r,   r.   r/   r0   r   sparsennzs           r'   make_sparsezTestChecker.make_sparse(   s     #$$5!!!&kkt[%6GG	
 	
 	
 	w(9='RR	
 	
 	
 r*   Nonec                b    t          j        ddgdgd          }t          j        |           d S )NReluXYr   r   r	   	make_noder   
check_noder%   nodes     r'   test_check_nodezTestChecker.test_check_node<   s6    u6BBB4     r*   c                F   t          j        dg dgd          }t          j        |           t          j        ddgdgd          }t          j        |           t          j        ddgdgd          }|                     t          j        t          j        |           d S )NGivenTensorFillr?   r   r@    r=   )r	   rB   r   rC   assertRaisesValidationErrorrD   s     r'   %test_check_node_input_marked_optionalz1TestChecker.test_check_node_input_marked_optionalA   s     12u6JJJ4     1B4#VLLL4    se&AAA'173EtLLLLLr*   c                f   d}t          j        dd          t          j        |d          g}d}ddg}dg}t          j        d	dgd
g|          t          j        d	dgdg|          t          j        dd
dgdg|          g}t          j        ||||||          }t	          j        |           d S )NlocalrI         func_nested_identity_addabcfunc_identitya1)domainb1func_add)r	   make_opsetidrB   make_functionr   check_function)r%   func_domainfunc_nested_opset_importsfunc_nested_identity_add_namefunc_nested_identity_add_inputs func_nested_identity_add_outputsfunc_nested_identity_add_nodesrQ   s           r'   test_check_function_nestedz&TestChecker.test_check_function_nestedN   s    B''Q//%
!
 )C%+.*',/5(_sedVKPPP_sedVKPPPZ$u[QQQ*
&
 $*#7)+,*%$
 $
  	788888r*   c                   t           j                                        d_        dt          j                                        i_        t           j                                        dfd}t          j
        dd	gd
gd          }t          j        |gdt          j        d	t          j        ddg          gt          j        d
t          j        ddg          g          } ||           |j                            | j        g           d|j        d         _        |                     t           j        ||           d	|j        d         _         ||           d S )Nr   rI   gr   r   r;   c                4    t          j        |            d S N)r   check_graph)re   ctxlex_ctxs    r'   check_ir_version_3zETestChecker.test_check_graph_ir_version_3.<locals>.check_ir_version_3n   s    300000r*   r=   r>   r?   r   r@   rP   r   no-existr   )re   r   r   r;   )r   CCheckerContext
ir_versiononnxdefsonnx_opset_versionopset_importsLexicalScopeContextr	   rB   
make_graphmake_tensor_value_infor   r!   initializerr4   r(   r   rJ   rK   )r%   rk   rE   graphri   rj   s       @@r'   test_check_graph_ir_version_3z)TestChecker.test_check_graph_ir_version_3g   sc   i&&((!=!=!?!?@)//11	1 	1 	1 	1 	1 	1 	1 u6BBB!F*30AAq6JJK*30AAq6JJK	
 
 	5!!!  $";!<===$.!!'13EuMMM$'!!5!!!!!r*   c                   t          j        ddgdgd          }t          j        |gdt          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        |           |j        	                    | j
        g           d|j        d	         _        t          j        |           d|j        d	         _        t          j        |           d S )
Nr=   r>   r?   r   r@   rP   r   rl   r   )r	   rB   ru   rv   r   r!   r   rh   rw   r4   r(   r   r%   rE   rx   s      r'   test_check_graphzTestChecker.test_check_graph   s    u6BBB!F*30AAq6JJK*30AAq6JJK	
 
 	E"""  $";!<===$.!!E"""$'!!E"""""r*   c                   t          j        dddgdgd          }t          j        ddgdgd	          }t          j        ||gd
t          j        dt          j        ddg          t          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        |d
          }|                     t          j
        t          j        |d           t          j        |           t          j        ||gd
t          j        dt          j        ddg          t          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        |d
          }|                     t          j
        t          j        |d           t          j        |           d S )NDivr>   r?   Ztest_divr@   IdentityWtest_identityr   rP   r   producer_nameT)r	   rB   ru   rv   r   r!   BOOL
make_modelrJ   r   InferenceErrorr   check_modelrh   INT32)r%   node_divnode_identityrx   models        r'   test_check_graph_typesz"TestChecker.test_check_graph_types   s   
 #EC:u:NNN(cUSEXXX!}%-c;3Dq!fMM-c;3CaVLL
 *30AAq6JJK	
 	
 !%v>>>*G,?	
 	
 	
 	E"""!}%-c;3Dq!fMM-c;3Dq!fMM
 *30AAq6JJK	
 	
 !%v>>>*G,?	
 	
 	
 	E"""""r*   c                   t          j        ddgdgd          }t          j        |gdt          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        |           |j        	                    | j
        g           d|j        d	         _        |                     t          j        t          j        |           d S )
Nr=   r>   r?   r   r@   rP   r   rI   r   )r	   rB   ru   rv   r   r!   r   rh   rw   r4   r(   r   rJ   rK   r{   s      r'   'test_check_graph_empty_initializer_namez3TestChecker.test_check_graph_empty_initializer_name   s    u6BBB!F*30AAq6JJK*30AAq6JJK	
 
 	E""" 	  $";!<===$&!!'173FNNNNNr*   c                   t          j        ddgdgd          }t          j        |gdt          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        |           |                     dgg d	d
gg dd          }|j	        
                    |g           |                     t          j        t          j        |           d S )Nr=   r>   r?   r   r@   rP   r   d            r   	      Q   rI   )r	   rB   ru   rv   r   r!   r   rh   r:   sparse_initializerr4   rJ   rK   r%   rE   rx   r8   s       r'   .test_check_graph_empty_sparse_initializer_namez:TestChecker.test_check_graph_empty_sparse_initializer_name   s    u6BBB!F*30AAq6JJK*30AAq6JJK	
 
 	E""" !!3%sKKKLL ''111'173FNNNNNr*   c                D   t          j        ddgdgd          }t          j        |gdt          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        |           |j        	                    | j
        g           d|j        d         _        |                     d	gg d
dgg dd          }|j        	                    |g           |                     t          j        t          j        |           d S )Nr=   r>   r?   r   r@   rP   r   r   r   r   r   r   )r	   rB   ru   rv   r   r!   r   rh   rw   r4   r(   r   r:   r   rJ   rK   r   s       r'   %test_check_graph_duplicate_init_namesz1TestChecker.test_check_graph_duplicate_init_names   s   u6BBB!F*30AAq6JJK*30AAq6JJK	
 
 	E"""  $";!<===$'!! !!3%sKKKMM ''111'173FNNNNNr*   c                    t          j        ddgdgd          }t          j        |gdg t          j        dt          j        ddg          g          }t          j        |           d S )NrH   rI   r?   r   r@   rP   r   )r	   rB   ru   rv   r   r!   r   rh   r{   s      r'   test_check_graph_optional_inputz+TestChecker.test_check_graph_optional_input   sr     1B4#VLLL!F*30AAq6JJK	
 
 	E"""""r*   c                   t          j        ddgdgd          }t          j        ddgdgd          }t          j        ||gdt          j        dt          j        d	d
g          t          j        dt          j        d	d
g          gt          j        dt          j        d	d
g          g          }|                     t          j        t          j	        |           d S )Nr=   r>   r   relu1r@   r?   relu2r   rP   r   inputsoutputs
r	   rB   ru   rv   r   r!   rJ   r   rK   rh   )r%   r   r   rx   s       r'   test_check_graph_ssaz TestChecker.test_check_graph_ssa   s     #GDDD #GDDD!EN-c;3Dq!fMM-c;3Dq!fMM 238IAq6RRS
 
 
 	'173FNNNNNr*   c                   t          j        ddgdgdd          }t          j        ddgdgdd	          }t          j        ||gd
t          j        dt          j        ddg          gt          j        dt          j        ddg          g          }|                     t          j        t          j	        |           d S )NScaler>   r?          @n1scaler   r         @n2r   rP   r   r   r   )r%   r   r   rx   s       r'   %test_check_graph_topologically_sortedz1TestChecker.test_check_graph_topologically_sorted  s    guse3TJJJguse3TJJJ!H1#{7H1a&QQR238IAq6RRS	
 
 
 	'173FNNNNNr*   c                B   t          j        ddgdgd          }t          j        |gdt          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        |d          }t          j        |           d S 	Nr=   r>   r?   r   r@   rP   r   r   )	r	   rB   ru   rv   r   r!   r   r   r   r%   rE   rx   r   s       r'   test_check_modelzTestChecker.test_check_model  s    u6BBB!F*30AAq6JJK*30AAq6JJK	
 
 !%v>>>E"""""r*   c                f   t          j        ddgdgd          }t          j        |gdt          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        |d          }t          j        |	                                           d S r   )
r	   rB   ru   rv   r   r!   r   r   r   SerializeToStringr   s       r'   test_check_serialized_modelz'TestChecker.test_check_serialized_model%  s    u6BBB!F*30AAq6JJK*30AAq6JJK	
 
 !%v>>>E335566666r*   c                p   t          j        ddgdgd          }t          j        |gdt          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        d	d          }t          j        |d|g
          }t          j	        |           d S )NPadr>   r?   )r   r   r   r   )paddingsr   rP   r   rI   r   rs   
r	   rB   ru   rv   r   r!   rZ   r   r   r   r%   rE   rx   onnx_idr   s        r'   test_check_old_modelz TestChecker.test_check_old_model1  s    uselKKK!F*30AAq6JJK*30AAq6JJK	
 
 %b!,,!%vgYWWWE"""""r*   c                T   | j         }t          j        |           t          j                            dd                              t          j                  }t          j	        
                    |          |_        |                     t          j        t          j        |           d S )Nr   r   )r(   r   check_tensorr   r   r   r   r   rp   r
   tobytes_little_endianraw_datarJ   rK   )r%   tensorinput_nps      r'   test_check_tensorzTestChecker.test_check_tensor>  s|    *V$$$9??1a((//
;;+AA(KK'173GPPPPPr*   c                L   t                      }t           j        |_        |j                            d           |j                            d           t          j        |           |j        d d = d|_        | 	                    t          j
        t          j        |           d S )NrP   s   Test)r   STRINGr   r   appendstring_datar   r   r   rJ   rK   r%   r   s     r'   test_check_string_tensorz$TestChecker.test_check_string_tensorG  s    &-1!!'***V$$$qqq!!'173GPPPPPr*   c                    | j         }t          j        |_        |                     t
          j        t
          j        |           d S rg   )r(   r   r   r   rJ   r   rK   r   r   s     r'   "test_check_tensor_mismatched_fieldz.TestChecker.test_check_tensor_mismatched_fieldS  s9    *&,'173GPPPPPr*   c                <   t          j        ddgdgdd          }t          j        ddgdgdd	          }t          j        ||gd
g t          j        dt          j        ddg          g          }t          j        ddgdg||          }t          j        |gdt          j        dt          j        dg          t          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        |           d S Nr   r>   r?   r   r   r   r   r   r   nestedrP   r   r   Ifcond)then_branchelse_branchr   )	r	   rB   ru   rv   r   r!   r   r   rh   )r%   r   r   rx   i1s        r'   test_nested_graphzTestChecker.test_nested_graphX  s5   guse3TJJJguse3TJJJ!H238IAq6RRS	
 
 
 6(SEu%
 
 
 !D-fk6FLL-c;3Dq!fMM 238IAq6RRS
 
 
 	E"""""r*   c                p   t          j        ddgdgdd          }t          j        ddgdgdd	          }t          j                    }d|_        t          j        ||gd
g t          j        dt          j        ddg          g          }t          j        ddgdg||          }t          j        |gdt          j        dt          j	        dg          t          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        |           d S r   )r	   rB   rp   ValueInfoProtor   ru   rv   r   r!   r   r   rh   )r%   r   r   input_xrx   r   s         r'   .test_nested_graph_without_subgraph_input_shapez:TestChecker.test_nested_graph_without_subgraph_input_shapes  sJ   guse3TJJJguse3TJJJ%''!H238IAq6RRS	
 
 
 6(SEu%
 
 
 !D-fk6FLL-c;3Dq!fMM 238IAq6RRS
 
 
 	E"""""r*   c                
   t           j                            dd                              t           j                  }t          j        dt          j        d|	                    d          
                                          S )Nr   r   r   )r   r   r   r   r$   s     r'   _sample_0_elem_tensorz!TestChecker._sample_0_elem_tensor  r)   r*   c                <    | j         }t          j        |           d S rg   )r   r   r   r   s     r'   test_check_tensor_zero_elemz'TestChecker.test_check_tensor_zero_elem  s!    +V$$$$$r*   c                f    t          j        dg dgdddg          }t          j        |           d S )NConstantFillr?   r   rP   r   )r   r,   rA   rD   s     r'   "test_check_removed_experimental_opz.TestChecker.test_check_removed_experimental_op  s;    SEqRSfUUU4     r*   c                r   t          j        ddgdgdd          }t          j        |gdt          j        dt          j        ddg          gt          j        dt          j        ddg          g          }t          j        dd          }t          j        |d|g	          }t          j	        |           d S )
N
NonExistOpr>   r?   r   ztest.domain)r   rW   rP   r   r   r   r   s        r'   -test_skip_schema_check_on_non_standard_domainz9TestChecker.test_skip_schema_check_on_non_standard_domain  s    3%#VM
 
 
 !F*30AAq6JJK*30AAq6JJK	
 
 %mQ77!%vgYWWWE"""""r*   c                j    |                      dgg ddgg d          }t          j        |           d S )Nr   r   r   r   r:   r   check_sparse_tensorr%   r8   s     r'   test_check_sparse_tensorz$TestChecker.test_check_sparse_tensor  s>    !!3%sKKKHH#F+++++r*   c                    |                      dgg ddgg d          }|                     t          j        t          j        |           d S )Nr   r   r   )r   r      r:   rJ   r   rK   r   r   s     r'   &test_check_sparse_tensor_invalid_indexz2TestChecker.test_check_sparse_tensor_invalid_index  sL    !!3%sLLLII'173NPVWWWWWr*   c                    |                      dgg ddgg d          }|                     t          j        t          j        |           d S )Nr   r   r   )r   r   r   r   r   s     r'   "test_check_sparse_tensor_unorderedz.TestChecker.test_check_sparse_tensor_unordered  sL    !!3%sKKKHH'173NPVWWWWWr*   c                n    |                      ddgg dddgg d          }t          j        |           d S )N
   r   r   r   r   r   r         rP   r   r   s     r'   #test_check_sparse_tensor_coo_formatz/TestChecker.test_check_sparse_tensor_coo_format  sE    !!2r(LLL1a&BTBTBTUU#F+++++r*   c                    |                      ddgg dddgg d          }|                     t          j        t          j        |           d S )Nr   r   r   r   )r   r   r   r   r   rP   r   r   s     r'   1test_check_sparse_tensor_coo_format_invalid_indexz=TestChecker.test_check_sparse_tensor_coo_format_invalid_index  sS    !!2r(LLL1a&BUBUBUVV'173NPVWWWWWr*   c                    |                      ddgg dddgg d          }|                     t          j        t          j        |           d S )Nr   r   r   r   r   r   r   s     r'   1test_check_sparse_tensor_coo_format_invalid_shapez=TestChecker.test_check_sparse_tensor_coo_format_invalid_shape  sS    !!2r(LLL1a&BTBTBTUU'173NPVWWWWWr*   c                    |                      ddgg dddgg d          }|                     t          j        t          j        |           d S )Nr   r   r   rP   )r   rP   r   r   r   s     r'   0test_check_sparse_tensor_coo_format_invalid_dim2z<TestChecker.test_check_sparse_tensor_coo_format_invalid_dim2  sP    !!2r(LLL1a&)))LL'173NPVWWWWWr*   c                   d}d}t          j        dt          j        |g          }|                     ||gg ddgg d          }t          j        dg dg|	          }t          j        d
t          j        |g          }t          j        dddgd
g          }t          j        ||gd|g|g          }t          j        |           d S )N   r   r>   )r   r   rP   r   )r      %   Constantrm   )sparse_valuer?   MatMulsparse_matmul)	r	   rv   r   r!   r:   rB   ru   r   rh   )	r%   MNr>   sparse_tensornode1r?   node2rx   s	            r'   test_check_sparse_matmulz$TestChecker.test_check_sparse_matmul  s    )#{/@1#FF((!QQCMM R#]SSS)#{/@1#FF C:u==!5%./A3LLE"""""r*   c                   d}t          j        dt          j        |g          }t          j        dt          j        |g          }t          j        dt          j        |g          }t          j        dd          }t          j        dddgdg          }t          j        |gd||g|g          }t          j        |d	|g
          }| 	                    t          j        t          j        |d           d S Nr   r>   r?   r   rI   r   Addtest_add_inputr   r   T)r	   rv   r   r   r!   rZ   rB   ru   r   rJ   r   r   r   r   	r%   r  r>   r?   r   r   rE   rx   r   s	            r'   'test_check_model_unsupported_input_typez3TestChecker.test_check_model_unsupported_input_type  s    )#{/?!EE)#{/@1#FF)#{/@1#FF%b!,,SzC599!4&*:QFQCHH!%vgYWWW*G,?	
 	
 	
 	
 	
r*   c                   d}t          j        dt          j        |g          }t          j        dt          j        |g          }t          j        dt          j        |g          }t          j        dd          }t          j        dddgdg          }t          j        |gd||g|g          }t          j        |d	|g
          }| 	                    t          j        t          j        |d           d S r  )r	   rv   r   r!   r   rZ   rB   ru   r   rJ   r   r   r   r   r  s	            r'   "test_check_model_inconsistent_typez.TestChecker.test_check_model_inconsistent_type  s    )#{/@1#FF)#{/@1#FF)#{/@1#FF%b!,,SzC599!4&*:QFQCHH!%vgYWWW*G,?	
 	
 	
 	
 	
r*   c                   d}t          j        dt          j        |g          }t          j        dt          j        |g          }t          j        dt          j        |g          }t          j        dd          }t          j        dddgdg          }t          j        |gd||g|g          }t          j        |d	|g
          }| 	                    t          j        t          j        |d           d S r  )r	   rv   r   r!   r   rZ   rB   ru   r   rJ   r   r   r   r   r  s	            r'   (test_check_model_unsupported_output_typez4TestChecker.test_check_model_unsupported_output_type  s    )#{/@1#FF)#{/@1#FF)#{/?!EE%b!,,SzC599!4&*:QFQCHH!%vgYWWW*G,?	
 	
 	
 	
 	
r*   c           #        t          j        t          j        dd          gdt          j        dt          j        dt
          j        dg          t          j        dt
          j        g           t          j        d	t
          j        dg          t          j        d
t
          j        g           t          j        dt
          j        dg          gt          j        dt
          j        dg          gt          j
        t          j        dt          j                  d          t          j
        t          j        dgt          j                  d	          t          j
        t          j        dt          j                  d
          t          j
        t          j        dgt          j                  d          gt          j        ddgdgddt
          j                  t          j        ddd
gdgdd          t          j        ddgdgdd          t          j        dg ddd gd!t          j        d"t          j        d#t
          j        g           t          j        d$t
          j        g           t          j        d%t
          j        dg          t          j        d&t
          j        dg          t          j        d't
          j        g           gt          j        d(t
          j        g           t          j        d)t
          j        dg          t          j        d&t
          j        dg          gt          j
        t          j        dt          j                  d'          gt          j        d*d%d&gd)gd+,          t          j        dd)gd-gd.dt
          j                  t          j        dd-d'gd/gd0d          t          j        dd/gd(gd1d          g2          3          t          j        d4dgd5gd6d7g8          t          j        d9d5d	gdgd9,          g2          :          }t%          j        |d;<           d S )=NrI   r   r   	test-loopinput_0rP   r,   while_maximum_iterations_0const_fold_opt__18const_fold_opt__17Const_0output_0    dtyper@         $@Castwhile_cond_158_while_Less__13_0while_cond_158_while_Less__13r   r   r   rW   toLesswhile_cond_158_while_Less_0while_cond_158_while_Lessr   r   r   rW   Squeezewhile_cond_158_while_Squeeze_0while_cond_158_while_SqueezeLoopr  r/  r  r  while_loop_0while_loop_1
while_loop
while_bodywhile_while_loop_counter_0
cond__15_0while_placeholder_0while_add_const_0_0const_fold_opt__191cond___while_Identity_graph_outputs_Identity__3_0while_Identity_2_0r  	while_Addr   r   r   cond___while_Less__13_0cond___while_Less__13cond___while_Less_0cond___while_Lesscond___while_Squeezer   r   r   rw   nodesr   r   r   body	UnsqueezeReshape_tensor_0Reshape_tensorr   r   r   r   axesReshapers   ro   rx   T
full_check)r	   r   make_operatorsetidru   rv   r   r   r7   r!   r
   
from_arrayr   arrayint64r   int32rB   r   r   r   r%   r   s     r'   /test_loop_with_same_initializer_input_below_ir4z;TestChecker.test_loop_with_same_initializer_input_below_ir4  sq   
 !!4R;;<# 1!;#4QC   14k6Gr   1,k.?s   1,k.?r   1!;#4QC  $ 1"K$5aS   !+!4BHEEE9   !+"RX666=Q   !+RZ888?S   !+!BH555I    $ ){!B C<!&,   $=0  "? ?8!	 	 	 $! =>!A B;!   $      "0 @)#.!- & =$@$/$5*,!" !" !"
 !' =$0+2B"!" !" !" !' =$9;;LUVTW!" !" !" !' =$9;;LUVTW!" !" !" !' =$8+:KSU!" !" !"$( !' =$W$/$4*,!" !" !"
 !' =$8+:KTUSV!" !" !" !' =$9;;LUVTW!" !" !"% !- 7$&HT$D$D$D)=!" !" !") !' 0$)(=(=,& .B,B)4!" !" !" !' 0$*,@+A-F,G)@+-'2'8!" !" !" !' 0$*(A(<,& .C,C)<+-	!" 	!" 	!" !' 0$-,A+B([-& *@+-!" !" !"9%#QN N NY Y Yt $# ./!3 4-S   $! 24HI!+&	  wAOi i im
 m
 m
^ 	Ed333333r*   c           "        t          j        t          j        dd          gdt          j        dt          j        dt
          j        dg          t          j        dt
          j        g           t          j        d	t
          j        dg          t          j        d
t
          j        g           t          j        dt
          j        dg          gt          j        dt
          j        dg          gt          j
        t          j        dt          j                  d          t          j
        t          j        dgt          j                  d	          t          j
        t          j        dt          j                  d
          t          j
        t          j        dgt          j                  d          gt          j        ddgdgddt
          j                  t          j        ddd
gdgdd          t          j        ddgdgdd          t          j        dg ddd gd!t          j        d"t          j        d#t
          j        g           t          j        d$t
          j        g           t          j        d%t
          j        dg          t          j        d&t
          j        dg          t          j        d	t
          j        g           gt          j        d't
          j        g           t          j        d(t
          j        dg          t          j        d&t
          j        dg          gg t          j        d)d%d&gd(gd*+          t          j        dd(gd'gd,dt
          j                  g-          .          t          j        d/dgd0gd1d2g3          t          j        d4d0d	gdgd4+          g-          5          }|                     t&          j        t*          j        |d6           d S )7NrI   r   r   r  r  rP   r  r  r  r  r  r  r   r!  r@   r#  r$  r%  r&  r'  r(  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r@  r=  r  r>  r?  rA  rE  rG  rI  rJ  rK  r   rL  rN  rO  Tr	   r   rR  ru   rv   r   r   r7   r!   r
   rS  r   rT  rU  r   rV  rB   r   rJ   r   r   r   r   rW  s     r'   4test_loop_with_different_initializer_input_below_ir4z@TestChecker.test_loop_with_different_initializer_input_below_ir4  s   
 !!4R;;<# 1!;#4QC   14k6Gr   1,k.?s   1,k.?r   1!;#4QC  $ 1"K$5aS   !+!4BHEEE9   !+"RX666=Q   !+RZ888?S   !+!BH555I    $ ){!B C<!&,   $=0  "? ?8!	 	 	 $! =>!A B;!   $      "0 @)#.!- & =$@$/$5*,!" !" !"
 !' =$0+2B"!" !" !" !' =$9;;LUVTW!" !" !" !' =$9;;LUVTW!" !" !" !' =$8+:KSU!" !" !"!$* !' =$=$/$4*,!" !" !"
 !' =$8+:KTUSV!" !" !" !' =$9;;LUVTW!" !" !"% )+ & 0$)(=(=,& .B,B)4!" !" !" !' 0$*,@+A-F,G)@+-'2'7!" !" !"#I7 7 7B B BF $# ./!3 4-S   $! 24HI!+&	  IjOR R RV
 V
 V
n 	*G,?	
 	
 	
 	
 	
r*   c           #        t          j        t          j        dd          gdt          j        dt          j        dt
          j        dg          t          j        dt
          j        g           t          j        d	t
          j        dg          t          j        d
t
          j        g           t          j        dt
          j        dg          gt          j        dt
          j        dg          gt          j
        t          j        dt          j                  d          t          j
        t          j        dgt          j                  d	          t          j
        t          j        dt          j                  d
          t          j
        t          j        dgt          j                  d          gt          j        ddgdgddt
          j                  t          j        ddd
gdgdd          t          j        ddgdgdd          t          j        dg ddd gd!t          j        d"t          j        d#t
          j        g           t          j        d$t
          j        g           t          j        d%t
          j        dg          t          j        d&t
          j        dg          gt          j        d't
          j        g           t          j        d(t
          j        dg          t          j        d&t
          j        dg          gt          j
        t          j        d)t          j                  d#          gt          j        d*d%d&gd(gd+,          t          j        dd(gd-gd.dt
          j                  t          j        dd-d#gd/gd0d          t          j        dd/gd'gd1d          g2          3          t          j        d4dgd5gd6d7g8          t          j        d9d5d	gdgd9,          g2          :          }|                     t&          j        t*          j        |d;           d S )<NrI   r  r   r  r  rP   r  r  r  r  r  r  r   r!  r@   r#  r$  r%  r&  r'  r(  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r<  r=  r   r  r>  r?  r@  rA  rB  rC  rD  rE  rG  rI  rJ  rK  r   rL  rN  rO  TrZ  rW  s     r'   /test_loop_with_same_initializer_input_above_ir4z;TestChecker.test_loop_with_same_initializer_input_above_ir4\  sd    !!4R<<=# 1!;#4QC   14k6Gr   1,k.?s   1,k.?r   1!;#4QC  $ 1"K$5aS   !+!4BHEEE9   !+"RX666=Q   !+RZ888?S   !+!BH555I    $ ){!B C<!&,   $=0  "? ?8!	 	 	 $! =>!A B;!   $      "0 @)#.!- & =$@$/$5*,!" !" !"
 !' =$0+2B"!" !" !" !' =$9;;LUVTW!" !" !" !' =$9;;LUVTW!" !" !"$" !' =$W$/$4*,!" !" !"
 !' =$8+:KTUSV!" !" !" !' =$9;;LUVTW!" !" !"% !- 7$&HRrx$@$@$@)E!" !" !") !' 0$)(=(=,& .B,B)4!" !" !" !' 0$*,@+A-F,G)@+-'2'8!" !" !" !' 0$*(A(D,& .C,C)<+-	!" 	!" 	!" !' 0$-,A+B([-& *@+-!" !" !"9%#ML L LW W Wp $# ./!3 4-S   $! 24HI!+&	  sOg g gk
 k
 k
X 	*G,?	
 	
 	
 	
 	
r*   c                    t           j                            d          }t          j        |d           t           j                            d          }t          j        |d           d S )Nz
            <
                ir_version: 7,
                opset_import: [ "" : 17]
            >
            agraph (float[N] x) => (int64[M] y)
            {
                y = Constant <value_ints: ints = []>()
            }
        TrP  z
            <
                ir_version: 7,
                opset_import: [ "" : 17]
            >
            agraph (float[N] x) => (float[M] y)
            {
                y = Constant <value_floats: floats = []>()
            }
        )rp   parserparse_modelr   r   rW  s     r'   test_empty_list_attributez%TestChecker.test_empty_list_attribute  sp    ''	
 
 	Ed3333''	
 
 	Ed333333r*   c                   t          j        dt          j        j        dg          }t          j        dt          j        j        dg          }t          j        ddgdg          }t          j        |gd|g|g          }t          j        |d          }t          j	                    5 }t          j                            |d          }t          j        ||           t          j        |d	           d d d            d S # 1 swxY w Y   d S )
NinputrP   outputr   r   r   u   模型モデル모델✨.onnxTrP  )r	   rv   rp   r   r!   rB   ru   r   tempfileTemporaryDirectoryospathjoinsaver   r   )r%   input_tensoroutput_tensorrE   rx   r   temp_dirunicode_model_paths           r'   &test_check_model_supports_unicode_pathz2TestChecker.test_check_model_supports_unicode_path.  sU   4T%+aS
 
 5d&,qc
 
 
WIzBB!4&&<.=/RR!%v>>>(** 	Eh!#h8W!X!XIe/000 2tDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   (ADDDc                    t           j                            d          }|                     t          j        t          j        |           d S )Nz
            <ir_version: 7, opset_import: [ "" : 17]>
            agraph (float[N] x) => (float[N] y, float[N] z)
            {
                y = Add(x, x)
            }
            # Error: z is not defined
        rp   r_  r`  rJ   r   rK   r   rW  s     r'   test_graph_output_is_definedz(TestChecker.test_graph_output_is_defined>  sD    ''	
 	
 	'173FNNNNNr*   c                    t           j                            d          }|                     t          j        t          j        |           d S )Nap  
            <ir_version: 7, opset_import: [ "" : 17]>
            agraph (float[N] x, bool cond) => (float[N] y)
            {
                sum = Add (x, x)
                prod = Mul (x, x)
                y = If (cond) <
                    then_branch = then_graph () => (sum) {},
                    else_branch = else_graph () => (prod) {}
                >
            }
            # Error: sum/prod are accessible inside if-then-else branches, but cannot
            # be used as outputs of the then/else branch implicitly.
            # An explicit "Identity(sum)" must be used to return sum as output.
        rq  rW  s     r'   -test_graph_output_is_defined_within_sub_graphz9TestChecker.test_graph_output_is_defined_within_sub_graphK  sD    ''
 
" 	'173FNNNNNr*   N)r   r   )r+   )r,   r-   r.   r-   r/   r-   r0   r-   r   r1   r   r   )r   r;   )0__name__
__module____qualname__propertyr(   r:   rF   rL   rc   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  rX  r[  r]  ra  ro  rr  rt   r*   r'   r   r      s       
 
 
 X
     (! ! ! !
M M M M9 9 9 92" " " "8# # # #$,# ,# ,# ,#\O O O OO O O OO O O O$	# 	# 	# 	#O O O O
O 
O 
O 
O
# 
# 
# 
#
7 
7 
7 
7# # # #Q Q Q Q
Q 
Q 
Q 
QQ Q Q Q
# # # #6# # # #: 
 
 
 X
% % % %! ! ! !# # # #, , , ,X X X X
X X X X
, , , ,X X X XX X X XX X X X# # # #"
 
 
 

 
 
 

 
 
 
t4 t4 t4 t4l^
 ^
 ^
 ^
@r
 r
 r
 r
h4 4 4<E E E O O OO O O O Or*   r   __main__)
__future__r   rg  re  unittesttypingr   numpyr   	onnx.defsrp   onnx.parserr   r   r   r   r	   r
   r   collections.abcr   TestCaser   ru  mainry  r*   r'   <module>r     sD   # " " " " " 				                                             )((((((@O @O @O @O @O(# @O @O @OF" zHMOOOOO r*   