
    Ng@                         d dl mZ d dlZd dlZd dlmZ d dlmZ deej	                 dej	        fdZ
 G d d	e          ZdS )
    )OptionalN)Base)expectoptionalreturnc                 V    | t          j        d          S t          j        d          S )NFT)nparray)r   s    j/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/backend/test/case/node/optionalhaselement.py-optional_has_element_reference_implementationr      s&     xx~~    c                   >    e Zd Zedd            Zedd            ZdS )OptionalHasElementr   Nc                     t          j        g d                              t           j                  } t          j                            t          j        j        dg          }t          j        	                    |          }||fD ]Y}t          j        
                    ddgdg          }t          |           }d||k    rdnd	z   }t          || g|g|g|
           Zd 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_names          r   exportzOptionalHasElement.export   s   8LLL))00<< K>>&, ? 
 
 #kBBCTUU #45H!I 	 	;(($.>-?( )  D C8LLF4$(;;; ! #I
  z#6"7    	 	r   c            	         d } t           j                            t           j        j        g           }t           j                            |          }||fD ]}ddd d}|                                D ]t\  }}||k    r|rt           j                            d|g n|gdg          }t          |           }d|z   ||k    rd	nd
z   }	t          ||r| gng |g|r|gng |	           ud 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.   s
             r   export_emptyzOptionalHasElement.export_empty6   su    K>>&,B ? 
 
 #kBBCTUU "34G H 	 	)')"&" "
 1C0H0H0J0J  , *#'888Z8{,,(!+!322*%J -  
 GxPP0&' ,/BBB *),  )3;H::#H<F&N'7&8&8B"    '	 	r   )r   N)__name__
__module____qualname__staticmethodr/   r=    r   r   r   r      sR           \: ( ( ( \( ( (r   r   )typingr   numpyr	   r$   onnx.backend.test.case.baser   onnx.backend.test.case.noder   ndarrayr   r   rB   r   r   <module>rH      s   
            , , , , , , . . . . . .rz"Z   H H H H H H H H H Hr   