o
    r::j<                    @  s   d dl mZ d dlZd dlZd dlZd dlZd dlZd dl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 G dd dejZedkrKe  dS dS )    )annotationsN)
GraphProto
ModelProtoOperatorSetIdProtoTensorProtocheckerhelpershape_inferencec                   @  s  e Zd Zd$d	d
Zd%ddZd%ddZd%ddZd%ddZd%ddZd%ddZ	d%ddZ
d%ddZd%ddZd%ddZd%d d!Zd%d"d#Zd%d$d%Zd%d&d'Zd%d(d)Zd%d*d+Zd%d,d-Zd%d.d/Zd%d0d1Zd%d2d3Zd%d4d5Zd%d6d7Zd%d8d9Zd%d:d;Zd%d<d=Zd%d>d?Zd%d@dAZd%dBdCZd%dDdEZ d%dFdGZ!d%dHdIZ"d%dJdKZ#d%dLdMZ$d%dNdOZ%d%dPdQZ&d%dRdSZ'd%dTdUZ(d%dVdWZ)d%dXdYZ*d%dZd[Z+d%d\d]Z,d%d^d_Z-d%d`daZ.d%dbdcZ/d%dddeZ0d%dfdgZ1d%dhdiZ2d%djdkZ3d%dldmZ4d%dndoZ5d%dpdqZ6d%drdsZ7d&d'dwdxZ8d&d'dydzZ9d%d{d|Z:d%d}d~Z;d%ddZ<d%ddZ=d%ddZ>d%ddZ?d%ddZ@d%ddZAd%ddZBd%ddZCd%ddZDd%ddZEd%ddZFd%ddZGd%ddZHd%ddZId%ddZJd%ddZKd%ddZLd%ddZMd%ddZNd%ddZOd%ddZPd%ddZQd%ddZRd%ddZSdd ZTd%ddZUd%ddZVeWjWXdddeYjZiddeYjZdfddddiddeYjZdfddddiddeYjZdfgd(dd҄Z[d%ddԄZ\eWjWXddddddeYj]dfddddddeYj]dfddddddeYj]dfddddddeYj]dtfddddddeYj]dtfddddddeYj]dtfddddddeYj]dtfdddddeYj^ddtfddddddeYj_dtfg	d)ddZ`eWjWXg dd*ddZad%ddZbd%ddZcd%ddZdeYjZdfd+dd ZeeWjWXddgd,ddZfeWjWXddgd,ddZgeWjWXg dd-dd	ZheWjWXg d
d-ddZieWjWXg dd.ddZjd%ddZkd%ddZld%ddZmd%ddZnd%ddZod%ddZpd%ddZqd%ddZreWjWXd eYjsfd!eYjtfgd/d"d#ZudS (0  TestVersionConvertergraphr   initial_versionr   target_versionintreturnr   c                 C  s.   t j|d|gd}tj||}t| |S )Nz	onnx-test)producer_nameopset_imports)r   
make_modelonnxversion_converterconvert_versionr   check_model)selfr   r   r   
orig_modelconverted_model r   g/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/onnx/test/version_converter_test.py
_converted   s   
zTestVersionConverter._convertedNonec                      d fdd}  t| d S )Nr   r   c                    s   t dddgdgt dddgdgt dddgdgg} t | d	t dtjd
t dtjdt dtjdgt dtjd
g} |t ddd d S )NAddWZshapeReshapeXAYtest             r   	make_node
make_graphmake_tensor_value_infor   FLOATr   make_operatorsetidnodesr   r   r   r   r'   .   s   
z>TestVersionConverter.test_backwards_incompatible.<locals>.testr   r   assertRaisesRuntimeErrorr   r'   r   r7   r   test_backwards_incompatible-   s   z0TestVersionConverter.test_backwards_incompatiblec              
   C  s   t dddgdgg}t |dt dtjdt dtjdgt dtjdg}| |t ddd	}|jj	d
 j
dks>J |jd
 jd	ksHJ d S )Nr   X1X2r&   r'   r(   r,      r.   r   r   r0   r1   r2   r   r3   r   r4   r   nodeop_typeopset_importversionr   r6   r   r   r   r   r   test_backwards_compatibleC      	z.TestVersionConverter.test_backwards_compatiblec                   r   )Nr   r   c               
     sZ   t ddgdgg} t | dt dtjdgt dtjdg} |t ddd d S )	NCosr$   r&   r'   r(   r,   r-      r/   r5   r7   r   r   r'   U   s   z7TestVersionConverter.test_non_existent_op.<locals>.testr8   r9   r<   r   r7   r   test_non_existent_opT   s   
z)TestVersionConverter.test_non_existent_opc              
   C     t dddgdgg}t |dt dtjdt dtjdgt dtjdg}| |t dd	d
}|jj	d j
dks>J |jd jd
ksHJ d S )Nr   r>   r?   r&   r'   r(   r*   r,   r-   r)   r   rA   rF   r   r   r   test_add_8_5b   rH   z!TestVersionConverter.test_add_8_5c              
   C  rL   )Nr   r>   r?   r&   r'   r(   r*   r,   r)   r-   r   rA   rF   r   r   r   test_add_5_8s   rH   z!TestVersionConverter.test_add_5_8c              
   C  s   t jdddgdgdddg}t |dt dtjd	t dtjd
gt dtjd
g}| |t ddd}|jj	d j
dksAJ |jj	d j
dksLJ |jd jdksVJ d S )Nr   r>   r?   r&   r   r+   )axis	broadcastr'   )r)   r.   r(   r,   r)   r-   	UnsqueezerA   rF   r   r   r   test_add_5_8_with_unsqueeze   s   	z0TestVersionConverter.test_add_5_8_with_unsqueezec              
   C  rL   )NMulr>   r?   r&   r'   r(   r*   r,   r-   r)   r   rA   rF   r   r   r   test_mul_8_5   rH   z!TestVersionConverter.test_mul_8_5c              
   C  rL   )NrS   r>   r?   r&   r'   r(   r*   r,   r)   r-   r   rA   rF   r   r   r   test_mul_5_8   rH   z!TestVersionConverter.test_mul_5_8c                 C     t dg ddgg}t |dt dtjdt dtjdt dtjdgt dtjdg}| |t d	d
d}|jj	d j
dksEJ |jd jdksOJ d S )NGemmr%   BCr&   r'   r%   r)   r)   rY   rZ   r,   r+   r-   r   rA   rF   r   r   r   test_gemm_up   <   (z!TestVersionConverter.test_gemm_upc                 C  rV   )NrW   rX   r&   r'   r%   r[   rY   rZ   r,   r-   r+   r   rA   rF   r   r   r   test_gemm_down   r]   z#TestVersionConverter.test_gemm_downc                   r   )Nr   r   c                    x   t dg ddgg} t | dt dtjdt dtjdt d	tjd
gt dtjd g} |t ddd d S )NrW   rX   r&   test_gemm_7_6_rejects_1d_inputr%      r@   rY      rZ   rb   r,      rJ   r/   r5   r7   r   r   r'        
zATestVersionConverter.test_gemm_7_6_rejects_1d_input.<locals>.testr8   r9   r<   r   r7   r   r`        z3TestVersionConverter.test_gemm_7_6_rejects_1d_inputc                   r   )Nr   r   c                    r_   )NrW   rX   r&   test_gemm_6_7_rejects_1d_inputr%   ra   rY   rc   rZ   re   r,   rJ   rf   r/   r5   r7   r   r   r'   +  rg   zATestVersionConverter.test_gemm_6_7_rejects_1d_input.<locals>.testr8   r9   r<   r   r7   r   ri   )  rh   z3TestVersionConverter.test_gemm_6_7_rejects_1d_inputc                   r   )Nr   r   c                    r_   )NrW   rX   r&   test_gemm_7_6_rejects_1d_Ar%      rY   r@   rb   rZ   re   r,   rf   rJ   r/   r5   r7   r   r   r'   =  rg   z=TestVersionConverter.test_gemm_7_6_rejects_1d_A.<locals>.testr8   r9   r<   r   r7   r   rj   ;  rh   z/TestVersionConverter.test_gemm_7_6_rejects_1d_Ac                   r   )Nr   r   c                    r_   )NrW   rX   r&   test_gemm_6_7_rejects_1d_Ar%   rk   rY   rm   rZ   re   r,   rJ   rf   r/   r5   r7   r   r   r'   O  rg   z=TestVersionConverter.test_gemm_6_7_rejects_1d_A.<locals>.testr8   r9   r<   r   r7   r   rn   M  rh   z/TestVersionConverter.test_gemm_6_7_rejects_1d_Ac              
   C     t ddgdgg}t |dt dtjdgt dtjdg}| |t ddd}|jj	d	 j
dks6J |jd	 jdks@J d S )
NRelur$   r&   r'   r(   r,   r)   rf   r   rA   rF   r   r   r   test_relu_5_7`     z"TestVersionConverter.test_relu_5_7c              
   C  ro   )
Nrp   r$   r&   r'   r(   r,   rf   r)   r   rA   rF   r   r   r   test_relu_7_5n  rr   z"TestVersionConverter.test_relu_7_5c                 C     t dg ddgg}t |dt dtjdt dtjdt d	tjdt d
tjdt dtjdgt dtjdg}| |t ddd}|jj	d j
dksSJ |jd jdks]J d S )NBatchNormalizationr$   scalerY   meanvarr&   r'   r$   r(   rw   r*   rY   rx   ry   r,   r-   r)   r   rA   rF   r   r   r   test_batch_normalization_8_5|  $   z1TestVersionConverter.test_batch_normalization_8_5c                 C  rt   )Nru   rv   r&   r'   r$   r(   rw   r*   rY   rx   ry   r,   r)   r-   r   rA   rF   r   r   r   test_batch_normalization_5_8  r{   z1TestVersionConverter.test_batch_normalization_5_8c                 C  s   t dg ddgg}t |dt dtjdt dtjdt dtjdt d	tjdt d
tjdgt dtjdg}| |t ddd}|jj	d j
dksSJ |jd jdks]J d S )NConcatr>   r?   X3X4X5r&   r'   r>   r*   r?   r   r   r   r(   r,   r@   r)   r   rA   rF   r   r   r   test_concat_3_5  s   z$TestVersionConverter.test_concat_3_5c                 C  s   t jdg ddgddg}t |dt dtjdt d	tjdt d
tjdt dtjdt dtjdgt dtjdg}| |t ddd}|jj	d j
dksUJ |jd jdks_J d S )Nr}   r~   r&   r   rO   r'   r>   r*   r?   r   r   r   r(   r,   r)   r@   rA   rF   r   r   r   test_concat_5_3  s    z$TestVersionConverter.test_concat_5_3c              
   C  s   t jdg dgt dtjdgdgdt dddgd	gg}t |d
t dtjdgt d	tjdg}| |t 	ddd}|j
jd jdksIJ |jd jdksSJ d S )NConstantr"   r,   r+   r)   valuer#   r$   r&   r'   r(   rJ   rb   r   r   r0   make_tensorr   INT64r1   r2   r3   r   r4   r   rB   rC   rD   rE   rF   r   r   r   test_reshape_6_4  "   	z%TestVersionConverter.test_reshape_6_4c              
   C  s   t jddgdgdgdg}t |dt dtjdgt dtjdg}| |t dd	d
}|jj	d j
dks9J |jj	d j
dksDJ |jd jd
ksNJ d S )Nr#   r$   r&   r)   r"   r'   r(   r,   rb   rJ   r   r   r+   rA   rF   r   r   r   test_reshape_4_6  s   z%TestVersionConverter.test_reshape_4_6c                 C     t dg ddgg}t |dt dtjdt dtjdt dtjdt d	tjdt d
tjdgt dtjdg}| |t ddd}|jj	d j
dksSJ |jd jdks]J d S )NSumdata_0data_1data_2data_3data_4sumr'   r   r(   r   r   r   r   r,   rf   r-   r   rA   rF   r   r   r   test_sum_7_8  r{   z!TestVersionConverter.test_sum_7_8c                 C  r   )Nr   r   r   r'   r   r(   r   r   r   r   r,   r)   rf   r   rA   rF   r   r   r   test_sum_5_8  r{   z!TestVersionConverter.test_sum_5_8c                 C  r   )Nr   r   r   r'   r   r(   r   r   r   r   r,   r-   r)   r   rA   rF   r   r   r   test_sum_8_5+  r{   z!TestVersionConverter.test_sum_8_5c              
   C     t jddgdgddgdg}t |dt dtjdgt dtjdg}| |t ddd	}|jj	d
 j
dks:J |jd
 jd	ksDJ d S NAveragePoolr$   r&   r+   kernel_shaper'   r)   r)   r)   r)   r,   r-   r   rA   rF   r   r   r   test_averagepool_upC     z(TestVersionConverter.test_averagepool_upc              
   C     t jddgdgddgdg}t |dt dtjdgt dtjdg}| |t dd	d}|jj	d
 j
dks:J |jd
 jdksDJ d S r   rA   rF   r   r   r   test_averagepool_downQ  r   z*TestVersionConverter.test_averagepool_downc              
   C  s   t jddgdgddg}t |dt dtjdgt dtjdg}| |t ddd	}|jj	d
 j
dks8J |jd
 jd	ksBJ d S )NDropoutdataoutputr+   )is_testr'   r[   r,   r-   r   rA   rF   r   r   r   test_dropout_up_  s(   z$TestVersionConverter.test_dropout_upc              
   C  ro   )
Nr   r   r   r'   r[   r,   r-   r+   r   rA   rF   r   r   r   test_dropout_down  s(   z&TestVersionConverter.test_dropout_downc              
   C     d}d}t j}d}tjjddgdgdg}t|dtjd||gtjd||g}| |td	||}|j	j
d
 jdksAJ |j	jd
 jjj|ksNJ |jd
 j|ksXJ d S )Nrf   r-   r.   r@   rb   Maxr$   r&   inputsoutputstest_maxr,   r   r   r3   r   r   r0   r1   r2   r   r4   r   rB   rC   r   typetensor_type	elem_typerD   rE   r   
from_opsetto_opset	data_type
data_shaper6   r   r   r   r   r   test_max_7_8  "   z!TestVersionConverter.test_max_7_8c              
   C  r   )Nrf   r-   r   Minr$   r&   r   test_minr,   r   r   r   r   r   r   test_min_7_8  r   z!TestVersionConverter.test_min_7_8c              
   C  r   )Nrf   r-   r@   Meanr$   r&   r   	test_meanr,   r   r   r   r   r   r   test_mean_7_8  r   z"TestVersionConverter.test_mean_7_8c              
   C  r   NMaxPoolr$   r&   r+   r   r'   r   r,   r-   r   rA   rF   r   r   r   test_maxpool_up  r   z$TestVersionConverter.test_maxpool_upc                 C  s   d}d}t j}tjjddgdgdddd	g}t|d
tjd|g dgtjd|g dg}| |td||}t	|j
jdksEJ |j
jd jdksPJ dd |j
jd jD }d|v sbJ d|vshJ d|vsnJ |jd j|ksxJ d S )NrJ   rf   Upsampler$   r&   nearest      @       @)r   r   modewidth_scaleheight_scaletest_upsample_6_7r+   r+   r.   r.   r+   r+   rb   rJ   r,   r+   r   c                 S  s   g | ]}|j qS r   name).0attrr   r   r   
<listcomp>  s    z:TestVersionConverter.test_upsample_6_7.<locals>.<listcomp>scalesr   r   )r   r3   r   r   r0   r1   r2   r   r4   lenr   rB   rC   	attributerD   rE   )r   r   r   r   r6   r   r   attribute_namesr   r   r   r     s<   z&TestVersionConverter.test_upsample_6_7c              
   C  r   r   rA   rF   r   r   r   test_maxpool_down  r   z&TestVersionConverter.test_maxpool_downc              	   C  s   d}d}t j}tjdg ddgdg}d}td||}td	||d
 g}td||d
 g}td||d
 g}	td||d
 g}
td||}t|d||||	|
g|g}| |td||}|jj	d j
dksoJ |jd j|ksyJ d S )Nr-   	   ru   )xsbiasrx   ry   yr   )r+   r.   r+   r@   r   r   r+   r   rx   ry   test_batchnormalization_8_9r,   r   )r   r3   r   r0   r2   r1   r   r4   r   rB   rC   rD   rE   r   r   r   r   r6   input_shaper   rw   rY   rx   ry   r   r   r   r   r   r   test_batch_normalization_8_9)  s0   z1TestVersionConverter.test_batch_normalization_8_9c              	   C  s  d}d}t j}tjjdg ddgdg}d}tjd||}tjd	||d
 g}tjd||d
 g}tjd||d
 g}	tjd||d
 g}
tjd||}tj|d||||	|
g|g}| |td||}|j	j
d jdkswJ |jd j|ksJ d S )Nr   r-   ru   rv   r&   r   )r.   r@   rb   r)   r$   rw   r+   rY   rx   ry   test_batchnormalizationr,   r   )r   r3   r   r   r0   r2   r1   r   r4   r   rB   rC   rD   rE   r   r   r   r   test_batchnormalization_9_8J  s0   z0TestVersionConverter.test_batchnormalization_9_8c           	   
   C     d}d}t j}g d}td}tjdg dgtd|||dg}t|d	g tj	d||g}| 
|td||}|jjd
 jdksFJ |jjd
 jjj|ksSJ |jd
 j|ks]J d S )Nr-   r   r      r   r&   r,   r   r   r   test_constantr   )r   r3   nparanger   r0   r   r1   r   r2   r   r4   r   rB   rC   r   r   r   r   rD   rE   	r   r   r   r   output_shapeoutput_valuer6   r   r   r   r   r   test_constant_8_9k  0   
	z&TestVersionConverter.test_constant_8_9c           	   
   C  r   )Nr   r-   r   r   r   r&   r,   r   r   r   )r   UINT64r   r   r   r0   r   r1   r   r2   r   r4   r   rB   rC   r   r   r   r   rD   rE   r   r   r   r   test_constant_9_8  r   z&TestVersionConverter.test_constant_9_8c                 C  s   d}d}t j}tjjddgdgddg}t|dtjd|g d	gtjd|d
dgg}| |td||}|j	j
d jdksDJ |j	jd jjj|ksQJ |jd j|ks[J d S )Nr-   r   Flattenr$   r&   r+   r   r   rO   test_flattenr   r.   rl   r,   r   r   r   r   r   r   r6   r   r   r   r   r   test_flatten_8_9      z%TestVersionConverter.test_flatten_8_9c                 C  s   d}d}t j}tjjddgdgddg}t|dtjd|g d	gtjd|d
dgg}| |td||}|j	j
d jdksDJ |j	jd jjj|ksQJ |jd j|ks[J d S )Nr   r-   r   r$   r&   r+   r   r   r   r.   rl   r,   r   r   r   r   r   r0   r1   r2   r   r4   r   rB   rC   r   r   r   r   rD   rE   r   r   r   r   test_flatten_9_8  r   z%TestVersionConverter.test_flatten_9_8c              
   C  s   d}d}t j}tjjdddgdgdg}g d}t|d	tjd||tjd||gtjd||g}| |td
||}|j	j
d jdksKJ |j	jd jjj|ksXJ |jd j|ksbJ d S )Nr-   r   PRelur$   Sloper&   r   r   
test_prelur,   r   r   r   r   r   r   r6   r   r   r   r   r   r   test_prelu_8_9  &   
z#TestVersionConverter.test_prelu_8_9c              
   C  s   d}d}t j}tjjdddgdgdg}g d}t|d	tjd||tjd||gtjd||g}| |td
||}|j	j
d jdksKJ |j	jd jjj|ksXJ |jd j|ksbJ d S )Nr   r-   r   r$   r   r&   r   r   r   r,   r.   r   r   r   r   r   r   test_prelu_9_8  r   z#TestVersionConverter.test_prelu_9_8c              
   C     d}d}t j}tjjdddgdgdg}g d}t|d	tjd||tjd||gtjdt j|g}| |t	d
||}|j
jd jdksLJ |j
jd jjjt jksZJ |jd j|ksdJ d S )Nr-   r   Greaterr>   r?   r&   r   r   test_greaterr,   r   r   r3   r   r   r0   r1   r2   BOOLr   r4   r   rB   rC   r   r   r   r   rD   rE   r   r   r   r   test_greater_8_9  *   
z%TestVersionConverter.test_greater_8_9c              
   C     d}d}t j}tjjdddgdgdg}g d}t|d	tjd||tjd||gtjdt j|g}| |t	d
||}|j
jd jdksLJ |j
jd jjjt jksZJ |jd j|ksdJ d S )Nr   r-   r  r>   r?   r&   r   r   r  r,   r.   r   r   r   r   r   r0   r1   r2   r  r   r4   r   rB   rC   r   r   r   r   rD   rE   r   r   r   r   test_greater_9_8/  r  z%TestVersionConverter.test_greater_9_8c              
   C  r  )Nr-   r   Lessr>   r?   r&   r   r   	test_lessr,   r   r  r   r   r   r   test_less_8_9M  r  z"TestVersionConverter.test_less_8_9c              
   C  r	  )Nr   r-   r  r>   r?   r&   r   r   r  r,   r.   r   r
  r   r   r   r   test_less_9_8k  r  z"TestVersionConverter.test_less_9_8c                 C  s   d}d}t j}tjjdddgdgdg}t|dtjd|d	d
gtjd|d
d	ggtjd|d	d	gg}| |td||}|j	j
d jdksMJ |j	jd jjj|ksZJ |jd j|ksdJ d S )Nr-   r   MatMulr>   r?   r&   r   test_matmulr@   rb   r,   r   r   r   r   r   r   test_matmul_8_9  $   
z$TestVersionConverter.test_matmul_8_9c                 C  s   d}d}t j}tjjdddgdgdg}t|dtjd|d	d
gtjd|d
d	ggtjd|d	d	gg}| |td||}|j	j
d jdksMJ |j	jd jjj|ksZJ |jd j|ksdJ d S )Nr   r-   r  r>   r?   r&   r   r  r@   rb   r,   r.   r   r   r   r   r   r   test_matmul_9_8  r  z$TestVersionConverter.test_matmul_9_8c                 C  s   d}d}t j}tjjdg ddgdg}t|dtjd|d	d
gtjd|d
d	gtjd|d	d	ggtjd|d	d	gg}| |td||}|j	j
d jdksVJ |j	jd jjj|kscJ |jd j|ksmJ d S )Nr-   r   rW   r>   r?   r   r&   r   	test_gemmr>   r@   rb   r?   r   r,   r   r   r   r   r   r   test_gemm_8_9  (   z"TestVersionConverter.test_gemm_8_9c                 C  s   d}d}t j}tjjdg ddgdg}t|dtjd|d	d
gtjd|d
d	gtjd|d	d	ggtjd|d	d	gg}| |td||}|j	j
d	 jdksVJ |j	jd jjj|kscJ |jd j|ksmJ d S )Nr   r-   rW   r  r&   r   r  r>   r@   rb   r?   r   r,   r   r   r   r   r   r   test_gemm_9_8  r  z"TestVersionConverter.test_gemm_9_8c                 C  s  d}d}t j}tjjddgdgdg ddg}t|d	tjd|g d
gtjd|g dg}| |td||}t	|j
jdksFJ |j
jd jdksQJ |j
jd jdks\J t	|j
jd jdksiJ |j
jd jd jdkswJ |jd j|ksJ d S )Nr-   r   r   r$   r&   r         ?r  r   r   )r   r   r   r   test_upsample_8_9r   r   r,   r.   r   r   r+   r   )r   r3   r   r   r0   r1   r2   r   r4   r   r   rB   rC   r   r   rD   rE   r   r   r   r   r    s4   
z&TestVersionConverter.test_upsample_8_9F	raw_scaleboolc           
      C  s<  d}d}t j}tjjdddgdgddg}g d	}tjdtj jd
g|r/ttjdg|R  n||}t	|dtj
d|g dtj
d|d
ggtj
d|g dg|g}| |td||}	|	jjd jdksmJ t|	jjdkswJ t|	jjd jdksJ |	jjd jd jdksJ |	jd j|ksJ d S )Nr   r-   r   r$   Scalesr&   r   r   r   r   r  rb   4ftest_upsampler   r   r,   r   r.   r+   r   )r   r3   r   r   r0   r   bytesstructpackr1   r2   r   r4   r   rB   rC   r   initializerr   r   rD   rE   )
r   r  r   r   r   r6   scale_valuescale_tensorr   r   r   r   r    helper_upsample_with_initializer  s@   z5TestVersionConverter.helper_upsample_with_initializerc           
   
   C  sP  d}d}t j}g d}tjdtj jdg|r!ttjdg|R  n||}tjjdg dg|d	tjjd
ddgdgddg}tj	|dtj
d|g dgtj
d|g dgtj
d|dggd}| |td||}	t|	jjdksvJ |	jjd jd
ksJ t|	jjd jdksJ |	jjd jd jdksJ |	jd j|ksJ d S )Nr   r-   r  const_valuerb   r!  r   Constant_Outputr   r   r$   r&   r   r   r"  r   r   )
value_infor,   r+   r   r.   r   )r   r3   r   r   r   r#  r$  r%  r0   r1   r2   r   r4   r   r   rB   rC   r   r   rD   rE   )
r   r  r   r   r   r'  r(  r6   r   r   r   r   r   helper_upsample_with_constantC  sJ   

z2TestVersionConverter.helper_upsample_with_constantc                 C     | j dd d S NFr  r-  r7   r   r   r   $test_upsample_with_constant_node_9_8q     z9TestVersionConverter.test_upsample_with_constant_node_9_8c                 C  r.  r/  )r)  r7   r   r   r   "test_upsample_with_initializer_9_8u  r3  z7TestVersionConverter.test_upsample_with_initializer_9_8c                 C  r.  NTr0  r1  r7   r   r   r   &test_upsample_with_raw_initializer_9_8y  r3  z;TestVersionConverter.test_upsample_with_raw_initializer_9_8c                 C  r.  r5  r1  r7   r   r   r   (test_upsample_with_raw_constant_node_9_8}  r3  z=TestVersionConverter.test_upsample_with_raw_constant_node_9_8c                 C  sf  d}d}t j}tjjdddgdgd}tjjddgd	gd}tj||gd
tjd|dgtjd|dggtjd|dgtjd	|dgg}d}tjjd|ddgddg|ddg}tjd|ddg}	tjd|g d}
tjd|ddg}tjd|g d}tj|d|	|
g||g}| |td||}|j	j
d jdksJ |jd j|ksJ d S )Nr-   r   r   sum_innextsum_outr   Identityscan_out	scan_bodyr.   r,   Scaninitialr   r   zr+   )r   r   bodynum_scan_inputs)r+   r@   r.   test_scan_8_9r   )r   r3   r   r   r0   r1   r2   r   r4   r   rB   rC   rD   rE   )r   r   r   r   node1node2gno_sequence_lensr6   r?  r   r   r@  r   r   r   r   r   rC    sT   
z"TestVersionConverter.test_scan_8_9c                 C  s   d}d}t j}t j}tjjddgdgt jdg}t|dtjd|dd	ggtjd|dd	gg}| |t	d
||}|j
jd jdksHJ |j
jd jjj|ksUJ |jd j|ks_J d S )Nr-   r   Castr$   r&   )r   r   to	test_castr.   r@   r,   r   )r   r3   UINT32r   r   r0   r1   r2   r   r4   r   rB   rC   r   r   r   r   rD   rE   )r   r   r   data_type_fromdata_type_tor6   r   r   r   r   r   test_cast_8_9  s(   z"TestVersionConverter.test_cast_8_9c                 C  s   t jdg dgt dtjdgddgdt dddgd	d
gg}t |dt dtjdgt d	tjdt d
tjdg}| |t 	ddd}|j
jd jdksRJ |jd jdks\J d S )Nr   splitr,   r.   r@   r   Splitr$   Y1Y2r'   r(   r.   r      rl   r   r   rF   r   r   r   test_split_13_12  s&   		z%TestVersionConverter.test_split_13_12c                 C  s   t jddgddgddg}t |dt dtjdgt dtjd	t dtjd	g}| |t d
dd}|jj	d j
dks@J |jd jdksJJ t|jj	d jdksWJ d S )NrP  r$   rQ  rR  r+   r   test_split_optional_input)rJ   r   r,   rl      r   r.   )r   r0   r1   r2   r   r3   r   r4   r   rB   rC   rD   rE   r   r   rF   r   r   r   test_split_with_optional_input  s   	z3TestVersionConverter.test_split_with_optional_inputc                 C  s   t jddgddgddgdg}t |dt dtjd	gt dtjd
t dtjdg}| |t ddd}|jj	d j
dksBJ |jj	d j
dksMJ |jd jdksWJ d S )NrP  r$   rQ  rR  r.   r@   )rO  r'   r(   rS  r   r,   rl   rT  r   r   r+   rA   rF   r   r   r   test_split_12_13   s   	z%TestVersionConverter.test_split_12_13c                 C  s   t jddgddgddg}t |dt dtjdgt dtjd	t dtjd	g}| |t d
dd}|jj	d j
dks@J |jd jdksJJ dS )z7Test Split 13->12 conversion with optional split input.rP  r$   rQ  rR  r   r   test_split_13_12_optional
   r(   r,   rT  rl   NrA   rF   r   r   r   test_split_13_12_optional_input  s   	z4TestVersionConverter.test_split_13_12_optional_inputc              
   C  s   t jdg dgt dtjdgdgdt dddgd	gg}t |d
t dtjdgt d	tjdg}| |t 	ddd}|j
jd jdksIJ |jd jdksSJ d S )Nr   axesr,   r+   r   r   	ReduceSumr$   r&   r'   r[   r+   r)   rT  rl   r   rF   r   r   r   test_axes_input_to_attr_13_12$  r   z2TestVersionConverter.test_axes_input_to_attr_13_12c              
   C  s   t jddgdgdgdg}t |dt dtjdgt dtjdg}| |t d	d
d}|jj	d j
dks9J |jd jdksCJ d S )Nr_  r$   r&   r   )r^  r'   r[   r`  r,   rl   rT  r   rA   rF   r   r   r   test_axes_attr_to_input_12_13:  s   z2TestVersionConverter.test_axes_attr_to_input_12_13c              
   C  s   t ddgdgg}t |dt dtjdgt dtjdg}| |t ddd	}|jj	d
 j
dks6J |jd
 jd	ks@J dS )z8Test Squeeze 13->11 conversion with optional axes input.Squeezer$   r&   test_squeeze_13_11_optional)r+   r\  r+   r[  r,   rT     r   NrA   rF   r   r   r    test_squeeze_13_11_optional_axesH  s   z5TestVersionConverter.test_squeeze_13_11_optional_axesc              
   C  s   t jddgdgddgdg}t |dt dtjdgt dtjd	g}| |t d
dd}|jj	d j
dks:J |jj	d j
dksEJ |jd jdksOJ dS )zFTest Reshape 4->5 conversion - shape in attribute should become input.r#   r$   r&   r.   r)   r   test_reshape_4_5r[  r.   r)   r,   rb   r   r   r+   NrA   rF   r   r   r   test_reshape_4_5_optional_shapeW  s   z4TestVersionConverter.test_reshape_4_5_optional_shapec                 C  s   t jdg dgt dtjdgg ddt jdddgd	gd
dg}t |dt dtjdgt d	tjdg}| |t ddd}|j	d j
dksKJ dS )z:Test Resize 10->11 conversion with proper bounds checking.r   r   r,   rb   )r  r  r   r   r   Resizer$   r&   r   )r   test_resize_10_11r   )r+   r+   rb   rb   r\  re  r   N)r   r0   r   r   r3   r1   r2   r   r4   rD   rE   rF   r   r   r   test_resize_10_11_bounds_checkg  s$   z3TestVersionConverter.test_resize_10_11_bounds_checkc                 C  s   t jdg ddgddg}t |dt dtjdt d	tjd
t dtjd
gt dtjdg}| |t ddd}|j	j
d jdksGJ |jd jdksQJ dS )z;Test Scatter 10->11 conversion with proper bounds checking.Scatterr   indicesupdatesr&   r   r   test_scatter_10_11r   r   ro  rS  rp  r,   r\  re  ScatterElementsN)r   r0   r1   r2   r   r3   r   r   r4   r   rB   rC   rD   rE   rF   r   r   r   test_scatter_10_11_bounds_check~  s   
z4TestVersionConverter.test_scatter_10_11_bounds_checkc              
   C  s  t jddgdgddgddgddgdg}t |d	t dtjd
gt dtjdg}| |t ddd}|jj	d j
dks@J |jj	d j
dksKJ |jj	d j
dksVJ |jj	d j
dksaJ |jd jdkskJ t|jj	d jdksxJ t|jj	d jdksJ d S )NSlicer$   r&   r   r+   r@   r\  )r^  startsendsr'   )   r\  r)   )r@   r\  r)   r,   r   r   r.   rb   )r   r0   r1   r2   r   r3   r   r4   r   rB   rC   rD   rE   r   inputr   rF   r   r   r   test_slice_9_10  s$   z$TestVersionConverter.test_slice_9_10c                 C  s0  d}d}t j}d}d}d}d}d}tjjdg dd	d
g|dg}	t|	dtjd||||gtjd||||gtjd||||gtjd||d| ggtjd
||||gg}
| |
td	||}|j	j
d jdksqJ |jd j|ks{J t|j	j
d jdksJ |j	j
d jd jdksJ d S )NrT     r+   r.   r@   r)   RNNr$   r    Rr,   Y_hr   r   hidden_sizetest_rnnr$   r    r}  rY   r   layoutr   r3   r   r   r0   r1   r2   r   r4   r   rB   rC   rD   rE   r   r   r   r   r   r   r   
seq_length
batch_size
input_sizenum_directionsr  r6   r   r   r   r   r   test_rnn_13_14  sV   	 z#TestVersionConverter.test_rnn_13_14c                 C  s8  d}d}t j}d}d}d}d}d}tjjdg dd	d
g|dg}	t|	dtjd||||gtjd||d| |gtjd||d| |gtjd||d| ggtjd
||||gg}
| |
td	||}|j	j
d jdksuJ |jd j|ksJ t|j	j
d jdksJ |j	j
d jd jdksJ d S )NrT  rz  r+   r.   r@   r)   GRUr|  r,   r~  r  test_grur$   r    r}  rY   rJ   r   r  r  r  r   r   r   test_gru_13_14  V   	 z#TestVersionConverter.test_gru_13_14c                 C  s8  d}d}t j}d}d}d}d}d}tjjdg dd	d
g|dg}	t|	dtjd||||gtjd||d| |gtjd||d| |gtjd||d| ggtjd
||||gg}
| |
td	||}|j	j
d jdksuJ |jd j|ksJ t|j	j
d jdksJ |j	j
d jd jdksJ d S )NrT  rz  r+   r.   r@   r)   LSTMr|  r,   r~  r  	test_lstmr$   r    rb   r}  rY   r-   r   r  r  r  r   r   r   test_lstm_13_14  r  z$TestVersionConverter.test_lstm_13_14c                 C  s  d}d}t j}d}d}d}d}d}tjjdg dd	d
g|ddg}	t|	dtjd||||gtjd||||gtjd||||gtjd||d| ggtjd
||||gg}
| |
td	||}|j	j
d jdksrJ |jd j|ks|J t|j	j
d jdksJ d S )Nrz  rT  r+   r.   r@   r)   r{  r|  r,   r~  r   r   r   r  r  r  r$   r    r}  rY   r   r3   r   r   r0   r1   r2   r   r4   r   rB   rC   rD   rE   r   r   r  r   r   r   test_rnn_14_13K  sV   
z#TestVersionConverter.test_rnn_14_13c                 C  s  d}d}t j}d}d}d}d}d}tjjdg dd	d
g|ddg}	t|	dtjd||||gtjd||d| |gtjd||d| |gtjd||d| ggtjd
||||gg}
| |
td	||}|j	j
d jdksvJ |jd j|ksJ t|j	j
d jdksJ d S )Nrz  rT  r+   r.   r@   r)   r  r|  r,   r~  r   r  r  r$   r    r}  rY   rJ   r  r  r   r   r   test_gru_14_13  V   
z#TestVersionConverter.test_gru_14_13c                 C  s  d}d}t j}d}d}d}d}d}tjjdg dd	d
g|ddg}	t|	dtjd||||gtjd||d| |gtjd||d| |gtjd||d| ggtjd
||||gg}
| |
td	||}|j	j
d jdksvJ |jd j|ksJ t|j	j
d jdksJ d S )Nrz  rT  r+   r.   r@   r)   r  r|  r,   r~  r   r  r  r$   r    rb   r}  rY   r-   r  r  r   r   r   test_lstm_14_13  r  z$TestVersionConverter.test_lstm_14_13c              
   C  s   d}t jddgdg|dg}t |dt dtjdgt dtjdg}| |t d	d
d}|jj	d j
dks:J |jd jdksDJ d S )Nr   r+   r.   r   r.   r+   Padr$   r&   )padsr'   r+   r.   r.   r+   r)   r)   r,   r\  re  r+   r   rA   r   r  r6   r   r   r   r   r   test_pad_10_11  s   z#TestVersionConverter.test_pad_10_11c              
   C  s   d}t jddgdg|ddg}t |dt dtjdgt dtjd	g}| |t d
dd}|jj	d j
dks;J |jd jdksEJ d S )Nr  r  r$   r&   r  )r  r   r'   r  r  r,   r\  re  r+   r   rA   r  r   r   r   test_pad_with_value_10_11  s   z.TestVersionConverter.test_pad_with_value_10_11c                 C  s  d}d}t j}dg}tjjddgdgddd	g}tjd||g}tjd||g}t|d
||}tjjddgdgddd	g}	tjd||g}
tjd||g}t|	d
|
|}tjjddgdg||dg}tjdt jg g}tjd||g}td||ddgg}t|d|||}| 	|t
d||}|jjd jdksJ |jd j|ksJ |jjd jd jjd jdksJ t|jjd jd jjd jdksJ |jjd jd jjd jdksJ t|jjd jd jjd jdksJ d S )Nr\  re  r.   Clipsub_insub_outr   r   )r   r   minmaxthen_gIfcondout)r   r   then_branchelse_branchg      @g      @test_subgraphsr,   r   r+   )r   r3   r   r   r0   r2   r1   r  r   r   r4   r   rB   rC   rD   rE   r   rF  r   )r   r   r   r   r   
subg1_nodesubg1_inputsubg1_outputsubg1
subg2_nodesubg2_inputsubg2_outputsubg2rB   rx  r   initr   	convertedr   r   r   test_if_subgraph_10_11  sV   	$($,z+TestVersionConverter.test_if_subgraph_10_11c              
   C  s  t dg ddgg}ddg}tj dtjjdg|}dd	g}tj d
tjjdg|}ddg}tj dtjjdg|}ddg}tj dtjjdg|}	t |dt dtjdgt dtjdg||||	g}
| |
t 	ddd}|j
jd jdks|J |jd jdksJ d S )Nru   rv   r&   g?g
ףp=
?rw   r.   g333333?gHzG?rY   gzG?g?rx   g)\(?g{Gz?ry   r'   r$   )r+   r.   r.   r@   r,   re  rl   r   )r   r0   r   r   r   r3   r1   r2   r   r4   r   rB   rC   rD   rE   )r   r6   r'  r(  b_valueb_tensor
mean_valuemean_tensor	var_value
var_tensorr   r   r   r   r   'test_initializer_not_in_input_above_ir4G  s8   
z<TestVersionConverter.test_initializer_not_in_input_above_ir4c              
   C  s>  d}t jddgdg|dg}t |dt dtjdgt dtjdg}| |t dd	d
}|jj	d j
dks:J |jj	d j
dksEJ |jj	d jd jdksSJ |jj	d jd j|ksaJ |jj	d j
dkslJ |jj	d jd jdkszJ |jj	d jd jdksJ |jj	d j
dksJ |jd jd
ksJ d S )Nr   Softmaxr$   r&   r   r'   r+   r.   r@   r,   re  rT  Shaper+   r   rO   r.   r@   r#   r   r0   r1   r2   r   r3   r   r4   r   rB   rC   r   r   irD   rE   r   rO   r6   r   r   r   r   r   test_softmax_12_13j  s$   z'TestVersionConverter.test_softmax_12_13c              
   C  s   d}t jddgdg|dg}t |dt dtjdgt dtjdg}| |t dd	d
}|jj	d j
dks:J |jj	d jd jdksHJ |jj	d jd jdksVJ |jd jd
ks`J d S )Nr  r  r$   r&   r   r'   r  r,   rT  rl   r   rO   r.   r  r  r   r   r   test_softmax_13_12  s   z'TestVersionConverter.test_softmax_13_12cast_9_8rH  rI  r   r-   r*   softmax_12_13r  rO   r+   rl   rT  upsample_9_10r   r   r   r\  r   _strrC   attrsdict[str, int | str]r   r   output_typer   tuple[int, ...]c           	        s0   d fdd} ttjf| d S )Nr   r   c               
     sh   t jg dgfi  g} t | d  d d dg t dg}|t d d S )Nr&   test_r  _rejects_missing_inputr,   )r   r0   r1   lowerr2   r   r4   r5   r  r   rC   r   r  r   r   r   r   r'     s   zGTestVersionConverter.test_rejects_missing_required_inputs.<locals>.testr8   r:   r;   r	   InferenceError)	r   r  rC   r  r   r   r  r   r'   r   r  r   $test_rejects_missing_required_inputs  s   )
z9TestVersionConverter.test_rejects_missing_required_inputsc                   s$   d fdd}  ttjf| d S )Nr   r   c               
     sb   t jdg dgddt jddgdgddg} t | dg t dtjd	g} |t d
dd d S )Nr   Fr+   r   r  r&   r   2test_softmax_13_12_rejects_malformed_flatten_inputr*   r,   rT  rl   r/   r5   r7   r   r   r'     s   zUTestVersionConverter.test_softmax_13_12_rejects_malformed_flatten_input.<locals>.testr8   r  r<   r   r7   r   r    s   zGTestVersionConverter.test_softmax_13_12_rejects_malformed_flatten_input
per_tensor   r@   NTper_axis_none_block_shaper  per_axis_zero_block_shaper   per_tensor_positive_block_shaper.   per_axis_positive_block_shape
blocked_2dra   rb   
blocked_3drb   r@       rb   r@   r-   per_axis_output_dtypeper_axis_unsupported_typex_shapescale_shape
block_sizeoutput_dtype
int | Nonezero_point_dtype
compatiblec	                   s`   d fdd}	|rt  n t}
|
 |	|||||| W d    d S 1 s)w   Y  d S )Nr   r   c              
     s   t jdddgdg|||dg}t dtj| t dtj|g}|r3|t d|| |d jd |p6|}t |d|t d|| g}	 |	t 	d	d
d}
d S )NQuantizeLinearr$   Sr&   )rO   r  r  ZPr   r'   r,      rw  )
r   r0   r2   r   r3   appendrx  r1   r   r4   )r   r  rO   r  r  r  r6   r   output_type_r   r  r7   r   r   r'   "	  s2   z6TestVersionConverter.test_quantize_21_20.<locals>.testr8   
contextlibnullcontextr:   r;   )r   r  r  r  rO   r  r  r  r  r'   context_managerr   r7   r   test_quantize_21_20  s   N "z(TestVersionConverter.test_quantize_21_20))r  r  r*   NNT)r  r  r  r+   NT)r  r  r  r+   r   T)r  r  r*   r+   r.   F)r  r  r  r+   r.   F)r  r  ra   r   rb   F)r  r  r  r.   rb   Fy_shapec           	        s\   d fdd}|rt  n t}| ||||| W d    d S 1 s'w   Y  d S )Nr   r   c                   s~   t jdg ddg||dg}t |dt dtj| t dtj|t dtj|gt dtj| g} |t d	d
d}d S )NDequantizeLinear)r$   r  r  r&   )rO   r  r'   r$   r  r  r,   r  rw  )	r   r0   r1   r2   r   INT8r3   r   r4   )r   r  rO   r  r6   r   r  r7   r   r   r'   [	  s$   	
z8TestVersionConverter.test_dequantize_21_20.<locals>.testr8   r  )	r   r  r  r  rO   r  r  r'   r  r   r7   r   test_dequantize_21_20G	  s   "z*TestVersionConverter.test_dequantize_21_20c                 C  s  t  }d}tjj| tj}tjj	dtj
jt||dd}tjj	dtj
jg dgd}tjjdddgd	gd
}tjjd|gg tjd	tj
jt|g||gd}tj|d}d}	tjddg}
tjj||
d}d|_tj||dd|	ddd tjtj|ddd}| t|jjd dd |jjD }| d| |d }| |jt
j  | t|j!d dd |j!D }| |d |	 | |d d | |d  d! W d    d S 1 sw   Y  d S )"Nr.   r@   initializer_tensorT)r   r   dimsvalsrawinitializer_scalarr  )r   r   r  r   r   
sum_outputr   SimpleAddition)r   r6   r   r   r&  ztest_simple_add.onnxztest_simple_add.onnx.datar,   rw  r   r\  r   F)save_as_external_dataall_tensors_to_one_filelocationsize_thresholdconvert_attribute)load_external_datar  r.   c                 S  s   i | ]}|j |qS r   r   )r   r  r   r   r   
<dictcomp>	  s    zNTestVersionConverter.test_external_data_version_conversion.<locals>.<dictcomp>r@   c                 S  s   i | ]}|j |jqS r   )keyr   )r   edr   r   r   r  	  s    r  offset0length24)"tempfileTemporaryDirectoryr   randomrandastypefloat32r   r   r   r   r3   listr0   r1   r2   ospathjoinmake_opsetidr   
ir_version
save_modelr   r   loadassertEqualr   r   r&  assertIndata_locationEXTERNALexternal_data)r   temp_dirr"   random_datar  r  add_node	graph_defmodel_filenamedata_filenamer   	model_defr   tensorslarge_tensorexternal_data_dictr   r   r   %test_external_data_version_conversionw	  sv   
"z:TestVersionConverter.test_external_data_version_conversionc                 C  s   t dg ddgg}t |dt dtjdt dtjdt dtjdgt dtjdg}| |t d	d
d}|j	d j
dksDJ d S )NWherer  r   r   r  wherer  r  r   r   r,   r     r   )r   r0   r1   r2   r   r  r3   r   r4   rD   rE   r   r6   r   r  r   r   r   test_where_16_15_success	     
z-TestVersionConverter.test_where_16_15_successc                   r   )Nr   r   c                    sx   t dg ddgg} t | dt dtjdt dtjdt dtjdgt dtjdg} |t d	d
d d S )Nr1  r2  r  
where_bf16r  r  r   r   r,   r  r4  )	r   r0   r1   r2   r   r  BFLOAT16r   r4   r5   r7   r   r   r'   	  rg   zBTestVersionConverter.test_where_bfloat16_16_15_fails.<locals>.testr8   r9   r<   r   r7   r   test_where_bfloat16_16_15_fails	  s   z4TestVersionConverter.test_where_bfloat16_16_15_failsop_namedtype	reduction
str | Nonec           
      C  s   dddddifdddi fd}|| \}}}}t |}|dur#||d	< tj|g d
dgfi |g}	t|	| td||tdtj|td||gtd||gS )zIBuild a graph for ScatterElements or ScatterND with standard test shapes.r  rO   r   )rb   r)   )r.   r+   rh  )rr  	ScatterNDNr=  rn  r  r   ro  rp  )dictr   r0   r1   r  r2   r   r   )
r   r;  r<  r=  scatter_graph_configdata_s	indices_s	updates_sr  r6   r   r   r   _make_scatter_graph	  s$   
z(TestVersionConverter._make_scatter_graph)rr  )r?  c                 C  s>   |  |tjd}| |tddd}|jd jdksJ d S )Nnoner,   r  r4  r   )rE  r   r3   r   r   r4   rD   rE   )r   r;  r   r  r   r   r   test_scatter_16_15_success	  s   z/TestVersionConverter.test_scatter_16_15_successc                   s    d fdd} t| d S )Nr   r   c                    s(     tj} | tddd d S Nr,   r  r4  )rE  r   r9  r   r   r4   r   r;  r   r   r   r'   
  s   zDTestVersionConverter.test_scatter_16_15_bfloat16_fails.<locals>.testr8   r9   )r   r;  r'   r   rJ  r   !test_scatter_16_15_bfloat16_fails
  s   z6TestVersionConverter.test_scatter_16_15_bfloat16_fails)rr  addrr  mulr?  rM  r?  rO  c                   "   d fdd} t| d S )Nr   r   c                    *     tj} | tddd d S rH  rE  r   r3   r   r   r4   rI  r;  r=  r   r   r   r'   
     zMTestVersionConverter.test_scatter_16_15_reduction_add_mul_fails.<locals>.testr8   r9   r   r;  r=  r'   r   rU  r   *test_scatter_16_15_reduction_add_mul_fails
     z?TestVersionConverter.test_scatter_16_15_reduction_add_mul_fails))rr  r  )rr  r  )r?  r  )r?  r  c                   rR  )Nr   r   c                    rS  Nr,   rW     rT  rI  rU  r   r   r'   +
  rV  zMTestVersionConverter.test_scatter_18_17_reduction_max_min_fails.<locals>.testr8   r9   rW  r   rU  r   *test_scatter_18_17_reduction_max_min_fails 
  rY  z?TestVersionConverter.test_scatter_18_17_reduction_max_min_fails))rr  N)rr  rF  rL  rN  )r?  N)r?  rF  rP  rQ  c                 C  s4   |  |tj|}| |tddd}t| d S rZ  )rE  r   r3   r   r   r4   r   r   )r   r;  r=  r   r  r   r   r   -test_scatter_18_17_allowed_reductions_success1
  s   zBTestVersionConverter.test_scatter_18_17_allowed_reductions_successc              
   C  s   t jdtjdgtjddgtjddd}t jt jdd	dgd
dgddgdt 	d	tj
dgt 	d
tj
dt 	dtj
dg|gd}| |t ddd}tdd |jjd jD }t|jddgksdJ d S )NrO  r.   r+   r@   r<  Tr  rP  r$   Y0rQ  r   r   rF  rb   r.   r+   r.   r@   r.   r&  r,   rT  rl   c                 s      | ]
}|j d kr|V  qdS rO  Nr   r   ar   r   r   	<genexpr>U
      zMTestVersionConverter.test_split_13_12_raw_data_initializer.<locals>.<genexpr>r   r   r   r   r   arrayint64r1   r0   r2   r3   r   r4   r9  r   rB   r   r  ints)r   
split_initr   r  r   r   r   r   %test_split_13_12_raw_data_initializerF
  s   
z:TestVersionConverter.test_split_13_12_raw_data_initializerc              	   C  s   t jdtjdgtjddgtjddd}t jt dddgd	ggd
t 	dtj
dgt 	d	tj
dg|gd}| |t ddd}tdd |jjD }tdd |jD }t|jddgksaJ d S )Nr"   r.   r)   r^  Tr_  r#   r$   r&   rF  r[  rh  rd  r,   rb   c                 s  re  )r#   NrC   r   nr   r   r   ri  d
  rj  zMTestVersionConverter.test_reshape_5_4_raw_data_initializer.<locals>.<genexpr>c                 s  re  )r"   Nr   rg  r   r   r   ri  e
  rj  rk  )r   
shape_initr   r  reshaper   r   r   r   %test_reshape_5_4_raw_data_initializerX
  s   z:TestVersionConverter.test_reshape_5_4_raw_data_initializerc              	   C  s   t jdtjdgtjdgtjddd}t jt dddgd	ggd
t 	dtj
dgt 	d	tj
dg|gd}| |t ddd}tdd |jjd jD }t|jdgksXJ d S )Nr^  r+   r   r^  Tr_  r_  r$   r&   rF  r[   r`  rd  r,   rT  rl   c                 s  re  )r^  Nr   rg  r   r   r   ri  t
  rj  zNTestVersionConverter.test_axes_input_to_attr_13_12_raw_data.<locals>.<genexpr>rk  )r   	axes_initr   r  r   r   r   r   &test_axes_input_to_attr_13_12_raw_datah
  s   z;TestVersionConverter.test_axes_input_to_attr_13_12_raw_datac              	   C  s   t jdtjg tjdgtjddd}t jt dg ddggd	t 	d
tj
dgt 	dtj
dg|gd}| |t ddd}tdd |jjd jD }|jdksTJ d S )NrO   r+   r^  Tr_  DFT)r$   r,   rO   r&   rF  r$   )r+   r-   r.   rd  r,   rw     c                 s  re  )rO   Nr   rg  r   r   r   ri  
  rj  zDTestVersionConverter.test_dft_20_19_raw_data_axis.<locals>.<genexpr>r   )r   r   r   r   r   rl  rm  r1   r0   r2   r3   r   r4   r9  r   rB   r   r  )r   	axis_initr   r  r   r   r   r   test_dft_20_19_raw_data_axisw
  s   z1TestVersionConverter.test_dft_20_19_raw_data_axisc                 C  s   t t jdgtddd}ttjdg dg|dtjdd	dgd
dgddgdtd	t jdgtd
t jdtdt jdg}tj	|t
ddgd}| t tj|d W d    d S 1 scw   Y  d S )Nr.   z<qr+   )r   r  raw_datar   rO  r   rP  r$   r`  rQ  r   r   rF  ra  rb  rc  r,   rT  r  rl   )r   r   r$  r%  r   r1   r0   r2   r3   r   r4   r:   r;   r   r   r   )r   split_valuer   modelr   r   r   0test_split_13_12_raw_data_dims_mismatch_rejected
  s*   
"zETestVersionConverter.test_split_13_12_raw_data_dims_mismatch_rejectedc                 C  s   t jdtjdgtjddgtjddd}t t jdg d	g|d
t jddd	gddgddgdt 	dtj
dgt 	dtj
dt 	dtj
dg}| |t ddd}tdd |jjD }tdd |jD }t|jddgksqJ d S )Nr,   r.   r+   r@   r^  Tr_  r   rO  r   rP  r$   r`  rQ  r   r   rF  ra  rb  rc  rT  rl   c                 s  re  )rP  Nrq  rr  r   r   r   ri  
  rj  zOTestVersionConverter.test_split_13_12_raw_data_constant_node.<locals>.<genexpr>c                 s  re  rf  r   rg  r   r   r   ri  
  rj  rk  )r   r~  r   r  rO  r   r   r   r   'test_split_13_12_raw_data_constant_node
  s"   z<TestVersionConverter.test_split_13_12_raw_data_constant_nodec                 C  s   t dg ddgg}t |dt dtjg t dtjg t dtjg gt dtjd g}| |t dd	d
}|jd j	d
ksDJ d S )NRangestartlimitdeltar   range_26_27r  r  r  r,         r   )
r   r0   r1   r2   r   r3   r   r4   rD   rE   r5  r   r   r   test_range_26_27_float_success
  r7  z3TestVersionConverter.test_range_26_27_float_successc                 C  s   t jdg ddgddg}t |dt dtjg t dtjg t d	tjg gt dtjd g}| |t d
dd}|jd j	dksFJ t
dd |jjD }tdd |jD r]J d S )Nr  r  r   r+   )
stash_typerange_27_26r  r  r  r,   r  r  r   c                 s  re  )r  Nrq  rr  r   r   r   ri  
  rj  zKTestVersionConverter.test_range_27_26_stash_type_removed.<locals>.<genexpr>c                 s  s    | ]}|j d kV  qdS )r  Nr   rg  r   r   r   ri  
  s    )r   r0   r1   r2   r   r3   r   r4   rD   rE   r9  r   rB   anyr   )r   r6   r   r  
range_noder   r   r   #test_range_27_26_stash_type_removed
  s"   
z8TestVersionConverter.test_range_27_26_stash_type_removedfloat16bfloat16c                   s    d fdd} t| d S )Nr   r   c                    sp   t dg ddgg} t | dt d g t d g t d g gt d d g}|t dd	d
 d S )Nr  r  r   range_27_26_fp16r  r  r  r,   r  r  )r   r0   r1   r2   r   r4   r5   r<  r   r   r   r'   
  s   
zGTestVersionConverter.test_range_27_26_low_precision_fails.<locals>.testr8   r9   )r   r  r<  r'   r   r  r   $test_range_27_26_low_precision_fails
  s   z9TestVersionConverter.test_range_27_26_low_precision_fails)r   r   r   r   r   r   r   r   r8   )F)r  r  r   r   )r  r  rC   r  r  r  r   r   r   r   r  r   r   r  r   r   )r  r  r  r  r  r  rO   r   r  r   r  r  r  r  r  r  r   r   )r  r  r  r  r  r  rO   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   )r  r  r<  r   r   r   )v__name__
__module____qualname__r   r=   rG   rK   rM   rN   rR   rT   rU   r\   r^   r`   ri   rj   rn   rq   rs   rz   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  r  r  r  r  r)  r-  r2  r4  r6  r7  rC  rN  rU  rX  rY  r]  ra  rb  rf  ri  rl  rs  ry  r  r  r  r  r  r  r  r  r  r  r  r  parameterizedexpandr   r3   r  r  r  FLOAT8E4M3FNUINT16r  r  r0  r6  r:  rE  rG  rK  rX  r\  r]  rp  rv  rx  r|  r  r  r  r  FLOAT16r9  r  r   r   r   r   r
      s   0/  &!!!!"*.6666666;#


C0%J
		

r
   __main__)
__future__r   r  r  r$  r  unittestnumpyr   r  onnx.version_converterr   r   r   r   r   r   r   r	   TestCaser
   r  mainr   r   r   r   <module>   sF   $                     n