U
    qhy!                     @  s6  d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlZd dl	Z	d dl
Zd dlZd dlZd dlZd dlmZ d dl
mZmZ d dlmZ G dd dejjjZG d	d
 d
ejjjZejdkrdndZejjjeedeideideideideideiddZedre d e! d  dkr:e d e" dkrRe d e d e d e d e d e d e d e d e d e d e d  ejd!kre d" e d# e d$ e d% ej#d&kr e d% ejd'kr e d( e d) e	$d*re d+ e d, e d- e d. e d/ e d0 e d1 e d2 e d3 e	%d4re d5 e d6 e& 'ej( ed7kr2ej)d8d9d:Z*e*j+j,Z-e.e*j+j/Z/e.e*j+j0Z0e.e*j+j1Z2e.e*j+j3Z4e5d; e5d<e- d=e/ d>e0 d?e2 d@e4 
 dS )A    )annotationsN)Any)
ModelProto)Device
DeviceTypeReferenceEvaluatorc                   @  s   e Zd Zdd Zdd ZdS )ReferenceEvaluatorBackendRepc                 C  s
   || _ d S N)_session)selfsession r   D/tmp/pip-unpacked-wheel-xnis5xre/onnx/test/test_backend_reference.py__init__   s    z%ReferenceEvaluatorBackendRep.__init__c           	      K  s   t |tjr|g}t |trt|t| jjkrDtt| jj|}qi }d}t| jj| jj	D ]R\}}t
dd |jjjD }||| jkr^|| ||< |d7 }|t|kr^ qq^n$t |tr|}ntdt|d| jd |}|S )Nr   c                 s  s   | ]}|j V  qd S r
   )Z	dim_value).0dr   r   r   	<genexpr>*   s     z3ReferenceEvaluatorBackendRep.run.<locals>.<genexpr>   zUnexpected input type .)
isinstancenumpyZndarraylistlenr   Zinput_namesdictzipZinput_typestupleZtensor_typeshapeZdim	TypeErrortyperun)	r   inputskwargsZfeedsZ
pos_inputsinpZtshaper   Zoutsr   r   r   r       s,    
 
z ReferenceEvaluatorBackendRep.runN)__name__
__module____qualname__r   r    r   r   r   r   r	      s   r	   c                   @  sn   e Zd Zedd ZedddddZedd	 ZeddddddddZedddZedddZ	dS )ReferenceEvaluatorBackendc                 C  s   dS )N)T r   clsmodelr   r   r   is_opset_supported9   s    z,ReferenceEvaluatorBackend.is_opset_supportedstrbool)devicereturnc                 C  s   t |}|jtjkS r
   )r   r   r   CPU)r*   r/   r   r   r   r   supports_device=   s    z)ReferenceEvaluatorBackend.supports_devicec                 C  s   t |S r
   r   r)   r   r   r   create_inference_sessionB   s    z2ReferenceEvaluatorBackend.create_inference_sessionr1   r   r	   )r+   r/   r"   r0   c                 K  sT   t |trt|S t |tttfr<| |}| j||f|S tdt	| dd S )NzUnexpected type z for model.)
r   r   r	   r-   bytesr   r3   preparer   r   )r*   r+   r/   r"   infr   r   r   r5   F   s    

z!ReferenceEvaluatorBackend.prepareNc                 K  s   | j ||f|}|j|f|S r
   )r5   r    )r*   r+   r!   r/   r"   repr   r   r   	run_modelS   s    z#ReferenceEvaluatorBackend.run_modelc                 K  s   t dd S )Nz%Unable to run the model node by node.)NotImplementedError)r*   noder!   r/   Zoutputs_infor"   r   r   r   run_nodeX   s    z"ReferenceEvaluatorBackend.run_node)r1   )N)NN)
r$   r%   r&   classmethodr,   r2   r3   r5   r8   r;   r   r   r   r   r'   8   s   

 r'   linuxgMbP?gư>Zatol)test_dfttest_dft_axistest_dft_axis_opset19test_dft_inversetest_dft_inverse_opset19test_dft_opset19)Ztest_kwargsZAPPVEYORz(test_vgg19|test_zfnet)32bitz)(test_vgg19|test_zfnet|test_bvlc_alexnet)WindowsZtest_sequence_modelz(test_gradient|test_if_opt|test_loop16_seq_none|test_range_float_type_positive_delta_expanded|test_range_int32_type_negative_delta_expanded|test_scan_sum)z-(test_scatter_with_axis|test_scatter_without)a  (test_cast_FLOAT_to_FLOAT8|test_cast_FLOAT16_to_FLOAT8|test_castlike_FLOAT_to_FLOAT8|test_castlike_FLOAT16_to_FLOAT8|test_cast_FLOAT_to_UINT4|test_cast_FLOAT16_to_UINT4|test_cast_FLOAT_to_INT4|test_cast_FLOAT16_to_INT4|test_cast_no_saturate_FLOAT_to_FLOAT8|test_cast_no_saturate_FLOAT16_to_FLOAT8|test_cast_BFLOAT16_to_FLOAT|test_castlike_BFLOAT16_to_FLOAT|test_quantizelinear_e4m3|test_quantizelinear_e5m2|test_quantizelinear_uint4|test_quantizelinear_int4)zf(test_cast_FLOAT_to_BFLOAT16|test_castlike_FLOAT_to_BFLOAT16|test_castlike_FLOAT_to_BFLOAT16_expanded)z(test_bvlc_alexnet|test_densenet121|test_inception_v1|test_inception_v2|test_resnet50|test_shufflenet|test_squeezenet|test_vgg19|test_zfnet512)z(test_bernoulli)zF(test_cast_FLOAT_to_STRING|test_castlike_FLOAT_to_STRING|test_strnorm)zd(test_center_crop_pad_crop_axes_hwc_expanded|test_lppool_2d_dilations|test_averagepool_2d_dilations)z(test_eyelike_without_dtype)Ztest_adam_multiplewin32Ztest_regex_full_match_basic_cpuZ&test_regex_full_match_email_domain_cpuZtest_regex_full_match_empty_cpuZtest_image_decoder_decode_)   
   darwinZ&test_qlinearmatmul_3D_int8_float16_cpuZ&test_qlinearmatmul_3D_int8_float32_cpuz1.21.5Z	test_stftZtest_stft_with_windowZtest_stft_cpur>   r?   rA   rC   r@   rB   z10.0Z"test_image_decoder_decode_webp_rgbZ$test_image_decoder_decode_jpeg2k_rgb__main__   F)	verbosityexitz!---------------------------------z
tests_run=z errors=z	 skipped=z unexpected_successes=z expected_failures=)6
__future__r   osplatformsysZunittesttypingr   r   Zversion_utilsZonnx.backend.baseZonnxZonnx.backend.testZonnx.shape_inferenceZonnx.version_converterr   r   r   Zonnx.referencer   backendbaseZ
BackendRepr	   ZBackendr'   Zdft_atoltestZBackendTestr$   Zbackend_testgetenvexcludearchitecturesystemversion_infoZnumpy_older_thanZpillow_older_thanglobalsupdateZ
test_casesmainresresultZtestsRunZ	tests_runr   errorsskippedZunexpectedSuccessesZunexpected_successesZexpectedFailuresZexpected_failuresprintr   r   r   r   <module>   s   %


























 