
    wiZ(                       d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZmZ  ed	  e            D             d
           Z ed  e            D             d           Z ed  e            D             d           Zd!dZ	 d"d#dZ G d dej                  Z e!d k    r ej"                     dS dS )$    )annotationsN)TensorProto	TypeProto)ValidationError)OpSchemaget_all_schemas_with_history
get_schema)
make_graph	make_nodemake_opsetidmake_tensor_type_protomake_tensor_value_info
from_array)InferenceErrorinfer_node_outputsc              #  F   K   | ]}|j         d k    |j        dk    |V  dS )Add Nnamedomain.0ss     q/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/onnx/test/inference_function_test.py	<genexpr>r      s3      UU1!&E//ahRTnnQnnnnUU    c                    | j         S Nsince_versionr   s    r   <lambda>r$          !/ r   )keyc              #  F   K   | ]}|j         d k    |j        dk    |V  dS )Reshaper   Nr   r   s     r   r   r      sB        6Y18r>> 	
#1>>> r   c                    | j         S r    r!   r#   s    r   r$   r$   "   r%   r   c              #  F   K   | ]}|j         d k    |j        dk    |V  dS )Clipr   Nr   r   s     r   r   r   %   s5      VV1!&F2B2BqxSU~~Q~~~~VVr   c                    | j         S r    r!   r#   s    r   r$   r$   &   r%   r   tensor_types3dict[str, tuple[int, tuple[int | str | None, ...]]]returndict[str, TypeProto]c                >    d |                                  D             S )Nc                (    i | ]\  }}|t          | S  )r   )r   r&   values      r   
<dictcomp>z$_to_tensor_types.<locals>.<dictcomp>-   s$    WWWJCC'/WWWr   )items)r-   s    r   _to_tensor_typesr7   *   s%     XW,BTBTBVBVWWWWr   schemar   input_names	list[str]output_namesinput_types
input_datadict[str, np.ndarray] | Nonec           	         |i }t          | t          | j        ||| j                  |d |                                D                       S )N)r   c                4    i | ]\  }}|t          |          S r3   r   )r   r&   arrs      r   r5   z_run_case.<locals>.<dictcomp>=   s$    AAA(#sjooAAAr   )r   r   r   r   r6   )r8   r9   r;   r<   r=   s        r   	_run_caserB   0   s\     
&+{LOOOAAj.>.>.@.@AAA	  r   c                  F    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
S )TestInferenceFunctionCallr/   Nonec           	     F   t           j        dft           j        dfddt           j        dfift           j        dft           j        dfddt           j        dfift           j        dft           j        dfddt           j        dfift           j        dft           j        dfddt           j        dfift           j        d	ft           j        d
fddt           j        dfifg}|D ]?\  }}t          t          ddgdgt          |                    t          |          k    sJ @d S )Nr3   ABC)N   )rK   )   rK   )nm)rL   rM   rN   )xrK   )yrK   rH   rI   )r   FLOATDOUBLErB   
ADD_SCHEMAr7   )selfcasesinsoutss       r   test_add_inferencez,TestInferenceFunctionCall.test_add_inferenceB   s    #("-[5F4KLL{("-. &+Y7%+T2  {()45 &+Y7%+V4  {()45 &,j9%,m<  {)=9: &+X6%+X6  {()455!
D  	( 	(ICc
 %%	 
 "$''( ( ( ( (	( 	(r   c                    g d}dg}t          t          j        dft          j        dfd          }t          dt          j        dfi          }t          t          |||          |k    sJ d S )N)Xr   maxY      r3   )rZ   r[   )r7   r   rQ   rB   CLIP_SCHEMA)rT   r9   r;   r<   expected_output_typess        r   'test_clip_inference_with_optional_inputzATestInferenceFunctionCall.test_clip_inference_with_optional_inputm   s    &&&u&$f-{7H"6MNN
 
 !1#8I67R1S T Tk;kJJ$% % % % % %r   c                Z   |                      t                    5  t          t          dgdgt	          dt
          j        dfi                     d d d            n# 1 swxY w Y   |                      t                    5  t          t          ddgdgt	          t
          j        dfdd                     d d d            n# 1 swxY w Y   |                      t                    5  t          t          ddgdgt	          t
          j        dft
          j        dfd                     d d d            n# 1 swxY w Y   |                      t                    5  t          t          ddgdgt	          dt
          j        dfi                     d d d            d S # 1 swxY w Y   d S )NrH   rJ   r]   rI   )rK   r]   rG   )rK   r_   )	assertRaisesr   rB   rS   r7   r   rQ   r   KeyErrorrT   s    r    test_add_inference_raises_errorsz:TestInferenceFunctionCall.test_add_inference_raises_errorsz   s   // 	 	 #(96'B!CDD	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 // 	 	c
 (96'B!U!UVV	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ~.. 	 	c
 )/8)/8  	
 
 
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 x(( 	 	c
 #(96'B!CDD	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   5AA #A 7CCC)AD88D<?D<6F  F$'F$c                   t          t          ddgdgt          t          j        dft          j        dfd          dt          j        g dt          j                  i          t          dt          j        dfi          k    sJ d S )	NrO   trP   )   r_   )r^   )rO   ri   )rK   rK   rj   )dtype)	rB   RESHAPE_SCHEMAr7   r   rQ   INT64nparrayint64rf   s    r   test_reshape_inferencez0TestInferenceFunctionCall.test_reshape_inference   s    #JE%+V4%+T2   "(999BH5556
 
 s[%6	$BCDDE E E E E Er   c           
        d}d}d}t          dt          j        d           t          dt          j        d           t          dt          j        d           g}t          dt          j        d           t          dt          j        ||f          g}t	          t          d	dgdg          t          d
ddgdg          gd||          }t          t          dd          t          dg dddgd|          t          t          j        |fft          j        ||fft          j        |ffd          t          dd          gd          t          t          j        |fft          j        ||ffd          k    sJ d S )NsequencerK   r^   loop_state_ininputouterloop_state_outoutputIdentityr   subgraphScan	   )loop_state_orig
scan_input
scan_outerloop_state_finalscan_outputrL   )num_scan_inputsbodyr   r_   )opset_imports
ir_version)r   r   )
r   r   	UNDEFINEDrQ   r
   r   r   r	   r7   r   )rT   seq_len
input_sizeloop_state_sizeinput_value_infosoutput_value_infosrz   s          r   !test_scan_inference_with_subgraphz;TestInferenceFunctionCall.test_scan_inference_with_subgraph   s   
 #?K4I4PP"7K,A4HH"7K,A4HH
 ##3[5JDQQ"8[->*@UVV

 *&7:J9KLL%'7!3hZ@@ 
 
 "vq!!???#]3 !   (3(9O;M'N#.#4w
6K"L#.#4zm"D   (A../%
 
 
& %0%68J$K + 1GZ3HI 
 
'
 
 
 
 
 
r   c                F   d}t           j                            |          }t           j                            |d           |                     t           j        j                  5  t           j                            |d           d d d            d S # 1 swxY w Y   d S )Na  
        <
            ir_version: 8,
            opset_import: ["" : 18, "onnxscript.atenlib" : 1],
            producer_name: "pytorch",
            producer_version: "2.1.0"
        >
        torch_jit (float input_0) => (float reault, int64 index)
        {
            reault, index = onnxscript.atenlib.aten_min_dim <dim = 0, keepdim = 1> (input_0)
        }
        <
            domain: "onnxscript.atenlib",
            opset_import: ["" : 18]
        >
        aten_min_dim <dim>(self) => (result_7, indices_6)
        {
            tmp = Shape (self)
            tmp_0 = Size (tmp)
            tmp_1 = Constant <value = int64 tmp_1 {0}> ()
            tmp_1_cast = CastLike (tmp_1, tmp_0)
            tmp_2 = Equal (tmp_0, tmp_1_cast)
            cond = Not (tmp_2)
            indices_6, result_7 = If (cond) <
                then_branch = thenGraph_4 () => ( indices,  result) {
                    dim = Constant <value_int: int = @dim> ()
                    tmp_3 = Constant <value_ints = [-1]> ()
                    dims = Reshape (dim, tmp_3)
                    result = ReduceMin <keepdims: int = @keepdim> (self, dims)
                    indices = ArgMin <axis: int = @dim, keepdims: int = @keepdim> (self)
                }, else_branch = elseGraph_4 () => ( indices_4,  result_5) {
                    indices_4 = Constant <value_int = 0> ()
                    result_5 = Identity (self)
                }
            >
        }
        Fstrict_modeT)onnxparserparse_modelshape_inferenceinfer_shapesrd   r   rT   model_scriptmodels      r   test_inference_with_conflowz5TestInferenceFunctionCall.test_inference_with_conflow   s    $J ''55))%U)CCCt3BCC 	G 	G --e-FFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   '"BBBc                    d}t           j                            |          }t           j                            |d           d S )Na  
        <
            ir_version: 8,
            opset_import: ["" : 18, "custom" : 1],
            producer_name: "",
            producer_version: "1.0"
        >
        MeanVarianceNormalization (float[N] x) => (float[M] y)
        {
            y = custom.custom_mvn <axes = [0]> (x)
        }
        <
            domain: "custom",
            opset_import: ["" : 18]
        >
        custom_mvn <axes>(X) => (Y)
        {
          Exponent = Constant <value = float {2.0}>()
          Epsilon = Constant <value = float {1e-9}>()
          axes = Constant <value_ints: ints = @axes>()
          X_RM = ReduceMean (X, axes)
          EX_squared = Pow (X_RM, Exponent)
          X_squared = Pow (X, Exponent)
          E_Xsquared = ReduceMean (X_squared, axes)
          Variance = Sub (E_Xsquared, EX_squared)
          STD = Sqrt (Variance)
          X_variance = Sub (X, X_RM)
          Processed_STD = Add (STD, Epsilon)
          Y = Div (X_variance, Processed_STD)
        }
        Tr   )r   r   r   r   r   r   s      r   test_inference_with_attributez7TestInferenceFunctionCall.test_inference_with_attribute	  sB    > ''55))%T)BBBBBr   N)r/   rE   )
__name__
__module____qualname__rX   rb   rg   rq   r   r   r   r3   r   r   rD   rD   A   s        )( )( )( )(V
 
 
 
! ! ! !FE E E E1
 1
 1
 1
f)G )G )G )GV"C "C "C "C "C "Cr   rD   __main__)r-   r.   r/   r0   r    )r8   r   r9   r:   r;   r:   r<   r0   r=   r>   r/   r0   )#
__future__r   unittestnumpyrn   r   r   r   onnx.checkerr   	onnx.defsr   r   r	   onnx.helperr
   r   r   r   r   onnx.numpy_helperr   onnx.shape_inferencer   r   r[   rS   rl   r`   r7   rB   TestCaserD   r   mainr3   r   r   <module>r      s@   # " " " " "       ' ' ' ' ' ' ' ' ( ( ( ( ( ( H H H H H H H H H H              ) ( ( ( ( ( C C C C C C C CSUU,,..UUU!!  
  --//  
 	"!   cVV,,..VVV!!  X X X X 04    "jC jC jC jC jC 1 jC jC jCZ zHMOOOOO r   