
    '}h$                     \   d dl mZ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edefdZdedeee   ee   f   fd	Zd
ddedededeeeee   ee   f   fdZdedededeee   ee   f   fdZdededededeee   ee   f   f
dZdededededeee   ee   f   f
dZy)    )ListTuple)cpp)BindingCppSignatureGroupCType)ArgumentBaseTyBaseTypeListTypeNativeFunctionOptionalTypeTypez
	freturnc                 J    | j                   j                  j                         S )N)funcnameunambiguous_name)r   s    T/var/www/html/test/engine/venv/lib/python3.12/site-packages/torchgen/api/unboxing.pyr   r   d   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_argumentsr5   i   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   targ_namer   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)r6   r   bindssymint_baser7   out_namectype_opt_out)r7   r=   r6   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%   )r6   r7   r   r>   r=   r3   r4   s          r   r&   r&      s     !!
WHU
d 
 !XZu%(

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

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

d -aSXJGHHUD$&&r   r=   r>   c           	      d    |j                  d       d| d|  d|j                  d       dgg fS )NT	strip_ref  = z.to<z>();)cpp_typer<   s      r   rB   rB      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
c10::optional<c10::IValue> z_opt = z.toOptional<c10::IValue>();
TrF   rH   z;
if (z*_opt.has_value()) {
    const c10::IValue rI   z_opt.value();
    
    (z);
} else {
    z();
}
        
)r&   elemrJ   	connectorjoinsplit)	r7   r=   r6   r>   in_nameres_namer2   res_coder4   s	            r   rC   rC      s     
'"G"=affg"NHa4$:WXJ 7$  ( ,J is8* -^^H Jc%..4.018* =Jc%..4.01 2	
	 E
 	 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> rI   z
.toList();rO   TrF   rH   z = as_array<r   z>(z);
            z;
for (c10::IValue z: z) {
    rM   z.push_back(z);
}
            _veczstd::vector<z> ;z
for (c10::IValue z);
}
rN   )r&   rP   r#   r   r   r
   boolsizer)   rJ   rS   r   rQ   rR   r*   )r7   r=   r6   r>   rT   	elem_namer3   rU   	res_ctyperV   r4   vec_names               r   rD   rD      s=    
(#G*E"I+G9CzLMD*Eaffi*X'Hi4!&&(#v{{(Bqvv$  (<	8J8JUY8J8Z7[[]^_^d^d]eeghogp q	
H :9 
AFFL	)$  ( ,Bwi (^^H Jk( $	 
	
6 : f$l9#5#5#5#E"Fb
RSTUBwi (^^H Jk( $$  (1XJ 7 
	
 :r   N)typingr   r   torchgen.apir   torchgen.api.typesr   r   r   torchgen.modelr	   r
   r   r   r   r   r   rQ   strr   r5   r\   r&   rB   rC   rD    r   r   <module>rg      sW     @ @  v 	*N *s *
# #E$w-c2J,K #D 05'''(,'
3tCy$s)+,'D

 
).

49d3i 
 %1:?
49d3i .-- -%--6;-
49d3i -r   