
    ¯wg                       d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZ  ed	       G d
 d             Z ed	       G d d             Z ed	       G d de             Z ed	       G d d             Z ed	       G d de             Z ed	       G d d             Z ed	       G d d             Z ed	       G d d             Z  ed	       G d d             Z! ed	       G d d             Z"ddd?d Z#d@d!Z$ddd"	 	 	 	 	 	 	 dAd#Z%dBd$Z&dCd%Z'ddd&	 	 	 	 	 	 	 dDd'Z(ddd&	 	 	 	 	 	 	 	 	 dEd(Z)dFd)Z*dGd*Z+dGd+Z,dHd,Z-dId-Z.	 dJ	 	 	 	 	 	 	 dKd.Z/h d/Z0dLd0Z1dLd1Z2d2d3	 	 	 	 	 dMd4Z3dd5	 	 	 	 	 	 	 	 	 dNd6Z4dd5	 	 	 	 	 	 	 dOd7Z5dd5	 	 	 	 	 	 	 dPd8Z6d9d:d;d<d<d=Z7dd5	 	 	 	 	 	 	 dQd>Z8y2)R    )annotations)	dataclass)Sequence)cpp)BindingCppSignatureCppSignatureGroup)pythonify_default)
ArgumentBaseTyBaseTypeFunctionSchemaListTypeNativeFunctionOptionalTypeReturnTypeVariantT)frozenc                      e Zd ZU ded<   y)PythonReturnstuple[Return, ...]returnsN__name__
__module____qualname____annotations__     X/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/torchgen/api/python.pyr   r      s    r    r   c                  `    e Zd ZU ded<   ded<   ded<   ded<   dd	d
ddZddd	 	 	 	 	 ddZy)PythonArgumentstrnamer   type
str | Nonedefaultdefault_initFTmethodsymintc               2   t        | j                  |      j                  dd      j                  dd      }| j                  }|dk(  r|dv r|sd}| j                  5ddddd	j                  | j                  | j                        }| d
| d| S | d
| S )Nr,   zconst  z &self)TensorNumberinputNone)nullptr::std::nulloptstd::nullopt{} =)argument_type_strr&   replacer%   r(   get)r0   r+   r,   type_strr%   r(   s         r!   argument_strzPythonArgument.argument_str   s    dii7WXr"WT2 	 yy 6>h*>>vD <<#!"( &	
 c$,,-  Zqay11Zq''r    r+   
deprecatedc          	        t        | j                        }| j                  }|dk(  r|dk(  r|s|sd}|dk(  r|dz  }|dk(  r|dk(  r
|sd|z   dz   }|xr! t        | t              xr | j
                  d	k(  }| j
                  |st        | j                  t              r| j                  j                  t        t        j                        k(  r| j
                  j                  d
      rg| j
                  j                  d      rLddj                  t        t        j                   | j
                  dd j#                  d                  z   dz   }n-d	d	d	d	dddj%                  | j
                  | j
                        }| d| d| S | d| S )Nr0   r1   r3   from_out	Optional[]r4   {}(,    ,)contiguous_formatper_tensor_affine)r5   r6   r7   r8   zc10::MemoryFormat::ContiguouszQScheme::PER_TENSOR_AFFINE:  = )argument_type_str_pyir&   r%   
isinstancePythonOutArgumentr(   r   elemr   r   int
startswithendswithjoinmapr$   stripsplitr=   )r0   r+   rA   r>   r%   treat_as_no_defaultr(   s          r!   argument_str_pyizPythonArgument.argument_str_pyi   s    )3yy 6>h(26*D6>CKD 5=X1*"X-3H  '4!23'& 	 <<#,?499h/IINNhvzz&::LL++C0LL))#. $))C		4<<"3E3K3KC3P$QRRUXX 
  &&,$* 5H2E #dllDLL1  V2hZs7)44V2hZ((r    N)r+   boolr,   ra   returnr$   )r+   ra   rA   ra   rb   r$   )r   r   r   r   r?   r`   r   r    r!   r#   r#      sJ    
I
J  .34 (6 !&%0)0)370)	0)r    r#   c                  *    e Zd ZU ded<   edd       Zy)rV   tuple[PythonArgument, ...]outputsc                >   | sy t        |       }|dk(  r*t        | d   j                  | d   j                  dd |       S |dkD  rQt	        d | D              rt        d|        t        dt        t        t        j                        |      dd |       S t        d      )	NrL   r   r4   )r%   r&   r(   r)   re   c              3  R   K   | ]  }|j                   j                           ! y wNr&   is_tensor_like.0as     r!   	<genexpr>z1PythonOutArgument.from_outputs.<locals>.<genexpr>B  s      @1qvv,,..@s   %'zUnsupported output type: rE   z!Unexpected PythonOutArgument size)lenrV   r%   r&   anyRuntimeErrorr   r   r   r1   AssertionError)re   sizes     r!   from_outputszPythonOutArgument.from_outputs3  s    7|19$QZ__QZ__!  AX@@@"%>wi#HII$hv}}5t<!  ABBr    N)re   rd   rb   PythonOutArgument | None)r   r   r   r   staticmethodrt   r   r    r!   rV   rV   *  s     ('C Cr    rV   c                      e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   edd       Zddd	 	 	 	 	 ddZddZddZdddddZ	ddddZ
ddddZy) PythonSignaturer$   r%   rd   
input_argsinput_kwargsru   output_argsr   r   tensor_options_argsra   r+   c                     y)NFr   r0   s    r!   rA   zPythonSignature.deprecatedl  s    r    F)skip_outputsskip_tensor_optionsc                  g }|j                  | j                         |j                  | j                         | j                  |s|j	                  | j                         |s|j                  | j
                         t        |      S rh   )extendry   rz   r{   appendr|   tuple)r0   r   r   results       r!   	argumentszPythonSignature.argumentsp  sj     <>doo&d''('MM$**+"MM$223V}r    c                4    t        | j                               S rh   )ro   r   r~   s    r!   arguments_countzPythonSignature.arguments_count|  s    4>>#$$r    c                X    t        | j                        t        | j                        z   S rh   )ro   ry   rz   r~   s    r!   
output_idxzPythonSignature.output_idx  s!    4??#c$*;*;&<<<r    Tr   r,   c               0   | j                  |      }|D cg c]  }|j                  | j                  |      ! }}t        | j                        }t        |      |kD  r|j                  |d       | j                   ddj                  |       dS c c}w )Nr   r*   *rJ   rK   rO   )r   r?   r+   ro   ry   insertr%   r[   )r0   r   r,   argsrm   schema_formalspositional_argcs          r!   signature_strzPythonSignature.signature_str  s    ~~<~8GK%
BCANN$++fN=%
 %
 doo.~0!!/37))Adii78::%
s   $Br   c                  | j                  |      }|D cg c]  }|j                  | j                          }}t        | j                        }t        |      |kD  r|j                  |d       t        |       }| j                  r|j                  dd       d| j                   ddj                  |       d	| d
S c c}w )Nr   r+   r   r   r0   def rJ   rK   ) -> : ...	r   r`   r+   ro   ry   r   returns_str_pyir%   r[   r0   r   r   rm   r   r   returns_strs          r!   signature_str_pyiz!PythonSignature.signature_str_pyi  s    ~~<~8<@%
78Adkk2%
 %
 doo.~0!!/37 &d+;;!!!V,dii[$))N";!<E+eTT%
s   #B?c               v   | j                  |      }|D cg c]  }|j                  | j                          }}| j                         }t	        | j
                        }d}|dkD  r=|d   j                  }t        |t              rt        |j                        dv r|dk(  rd}|sy t        t              sJ d|d   j                  z   d	z   t        |j                        z   |d<   t        |       }	| j                  r|j                  dd
       d| j                   ddj                  |       d|	 dS c c}w )Nr   r   Fr   )rX   SymIntrL   Tr   rR   r0   r   rJ   rK   r   r   )r   r`   r+   r   ro   ry   r&   rU   r   r$   rW   r%   rT   r   r   r[   )
r0   r   r   rm   r   num_argsnum_positionalargshave_vararg_versionvararg_typer   s
             r!   signature_str_pyi_varargz(PythonSignature.signature_str_pyi_vararg  s<   ~~<~8<@%
78Adkk2%
 %
 '') 1#a<q',,K;1(()->>&!+&*#" +x000$q',,%(=k>N>N(OO 	q &d+;;!!!V,dii[$))N";!<E+eTT?%
s   #D6Nrb   ra   )r   ra   r   ra   rb   z.tuple[PythonArgument | PythonOutArgument, ...])rb   rX   r   ra   r,   ra   rb   r$   r   ra   rb   r$   r   ra   rb   r'   )r   r   r   r   propertyrA   r   r   r   r   r   r   r   r    r!   rx   rx   O  s     I +* -,))  43 L  ',
#
BF
	7
%= 5:$ 	; 9> U  @E "Ur    rx   c                  `    e Zd ZU ded<   ded<   edd       Zddddd	Zdd
ddZdd
ddZy)PythonSignatureDeprecatedr   deprecated_schematuple[str, ...]deprecated_args_exprsc                     y)NTr   r~   s    r!   rA   z$PythonSignatureDeprecated.deprecated      r    FTr   c               8    t         j                  | ||      dz   S )Nr   z|deprecated)rx   r   )r0   r   r,   s      r!   r   z'PythonSignatureDeprecated.signature_str  s+    ))< *  	
r    r   c               N   | j                  |      }|D cg c]  }|j                  | j                  d      ! }}t        | j                        }t        |      |kD  r|j                  |d       t        |       }d| j                   ddj                  |       d| d	S c c}w )
Nr   Tr@   r   r   rJ   rK   r   r   r   r   s          r!   r   z+PythonSignatureDeprecated.signature_str_pyi  s    ~~<~8MQ%
HIAdkkdC%
 %
 doo.~0!!/37%d+dii[$))N";!<E+eTT%
s   $B"c                    y rh   r   )r0   r   s     r!   r   z2PythonSignatureDeprecated.signature_str_pyi_vararg  r   r    Nr   r   r   r   )	r   r   r   r   r   rA   r   r   r   r   r    r!   r   r     sG     &% +*  5:$ 
 9> 
U @E r    r   c                  "    e Zd ZU ded<   ded<   y)!PythonSignatureNativeFunctionPairrx   	signaturer   functionNr   r   r    r!   r   r     s    r    r   c                  J    e Zd ZU ded<   ded<   ded<   e	 	 	 	 	 	 d	d       Zy)
PythonSignatureGrouprx   r   r   basezNativeFunction | Noneoutplacec                :   |"t        |j                  |j                  d       S |j                  j                  j	                         }|j                  j
                  |d<   t         t        |j                        di ||j                  |j                        S )N)r   r   r   r|   r   )r   r   r   __dict__copyr|   r&   )cls
functionalrE   signature_kwargss       r!   
from_pairszPythonSignatureGroup.from_pairs  s     ;'$..((  ==11668   44 	!	
 $)d3==)=,<=$$\\
 	
r    N)r   r   rE   z(PythonSignatureNativeFunctionPair | Nonerb   r   )r   r   r   r   classmethodr   r   r    r!   r   r   
  sH    
   $#
5
 6
 
	
 
r    r   c                  ,    e Zd ZU ded<   ded<   ded<   y)DispatchLambdaArgumentr$   r%   r>   ra   
is_out_argNr   r   r    r!   r   r   :  s    
IMr    r   c                  H    e Zd ZU ded<   ded<   ded<   ded<   ed
d       Zy	)PythonArgParserOutputExprr$   r%   exprrX   indexr#   argumentc                "    d| j                    dS )Nz
_r.isNone(rO   )r   r~   s    r!   is_none_exprz&PythonArgParserOutputExpr.is_none_exprU  s    DJJ<q))r    N)rb   r$   )r   r   r   r   r   r   r   r    r!   r   r   F  s1     I I J * *r    r   c                  "    e Zd ZU ded<   ded<   y)DispatchLambdaArgumentExprszSequence[str]exprsinitsNr   r   r    r!   r   r   _  s      r    r   Fr   c               D    t        j                  | |      j                  S )Nr   )r	   from_native_functionr   )fr+   s     r!   _cpp_signaturer   y  s    11!FCMMMr    c                F    | j                   j                  j                  d uS rh   )funcr   tensor_options)r   s    r!   has_tensor_optionsr   }  s    66**$66r    simple_typer,   c               J   t        | t              ro| j                  t        j                  k(  ry| j                  t        j
                  k(  ry| j                  t        j                  k(  ry| j                  t        j                  k(  ry| j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   t        j"                  t        j$                  t        j&                  t        j(                  t        j*                  fv r| j                  j                  S t        | t,              r6t        | j.                        dk(  ryt1        | j.                  ||      }| dS t        | t2              r6|s| j4                  nd }t        | j.                        dk(  r| j4                  J d	| j4                   d
S t        | j.                        dk(  r
|d| dS dS t        | j.                        dk(  r|r
|d| dS dS |d| dS dS t        | j.                        dk(  r
|d| dS dS t        | j.                        dk(  r
|d| dS dS t        | j.                        dk(  r|ryyt        | j.                        dk(  r
|d| dS dS t1        | j.                  ||      }d| d
S t7        dt9        |              )Nr1   int64_tdoublezc10::string_viewTensor?r   ?ra   z::std::array<bool,>rX   zIntArrayRef[rG   IntArrayRefr   zSymIntArrayRef[SymIntArrayRefzTensorList[
TensorListScalarzScalarList[
ScalarListz"c10::List<::std::optional<Tensor>>z*const c10::List<::std::optional<Tensor>> &DimnamezDimnameList[DimnameListz	ArrayRef<unrecognized type )rU   r   r%   r   r1   rX   floatr$   ra   QSchemer   
ScalarType	GeneratorStorageLayoutDeviceDeviceIndexMemoryFormatr   StreamConstQuantizerPtrr   r   rW   r;   r   rs   rq   repr)tr   r,   rW   rs   s        r!   r;   r;     s    !X66V]]"VVvzz!VVv||#VVvzz!%VVKKNNMMNNMMMMNNMM$$MM
 
" 66;;	A|	$qvv;(" [Pqz	Ax	 (qvvdqvv;& 66%%%'xq11[E!-1-=\$q)P=P[H$151AodV1-GW 261AdV1-T}T[H$,0,<[a(N,N[H$,0,<[a(N,N[I%;C[I%-1-=\$q)P=P [P4&""
+DG95
66r    c                p    | j                         }|$t        |j                        dk7  r|j                  S y )Nra   )is_list_liker$   rW   rs   )r   ls     r!   argument_type_sizer     s.    	A}QVV.vvr    c                    t        | j                  | j                  | j                  Dt	        t        t        j                  | j                  | j                  d                  d       S d d       S )NFr.   r%   r&   r(   r)   )r#   r%   r&   r(   r$   r
   r   default_expr)rm   s    r!   r   r     sg    VVVV yy$ !#"2"2199affU"STU 
 
 
 
r    )r+   pyic               H    t        | j                  | j                  ||      S )N)category_overrider+   r   )signature_from_schemar   r   )r   r+   r   s      r!   r   r     s$     !	!"5"5f# r    c          
     4	    g }|j                   j                  j                         |sE j                  j                  /|j	                   j                  j                  j
                         |j                   j                  j                         |j                   j                  j                         |j                   j                  j                         |j                   j                  j                          j                  j                  D ch c]  }|j                   c} j                  j                  D ch c]  }|j                   c} j                  j                  D ch c]  }|j                   c}t        t        t
        t        fd|                  }t        t        t
        t        fd|                  }t        t        t
        t        fd|                  }t!        d  j                  j"                  D              }	t!        d  j%                         D              rt'        d      t!        d  j(                  D              }
t+        j                         }|dk(  xs |
xr |	 }|d	v xs$ |j-                  d
      xs |j/                  d      }|dk(  }g }|s|ra|s^d fd}|j	                  t1        dt3        t5        t6        j8                              d|rd n |d                   |j	                  t1        dt3        t5        t6        j:                              d|rd n |d                   |j	                  t1        dt3        t5        t6        j<                              d|rd n |d      xs d             |j	                  t1        dt3        t5        t6        j>                              dd              |j	                  t1        dt3        t5        t6        j>                              dd              tA         j(                        }tC        tE         j                  j                        ||tF        jI                  |      t        |      ||      S c c}w c c}w c c}w )Nc                     | j                   v S rh   r%   )rm   input_arg_sets    r!   <lambda>z'signature_from_schema.<locals>.<lambda>  s    aff6M r    c                     | j                   v S rh   r  )rm   kwarg_only_sets    r!   r  z'signature_from_schema.<locals>.<lambda>  s    qvv'? r    c                     | j                   v S rh   r  )rm   out_arg_sets    r!   r  z'signature_from_schema.<locals>.<lambda>	  s    166[3H r    c              3  P   K   | ]  }|j                   j                            y wrh   ri   rk   s     r!   rn   z(signature_from_schema.<locals>.<genexpr>  s"      $%   $&c              3  :   K   | ]  }|j                   d k(    yw)requires_gradNr  rk   s     r!   rn   z(signature_from_schema.<locals>.<genexpr>  s     
L166_$
Ls   zTargument named requires_grad is reserved, should not explicitly add it in the schemac              3  P   K   | ]  }|j                   j                            y wrh   ri   rl   rs     r!   rn   z(signature_from_schema.<locals>.<genexpr>  s     JAFF113Jr  factory)newlikenew__likedummyc                    j                   j                  }|y t        ||       }|j                  |j                  dk(  ry t	        j
                  |j                  |j                  d      S )Nr4   Fr.   )r   r   getattrr(   r   r   r&   )r%   	topt_argsrm   r   s      r!   topt_default_initz0signature_from_schema.<locals>.topt_default_init-  s\    55I 	4(Ayy AII$7##AIIqvveDDr    dtyper4   r   layoutdevicez$torch::tensors::get_default_device()
pin_memoryFalser  )r   )r%   ry   rz   r{   r|   r   r+   )r%   r$   rb   r'   )%r   r   pre_self_positionalself_argr   r   post_self_positionalpre_tensor_options_kwarg_onlypost_tensor_options_kwarg_onlyrE   flat_positionalr%   flat_kwarg_onlyr   r\   filterrp   flat_non_outschema_order_arguments
ValueErrorr   r   rY   rZ   r#   r   r   r   r   r   r   ra   r   rx   r$   rV   rt   )r   r   r+   r   r   rm   ry   rz   re   has_tensor_input_arghas_tensor_returnr%   is_factory_functionis_like_or_new_functionis_dummy_functionr|   r  r   r  r  r
  s   `                 @@@r!   r  r    s    DKK223dnn--9DNN++445KK334KK<<= 	KK==>KK""#%)^^%C%CDQVVDM&*nn&D&DEaffEN#'>>#5#56a1666Ks8V,Mt%TUVJHf?FGL C&)H$"OPQG  )-)D)D  
Ld.I.I.K
LLb
 	
 JT\\JJD+y8 6"66  	_, 	"??6"	"==! 
 *W4026@Q	E 	""!(6+<+<"=>3D9J79S		
 	""!(6=="9:3D9J89T		
 	""!(6=="9: /  *(3 BA	
 	""!!(6;;"78!		
 	""$!(6;;"78!		
 DLL1G !%227;!"56 W EE6s   RR;Rc                    t        |       dk  st        d | D              rg S t        d | D              rt        d      | D cg c]  }t	        |j
                         c}S c c}w )NrL   c              3  8   K   | ]  }|j                   d u   y wrh   r  r  s     r!   rn   z'structseq_fieldnames.<locals>.<genexpr>  s     @1$@   c              3  8   K   | ]  }|j                   d u   y wrh   r  r  s     r!   rn   z'structseq_fieldnames.<locals>.<genexpr>  s     /!qvv~/r3  z)Unnamed field is not supported by codegen)ro   allrp   r+  r$   r%   )r   r  s     r!   structseq_fieldnamesr6  ~  sX    
7|qC@@@	/w// HII%,-AFF---s   A#c                   d}t        | t              r| j                  } d}t        | t              r| j                  t
        j                  t
        j                  fv rd}| j                  t
        j                  k(  rd}n| j                  t
        j                  k(  rd}n| j                  t
        j                  k(  rd}n| j                  t
        j                  k(  rd}nc| j                  t
        j                  k(  rd}nB| j                  t
        j                  k(  rd	}n!| j                  t
        j                  k(  rd
}n | j                  t
        j                  k(  rd}n| j                  t
        j                   k(  rd}n| j                  t
        j"                  k(  rd}n| j                  t
        j$                  k(  rd}n|| j                  t
        j&                  k(  rd}n[| j                  t
        j(                  t
        j*                  t
        j,                  fv r| j                  j                  }nt        | t.              rt        | j                        dk(  r| j0                  dnd}n| j3                         r-t        | j                  t              rd}| j0                  dnd}nt        | j                        dk(  rd}nvt        | j                        dk(  r+| j0                  t5        | j                        }d| d| d}n3t5        | j                        }d| d}nt7        dt9        |              |rdz   dz   }S )NFT_intzUnion[_int, SymInt]_floatr$   zUnion[Number, _complex]_dtype_bool_qscheme_layoutzOptional[DeviceLikeType]memory_formatzUnion[str, ellipsis, None]zUnion[Storage, UntypedStorage]rX   zUnion[_int, _size]_sizez/Union[Tensor, Tuple[Tensor, ...], List[Tensor]]z'Union[Tuple[Tensor, ...], List[Tensor]]r   zSequence[_float]r   zUnion[z, Sequence[z]]z	Sequence[rG   r   rF   )rU   r   rW   r   r%   r   rX   r   r   r   r$   r   r   ra   r   r   r   r   r   r   r1   r   r   r   rs   rj   rT   rq   r   )r   add_optionalretrW   s       r!   rT   rT     s{   L!\"FF!X66fjj&"4"455C66V]]"'CVVv||#CVVvzz!CVVv}}$+CVVv(((CVVv{{"CVVv~~%CVVv}}$CVVv}}$,CVVv***!CVVv~~%.CVVv~~%2CVVv'7'7GG&&++C	Ax	 qvv;%*+&&*<&'C !&&,/# 66% B> 
 [G#$C[H$);(0D4&D64C(0DdV1%C /Qy9::C#%Jr    c                v   t        | t              rt        | j                        }d| dS t        | t              rI| j
                  t        j                  k(  ry| j
                  t        j                  k(  rd}nt        |       S t        | t              rt        | j                        }d| dS t        |       S )NrF   rG   _devicezOptional[str]Tuple[z, ...])rU   r   return_type_str_pyirW   r   r%   r   r   r   rT   r   )r   innerrA  s      r!   rE  rE    s     !\"#AFF+5'##!X66V]]"VVv~~%!C(++!X#AFF+wf%% ##r    c           	        | j                   j                   D cg c]  }t        |j                         }}| j                  }t	        | j                   j                         }|rddj                  |       d}d| d| dg}t        ||      D ]  \  }}|j                  dd| d	| d
g       ! |j                  d| ddt        |       dt        |       dddg       dj                  |      }	||	fS y c c}w )NrD  rK   rG   zclass rJ   z):z    @propertyz    def z
(self) -> r   z    def __new__(cls, sequence: z): ...z    n_fields: _int = z    n_sequeunce_fields: _int = z    n_unnamed_fields: _int = 0zG    def __init_subclass__(cls) -> NoReturn: ...  # prohibit subclassingr/   
)	r   rE  r&   r%   r6  r[   zipr   ro   )
r   r  python_returnsstructseq_namefield_namesseq_typestructseq_def_linesr%   typstructseq_defs
             r!   returns_structseq_pyirQ    s8   ;D;L;L;T;TUa)!&&1UNU^^N&y'8'8'@'@AK DIIn56a8^$AhZr2
 [.9 	ID#&&#tfJse59	 	""1(6B'K(8'9:1#k2B1CD0Y		
 		"56 },,W Vs   C:c                J   t        | j                  j                        }|rd| j                   S | j                  j                  D cg c]  }t        |j                         }}t        |      dkD  rddj                  |      z   dz   S t        |      dk(  r|d   S yc c}w )Nztorch.return_types.rL   rD  rK   rG   r   r4   )r6  r   r%   rE  r&   ro   r[   )r   rL  r  rJ  s       r!   r   r     s    &y'8'8'@'@AK$Y^^$455;D;L;L;T;TUa)!&&1UNU
>Q$))N33c99
>aa   Vs   	B c                R    t         t              r j                  }n|j                  }t	        j
                  |j
                  d|d|j                        }|j
                  j                  D ch c]  }|j                   c}d fd}t        t        ||            S c c}w )NF)r   faithfulr,   r+   cpp_no_default_argsc                    | j                   }| j                  v }j                  r| j                  dk(  rd}n)t              dk  xs | }|rddij	                  ||      }t        | j                  ||      S )Nr0   zconst at::Tensor &rL   zat::Tensor &
at::Tensor)r%   r>   r   )r&   r%   r+   ro   r=   r   )cpp_argr>   r   ensure_temp_safeout_argspss       r!   dispatch_lambda_argz1dispatch_lambda_args.<locals>.dispatch_lambda_argd  s    <<\\X-
99/+H  #8}1C^"L#h)  &!
 	
r    )rX  r   rb   r   )rU   r   r   r   r   r   rU  rE   r%   r   r\   )r[  r   r,   schemacpp_argsrm   r\  rZ  s   `      @r!   dispatch_lambda_argsr_  Q  s     "/0%% }}""11H +1*:*:*>*>?Q!&&?H
, ((3443 @s   2B$>   void*
at::Scalar
at::Streamat::QSchemeat::ScalarTypeat::IntArrayRef::std::vector<at::Tensor>::std::tuple<double,int64_t>#::std::tuple<at::Tensor,at::Tensor>.::std::tuple<at::Tensor,at::Tensor,at::Tensor>2::std::tuple<at::Tensor,::std::vector<at::Tensor>>2::std::tuple<at::Tensor,at::Tensor,double,int64_t>6::std::tuple<at::Tensor,at::Tensor,at::Tensor,int64_t>9::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>=::std::tuple<at::Tensor,at::Tensor,double,at::Tensor,int64_t>A::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,int64_t>D::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>O::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>r::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,c10::SymInt,c10::SymInt,at::Tensor,at::Tensor,at::Tensor>ra   voidr   r   rW  c                    t        d | j                  j                  D              }t        j                  |d      j                         }|t        vr$t        | j                  j                   d|       |S )Nc              3  ^   K   | ]%  }t        |j                  |j                  d        ' y wrh   )r   r%   r&   r  s     r!   rn   z-dispatch_lambda_return_str.<locals>.<genexpr>  s&      ')*qvvqvvt$'s   +-Tr.   z returns unsupported type )	r   r   r   r   returns_typecpp_typeSUPPORTED_RETURN_TYPESrq   r%   )r   returns_without_annotation
return_strs      r!   dispatch_lambda_return_strr{    sp    ( "' './ffnn' " !!"<TJSSUJ//affkk]*DZLQRRr    c                   | j                   j                         }t        j                  | j                   |      }t        j
                  | j                  v rd| S t        j                  | j                  v rPt        |       s9| j                   j                  j                  j                  j                  d      rd}nd}| d| S t        d| j                          )N)symint_overloadzself.r  torchatz::z1could not dispatch, neither function nor method: )r   
has_symintr   r%   r   r+   variantsr   r   r   rZ   rq   )r   r,   r%   	namespaces       r!   cpp_dispatch_targetr    s    VV F88AFFF3D~~#tf~1::%a AFFKK$4$4$9$9$B$B7$KIIBtf%%
J166(S
TTr    N)python_signaturec               B    t         d      j                         }d}t        |t              st	        d |D              }n"t	        t         fd|j                              }t        j                   j                  v rt	        t        dj                  |            }|S )NFr   r   c              3  4   K   | ]  }|j                     y wrh   r  rk   s     r!   rn   z%cpp_dispatch_exprs.<locals>.<genexpr>  s     /aff/s   c                F    | dk7  xs j                   j                         S )NrE   )r   	is_out_fn)nr   s    r!   r  z$cpp_dispatch_exprs.<locals>.<lambda>  s    !u*:(8(8(: r    r0   )r   r   rU   r   r   r(  r   r   r+   r  __ne__)r   r  r^  r   s   `   r!   cpp_dispatch_exprsr    s    
 #15"A"K"K"MHE&(AB/h// : 66
 ~~#fV]]E23Lr    r.   c                  |d u}|rt        |       dvrt        d|  d      t        | t              r| j                  t
        j                  t
        j                  t
        j                  t
        j                  t
        j                  fv r$| j                  j                  j                         S | j                  t
        j                  k(  r|rdS dS | j                  t
        j                  k(  r|rdS dS | j                  t
        j                  k(  ry| j                  t
        j                  k(  ry| j                  t
        j                   k(  r|rd	S dS | j                  t
        j"                  k(  r|rd
S dS | j                  t
        j$                  k(  ry| j                  t
        j                   k(  ry| j                  t
        j&                  k(  r|rdS dS | j                  t
        j(                  k(  rxyt        | t*              rt        | j,                        dk(  ryt        | j,                        dk(  ryt        | j,                        dk(  ry|s |dv rt/        | j,                  d d |      dz   S t/        | j,                  |||      S t        | t0              rt        | j,                        dk(  r| j2                  d| j2                   dS dS t        | j,                        dk(  ryt        | j,                        dk(  ry t        | j,                        d!k(  ry"t        | j,                        d#k(  ry$t        | j,                        d%k(  r|rd&S d"S t        | j,                        d'k(  ry(t        d|  d)      )*N)ScalarType?r   r   Device?r   Layout?ra   bool?ztype 'z+' does not supported unpacking with defaultscalartypeWithDefault
scalartypedeviceWithDefaultr  toInt64toSymInttoBoolWithDefaulttoBooltoDouble
stringViewlayoutWithDefaultr  memoryformatr1   optionalTensorr   	generatorz	Dimname[]toDimnameListOptional)Nr4   r6   r7   r.   Optionalztensorlist_n<r   
tensorlistr   list_of_optional_tensorsr   dimnamelistrX   intlistr   
doublelistr   
symintlistr   
scalarlistz%' is not supported by PythonArgParser)r$   rq   rU   r   r%   r   r1   r   r   r   r   lowerr   r   r   rX   r   ra   r   r   r   r   rW   arg_parser_unpack_methodr   rs   )r   r(   r)   r,   has_default_inits        r!   r  r    s    $4/CF 	+ 	 VA3&QRSS!X66MMMMNNMMNN
 
 66;;$$&&VVv(((.>*PLPVVv}}$*:&HHVVv)))VVvzz!VVv}}$!':6Y6VVv{{"*:&HHVVv||#VVvzz!VVv}}$*:&HHVVv***!	A|	$qvv;("#[K'[K'*!g 2
 '
 )tFKjX
 ,f  
Ax	 qvv;("010B]166(!,TT[I%-[I% [E![G#[H$#)<8y8[H$
s"GH
IIr    c                   |j                   d u}t        |j                  |j                  |j                   |      }|rd|j                    nd}d| d|  | d}t	        |j
                  || |      S )N)r   r(   r)   r,   rK   r/   z_r.rJ   rO   )r%   r   r   r   )r)   r  r&   r(   r   r%   )	arg_indexrm   r,   has_defaultunpack_methodr(   r   s          r!   arg_parser_output_exprr  N  s}     ..,K,
&&!))!..M (31>>"#GqG9A6D$VV	 r    c          
         t        | j                               D ci c]   \  }}t        |||      }|j                  |" c}}}S c c}}}w )Nr.   )	enumerater   r  r%   )r[  r   r,   irm   es         r!   arg_parser_output_exprsr  a  sP    
 blln- Aq(Af=A 	
	  s   %Ar  r  r  r  )r  r  r  r  r  c                  t        | ||      }t        | ||      }g }i t        |      }| j                  d      D ]  }|j                  }||j                     j
                  }	|r!|dk(  r|j                  d|	 dg       ||<   Lt        |t              ryt        |j                        dkD  ra|j                  j                         rG|j                  d|	 dg       t        |j                        D ]  \  }
}d	|
 d
|j                  <    t        |j                        dk(  r+|j                  d| d|	 dd| d| d| dg       ||<   |	|<    | j                   rdd<   | j"                  D cg c]  }|j                   c}|r|j                  j                         rt%        |j                   d      | j"                  D ]  }|j                  t&        vr%t%        |j                   d|j                   d      t        |j                        t&        j)                  |j                        k7  spt%        |j                   dt        |j                         d|j                   d       t+        fdt&        D              st%        |j                   d       |j-                  d|d   j
                   d|d   j
                   d|d   j
                   d |d!   j
                   d"|d#   j
                   d$       d%d%<   |srdv r|j                  j                         s't%        |j                   d&|  d'| j                         t+        fd(d)D              st%        |j                   d*      |j-                  d+|d,   j
                   d-|d   j
                   d.|d   j.                   d-|d   j
                   d.|d   j
                   d-|d   j.                   d/       d!vrt%        |j                   d0 d
      t1        t3        fd1|D              |2      S c c}w )3Nr.   T)r   r0   zauto self = ;rL   zauto out = zout[rG   z
Dimname[]?zauto __rS   z::std::optional<DimnameList> z = __z& ? ::std::make_optional(DimnameList(__z.value())) : ::std::nullopt;z : tensor options with output argz%: unrecognized tensor options field 'z' in python binding argumentsz: unrecognized type 'z' for tensor options field ''c              3  &   K   | ]  }|v  
 y wrh   r   rl   rm   tensor_options_args_namess     r!   rn   z(dispatch_lambda_exprs.<locals>.<genexpr>  s     Qa111Q   z": incomplete tensor options args: z0const auto options = TensorOptions()
    .dtype(r  z)
    .device(r  z)
    .layout(r  z)
    .requires_grad(r  z)
    .pinned_memory(r  z3);
torch::utils::maybe_initialize_device(options);
optionsz3: dtype in tensor_options_args without output arg, r9   c              3  &   K   | ]  }|v  
 y wrh   r   r  s     r!   rn   z(dispatch_lambda_exprs.<locals>.<genexpr>  s     T!q55Tr  )r  r  z,: incomplete tensor options for output checkzcheck_out_type_matches(rE   rK   z,
                       z);
zE: expected "requires_grad" in tensor_options_args absent, but found [c              3  <   K   | ]  }|j                        y wrh   r  )rl   rm   lambda_args_exprss     r!   rn   z(dispatch_lambda_exprs.<locals>.<genexpr>  s     C!%aff-Cs   )r   r   )r  r_  r   r   r%   r   r   rU   rV   ro   re   r   r  r  r$   r&   r+   r|   rq   TENSOR_OPTIONS_FIELDSr=   r5  r   r   r   r   )r[  r   r,   arg_parser_outputslambda_argsr   has_toptionsrm   r%   arg_parser_exprr  out_argr  r  s               @@r!   dispatch_lambda_exprsr  v  s    1QvF&r1V<KE(*%a(L \\d\3 '6vv,QVV499DFNLL"?"315
 '+d#q+,AII"  "LL!/!2!4
 (		2 >
7481+!',,/>[L( LLdV3&7q93D6tfDjkojp  qM  N '+d# '6d#O'6T 
yy$*&! 241G1G HA H66!&&)IJKK'' 	Avv22"vvhCAFF8Khi  166{377??"vvh3CK=@\]^]c]c\ddef 	 Q;PQQ66(<=V<WX  	w',,- .)../ 0)../ 0&7<<= >&|499: ;
	
 (1)$ 5//66##%"vvhQRTQUUVWYWcWcVde  T?STT"vvhJK  LL*51667r:LW:U:Z:Z9[ \*73@@ADVW_D`DeDeCf g*8499:"=OPX=Y=f=f<g h ";;66(_`y_zz{|  'C{CC u !Is   ?Q)r   r   r+   ra   rb   r   )r   r   rb   ra   )r   r   r   ra   r,   ra   rb   r$   )r   r   rb   z
int | None)rm   r   rb   r#   )r   r   r+   ra   r   ra   rb   rx   )
r   r   r   r'   r+   ra   r   ra   rb   rx   )r   r   rb   z	list[str])r   r   rb   r$   )r   rx   rb   ztuple[str, str] | None)r   rx   rb   r$   )T)r[  rx   r   r   r,   ra   rb   z"tuple[DispatchLambdaArgument, ...])r   r   rb   r$   )r   r   r  zPythonSignature | Nonerb   r   )
r   r   r(   r'   r)   r'   r,   ra   rb   r$   )r  rX   rm   r#   r,   ra   rb   r   )r[  rx   r   r   r,   ra   rb   z$dict[str, PythonArgParserOutputExpr])r[  rx   r   r   r,   ra   rb   r   )9
__future__r   dataclassesr   typingr   torchgen.apir   torchgen.api.typesr   r   r	   torchgen.genr
   torchgen.modelr   r   r   r   r   r   r   r   r   r   r   r#   rV   rx   r   r   r   r   r   r   r   r   r;   r   r   r   r  r6  rT   rE  rQ  r   r_  rx  r{  r  r  r  r  r  r  r  r   r    r!   <module>r     s   " !   G G *  ~ $      $Y) Y) Y)x $!C !C !CH $xU xU xUz $' ' 'f $   $'
 '
 '
^ $   $* * *0 $  2 9> N7 %*$A7A7!A737A7A7H  */E"&59 F
F "F 	F
 
F F`.&BJ$.,^
l <@)5)5*)548)5')5^ ::U" 04 - 	R OSYJYJ YJ0:YJGKYJYJ~ :>%26( ?C*7;)   ?Cyy*y7;y yr    