
    JThR                       S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJrJrJrJrJrJr  S SKJ r   \(       a  S SK!J"r"  SS	 jr#          SS
 jr$SS jr%SS jr&        SS jr'SS jr(g)    )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                    [        U R                  R                  5      nU R                  5       (       a  US-  nU R                  R                  (       a  USU R                  R                   3-  nU$ )N_out_)strname	is_out_fnoverload_name)funcr"   s     K/var/www/auris/envauris/lib/python3.13/site-packages/torchgen/api/native.pyr"   r"   3   sX    tyy~~D~~yy!DII++,--K    c               l   [        U 5      S:X  ac  [        [        [        5      5      nU(       a/  [        R
                  " 5       (       d  [        U[        U5      5      $ [        U[        U5      5      $ [        U 5      S:X  a4  [        U[        [        [        [        [        5      5      5      5      5      $ [        U 5      S:X  a"  [        U[        [        [        5      5      5      $ [        U 5      S:X  a+  [        U[        [        [        [        5      5      5      5      $ [        R                  " XX#S9$ )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De[%=>>e];%?@@	Q;	==79K+L!MN
 	
 
Q8	%y/A!BCC	Q9	%}Yw=O/P!QRR  5PPr'   c               *    [         R                  " XS9$ )Nr-   )r   returns_type)rsr-   s     r&   r4   r4   Q   s    B..r'   c               @    [        U R                  U R                  XS9$ )Nr*   )r/   typeis_write)ar,   r-   s      r&   argument_typer:   U   s    QVVQZZuTTr'   c                  U(       + n[        U [        5      (       ai  S nU(       a7  U R                  b*  [        R                  " U R                  U R
                  US9n[        [        X R                  US9U R                  UU S9/$ [        U [        5      (       a  [        U R                  XS9$ [        U [        5      (       a  S nU(       a  Sn[        [        S[        [        [        5      5      5      SUU S9[        [        S[        [        [         5      5      5      SUU S9[        [        S[        [        ["        5      5      5      SUU S9[        [        S	[        [        [$        5      5      5      S	UU S9/$ ['        U 5        g )
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   s\     ZN!X"aii3&&qyy!&&HG$QffV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          
        / nUR                  U R                  R                  5        UR                  U R                  R                  5        U VVs/ s H$  n[	        X1U R                  5       S9  H  oDPM     M&     snn$ s  snnf )N)r-   r?   )extend	argumentsnon_outoutr>   r#   )r%   r-   argsargrs        r&   rI   rI      sk    CEDKK&&'KK""#c8Ct~~GW#Xa#XT  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'   