
    h@                         S SK Jr  S SKrS SKrS SKJr  S SKJr  S\\R                     S\R                  4S jr
 " S S	\5      rg)
    )OptionalN)Base)expectoptionalreturnc                 `    U c  [         R                  " S5      $ [         R                  " S5      $ )NFT)nparray)r   s    h/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/optionalhaselement.py-optional_has_element_reference_implementationr      s&     xxxx~    c                   <    \ rS rSr\SS j5       r\SS j5       rSrg)OptionalHasElement   Nc            	         [         R                  " / SQ5      R                  [         R                  5      n [        R
                  R                  [        R                  R                  S/S9n[        R
                  R                  U5      nX4 HK  n[        R
                  R                  SS/S/S9n[        U 5      nSX2:X  a  SOS	-   n[        UU /U/U/US
9  MM     g )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   exportOptionalHasElement.export   s    88L)00< KK>>&&,, ? 
 #kkBBCTU #4!I;;(($.>-?( ) D C8LF4$; !#I
  z#6"7 "Jr   c            
         S n [         R                  R                  [         R                  R                  / S9n[         R                  R                  U5      nX4 H  nSSS S.nUR                  5        Hu  u  pVX1:X  a	  U(       a  M  [         R                  R                  SUc  / OU/S/S9n[        U 5      nSU-   X2:X  a  S	OS
-   n	[        UU(       a  U /O/ U/U(       a  U/O/ U	S9  Mw     M     g )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_emptyOptionalHasElement.export_empty6   s    KK>>&&,,B ? 
 #kkBBCTU "3 H)')"&"
 1C0H0H0J, #8Z{{,,(!+!32*%J - 
 GxP0&' ,B *,  )3H:#H<F'7&8B"' 1K !Ir    )r   N)__name__
__module____qualname____firstlineno__staticmethodr0   r?   __static_attributes__rA   r   r   r   r      s(     : ( (r   r   )typingr   numpyr	   r%   onnx.backend.test.case.baser   onnx.backend.test.case.noder   ndarrayr   r   rA   r   r   <module>rM      sF   
    , .rzz"ZZH Hr   