
    %h                     P   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(dS )    )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                   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$                    rO| 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        W/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/torchgen/api/structured.pyr1   r1   ,   s    	1U%888A}!X =6V]""e]9W3E3E%F%FGGGVv}$$e]9W3E3E%F%FGGG !M!!M!MNNN	A|	$	$ =6Xfm,,,,eY/A%B%BCCCVx....eY/A%B%BCCC)) 	Fc!&+.>.>%.G.GeY/C%D%DEEE FFF%ty!9!9:::	Ax	 	  =6Xfm,,,,e]9_3M3M%N%NOOOV|HV]$;$;<<<<eY/A%B%BCCC [[E!!eY|%<%<===[[I%%eY|%<%<=== FFF%ty!9!9:::;$q'';;<<<    ac                :    t          | j        | j        |          S )Nr'   )r1   r2   is_write)r7   r"   s     r5   argument_typer:   Y   s    QVQZuEEEEr6   c                 B   t          | t                    r-t          t          | | j                  | j        d |           gS t          | t
                    rt          | j                  S t          | t                    rt          d          t          |            d S )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   s    !X $Qaf555V	  
 	
 
A|	$	$ 
###	A-	.	. QRRRQr6   gc                 r   g }| j         j        rg }| j         j        j        j        D ]y}t          |t                    rM|j        | j         j        j        v r5| j         j        j        |j                 D ]}|	                    |           d|	                    |           z|
                    |           |
                    | j         j        j                   n)|
                    | j         j        j        j                   |
                    | j         j        j        j                    d |D             S )Nc                 6    g | ]}t          |          D ]}|S  r>   .0argr4   s      r5   
<listcomp>z"impl_arguments.<locals>.<listcomp>   +    555#x}}55!A5555r6   )outprecomputedfunc	argumentsnon_outr*   r   r+   replaceappendextendadd)r?   argsnon_out_args_replacedr7   replacements        r5   impl_argumentsrU   v   s2   HJDu 2  	 %- 	0 	0A!X&& 016QU5F5N+N+N $%5#4#<QV#D > >K)00====> &,,Q////)*** 	AE%)****AEJ(0111KK
$()))555555r6   c                 p    g }|                     | j        j        j        j                   d |D             S )Nc                 6    g | ]}t          |          D ]}|S rB   rC   rD   s      r5   rG   z"meta_arguments.<locals>.<listcomp>   rH   r6   )rP   
functionalrK   rL   rM   r?   rR   s     r5   meta_argumentsrZ      s8    HJDKK!+3444555555r6   c                 p    g }|                     | j        j        j        j                   d |D             S )Nc                 6    g | ]}t          |          D ]}|S rB   rC   rD   s      r5   rG   z!out_arguments.<locals>.<listcomp>   rH   r6   )rP   rI   rK   rL   rY   s     r5   out_argumentsr]      s7    HJDKK
$()))555555r6   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>   rU   rZ   r]   rB   r6   r5   <module>rd      sx                                                   $
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ( ' ' ' ' '*= *=4 *= *=J *= *= *= *=ZFX F FZ F F F Fh.DDE $w-    $6* 6tG} 6 6 6 6>6* 6tG} 6 6 6 66) 6d7m 6 6 6 6 6 6r6   