o
    toi                     @  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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
mZmZ d dlmZ eejddZG d	d
 d
ejjjZG dd dejjjZejdkrfd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re "d e# d  dkre "d e$ dkre "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re "d$ e "d% e	%d&re "d' e "d( e	&d)re "d* e "d+ e "d, e "d- e' (e j) ed.krYej*d/d0d1Z+e+j,j-Z.e/e+j,j0Z0e/e+j,j1Z1e/e+j,j2Z3e/e+j,j4Z5e6d2 e6d3e. d4e0 d5e1 d6e3 d7e5 
 dS dS )8    )annotationsN)Any)
ModelProto)Device
DeviceType)ReferenceEvaluatorVERBOSE0c                   @  s   e Zd Zdd Zdd ZdS )ReferenceEvaluatorBackendRepc                 C  s
   || _ d S N)_session)selfsession r   T/home/ubuntu/.local/lib/python3.10/site-packages/onnx/test/test_backend_reference.py__init__   s   
z%ReferenceEvaluatorBackendRep.__init__c                 K  s   t |tjr	|g}t |tr^t|t| jjkr$tt| jj|dd}nLi }d}t| jj| jj	ddD ])\}}t
dd |jjjD }||| jkr\|| ||< |d7 }|t|kr\ nq3nt |trf|}n
tdt|d| jd |S )	NT)strictr   c                 s  s    | ]}|j V  qd S r   )	dim_value).0dr   r   r   	<genexpr>)   s    z3ReferenceEvaluatorBackendRep.run.<locals>.<genexpr>   zUnexpected input type .)
isinstancenumpyndarraylistlenr   input_namesdictzipinput_typestupletensor_typeshapedim	TypeErrortyperun)r   inputskwargsfeeds
pos_inputsinptshaper$   r   r   r   r(      s*   

z ReferenceEvaluatorBackendRep.runN)__name__
__module____qualname__r   r(   r   r   r   r   r
      s    r
   c                   @  s`   e Zd Zedd ZedddZed	d
 Ze	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_supported7   s   z,ReferenceEvaluatorBackend.is_opset_supporteddevicestrreturnboolc                 C  s   t |}|jtjkS r   )r   r'   r   CPU)r5   r8   r   r   r   r   supports_device;   s   z)ReferenceEvaluatorBackend.supports_devicec                 C  s   t |tdS )N)verbose)r   r   r4   r   r   r   create_inference_session@   s   z2ReferenceEvaluatorBackend.create_inference_sessionr<   r6   r   r*   r
   c                 K  sT   t |tr	t|S t |tttfr | |}| j||fi |S tdt	| d)NzUnexpected type z for model.)
r   r   r
   r9   bytesr   r?   preparer&   r'   )r5   r6   r8   r*   infr   r   r   rA   D   s   

z!ReferenceEvaluatorBackend.prepareNc                 K  s&   | j ||fi |}|j|fi |S r   )rA   r(   )r5   r6   r)   r8   r*   repr   r   r   	run_modelQ   s   z#ReferenceEvaluatorBackend.run_modelc                 K  s   t d)Nz%Unable to run the model node by node.)NotImplementedError)r5   noder)   r8   outputs_infor*   r   r   r   run_nodeV   s   z"ReferenceEvaluatorBackend.run_node)r8   r9   r:   r;   )r<   )r6   r   r8   r9   r*   r   r:   r
   r   )NN)
r/   r0   r1   classmethodr7   r=   r?   rA   rD   rH   r   r   r   r   r2   6   s    

r2   linuxgMbP?gư>atol)test_dfttest_dft_axistest_dft_axis_opset19test_dft_inversetest_dft_inverse_opset19test_dft_opset19)test_kwargsAPPVEYORz(test_vgg19|test_zfnet)32bitz)(test_vgg19|test_zfnet|test_bvlc_alexnet)Windows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)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)test_adam_multiplewin32test_regex_full_match_basic_cpu&test_regex_full_match_email_domain_cputest_regex_full_match_empty_cputest_image_decoder_decode_darwin&test_qlinearmatmul_3D_int8_float16_cpu&test_qlinearmatmul_3D_int8_float32_cpuz10.0"test_image_decoder_decode_webp_rgb$test_image_decoder_decode_jpeg2k_rgbz2.0z(test_cast.*(FLOAT8|BFLOAT16|FLOAT4|INT4)test_quantizelinear_e4m3fntest_quantizelinear_float4e2m1z(test_attention_4d_with_past_and_present_qk_matmul_bias_4d_mask_causal_expanded|test_attention_4d_with_past_and_present_qk_matmul_bias_3d_mask_causal_expanded|test_attention_4d_attn_mask_4d_causal_expanded|test_attention_4d_attn_mask_3d_causal_expanded)__main__   F)	verbosityexitz!---------------------------------z
tests_run=z errors=z	 skipped=z unexpected_successes=z expected_failures=)7
__future__r   osplatformsysunittesttypingr   r   version_utilsonnx.backend.baseonnxonnx.backend.testr   r   r   onnx.referencer   intenvirongetr   backendbase
BackendRepr
   Backendr2   dft_atoltestBackendTestr/   backend_testgetenvexcludearchitecturesystempillow_older_thannumpy_older_thanglobalsupdate
test_casesmainresresulttestsRun	tests_runr   errorsskippedunexpectedSuccessesunexpected_successesexpectedFailuresexpected_failuresprintr   r   r   r   <module>   s   %






















