U
    qhi                     @  s.  U d dl mZ d dlZd dlZd dlm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	mZmZ zd dlZeejZW n, ek
r   dZded< dZded< Y nX G d	d
 d
e
jjjZdddddZG dd de
jjjZedk	re
jjeeZ e! d  dkr$e "d e# dkr<e "d e "d e "d e "d e "d e "d e "d e "d edk	reedk re "d edk	reedk re "d  edk	reed!k re "d" edk	r
eed#k r
e "d$ e$ %e j& ed%kr*e'  dS )&    )annotationsN)Any)Version)Device
DeviceTyper   ortort_versionc                   @  s   e Zd Zdd Zdd ZdS )InferenceSessionBackendRepc                 C  s
   || _ d S )N)_session)selfsession r   F/tmp/pip-unpacked-wheel-xnis5xre/onnx/test/test_backend_onnxruntime.py__init__"   s    z#InferenceSessionBackendRep.__init__c           
      K  s   ~t |tjr|g}t |trdd | j D }dd | j D }t|t|krftt||}qi }d}t||D ]:\}}||| j	krx|| ||< |d7 }|t|krx qqxn$t |tr|}nt
dt|d| jd |}	|	S )Nc                 S  s   g | ]
}|j qS r   )name.0ir   r   r   
<listcomp>*   s     z2InferenceSessionBackendRep.run.<locals>.<listcomp>c                 S  s   g | ]
}|j qS r   )shaper   r   r   r   r   +   s     r      zUnexpected input type .)
isinstancenumpyZndarraylistr
   
get_inputslendictzipr   	TypeErrortyperun)
r   inputskwargsZinput_namesZinput_shapesZfeedsZ
pos_inputsinpr   Zoutsr   r   r   r!   %   s*    

zInferenceSessionBackendRep.runN)__name__
__module____qualname__r   r!   r   r   r   r   r	   !   s   r	   onnx.ModelProtostr)modeldevicec              
   C  s   |dkrd}n|dkrd}nt d|dztj|  |d}W n: tk
r| } ztdtj|  |W 5 d }~X Y nX |S )	NCPU)CPUExecutionProviderCUDA)CUDAExecutionProviderzUnexpected device r   )	providersz/Unable to create inference session. Model is:

)	
ValueErrorr   ZInferenceSessionZSerializeToString	ExceptionRuntimeErroronnxprinterZto_text)r*   r+   r0   r   er   r   r   _create_inference_session?   s    r7   c                      sd   e Zd ZedddddZeddddd	d
ddZeddd fddZedddZ  ZS )InferenceSessionBackendr)   bool)r+   returnc                 C  sH   t t }t|}|jtjkr,d|kr,dS |jtjkrDd|krDdS dS )Nr-   Tr/   F)setr   Zget_available_providersr   r    r   r,   r.   )clsr+   r0   dr   r   r   supports_deviceP   s    z'InferenceSessionBackend.supports_devicer,   r(   r   r	   )r*   r+   r#   r:   c                 K  s:   ~t |tttjfs(tdt| dt||}t|S )NzUnexpected type z for model.)	r   r)   bytesr4   Z
ModelProtor   r    r7   r	   )r<   r*   r+   r#   r   r   r   r   prepareZ   s
    
zInferenceSessionBackend.prepareN)r*   c                   s   t  j||fd|i|S )Nr+   )super	run_model)r<   r*   r"   r+   r#   	__class__r   r   rB   e   s    z!InferenceSessionBackend.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_nodei   s    z InferenceSessionBackend.run_node)r,   )N)NN)	r%   r&   r'   classmethodr>   r@   rB   rG   __classcell__r   r   rC   r   r8   O   s   	 
r8   32bitz)(test_vgg19|test_zfnet|test_bvlc_alexnet)WindowsZtest_sequence_modelz(test_bernoulli)a  (test_adagrad|test_adam|test_add_uint8|bitshift_left_uint16|bitshift_right_uint16|cast_BFLOAT16_to_FLOAT|cast_FLOAT_to_BFLOAT16|castlike_BFLOAT16_to_FLOAT|castlike_FLOAT_to_BFLOAT16|clip_default_int8_min_expanded|clip_default_int8_max_expanded|div_uint8|gru_batchwise|loop16_seq_none|lstm_batchwise|m(in|ax)_u?int(16|8)|momentum|mul_uint8|pow_types_float32_uint32|pow_types_float32_uint64|simple_rnn_batchwise|sub_uint8|gradient_of_add|test_batchnorm_epsilon_training_mode|test_batchnorm_example_training_mode|_to_FLOAT8E4M3FN|_to_FLOAT8E5M2|cast_FLOAT8E|castlike_FLOAT8E|test_dequantizelinear_axis|test_dequantizelinear|test_quantizelinear_axis|test_quantizelinear|test_affine_grid_|test_quantizelinear_uint4|test_quantizelinear_int4|test_dequantizelinear_uint4|test_dequantizelinear_int4|test_cast_UINT4_to_FLOAT|test_cast_INT4_to_FLOAT|test_cast_UINT4_to_FLOAT16|test_cast_INT4_to_FLOAT16|test_maxpool_2d_ceil_output_size_reduce_by_one)a&  (test_cast_|test_castlike_|test_constant|test_edge_pad_cpu|test_flatten_|test_identity|test_reflect_pad|test_reshape_|test_shape_|test_size_|test_squeeze_|test_transpose_|test_unsqueeze_|test_wrap_pad_|test_acos_cpu|test_acos_example_cpu|test_acosh_cpu|test_acosh_example_cpu|test_asin_cpu|test_asin_example_cpu|test_asinh_cpu|test_asinh_example_cpu|test_atan_cpu|test_atan_example_cpu|test_atanh_cpu|test_atanh_example_cpu|test_averagepool_1d_default_cpu|test_averagepool_2d_ceil_cpu|test_averagepool_2d_default_cpu|test_averagepool_2d_dilations_cpu|test_averagepool_2d_pads_count_include_pad_cpu|test_averagepool_2d_pads_cpu|test_averagepool_2d_precomputed_pads_count_include_pad_cpu|test_averagepool_2d_precomputed_pads_cpu|test_averagepool_2d_precomputed_same_upper_cpu|test_averagepool_2d_precomputed_strides_cpu|test_averagepool_2d_same_lower_cpu|test_averagepool_2d_same_upper_cpu|test_averagepool_2d_strides_cpu|test_averagepool_3d_default_cpu|test_averagepool_3d_dilations_large_count_include_pad_is_0_ceil_mode_is_False_cpu|test_averagepool_3d_dilations_large_count_include_pad_is_0_ceil_mode_is_True_cpu|test_averagepool_3d_dilations_large_count_include_pad_is_1_ceil_mode_is_False_cpu|test_averagepool_3d_dilations_large_count_include_pad_is_1_ceil_mode_is_True_cpu|test_averagepool_3d_dilations_small_cpu|test_basic_conv_with_padding_cpu|test_basic_conv_without_padding_cpu|test_conv_with_autopad_same_cpu|test_conv_with_strides_and_asymmetric_padding_cpu|test_conv_with_strides_no_padding_cpu|test_conv_with_strides_padding_cpu|test_convtranspose_1d_cpu|test_convtranspose_3d_cpu|test_convtranspose_autopad_same_cpu|test_convtranspose_cpu|test_convtranspose_dilations_cpu|test_convtranspose_kernel_shape_cpu|test_convtranspose_output_shape_cpu|test_convtranspose_pad_cpu|test_convtranspose_pads_cpu|test_cos_cpu|test_cos_example_cpu|test_cosh_cpu|test_cosh_example_cpu|test_det_2d_cpu|test_det_nd_cpu|test_dropout_default_cpu|test_dropout_default_mask_cpu|test_dropout_default_mask_ratio_cpu|test_dropout_default_ratio_cpu|test_elu_cpu|test_elu_default_cpu|test_elu_example_cpu|test_eyelike_populate_off_main_diagonal_cpu|test_eyelike_with_dtype_cpu|test_eyelike_without_dtype_cpu|test_globalaveragepool_cpu|test_globalaveragepool_precomputed_cpu|test_gridsample_aligncorners_true_cpu|test_gridsample_bicubic_align_corners_0_additional_1_cpu|test_gridsample_bicubic_align_corners_1_additional_1_cpu|test_gridsample_bicubic_cpu|test_gridsample_bilinear_align_corners_0_additional_1_cpu|test_gridsample_bilinear_align_corners_1_additional_1_cpu|test_gridsample_bilinear_cpu|test_gridsample_border_padding_cpu|test_gridsample_cpu|test_gridsample_nearest_align_corners_0_additional_1_cpu|test_gridsample_nearest_align_corners_1_additional_1_cpu|test_gridsample_nearest_cpu|test_gridsample_reflection_padding_cpu|test_gridsample_volumetric_bilinear_align_corners_0_cpu|test_gridsample_volumetric_bilinear_align_corners_1_cpu|test_gridsample_volumetric_nearest_align_corners_0_cpu|test_gridsample_volumetric_nearest_align_corners_1_cpu|test_gridsample_zeros_padding_cpu|test_gru_defaults_cpu|test_gru_seq_length_cpu|test_gru_with_initial_bias_cpu|test_hardsigmoid_cpu|test_hardsigmoid_default_cpu|test_hardsigmoid_example_cpu|test_hardswish_cpu|test_hardswish_expanded_cpu|test_lppool_1d_default_cpu|test_lppool_2d_default_cpu|test_lppool_2d_dilations_cpu|test_lppool_2d_pads_cpu|test_lppool_2d_same_lower_cpu|test_lppool_2d_same_upper_cpu|test_lppool_2d_strides_cpu|test_lppool_3d_default_cpu|test_lstm_defaults_cpu|test_lstm_with_initial_bias_cpu|test_lstm_with_peepholes_cpu|test_maxpool_1d_default_cpu|test_maxpool_2d_ceil_cpu|test_maxpool_2d_default_cpu|test_maxpool_2d_dilations_cpu|test_maxpool_2d_pads_cpu|test_maxpool_2d_precomputed_pads_cpu|test_maxpool_2d_precomputed_same_upper_cpu|test_maxpool_2d_precomputed_strides_cpu|test_maxpool_2d_same_lower_cpu|test_maxpool_2d_same_upper_cpu|test_maxpool_2d_strides_cpu|test_maxpool_2d_uint8_cpu|test_maxpool_3d_default_cpu|test_maxpool_3d_dilations_cpu|test_maxpool_3d_dilations_use_ref_impl_cpu|test_maxpool_3d_dilations_use_ref_impl_large_cpu|test_maxpool_with_argmax_2d_precomputed_pads_cpu|test_maxpool_with_argmax_2d_precomputed_strides_cpu|test_maxunpool_export_without_output_shape_cpu|test_mish_cpu|test_mish_expanded_cpu|test_nllloss_NC_cpu|test_nllloss_NC_expanded_cpu|test_nllloss_NCd1_cpu|test_nllloss_NCd1_expanded_cpu|test_nllloss_NCd1_ii_cpu|test_nllloss_NCd1_ii_expanded_cpu|test_nllloss_NCd1_mean_weight_negative_ii_cpu|test_nllloss_NCd1_mean_weight_negative_ii_expanded_cpu|test_nllloss_NCd1_weight_cpu|test_nllloss_NCd1_weight_expanded_cpu|test_nllloss_NCd1_weight_ii_cpu|test_nllloss_NCd1_weight_ii_expanded_cpu|test_nllloss_NCd1d2_cpu|test_nllloss_NCd1d2_expanded_cpu|test_nllloss_NCd1d2_no_weight_reduction_mean_ii_cpu|test_nllloss_NCd1d2_no_weight_reduction_mean_ii_expanded_cpu|test_nllloss_NCd1d2_reduction_mean_cpu|test_nllloss_NCd1d2_reduction_mean_expanded_cpu|test_nllloss_NCd1d2_reduction_sum_cpu|test_nllloss_NCd1d2_reduction_sum_expanded_cpu|test_nllloss_NCd1d2_with_weight_cpu|test_nllloss_NCd1d2_with_weight_expanded_cpu|test_nllloss_NCd1d2_with_weight_reduction_mean_cpu|test_nllloss_NCd1d2_with_weight_reduction_mean_expanded_cpu|test_nllloss_NCd1d2_with_weight_reduction_sum_cpu|test_nllloss_NCd1d2_with_weight_reduction_sum_expanded_cpu|test_nllloss_NCd1d2_with_weight_reduction_sum_ii_cpu|test_nllloss_NCd1d2_with_weight_reduction_sum_ii_expanded_cpu|test_nllloss_NCd1d2d3_none_no_weight_negative_ii_cpu|test_nllloss_NCd1d2d3_none_no_weight_negative_ii_expanded_cpu|test_nllloss_NCd1d2d3_sum_weight_high_ii_cpu|test_nllloss_NCd1d2d3_sum_weight_high_ii_expanded_cpu|test_nllloss_NCd1d2d3d4d5_mean_weight_cpu|test_nllloss_NCd1d2d3d4d5_mean_weight_expanded_cpu|test_nllloss_NCd1d2d3d4d5_none_no_weight_cpu|test_nllloss_NCd1d2d3d4d5_none_no_weight_expanded_cpu|test_rnn_seq_length_cpu|test_roialign_aligned_false_cpu|test_roialign_aligned_true_cpu|test_roialign_mode_max_cpu|test_round_cpu|test_selu_cpu|test_selu_default_cpu|test_selu_example_cpu|test_simple_rnn_defaults_cpu|test_simple_rnn_with_initial_bias_cpu|test_sin_cpu|test_sin_example_cpu|test_sinh_cpu|test_sinh_example_cpu|test_softplus_cpu|test_softplus_example_cpu|test_softsign_cpu|test_softsign_example_cpu|test_tan_cpu|test_tan_example_cpu|test_thresholdedrelu_cpu|test_thresholdedrelu_default_cpu|test_thresholdedrelu_example_cpu|test_resize_downsample_scales_cubic_A_n0p5_exclude_outside_cpu|test_resize_downsample_scales_cubic_antialias_cpu|test_resize_downsample_scales_cubic_cpu|test_resize_downsample_scales_linear_antialias_cpu|test_resize_downsample_scales_linear_cpu|test_resize_downsample_scales_linear_half_pixel_symmetric_cpu|test_resize_downsample_scales_nearest_cpu|test_resize_downsample_sizes_cubic_antialias_cpu|test_resize_downsample_sizes_cubic_cpu|test_resize_downsample_sizes_linear_antialias_cpu|test_resize_downsample_sizes_linear_pytorch_half_pixel_cpu|test_resize_downsample_sizes_nearest_cpu|test_resize_downsample_sizes_nearest_not_larger_cpu|test_resize_downsample_sizes_nearest_not_smaller_cpu|test_resize_tf_crop_and_resize_axes_2_3_cpu|test_resize_tf_crop_and_resize_axes_3_2_cpu|test_resize_tf_crop_and_resize_cpu|test_resize_upsample_scales_cubic_A_n0p5_exclude_outside_cpu|test_resize_upsample_scales_cubic_align_corners_cpu|test_resize_upsample_scales_cubic_asymmetric_cpu|test_resize_upsample_scales_cubic_cpu|test_resize_upsample_scales_linear_align_corners_cpu|test_resize_upsample_scales_linear_cpu|test_resize_upsample_scales_linear_half_pixel_symmetric_cpu|test_resize_upsample_scales_nearest_axes_2_3_cpu|test_resize_upsample_scales_nearest_axes_3_2_cpu|test_resize_upsample_scales_nearest_cpu|test_resize_upsample_sizes_cubic_cpu|test_resize_upsample_sizes_nearest_axes_2_3_cpu|test_resize_upsample_sizes_nearest_axes_3_2_cpu|test_resize_upsample_sizes_nearest_ceil_half_pixel_cpu|test_resize_upsample_sizes_nearest_cpu|test_resize_upsample_sizes_nearest_floor_align_corners_cpu|test_resize_upsample_sizes_nearest_not_larger_cpu|test_resize_upsample_sizes_nearest_round_prefer_ceil_asymmetric_cpu|test_qlinearmatmul_2D_uint8_float32_cuda|test_qlinearmatmul_2D_int8_float32_cpu|test_image_decoder_decode_jpeg_rgb_cpu|test_basic_deform_conv_without_padding_cuda|test_qlinearmatmul_3D_int8_float16_cuda|test_image_decoder_decode_bmp_rgb_cuda|test_qlinearmatmul_2D_uint8_float16_cpu|test_image_decoder_decode_jpeg2k_rgb_cuda|test_image_decoder_decode_jpeg_bgr_cuda|test_qlinearmatmul_3D_uint8_float32_cpu|test_qlinearmatmul_3D_uint8_float16_cuda|test_deform_conv_with_mask_bias_cpu|test_qlinearmatmul_2D_int8_float16_cuda|test_image_decoder_decode_jpeg_grayscale_cpu|test_basic_deform_conv_without_padding_cpu|test_qlinearmatmul_3D_int8_float32_cuda|test_qlinearmatmul_3D_int8_float16_cpu|test_qlinearmatmul_2D_int8_float32_cuda|test_deform_conv_with_mask_bias_cuda|test_image_decoder_decode_tiff_rgb_cuda|test_image_decoder_decode_jpeg2k_rgb_cpu|test_image_decoder_decode_jpeg_rgb_cuda|test_image_decoder_decode_jpeg_grayscale_cuda|test_qlinearmatmul_3D_uint8_float32_cuda|test_image_decoder_decode_png_rgb_cpu|test_image_decoder_decode_png_rgb_cuda|test_image_decoder_decode_bmp_rgb_cpu|test_qlinearmatmul_3D_uint8_float16_cpu|test_deform_conv_with_multiple_offset_groups_cuda|test_image_decoder_decode_webp_rgb_cpu|test_basic_deform_conv_with_padding_cpu|test_qlinearmatmul_2D_uint8_float16_cuda|test_image_decoder_decode_webp_rgb_cuda|test_basic_deform_conv_with_padding_cuda|test_image_decoder_decode_pnm_rgb_cpu|test_qlinearmatmul_3D_int8_float32_cpu|test_image_decoder_decode_jpeg_bgr_cpu|test_qlinearmatmul_2D_int8_float16_cpu|test_image_decoder_decode_pnm_rgb_cuda|test_deform_conv_with_multiple_offset_groups_cpu|test_qlinearmatmul_2D_uint8_float32_cpu|test_image_decoder_decode_tiff_rgb_cpu|test_globalmaxpool_cpu|test_globalmaxpool_precomputed_cpu|test_instancenorm_example_cpu|test_instancenorm_epsilon_cpu)z4(cast_FLOAT_to_STRING|castlike_FLOAT_to_STRING|stft)zm(resize_downsample_scales_cubic_align_corners|resize_downsample_scales_linear_align_corners|training_dropout)z(test_reduce_sum_empty_set|test_reduce_prod_empty_set|test_reduce_min_empty_set|test_reduce_max_empty_set|test_reduce_sum_square_empty_set|test_reduce_log_sum_empty_set|test_reduce_log_sum_exp_empty_set|test_reduce_l1_empty_set|test_reduce_l2_empty_set)aR  (maxunpool_export_with_output_shape|softplus_example_expanded|softplus_expanded|AvgPool[1-3]d|BatchNorm1d_3d_input_eval|BatchNorm[2-3]d_eval|GLU|Linear|PReLU|PoissonNLL|Softsign|operator_add_broadcast|operator_add_size1|operator_addconstant|operator_addmm|operator_basic|operator_mm|operator_non_float_params|operator_params|operator_pow)z1.16z(averagepool|_pad_|_resize_|_size_|cast|castlike|equal_string_broadcast|equal_string|equal|half_pixel_symmetric|identity|reshape)z1.17a{  (deform_conv|dequantizelinear_uint16|dequantizelinear_int16|quantizelinear_uint16|quantizelinear_int16|dft|gelu|gridsample|group_normalization|identity_opt|image_decoder|isinf_float16|label_encoder|optional_get_element_optional_sequence|qlinearmatmul_2D_int8|qlinearmatmul_2D_uint8_float16|qlinearmatmul_3D_int8|qlinearmatmul_3D_uint8_float16|reduce_max_bool_inputs|reduce_min_bool_inputs|regex_full_match|string_concat|string_split|constantofshape_float_ones|constantofshape_int_shape_zero|constantofshape_int_zeros|isinf|isinf_negative|isinf_positive|isnan|isnan_float16|qlinearmatmul_2D_uint8_float32|qlinearmatmul_3D_uint8_float32)z1.18a  (deform_conv|group_normalization|identity_opt|image_decoder|optional_get_element_optional_sequence|qlinearmatmul_2D_int8|qlinearmatmul_2D_uint8_float16|qlinearmatmul_3D_int8|qlinearmatmul_3D_uint8_float16|qlinearmatmul_2D_uint8_float32|qlinearmatmul_3D_uint8_float32|tree_ensemble)z1.20zR(tree_ensemble_set_membership|tree_ensemble_single_tree|convtranspose_group_2|dft)__main__)(
__future__r   platformZunittesttypingr   r   Zpackaging.versionr   Zonnx.backend.baser4   Zonnx.backend.testZonnx.shape_inferenceZonnx.version_converterr   r   Zonnxruntimer   __version__r   ImportError__annotations__backendbaseZ
BackendRepr	   r7   ZBackendr8   testZBackendTestr%   Zbackend_testarchitectureexcludesystemglobalsupdateZ
test_casesmainr   r   r   r   <module>   s    



2  

%

