
    '}h                     0   d dl mZ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ede"ded	efd
Z#deded	efdZ$deeeef   d	ee	   fdZ%ded	ee	   fdZ&ded	ee	   fdZ'ded	ee	   fdZ(y)    )ListUnion)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_nevertmutablebindsreturnc                J   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)symintr"   z&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)r    r!   r"   rr/   s        V/var/www/html/test/engine/venv/lib/python3.12/site-packages/torchgen/api/structured.pyr1   r1   ,   s,    	1U%8A}!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';<<    ac                F    t        | j                  | j                  |      S )Nr'   )r1   r2   is_write)r7   r"   s     r5   argument_typer:   Y   s    QVVQZZuEEr6   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	   r:   r+   r   r>   r   r.   r   )r7   s    r5   r>   r>   d   sr    !X$Qaff5VV	
 	
 
A|	$

##	A-	.QRRQr6   gc                 ^   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>   )r?   argsnon_out_args_replacedr7   argr4   s         r5   impl_argumentsrN   v   s2   HJD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 rA   )rH   
functionalrD   rE   rF   r>   r?   rK   rM   r4   s       r5   meta_argumentsrR      sM    HJD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 rA   )rH   rB   rD   rE   r>   rQ   s       r5   out_argumentsrU      sK    HJDKK

$$(()5#x}5!A5A555rS   N))typingr   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   boolr1   r:   r>   rN   rR   rU    r6   r5   <module>r]      s         $
 
 
 (*= *=4 *= *=J *=ZFX F FZ Fh.DDE $w- $6* 6tG} 6<6* 6tG} 66) 6d7m 6r6   