
    Χg%                        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dS )&    )annotations)cpp)BindingCppSignatureGroupCType)ArgumentBaseTyBaseTypeListTypeNativeFunctionOptionalTypeTypez
	fr   returnstrc                >    | j         j                                        S )N)funcnameunambiguous_name)r   s    Q/var/www/html/ai-engine/env/lib/python3.11/site-packages/torchgen/api/unboxing.pyr   r   e   s    6;'')))    tuple[list[Binding], list[str]]c                <  	 t          j        | d                                                                          		fdt	          t          	                    D             dgz   }g }	D ]}t          |j        t                    st          d|           |j        }t          |j        |j        |j                  \  }}}}|                    |           |                    |           |                    |                    |                     ||fS )NF)methodc           
     X    g | ]&}d |         j          d| dt                     d'S )zc10::IValue z = std::move(peek(stack, , z));)r   len).0iargss     r   
<listcomp>z%convert_arguments.<locals>.<listcomp>q   sQ        	RtAw|QQaQQ3t99QQQ  r    z7Unexpected argument type, expecting `Argument` but got mutable)r   from_native_functionmost_faithful_signature	argumentsranger   
isinstanceargumentr   	Exceptionargumenttype_ivalue_converttyper   is_writeextendappend	with_name)
r   	code_listbinding_listargr*   unboxed_name_codedeclr    s
            @r   convert_argumentsr9   j   sI    	.q???	 	 	"	"	 	
   s4yy!!   
I L 9 9#,11 	O#OO   !\&AMM%'
 '
 '
#at
 	CMM,778888""r   Fr#   tr   arg_namer$   bool'tuple[str, CType, list[str], list[str]]c                  t          j        | ||d          j        }t          | t                    r| d}t          |||          \  }}nwt          | t                    r| d}t          ||| |          \  }}nFt          | t                    r| d}t          ||| |          \  }}nt          d|  d	|           ||||fS )
NF)r:   r$   bindssymint_baser;   out_namectype_opt_out)r;   rC   r:   rD   	_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+   )r:   r;   r$   rD   rC   r7   r8   s          r   r,   r,      s0    !
WHU  
 
 !X I%%%(
 
 

dd 
A|	$	$ I(((,	
 
 

dd 
Ax	 	  	I)))(	
 
 

dd GaGGXGGHHHUD$&&r   rC   rD   r   tuple[list[str], list[str]]c           	     t    |                     d           d| d|  d|                     d           dgg fS )NT	strip_ref  = z.to<z>();)cpp_typerB   s      r   rH   rH      sW     >>D>))kkHkkkku~~`d~GeGekkk	
 
r   r   c                f   |  d}t          |j        |          \  }}}}d|  d|  d|                    d           d| d|  d	| d
|  dt                              |           d| d
|                    d           d| d| d
|                    d           d                    d          |fS )N_opt_inz
auto z_opt = z.toOptional<c10::IValue>();
TrM   rO   z;
if (z*_opt.has_value()) {
    const c10::IValue rP   z_opt.value();
    
    (z);
} else {
    z();
}
        
)r,   elemrQ   	connectorjoinsplit)	r;   rC   r:   rD   in_nameres_namer6   res_coder8   s	            r   rI   rI      sJ    """G"=afg"N"NHa4
	
	 
	
	 
	$
	 
	"*
	 
	 
	 
	 	
	 
	 $,	
	 
	
 ^^H
	 
	 
	 
	 ..4.00
	 
	 4<
	 
	 
	 
	 ..4.00
	 
	 
	 E
 
 	 r   r   c                   |  d}|  d}d| d|  dg}t          |j        |          \  }}}	}
t          |j        t                    r|j        j        t
          j        k    rn|j        rg|                    d|	                    d           d	| d
|	                    d           d|j         d| d
                    d                     n't          |j        t                    rk|                    d|	                    d           d	| d| d| dt                              |	           d| d| d
                    d                     n| dz   }|
                    d|	                    d           d| d           |                    d| d| dt                              |	           d| d| d|	                    d           d	| d| d
                    d                     ||
fS )N_list_in_elemzconst c10::List<c10::IValue> rP   z
.toList();rV   TrM   rO   z = as_array<r   z>(z);
            z;
for (c10::IValue z: z) {
    rT   z.push_back(z);
}
            _veczstd::vector<z> ;z
for (c10::IValue z);
}
rU   )r,   rW   r)   r
   r   r	   r<   sizer/   rQ   rZ   r   rX   rY   r0   )r;   rC   r:   rD   r[   	elem_namer7   r\   	res_ctyper]   r8   vec_names               r   rJ   rJ      s    ###G"""ILGLLLLLMD*Eafi*X*X'Hi4!&(## $
v{(B(Bqv(B$ "* 8A8J8JUY8J8Z8Z ^_^d ho   	
 	
 	
 	
 
AFL	)	) 
$ "*  &  ^^H  	  #	    
	
 
	
 
	
 
	
 f$T9#5#5#5#E#ETTTTTUUU & ^^H    # 
 $ 
 #+ 
 .6    
	
 
	
 
	
 :r   N)r   r   r   r   )r   r   r   r   )r:   r   r;   r   r$   r<   r   r=   )r;   r   rC   r   rD   r   r   rK   )
r;   r   rC   r   r:   r   rD   r   r   rK   )
r;   r   rC   r   r:   r   rD   r   r   rK   )
__future__r   torchgen.apir   torchgen.api.typesr   r   r   torchgen.modelr   r	   r
   r   r   r   r   rX   r   r9   r,   rH   rI   rJ    r   r   <module>rl      s<   " " " " " "       @ @ @ @ @ @ @ @ @ @                 x 	* * * *
# # # #D 05' ' ' ' ' 'D
 
 
 
   .- - - - - -r   