o
    wiC                     @  sR   d dl mZ d dlZd dlZd dlmZ d dlmZ dd	d
Z	G dd deZ
dS )    )annotationsN)Base)expectoptionalnp.ndarray | Nonereturn
np.ndarrayc                 C  s   | d u r	t dS t dS )NFT)nparray)r    r   k/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/backend/test/case/node/optionalhaselement.py-optional_has_element_reference_implementation   s   

r   c                   @  s(   e Zd ZedddZedddZdS )	OptionalHasElementr   Nonec                  C  s   t g dt j} tjjtjjdgd}tj	|}||fD ]'}tjj
ddgdgd}t| }d||kr8dnd	 }t|| g|g|g|d
 q d S )N)            r   	elem_typeshaper   optional_inputoutputinputsoutputstest_optional_has_element_tensor_inputr   r   input_type_protosname)r	   r
   astypefloat32onnxhelpermake_tensor_type_protoTensorProtoFLOATmake_optional_type_proto	make_noder   r   )r   tensor_type_protooptional_type_protor   noder   	test_namer   r   r   export   s2   
zOptionalHasElement.exportc            
   	   C  s   d } t jjt jjg d}t j|}||fD ]M}ddd d}| D ]@\}}||kr-|r-q"t jjd|d u r7g n|gdgd}t| }d| ||krKd	nd
 }	t	||rU| gng |g|r]|gng |	d q"qd S )Nr   r    )emptyempty_no_input_nameempty_no_inputr   r   r   r   _optional_input_tensor_inputr   )
r#   r$   r%   r&   INT32r(   itemsr)   r   r   )
r   r*   r+   input_type_protoinput_name_optionstest_name_surfix
input_namer,   r   r-   r   r   r   export_empty5   sH   	zOptionalHasElement.export_emptyN)r   r   )__name__
__module____qualname__staticmethodr.   r;   r   r   r   r   r      s
    r   )r   r   r   r   )
__future__r   numpyr	   r#   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   r   r   r   r   r   <module>   s   
	