
    %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dS )    )ListTuple)cpp)BindingCppSignatureGroupCType)ArgumentBaseTyBaseTypeListTypeNativeFunctionOptionalTypeTypez
	freturnc                 >    | j         j                                        S )N)funcnameunambiguous_name)r   s    U/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/torchgen/api/unboxing.pyr   r   d   s    6;'')))    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>p   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_argumentsr8   i   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"   targ_namer#   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)r9   r#   bindssymint_baser:   out_namectype_opt_out)r:   r@   r9   rA   	_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*   )r9   r:   r#   rA   r@   r6   r7   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   r@   rA   c           	      t    |                     d           d| d|  d|                     d           dgg fS )NT	strip_ref  = z.to<z>();)cpp_typer?   s      r   rE   rE      sW     >>D>))kkHkkkku~~`d~GeGekkk	
 
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
c10::optional<c10::IValue> z_opt = z.toOptional<c10::IValue>();
TrI   rK   z;
if (z*_opt.has_value()) {
    const c10::IValue rL   z_opt.value();
    
    (z);
} else {
    z();
}
        
)r+   elemrM   	connectorjoinsplit)	r:   r@   r9   rA   in_nameres_namer5   res_coder7   s	            r   rF   rF      sJ    """G"=afg"N"NHa4
	$
	 
	-5
	 
	$
	 
	"*
	 
	 
	 
	 	
	 
	 $,	
	 
	
 ^^H
	 
	 
	 
	 ..4.00
	 
	 4<
	 
	 
	 
	 ..4.00
	 
	 
	 E
 
 	 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> rL   z
.toList();rR   TrI   rK   z = as_array<r   z>(z);
            z;
for (c10::IValue z: z) {
    rP   z.push_back(z);
}
            _veczstd::vector<z> ;z
for (c10::IValue z);
}
rQ   )r+   rS   r(   r   r   r
   boolsizer.   rM   rV   r   rT   rU   r/   )r:   r@   r9   rA   rW   	elem_namer6   rX   	res_ctyperY   r7   vec_names               r   rG   rG      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)typingr   r   torchgen.apir   torchgen.api.typesr   r   r   torchgen.modelr	   r
   r   r   r   r   r   rT   strr   r8   r_   r+   rE   rF   rG    r   r   <module>rj      sL                 @ @ @ @ @ @ @ @ @ @                 v 	*N *s * * * *
# #E$w-c2J,K # # # #D 05' ' '''(,'
3tCy$s)+,' ' ' 'D

 
).

49d3i 
 
 
 
 %1:?
49d3i    .-- -%--6;-
49d3i - - - - - -r   