
    JTh$                        S SK Jr  S SKJr  S SKJrJrJr  S SKJ	r	J
r
JrJrJrJrJr  SrSS jrSS jrSS	.       SS
 jjr        SS jr          SS jr          SS jrg)    )annotations)cpp)BindingCppSignatureGroupCType)ArgumentBaseTyBaseTypeListTypeNativeFunctionOptionalTypeTypez
	c                J    U R                   R                  R                  5       $ )N)funcnameunambiguous_name)fs    M/var/www/auris/envauris/lib/python3.13/site-packages/torchgen/api/unboxing.pyr   r   e   s    66;;''))    c                h   [         R                  " U SS9R                  5       R                  5       n[	        [        U5      5       Vs/ s H$  nSX   R                   SU S[        U5       S3PM&     snS/-   n/ nU H  n[        UR                  [        5      (       d  [        SU 35      eUR                  n[        UR                  UR                  UR                  S	9u  pxpUR                  U
5        UR                  U	5        UR                  UR!                  U5      5        M     XC4$ s  snf )
NF)methodzc10::IValue z = std::move(peek(stack, , z)); z7Unexpected argument type, expecting `Argument` but got mutable)r   from_native_functionmost_faithful_signature	argumentsrangelenr   
isinstanceargumentr   	Exceptionargumenttype_ivalue_converttypeis_writeextendappend	with_name)r   argsi	code_listbinding_listargr"   unboxed_name_codedecls              r   convert_argumentsr3   j   s,    	..q?	 	 	"	 	 s4y!!A tw||n$=aS3t9+SQ! 
I L#,,11I#O  !\\&AMMMM%%'
#
 	CMM,78  "")s   +D/Fr   c               ^   [         R                  " XUSS9R                  n[        U [        5      (       a  U S3n[        XUS9u  pVOc[        U [        5      (       a  U S3n[        UUU US9u  pVO:[        U [        5      (       a  U S3n[        UUU US9u  pVO[        SU  S	U 35      eXCXV4$ )
NF)tr   bindssymint_basearg_nameout_namectype_opt_out)r:   r;   r5   r<   	_list_outzCannot handle type z. arg_name: )r   argumenttype_typer%   r!   r
   _gen_code_base_typer   _gen_code_optional_typer   _gen_code_list_typer#   )r5   r:   r   r<   r;   r1   r2   s          r   r$   r$      s     !!
HU
d 
 !XZu%(

d 
A|	$	$Zx(,	

d 
Ax	 	 Zy)(	

d -aSXJGHHD&&r   c           
     X    UR                  SS9 SU SU  SUR                  SS9 S3// 4$ )NT	strip_ref  = z.to<z>();)cpp_typer9   s      r   r@   r@      sL     >>D>)
*!H:S
$u~~`d~GeFffjk	
 
r   c                (   U  S3n[        UR                  U5      u  pVpxSU  SU  SUR                  SS9 SU SU  S	U S
U  S[        R	                  U5       SU S
UR                  SS9 SU SU S
UR                  SS9 S3R                  S5      U4$ )N_opt_inz
auto z_opt = z.toOptional<c10::IValue>();
TrD   rF   z;
if (z*_opt.has_value()) {
    const c10::IValue rG   z_opt.value();
    
    (z);
} else {
    z();
}
        
)r$   elemrH   	connectorjoinsplit)	r:   r;   r5   r<   in_nameres_namer0   res_coder2   s	            r   rA   rA      s     
'"G"=affg"NHZwxj !$  ( ,J is8* -^^H Jc%..4.018* =Jc%..4.01 2	
	 E$K r   c                   U  S3nU  S3nSU SU  S3/n[        UR                  U5      u  pxp[        UR                  [        5      (       a  UR                  R                  [
        R                  :X  ah  UR                  (       aW  UR                  SUR                  SS9 S	U S
UR                  SS9 SUR                   SU S3R                  S5      5        Xj4$ [        UR                  [        5      (       aY  UR                  SUR                  SS9 S	U SU SU S[        R                  U	5       SU SU S3R                  S5      5        Xj4$ U S-   nU
R                  SUR                  SS9 SU S35        UR                  SU SU S[        R                  U	5       SU SU SUR                  SS9 S	U SU S3R                  S5      5        Xj4$ )N_list_in_elemzconst c10::List<c10::IValue> rG   z
.toList();rM   TrD   rF   z = as_array<r   z>(z);
            z;
for (c10::IValue z: z) {
    rK   z.push_back(z);
}
            _veczstd::vector<z> ;z
for (c10::IValue z);
}
rL   )r$   rN   r!   r
   r   r	   boolsizer'   rH   rQ   r   rO   rP   r(   )r:   r;   r5   r<   rR   	elem_namer1   rS   	res_ctyperT   r2   vec_names               r   rB   rB      s,    
(#G*E"I+G9CzLMD*Eaffi*X'H!&&(##v{{(Bqvv$  (<	8J8JUY8J8Z7[[]^_^d^d]eeghogp qd	
< :1 
AFFL	)	)$  ( ,Bwi (^^H Jk( $	 d	
. : f$l9#5#5#5#E"Fb
RSTUBwi (^^H Jk( $$  (1XJ 7 d	
 :r   N)r   r   returnstr)r   r   r_   ztuple[list[Binding], list[str]])r5   r   r:   r`   r   rZ   r_   z'tuple[str, CType, list[str], list[str]])r:   r`   r;   r`   r<   r   r_   tuple[list[str], list[str]])
r:   r`   r;   r`   r5   r   r<   r   r_   ra   )
r:   r`   r;   r`   r5   r   r<   r   r_   ra   )
__future__r   torchgen.apir   torchgen.api.typesr   r   r   torchgen.modelr   r	   r
   r   r   r   r   rO   r   r3   r$   r@   rA   rB    r   r   <module>rg      s    "  @ @  x 	*
#D 05'''(,','D

 
).
 
 %1:? *'' '%-'6;' 'r   