
    Og                        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mZ d dlmZmZmZmZmZmZmZmZmZ 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)cpp)ArgNameArrayRefCType	BaseCTypeBindingConstRefCTypedimnameListTintArrayRefTiOptTensorListRefTiTensorListRefT
NamedCTypeOptionalCTypeoptionalIntArrayRefToptionalScalarRefToptionalTensorRefTscalarTtensorT)	ArgumentBaseTyBaseTypeListTypeNativeFunctionsGroupOptionalTypeSelfArgumentTensorOptionsArgumentsType)assert_neverc               L   t        j                  | d||      }||S t        | t              r| j                  t
        j                  k(  r"t        |t        t        t                          S | j                  t
        j                  k(  r"t        |t        t        t                          S t        d|        t        | t              r
| j                  t        t
        j                        k(  rt        |t        t                     S | j                  t        t
        j                        k(  rt        |t        t"                    S t        | j                  t$              r;t'        | j                  j                        dk(  rt        |t        t(                    S t+        | j                  ||      }t        |t-        |j.                              S t        | t$              r)| j                  t        t
        j                        k(  r"t        |t        t        t0                          S | j                  t        t        t
        j                              k(  rt        |t        t2                    S t'        | j                        dk(  rt        |t        t4                    S t'        | j                        dk(  rt        |t        t6                    S t+        | j                  ||      }t        |t9        |j.                              S t        dt;        |              )NF)symintbindsmutablez&base type should have been value type intr"   r!   Dimnamezunrecognized type )r   valuetype_type
isinstancer   namer   Tensorr   r	   r   r   Scalarr   AssertionErrorr   elemr   r   r   strr   argumenttype_typer   typer   r   r   r
   r   repr)tr"   r!   rr,   s        ^/var/www/html/suriana-translation/venv/lib/python3.12/site-packages/torchgen/api/structured.pyr.   r.   ,   s.    	1U%IA}!X66V]]"e]9W3E%FGGVVv}}$e]9W3E%FGG #I!!MNN	A|	$66Xfmm,,eY/A%BCCVVx..eY/A%BCC)c!&&++.>%.GeY/C%DEE F%tyy!9::	Ax	 66Xfmm,,e]9_3M%NOOVV|HV]]$;<<eY/A%BCC [E!eY|%<==[I%eY|%<== F%tyy!9::1$q';<<    c               F    t        | j                  | j                  |      S )Nr$   )r.   r/   is_write)ar!   s     r3   argument_typer8   Y   s    QVVQZZuEEr4   c                   t        | t              r/t        t        | | j                        | j                  d |       gS t        | t
              rt        | j                        S t        | t              rt        d      t        |        y )N)r!   )nctyper(   defaultargumentz2structured kernels don't support TensorOptions yet)
r'   r   r   r8   r(   r   r<   r   r+   r   )r7   s    r3   r<   r<   d   sr    !X$Qaff5VV	
 	
 
A|	$

##	A-	.QRRQr4   c                ^   g }| j                   j                  rg }| j                   j                  j                  j                  D ]  }t        |t              ri|j                  | j                   j                  j                  v r=|j                  | j                   j                  j                  |j                            ||j                  |        |j                  |       |j                  | j                   j                  j                         n9|j                  | j                   j                  j                  j                         |j                  | j                   j                  j                  j                          |D cg c]  }t        |      D ]  }|  c}}S c c}}w N)outprecomputedfunc	argumentsnon_outr'   r   r(   replaceextendappendaddr<   )gargsnon_out_args_replacedr7   argr2   s         r3   impl_argumentsrL   v   s2   CEDuu  	 %%-- 	0A!X&166QUU5F5F5N5N+N &,,QUU->->-F-Fqvv-NO &,,Q/	0 	)* 	AEE%%))*AEEJJ((001KK

$$(()5#x}5!A5A555s   F)c                    g }|j                  | j                  j                  j                  j                         |D cg c]  }t        |      D ]  }|  c}}S c c}}w r>   )rE   
functionalrA   rB   rC   r<   rH   rI   rK   r2   s       r3   meta_argumentsrP      sM    CEDKK!!++3345#x}5!A5A555   Ac                    g }|j                  | j                  j                  j                  j                         |D cg c]  }t	        |      D ]  }|  c}}S c c}}w r>   )rE   r?   rA   rB   r<   rO   s       r3   out_argumentsrS      sK    CEDKK

$$(()5#x}5!A5A555rQ   N)r1   r   r"   boolr!   r   returnr   )r7   r   r!   r   rU   r   )r7   z0Argument | SelfArgument | TensorOptionsArgumentsrU   list[Binding])rH   r   rU   rV   )'
__future__r   torchgen.apir   torchgen.api.typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   torchgen.modelr   r   r   r   r   r   r   r   r   torchgen.utilsr   r.   r8   r<   rL   rP   rS    r4   r3   <module>r]      sX    "     $
 
 
 (*=ZF$6<66r4   