
    Si!                        S SK Jr  S SKrS SKrS SKJrJrJrJrJ	r	  S SK
JrJr   " S S\R                  5      r\S:X  a  \R                   " 5         gg)    )annotationsN)
ModelProtoTensorProtoTensorShapeProtoValueInfoProtohelper)
make_modelmake_tensor_value_infoc                  r    \ rS rSr      SS jrSS jr      SS jrSS jrSS jrSS jr	SS jr
S	rg
)TestSymbolicShape   c                   U GHY  nU R                  XR                  5      nUc   U 5       eUR                  R                  S5      (       a!  UR                  R                  R
                  nO@UR                  R                  S5      (       a   UR                  R                  R
                  n[        UR                  5      [        WR                  5      :X  d   U 5       e[        UR                  5       Ha  u  pgUR                  U   nUR                  S:X  a  UR                  (       d   U 5       eM?  UR                  UR                  :X  a  M[   U 5       e   GM\     g)zAssert onnx_model.value_info should be the same as expected value_infos
Instead of exact symbol, use -1 to represent symbolic shape in expected value_infos
Ntensor_typesparse_tensor_type)_get_shape_from_namenametypeHasFieldr   shaper   lendim	enumerate	dim_value	dim_param)	self
onnx_modelvalue_infosexpected_vir   expected_shapedim_ir   expected_dims	            \/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/test/symbolic_shape_test.py_assert_valueinfo_shape)TestSymbolicShape._assert_valueinfo_shape   s!    'K--j:J:JKE$55$((77!,!1!1!=!=!C!C!!**+?@@!,!1!1!D!D!J!Juyy>S););%<<MM<'		2
-11%8))R/==9ZL9===L,B,BBSzlSB 3 '    c                   [        5       n[        UR                  R                  5      n[        UR                  R                  5      n[        UR                  R
                  5      nX4-   U-    Hb  nUR                  R                  R                  R                   H1  nUR                  (       d  M  UR                  UR                  5        M3     Md     [        U5      $ )z0Return the total number of unique symbolic shape)setlistgraphinputoutput
value_infor   r   r   r   r   addr   )r   r   symbol_shape_setinputsoutputs
valueinfosvr   s           r#   _count_unique_dim_param_number0TestSymbolicShape._count_unique_dim_param_number%   s    5j&&,,-z''../***556
!J.Avv))//33===$((7 4 / #$$r&   c                   [        UR                  R                  5      n[        UR                  R                  5      n[        UR                  R                  5      nX4-   U-    H  nUR
                  U:X  d  M  UR                  R                  S5      (       a"  UR                  R                  R                  s  $ UR                  R                  S5      (       d  My  UR                  R                  R                  s  $    g)zHGet shape from tensor_type or sparse_tensor_type according to given namer   r   N)r)   r*   r+   r,   r-   r   r   r   r   r   r   )r   r   r   r0   r1   r2   r3   s          r#   r   &TestSymbolicShape._get_shape_from_name1   s     j&&,,-z''../***556
!J.Avv~66??=1166--33366??#7886644::: / r&   c                   [         R                  " SSS/S/SSS9n[        R                   R                  SS/S/[        R                  S	9n[         R
                  " S
X/[         R                  " S[        R                  SS/5      [         R                  " S[        R                  SS/5      /[         R                  " S[        R                  SS /5      /S9n[        U5      n[        R                  R                  USS9nU R                  U[        S[        R                  S5      /5        U R                  US5      U R                  US5      :X  d   eg )NConcatABC   r0   r1   r   axisCastr,   r0   r1   to
test_graph      r   nodesr0   r1   Tstrict_moderD   r   r   	make_nodeonnxr   FLOAT
make_graphr
   r	   shape_inferenceinfer_shapesr$   r   r   concatcast	graph_defr   inferred_models         r#   test_concat_enable_symbolic-TestSymbolicShape.test_concat_enable_symbolic@   sP   !!c3Z#XA
 {{$$C58*9J9J % 
 %%.--c;3D3Dq#hO--c;3D3Dq!fM
 --h8I8IAt9U

	  	*
--:::SW:X$$3C9J9JGTU	
 ((C
&&~x@A 	A Ar&   c                h   [         R                  " SSS/S/SSS9n[         R                  " SSS/S/SSS9n[        R                   R                  S	S/S
/[        R                  S9n[         R
                  " SXU/[         R                  " S[        R                  SS/5      [         R                  " S[        R                  SS/5      [         R                  " S[        R                  SS/5      /[         R                  " S
[        R                  SS /5      /S9n[        U5      n[        R                  R                  USS9nU R                  U[        S[        R                  S5      [        S[        R                  S5      /5        U R                  US5      U R                  US
5      :X  d   eg )Nr9   r:   r;   r<   r=   r>   DEr@   r,   rA   rC   rD   rE   rF   TrH   rJ   rK   )r   concat1concat2rT   rU   r   rV   s          r#   test_two_symbolic_concat*TestSymbolicShape.test_two_symbolic_concat]   s   ""c3Z#XA
 ""c3Z#XA
 {{$$C58*9J9J % 
 %%T*--c;3D3Dq#hO--c;3D3Dq!fM--c;3D3Dq#hO --h8I8IAt9U
	  	*
--:::SW:X$$&sK,=,=wG&sK,=,=wG	
 ((C
&&~x@A 	A Ar&   c                   [         R                  " SSS/S/SSS9n[         R                  " SSS/S/SSS9n[        R                   R                  S	S/S
/[        R                  S9n[         R
                  " SXU/[         R                  " S[        R                  SS/5      [         R                  " S[        R                  SS/5      [         R                  " S[        R                  SS/5      /[         R                  " S
[        R                  SS/5      /S9n[        U5      nU R                  U5      n[        R                  R                  USS9nU R                  U5      nXS-   :X  d   U U 35       eg )Nr9   r:   r;   r<   r=   r>   rZ   r[   r@   r,   rA   rC   rD   unk__0rE   unk__1rF   TrH   )r   rL   rM   r   rN   rO   r
   r	   r4   rP   rQ   )	r   r\   r]   rT   rU   r   original_countrV   inferred_counts	            r#   test_duplicate_symbolic_shape/TestSymbolicShape.test_duplicate_symbolic_shape   sz   ""c3Z#XA
 ""c3Z#XA
 {{$$C58*9J9J % 
 %%T*--c;3D3Dq(mT--c;3D3Dq!fM--c;3D3Dq(mT --k//!X
	  	*
<<ZH--:::SW:X<<^L
 !!33T7G
|5TT3r&   c                   [         R                  " SSS/S/SSS9n[        R                   R                  SS/S/[        R                  S	9n[         R
                  " S
X/[         R                  " S[        R                  SS /5      [         R                  " S[        R                  SS /5      /[         R                  " S[        R                  SS /5      /S9n[        U5      n[        R                  R                  USS9nU R                  U[        S[        R                  S5      /5        U R                  US5      U R                  US5      :X  d   eg )Nr9   r:   r;   r<   r=   r>   r@   r,   rA   rC   rE   rF   TrH   )rE   r   rK   rR   s         r#   test_unknown_shape$TestSymbolicShape.test_unknown_shape   sU   !!c3Z#XA
 {{$$C58*9J9J % 
 %%.--**QI --c;3D3Dq$iP	 --h8I8IAt9U
	  	*
--:::SW:X$$3C9J9JGTU	

 ((C
&&~x@A 	A Ar&    N)r   r   r   zlist[ValueInfoProto]returnNone)r   r   rk   int)r   r   r   strrk   zTensorShapeProto | None)rk   rl   )__name__
__module____qualname____firstlineno__r$   r4   r   rW   r^   re   rh   __static_attributes__rj   r&   r#   r   r      s_    T$T3GT	T.
%$,/	 A:#AJ!UFAr&   r   __main__)
__future__r   unittestonnx.shape_inferencerM   r   r   r   r   r   onnx.helperr	   r
   TestCaser   ro   mainrj   r&   r#   <module>r{      sH    #   R R :vA)) vAr zMMO r&   