
    ^jl                        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mZmZmZ ddZ ddZ!ddZ"dd	Z#dd
Z$ddZ%y)    )annotations)assert_never)cpp)ArgNameArrayRefCType	BaseCTypeBindingConstRefCTypeintArrayRefTiOptTensorListRefTiTensorListRefT
NamedCTypeOptionalCTypeoptionalIntArrayRefToptionalScalarRefToptionalTensorRefTscalarTtensorT)	ArgumentBaseTyBaseTypeListTypeNativeFunctionsGroupOptionalTypeSelfArgumentTensorOptionsArgumentsTypec                  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                  ||      }t        |t7        |j.                              S t        dt9        |              )NF)symintbindsmutablez&base type should have been value type intr!   r    zunrecognized type )r   valuetype_type
isinstancer   namer   Tensorr   r
   r   r   Scalarr   AssertionErrorr   elemr   r   r   strr   argumenttype_typer   typer   r   r   r   repr)tr!   r    rr*   s        b/var/www/ramen.bs-engineer-server.com/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|%<== F%tyy!9::1$q';<<    c               F    t        | j                  | j                  |      S )Nr#   )r,   r-   is_write)ar    s     r1   argument_typer6   W   s    QVVQZZuEEr2   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	   r6   r&   r   r:   r   r)   r   )r5   s    r1   r:   r:   b   sr    !X$Qaff5VV	
 	
 
A|	$

##	A-	.QRRQr2   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_replacedr5   argr0   s         r1   impl_argumentsrJ   t   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<   )rC   
functionalr?   r@   rA   r:   rF   rG   rI   r0   s       r1   meta_argumentsrN      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<   )rC   r=   r?   r@   r:   rM   s       r1   out_argumentsrQ      sK    CEDKK

$$(()5#x}5!A5A555rO   N)r/   r   r!   boolr    r   returnr   )r5   r   r    r   rS   r   )r5   z0Argument | SelfArgument | TensorOptionsArgumentsrS   list[Binding])rF   r   rS   rT   )&
__future__r   typing_extensionsr   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   r   r   r   r,   r6   r:   rJ   rN   rQ    r2   r1   <module>r[      sV    " *     "
 
 
*(=VF$6<66r2   