
    OgR                       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 d dl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(y)    )annotations)TYPE_CHECKING)local)cpp)ArgName	BaseCTypeBindingboolTConstRefCTypeCTypedeviceTlayoutT	ListCTypeMutRefCType
NamedCTypeOptionalCTypescalarTscalarTypeTtensorT)ArgumentFunctionSchemaReturnSelfArgumentTensorOptionsArgumentsType)assert_never)Sequencec                    t        | j                  j                        }| j                         r|dz  }| j                  j                  r|d| j                  j                   z  }|S )N_out_)strname	is_out_fnoverload_name)funcr"   s     Z/var/www/html/suriana-translation/venv/lib/python3.12/site-packages/torchgen/api/native.pyr"   r"   3   sU    tyy~~D~~yy!DII++,--K    c               V   t        |       dk(  rXt        t        t                    }|r)t	        j
                         st        |t        |            S t        |t        |            S t        |       dk(  r4t        |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?mutablebindssymint)r!   r   r   r   r   !use_const_ref_for_mutable_tensorsr   r   r   r   r   r   argumenttype_type)tr+   r,   r-   tensor_types        r&   r/   r/   =   s     1v%29W3E%F5BBDe[%=>>e];%?@@	Q;	==79K+L!MN
 	
 
Q8	%y/A!BCC	Q9	%}Yw=O/P!QRR  G5PPr'   c               0    t        j                  | |      S )Nr-   )r   returns_type)rsr-   s     r&   r4   r4   Q   s    Bv..r'   c               H    t        | j                  | j                  ||      S )Nr*   )r/   typeis_write)ar,   r-   s      r&   argument_typer:   U   s    QVVQZZuVTTr'   c                  | }t        | t              rld }|r8| j                  ,t        j                  | j                  | j
                  |      }t        t        | | j                  |      | j                  ||       gS t        | t              rt        | j                  ||      S t        | t              rd }|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'        |        y )
Nr3   )r,   r-   )nctyper"   defaultargument)is_outr-   z{}dtypelayoutdevice
pin_memory)
isinstancer   r=   r   default_exprr7   r	   r:   r"   r   r>   r   r   r   r   r   r   r   r
   r   )r9   r?   r-   should_defaultr=   s        r&   r>   r>   Y   sW     ZN!X"aii3&&qyy!&&HG$QaffVDVV	
 	
 
A|	$

6&AA	A-	.G
 !'=;9O+PQ	 !(M)G:L,MN	 !(M)G:L,MN	 !,i>N0OP!	'
 	
6 	Qr'   c          
        g }|j                  | j                  j                         |j                  | j                  j                         |D cg c]%  }t	        ||| j                               D ]  }| ' c}}S c c}}w )N)r-   r?   )extend	argumentsnon_outoutr>   r#   )r%   r-   argsargrs        r&   rI   rI      sr    CEDKK&&'KK""#8Ct~~GW#X	  s   *B N)r%   r   returnr!   )
r0   r   r+   boolr,   r   r-   rP   rO   r   )r5   zSequence[Return]r-   rP   rO   r   )r9   r   r,   r   r-   rP   rO   r   )r9   z0Argument | SelfArgument | TensorOptionsArgumentsr?   rP   r-   rP   rO   list[Binding])r%   r   r-   rP   rO   rQ   ))
__future__r   typingr   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   torchgen.utilsr   collections.abcr   r"   r/   r4   r:   r>   rI    r'   r&   <module>r[      s    "        "  ( (QQQ&-Q7;QQ(/U=7= = 	=
 =@r'   