U
    qhx                  
   @  sR  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 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 d dl
mZmZ d dlmZ G dd dejjjZd	d
ddddddddh
ZdddddZdddiiZejjjeeedZ e!dre "d e# d  dkr$e "d e "d  e$ %e j& ed!krNe'  dS )"    )annotationsN)AnySequence)
ModelProto	NodeProtoTensorProto)Device
DeviceType)!BackendIsNotSupposedToImplementItc                	      sd   e Zd Zedddddd fddZedd
dddddd fddZedddddZ  ZS )DummyBackendCPUr   strr   z#onnx.backend.base.BackendRep | None)modeldevicekwargsreturnc           
        s   t  j||f| tj| ddd|}tjj|f|}dd t|j	j
|j	jD }t|r|j	jD ]t}t|jD ]d\}}|jdkr|dkrqx||kst|| jj}|jtjkst|jjD ]}	|	ddkstqqxqjtd	d S )
NT)Z
check_typestrict_modec                 S  s   i | ]}|j |qS  )name).0vir   r   ?/tmp/pip-unpacked-wheel-xnis5xre/onnx/test/test_backend_test.py
<dictcomp>/   s    z(DummyBackend.prepare.<locals>.<dictcomp>ZDropoutr   valueZ	dim_valueWThis is the dummy backend test that doesn't verify the results but does run the checker)superprepareonnxcheckerZcheck_modelZshape_inferenceZinfer_shapes	itertoolschaingraphZ
value_infooutput!do_enforce_test_coverage_safelistnode	enumerateop_typeAssertionErrortypeZtensor_typeZ	elem_typer   	UNDEFINEDshapedimZ
WhichOneofr
   )
clsr   r   r   Zvalue_infosr$   ir"   ttr+   	__class__r   r   r   #   s(    zDummyBackend.prepareNr   z4Sequence[tuple[numpy.dtype, tuple[int, ...]]] | Noneztuple[Any, ...] | None)r$   inputsr   outputs_infor   r   c                   s    t  j||||d tdd S )N)r   r2   r   )r   run_noder
   )r,   r$   r1   r   r2   r   r/   r   r   r3   C   s    	zDummyBackend.run_nodebool)r   r   c                 C  s   t |}|jtjkrdS dS )NTF)r   r(   r	   r   )r,   r   dr   r   r   supports_deviceQ   s    zDummyBackend.supports_device)r   )r   N)__name__
__module____qualname__classmethodr   r3   r6   __classcell__r   r   r/   r   r   "   s       r   Zbvlc_alexnetZdensenet121Zinception_v1Zinception_v2Zresnet50Z
shufflenetZ
SingleReluZsqueezenet_oldZvgg19Zzfnetr   r4   )r   r   c                 C  s&   | j jtkrdS tdd | j jD S )NFc                 s  s   | ]}|j d kV  qdS )>   LSTMGRURNNN)r&   )r   r$   r   r   r   	<genexpr>j   s     z4do_enforce_test_coverage_safelist.<locals>.<genexpr>)r!   r   test_coverage_safelistallr$   )r   r   r   r   r#   g   s    r#   Ztest_mvnr   F)test_kwargsZAPPVEYORz(test_vgg19|test_zfnet)32bitz)(test_vgg19|test_zfnet|test_bvlc_alexnet)Z$test_dequantizelinear_e4m3fn_float16__main__)(
__future__r   r   osplatformZunittesttypingr   r   ZnumpyZonnx.backend.baser   Zonnx.backend.testZonnx.shape_inferenceZonnx.version_converterr   r   r   r   r	   Zonnx.backend.test.runnerr
   backendbaseZBackendr   r@   r#   rB   testZBackendTestr7   Zbackend_testgetenvexcludearchitectureglobalsupdateZ
test_casesmainr   r   r   r   <module>   sT   8   



