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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mZ d dl	mZmZ d dlmZ erRd dlmZ d dlZG dd	 d	e
jjjZh d
ZdddZdddiiZe
jjj ee!edZ"e#dre"$d e% d  dkre"$d e& 'e"j( e!dkre)  dS dS )    )annotationsN)TYPE_CHECKINGAny)
ModelProto	NodeProtoTensorProto)Device
DeviceType)!BackendIsNotSupposedToImplementIt)Sequencec                      sL   e Zd Ze	dd fd
dZe		dd fddZedddZ  ZS )DummyBackendCPUmodelr   devicestrkwargsr   return#onnx.backend.base.BackendRep | Nonec           
        s   t  j||fi | tj| ddd|}tjj|fi |}dd t|j	j
|j	jD }t|rt|j	jD ]:}t|jD ]2\}}|jdkrN|dkrNq@||v sTJ || jj}|jtjksbJ |jjD ]}	|	ddksqJ qfq@q9td	)
NT)
check_typestrict_modec                 S  s   i | ]}|j |qS  )name).0vir   r   O/home/ubuntu/.local/lib/python3.10/site-packages/onnx/test/test_backend_test.py
<dictcomp>2   s    z(DummyBackend.prepare.<locals>.<dictcomp>Dropoutr   value	dim_valueWThis is the dummy backend test that doesn't verify the results but does run the checker)superprepareonnxcheckercheck_modelshape_inferenceinfer_shapes	itertoolschaingraph
value_infooutput!do_enforce_test_coverage_safelistnode	enumerateop_typetypetensor_type	elem_typer   	UNDEFINEDshapedim
WhichOneofr
   )
clsr   r   r   value_infosr-   ir+   ttr5   	__class__r   r   r!   &   s,   	zDummyBackend.prepareNr-   r   inputsoutputs_info4Sequence[tuple[numpy.dtype, tuple[int, ...]]] | Nonetuple[Any, ...] | Nonec                   s   t  j||||d td)N)r   r>   r   )r    run_noder
   )r7   r-   r=   r   r>   r   r;   r   r   rA   F   s   	zDummyBackend.run_nodeboolc                 C  s   t |}|jtjkS )N)r   r0   r	   r   )r7   r   dr   r   r   supports_deviceT   s   zDummyBackend.supports_device)r   )r   r   r   r   r   r   r   r   )r   N)r-   r   r=   r   r   r   r>   r?   r   r   r   r@   )r   r   r   rB   )__name__
__module____qualname__classmethodr!   rA   rD   __classcell__r   r   r;   r   r   %   s    r   >
   vgg19zfnetresnet50
SingleRelu
shufflenetdensenet121bvlc_alexnetinception_v1inception_v2squeezenet_oldr   r   r   rB   c                 C  s&   | j jtvrdS tdd | j jD S )NFc                 s  s    | ]}|j d vV  qdS )>   GRURNNLSTMN)r/   )r   r-   r   r   r   	<genexpr>k   s    z4do_enforce_test_coverage_safelist.<locals>.<genexpr>)r)   r   test_coverage_safelistallr-   )r   r   r   r   r,   h   s   r,   test_mvnr   F)test_kwargsAPPVEYORz(test_vgg19|test_zfnet)32bitz)(test_vgg19|test_zfnet|test_bvlc_alexnet)__main__)r   r   r   rB   )*
__future__r   r'   osplatformunittesttypingr   r   onnx.backend.baser"   onnx.backend.testonnx.shape_inferenceonnx.version_converterr   r   r   r   r	   onnx.backend.test.runnerr
   collections.abcr   numpybackendbaseBackendr   rX   r,   r[   testBackendTestrE   backend_testgetenvexcludearchitectureglobalsupdate
test_casesmainr   r   r   r   <module>   s@   5



