o
    r::j                     @  sx  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  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re "d e "d  e	%d!re "d" e "d# e "d$ e "d% e "d& e "d' e& 'e j( ed(kr:ej)d)d*d+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 d0e2 d1e4 
 dS dS )2    )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   g/home/nk/hobo-godmode/plappi-mvp/.venv/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_modelO   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_nodeT   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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_float16_type_positive_delta_expanded|test_range_bfloat16_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win32z(test_regex_full_match_basic_cpu|test_regex_full_match_email_domain_cpu|test_regex_full_match_empty_cpu|test_image_decoder_decode_)z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_float4e2m1'test_range_bfloat16_type_positive_delta0test_range_bfloat16_type_positive_delta_expandedz(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=)6
__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architectureexclude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   #















