
    JTh                        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Jr  S SKJrJrJrJrJrJrJrJrJr  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)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               r   [         R                  " U SX!S9nUb  U$ [        U [        5      (       a  U R                  [
        R                  :X  a"  [        U[        [        [        5      5      5      $ U R                  [
        R                  :X  a"  [        U[        [        [        5      5      5      $ [        SU  35      e[        U [        5      (       Ga  U R                  [        [
        R                  5      :X  a  [        U[        [         5      5      $ U R                  [        [
        R                  5      :X  a  [        U[        ["        5      5      $ [        U R                  [$        5      (       a<  ['        U R                  R                  5      S:X  a  [        U[        [(        5      5      $ [+        U R                  XS9n[        U[-        UR.                  5      5      $ [        U [$        5      (       Ga)  U R                  [        [
        R                  5      :X  a"  [        U[        [        [0        5      5      5      $ U R                  [        [        [
        R                  5      5      :X  a  [        U[        [2        5      5      $ ['        U R                  5      S:X  a  [        U[        [4        5      5      $ ['        U R                  5      S:X  a  [        U[        [6        5      5      $ [+        U R                  XS9n[        U[9        UR.                  5      5      $ [        S[;        U 5       35      e)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        O/var/www/auris/envauris/lib/python3.13/site-packages/torchgen/api/structured.pyr.   r.   ,   s4    	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               @    [        U R                  U R                  US9$ )Nr$   )r.   r/   is_write)ar!   s     r3   argument_typer8   Y   s    QVVQZZuEEr4   c                (   [        U [        5      (       a(  [        [        X R                  S9U R                  S U S9/$ [        U [
        5      (       a  [        U R                  5      $ [        U [        5      (       a  [        S5      e[        U 5        g )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   sy    !X$Qff5VV	
 	
 
A|	$	$

##	A-	.	.QRRQr4   c                   / nU R                   R                  (       Ga  / nU R                   R                  R                  R                   H  n[        U[        5      (       al  UR                  U R                   R                  R                  ;   a>  UR                  U R                   R                  R                  UR                     5        M  UR                  U5        M     UR                  U5        UR                  U R                   R                  R                  5        O9UR                  U R                   R                  R                  R                  5        UR                  U R                   R                  R                  R                   5        U VVs/ s H  n[        U5        H  oUPM     M     snn$ s  snnf 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   s3   CEDuu  	 %%--A!X&&166QUU5F5F5N5N+N &,,QUU->->-F-Fqvv-NO &,,Q/ . 	)* 	AEE%%))*AEEJJ((001KK

$$(()5#x}!A}A555s   F>c                    / nUR                  U R                  R                  R                  R                  5        U VVs/ s H  n[        U5        H  o3PM     M     snn$ s  snnf r>   )rE   
functionalrA   rB   rC   r<   rH   rI   rK   r2   s       r3   meta_argumentsrP      sM    CEDKK!!++3345#x}!A}A555   A#c                    / nUR                  U R                  R                  R                  R                  5        U VVs/ s H  n[	        U5        H  o3PM     M     snn$ s  snnf r>   )rE   r?   rA   rB   r<   rO   s       r3   out_argumentsrS      sK    CEDKK

$$(()5#x}!A}A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   