
    YhU                        d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZm Z  erd dl!m"Z" d$dZ#d%dZ$d&dZ%d'dZ&d(d!Z'd)d"Z(d#S )*    )annotations)TYPE_CHECKING)assert_never)local)cpp)ArgName	BaseCTypeBindingboolTConstRefCTypeCTypedeviceTlayoutT	ListCTypeMutRefCType
NamedCTypeOptionalCTypescalarTscalarTypeTtensorT)ArgumentFunctionSchemaReturnSelfArgumentTensorOptionsArgumentsType)Sequencefuncr   returnstrc                    t          | j        j                  }|                                 r|dz  }| j        j        r|d| j        j         z  }|S )N_out_)r    name	is_out_fnoverload_name)r   r$   s     e/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/torchgen/api/native.pyr$   r$   3   sX    ty~D~~ y .-DI+---K    tr   mutableboolbindsr   symintr   c                  t          |           dk    rpt          t          t                              }|r0t	          j                    st          |t          |                    S t          |t          |                    S t          |           dk    rIt          |t          t          t          t          t                                                            S t          |           dk    r/t          |t          t          t                                        S t          |           dk    r<t          |t          t          t          t                                                  S t          j        | |||          S )NzTensor?z	Tensor?[]ScalarzScalar?r*   r,   r-   )r    r   r	   r   r   !use_const_ref_for_mutable_tensorsr   r   r   r   r   r   argumenttype_type)r)   r*   r,   r-   tensor_types        r'   r2   r2   =   sB    1vv%29W3E3E%F%F 	A5BDD 	Ae[%=%=>>>e];%?%?@@@	Q;		==79K9K+L+L!M!MNN
 
 	
 
Q8		%y/A/A!B!BCCC	Q9		%}Yw=O=O/P/P!Q!QRRR G5PPPPr(   rsSequence[Return]r   c               .    t          j        | |          S )Nr-   )r   returns_type)r4   r-   s     r'   r8   r8   Q   s    Bv....r(   ar   c               <    t          | j        | j        ||          S )Nr0   )r2   typeis_write)r9   r,   r-   s      r'   argument_typer=   U   s    QVQZuVTTTTr(   0Argument | SelfArgument | TensorOptionsArgumentsis_outlist[Binding]c                  | }t          | t                    rZd }|r(| j        !t          j        | j        | j        |          }t          t          | | j        |          | j        ||           gS t          | t                    rt          | j
        ||          S t          | t                    rd }|rd}t          t          dt          t          t                                        d||           t          t          dt          t          t                                         d||           t          t          dt          t          t"                                        d||           t          t          d	t          t          t$                                        d	||           gS t'          |            d S )
Nr7   )r,   r-   )nctyper$   defaultargument)r?   r-   z{}dtypelayoutdevice
pin_memory)
isinstancer   rC   r   default_exprr;   r
   r=   r$   r   rD   r   r   r   r	   r   r   r   r   r   )r9   r?   r-   should_defaultrC   s        r'   rD   rD   Y   s     ZN!X 1" 	Iai3&qy!&HHHG$QafVDDDV	  
 	
 
A|	$	$ %
6&AAAA	A-	.	. " 	G
 !'=;9O9O+P+PQQ	   !(M)G:L:L,M,MNN	   !(M)G:L:L,M,MNN	   !,i>N>N0O0OPP!	  '
 	
6 	Qr(   c                    g }|                      j        j                   |                      j        j                    fd|D             S )Nc                b    g | ]+}t          |                                           D ]}|,S ))r-   r?   )rD   r%   ).0argrr   r-   s      r'   
<listcomp>zarguments.<locals>.<listcomp>   sS       8Ct~~GWGW#X#X#X    r(   )extend	argumentsnon_outout)r   r-   argss   `` r'   rS   rS      sg    CEDKK&'''KK"###       r(   N)r   r   r   r    )
r)   r   r*   r+   r,   r   r-   r+   r   r   )r4   r5   r-   r+   r   r   )r9   r   r,   r   r-   r+   r   r   )r9   r>   r?   r+   r-   r+   r   r@   )r   r   r-   r+   r   r@   ))
__future__r   typingr   typing_extensionsr   torchgenr   torchgen.apir   torchgen.api.typesr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   torchgen.modelr   r   r   r   r   r   collections.abcr   r$   r2   r8   r=   rD   rS    r(   r'   <module>r`      s    " " " " " "             * * * * * *                                             "                 )((((((   Q Q Q Q(/ / / /U U U U= = = =@     r(   