
    Og$                        d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	m
Z
mZmZmZmZmZ dZddZddZdd		 	 	 	 	 	 	 dd
Z	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 ddZy)    )annotations)cpp)BindingCppSignatureGroupCType)ArgumentBaseTyBaseTypeListTypeNativeFunctionOptionalTypeTypez
	c                J    | j                   j                  j                         S )N)funcnameunambiguous_name)fs    \/var/www/html/suriana-translation/venv/lib/python3.12/site-packages/torchgen/api/unboxing.pyr   r   e   s    66;;''))    c                f   t        j                  | d      j                         j                         }t	        t        |            D cg c]$  }d||   j                   d| dt        |       d& c}dgz   }g }|D ]  }t        |j                  t              st        d|       |j                  }t        |j                  |j                  |j                  	      \  }}}	}
|j                  |
       |j                  |	       |j                  |j!                  |              ||fS c c}w )
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   s1    	..q?	 	 	"	 	 s4y! tAw||n$=aS3t9+SQ 
I L 9#,,1I#O  !\\&AMMMM%%'
#at
 	CMM,789 "")s   
)D.Fr   c               d   t        j                  | ||d      j                  }t        | t              r| d}t        |||      \  }}nat        | t              r| d}t        ||| |      \  }}n9t        | t              r| d}t        ||| |      \  }}nt        d|  d	|       ||||fS )
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     !!
WHU
d 
 !XZu%(

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

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

d -aSXJGHHUD$&&r   c           	     d    |j                  d       d| d|  d|j                  d       dgg fS )NT	strip_ref  = z.to<z>();)cpp_typer9   s      r   r@   r@      sL     >>D>)
*!H:S
$u~~`d~GeFffjk	
 
r   c                >   |  d}t        |j                  |      \  }}}}d|  d|  d|j                  d       d| d|  d	| d
|  dt        j	                  |       d| d
|j                  d       d| d| d
|j                  d       dj                  d      |fS )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Ha4Zwxj !$  ( ,J is8* -^^H Jc%..4.018* =Jc%..4.01 2	
	 E$K r   c                   |  d}|  d}d| d|  dg}t        |j                  |      \  }}}	}
t        |j                  t              r|j                  j                  t
        j                  k(  rj|j                  r^|j                  d|j                  d       d	| d
|j                  d       d|j                   d| dj                  d             ||
fS t        |j                  t              r]|j                  d|j                  d       d	| d| d| dt        j                  |	       d| d| dj                  d             ||
fS | dz   }|
j                  d|j                  d       d| d       |j                  d| d| dt        j                  |	       d| d| d|j                  d       d	| d| dj                  d             ||
fS )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      s0    
(#G*E"I+G9CzLMD*Eaffi*X'Hi4!&&(#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   