
    Og                       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rd dl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%dAd"Z&dd	d#	 	 	 	 	 	 	 dBd$Z'dCd%Z(dDd&Z)ddd'	 	 	 	 	 	 	 dEd(Z*ddd'	 	 	 	 	 	 	 	 	 dFd)Z+dGd*Z,dHd+Z-dHd,Z.dId-Z/dJd.Z0	 dK	 	 	 	 	 	 	 dLd/Z1h d0Z2dMd1Z3dMd2Z4d3d4	 	 	 	 	 dNd5Z5d	d6	 	 	 	 	 	 	 	 	 dOd7Z6d	d6	 	 	 	 	 	 	 dPd8Z7d	d6	 	 	 	 	 	 	 dQd9Z8d:d;d<d=d=d>Z9d	d6	 	 	 	 	 	 	 dRd?Z:y3)S    )annotations)	dataclass)TYPE_CHECKING)cpp)BindingCppSignatureCppSignatureGroup)pythonify_default)
ArgumentBaseTyBaseTypeFunctionSchemaListTypeNativeFunctionOptionalTypeReturnTypeVariant)SequenceT)frozenc                      e Zd ZU ded<   y)PythonReturnstuple[Return, ...]returnsN__name__
__module____qualname____annotations__     Z/var/www/html/suriana-translation/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)r1   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 )Nr1   r2   r4   from_out	Optional[]r5   {}(,    ,)contiguous_formatper_tensor_affine)r6   r7   r8   r9   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>   )r1   r,   rB   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-   rb   returnr%   )r,   rb   rB   rb   rc   r%   )r   r   r   r   r@   ra   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)rW   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      )	NrM   r   r5   )r&   r'   r)   r*   rf   c              3  R   K   | ]  }|j                   j                           ! y wNr'   is_tensor_like.0as     r"   	<genexpr>z1PythonOutArgument.from_outputs.<locals>.<genexpr>F  s      @1qvv,,..@s   %'zUnsupported output type: rF   z!Unexpected PythonOutArgument size)lenrW   r&   r'   anyRuntimeErrorr   r   r   r2   AssertionError)rf   sizes     r"   from_outputszPythonOutArgument.from_outputs7  s    7|19$QZ__QZ__!  AX@@@"%>wi#HII$hv}}5t<!  ABBr!   N)rf   re   rc   PythonOutArgument | None)r   r   r   r   staticmethodru   r    r!   r"   rW   rW   .  s     ('C Cr!   rW   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&   re   
input_argsinput_kwargsrv   output_argsr   r   tensor_options_argsrb   r,   c                     y)NFr    r1   s    r"   rB   zPythonSignature.deprecatedp  s    r!   F)skip_outputsskip_tensor_optionsc                  g }|j                  | j                         |j                  | j                         | j                  |s|j	                  | j                         |s|j                  | j
                         t        |      S ri   )extendrz   r{   r|   appendr}   tuple)r1   r   r   results       r"   	argumentszPythonSignature.argumentst  sj     <>doo&d''('MM$**+"MM$223V}r!   c                4    t        | j                               S ri   )rp   r   r   s    r"   arguments_countzPythonSignature.arguments_count  s    4>>#$$r!   c                X    t        | j                        t        | j                        z   S ri   )rp   rz   r{   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+   *rK   rL   rP   )r   r@   r,   rp   rz   insertr&   r\   )r1   r   r-   argsrn   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   r1   def rK   rL   ) -> : ...	r   ra   r,   rp   rz   r   returns_str_pyir&   r\   r1   r   r   rn   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   )rY   SymIntrM   Tr   rS   r1   r   rK   rL   r   r   )r   ra   r,   r   rp   rz   r'   rV   r   r%   rX   r&   rU   r   r   r\   )
r1   r   r   rn   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rc   rb   )r   rb   r   rb   rc   z.tuple[PythonArgument | PythonOutArgument, ...])rc   rY   r   rb   r-   rb   rc   r%   r   rb   rc   r%   r   rb   rc   r(   )r   r   r   r   propertyrB   r   r   r   r   r   r   r    r!   r"   ry   ry   S  s     I +* -,))  43 L  ',
#
BF
	7
%= 5:$ 	; 9> U  @E "Ur!   ry   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"   rB   z$PythonSignatureDeprecated.deprecated      r!   FTr   c               8    t         j                  | ||      dz   S )Nr   z|deprecated)ry   r   )r1   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   TrA   r   r   rK   rL   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 ri   r    )r1   r   s     r"   r   z2PythonSignatureDeprecated.signature_str_pyi_vararg  r   r!   Nr   r   r   r   )	r   r   r   r   r   rB   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)!PythonSignatureNativeFunctionPairry   	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)
PythonSignatureGroupry   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
functionalrF   signature_kwargss       r"   
from_pairszPythonSignatureGroup.from_pairs  s     ;'$..((  ==11668
   44 	./ $)d3==)=,<=$$\\
 	
r!   N)r   r   rF   z(PythonSignatureNativeFunctionPair | Nonerc   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?   rb   
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&   exprrY   indexr$   argumentc                "    d| j                    dS )Nz
_r.isNone(rP   )r   r   s    r"   is_none_exprz&PythonArgParserOutputExpr.is_none_exprY  s    DJJ<q))r!   N)rc   r%   )r   r   r   r   r   r   r    r!   r"   r   r   J  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   c  s      r!   r   Fr   c               D    t        j                  | |      j                  S )Nr   )r	   from_native_functionr   )fr,   s     r"   _cpp_signaturer   }  s    11!FCMMMr!   c                F    | j                   j                  j                  d uS ri   )funcr   tensor_options)r   s    r"   has_tensor_optionsr     s    66**$66r!   simple_typer-   c               ,   t        | t              r`| 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(                  fv r| j                  j                  S t        | t*              r6t        | j,                        dk(  ryt/        | j,                  ||      }| dS t        | t0              r6|s| j2                  nd }t        | j,                        dk(  r| j2                  J d	| j2                   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 t/        | j,                  ||      }d| d
S t5        dt7        |              )Nr2   int64_tdoublezc10::string_viewTensor?r   ?rb   z::std::array<bool,>rY   zIntArrayRef[rH   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 )rV   r   r&   r   r2   rY   floatr%   rb   QSchemer   
ScalarType	GeneratorStorageLayoutDeviceDeviceIndexMemoryFormatr   Streamr   r   rX   r<   r   rt   rr   repr)tr   r-   rX   rt   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 )Nrb   )is_list_liker%   rX   rt   )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)rn   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 ri   r&   )rn   input_arg_sets    r"   <lambda>z'signature_from_schema.<locals>.<lambda>  s    aff6M r!   c                     | j                   v S ri   r  )rn   kwarg_only_sets    r"   r  z'signature_from_schema.<locals>.<lambda>
  s    qvv'? r!   c                     | j                   v S ri   r  )rn   out_arg_sets    r"   r  z'signature_from_schema.<locals>.<lambda>  s    166[3H r!   c              3  P   K   | ]  }|j                   j                            y wri   rj   rl   s     r"   ro   z(signature_from_schema.<locals>.<genexpr>  s"      $%   $&c              3  :   K   | ]  }|j                   d k(    yw)requires_gradNr  rl   s     r"   ro   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ri   rj   rm   rs     r"   ro   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 )Nr5   Fr/   )r   r   getattrr)   r   r   r'   )r&   	topt_argsrn   r   s      r"   topt_default_initz0signature_from_schema.<locals>.topt_default_init0  s\    55I 	4(Ayy AII$7##AIIqvveDDr!   dtyper5   r   layoutdevicez$torch::tensors::get_default_device()
pin_memoryFalser  )r   )r&   rz   r{   r|   r}   r   r,   )r&   r%   rc   r(   )%r   r   pre_self_positionalself_argr   r   post_self_positionalpre_tensor_options_kwarg_onlypost_tensor_options_kwarg_onlyrF   flat_positionalr&   flat_kwarg_onlyr   r]   filterrq   flat_non_outschema_order_arguments
ValueErrorr   r   rZ   r[   r$   r   r   r   r   r   r   rb   r   ry   r%   rW   ru   )r   r   r,   r   r   rn   rz   r{   rf   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 )NrM   c              3  8   K   | ]  }|j                   d u   y wri   r  r  s     r"   ro   z'structseq_fieldnames.<locals>.<genexpr>  s     @1$@   c              3  8   K   | ]  }|j                   d u   y wri   r  r  s     r"   ro   z'structseq_fieldnames.<locals>.<genexpr>  s     /!qvv~/r3  z)Unnamed field is not supported by codegen)rp   allrq   r+  r%   r&   )r   r  s     r"   structseq_fieldnamesr6    sX    
7|qC@@@	/w// HII%,-AFF---s   A#c                p   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}ni| j                  t
        j                  k(  rd}nH| 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}na| j                  t
        j&                  k(  rd}n@| j                  t
        j(                  t
        j*                  t
        j,                  fv r| j                  j                  }nt        | t.              rt        | j                        dk(  r| j0                  dnd}n| j3                         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]rY   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[rH   r   rG   )rV   r   rX   r   r&   r   rY   r   r   r   r%   r   r   rb   r   r   r   r   r   r   r2   r   r   r   rt   rk   rU   rr   r   )r   add_optionalretrX   s       r"   rU   rU     sm   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  L 66% B> 
 [G#$C[H$);(0D4&D64C(0DdV1%C /Qy9::C#%Jr!   c                r   t        | t              rt        | j                        }d| dS t        | t              rG| j
                  t        j                  k(  ry| j
                  t        j                  k(  ryt        |       S t        | t              rt        | j                        }d| dS t        |       S )NrG   rH   _devicezOptional[str]tuple[z, ...])rV   r   return_type_str_pyirX   r   r&   r   r   r   rU   r   )r   inners     r"   rE  rE    s     !\"#AFF+5'##!X66V]]"VVv~~%"(++!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  rL   rH   zclass rK   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 subclassingr0   
)	r   rE  r'   r&   r6  r\   zipr   rp   )
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.rM   rD  rL   rH   r   r5   )r6  r   r&   rE  r'   rp   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 )Nr1   zconst at::Tensor &rM   zat::Tensor &
at::Tensor)r&   r?   r   )r'   r&   r,   rp   r>   r   )cpp_argr?   r   ensure_temp_safeout_argspss       r"   dispatch_lambda_argz1dispatch_lambda_args.<locals>.dispatch_lambda_argf  s    <<\\X-
99/+H  #8}1C^"L#h)  &!
 	
r!   )rX  r   rc   r   )rV   r   r   r   r   r   rU  rF   r&   r   r]   )r[  r   r-   schemacpp_argsrn   r\  rZ  s   `      @r"   dispatch_lambda_argsr_  S  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>rb   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ri   )r   r&   r'   r  s     r"   ro   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_TYPESrr   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   r[   rr   )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ri   r  rl   s     r"   ro   z%cpp_dispatch_exprs.<locals>.<genexpr>  s     /aff/s   c                F    | dk7  xs j                   j                         S )NrF   )r   	is_out_fn)nr   s    r"   r  z$cpp_dispatch_exprs.<locals>.<lambda>  s    !u*:(8(8(: r!   r1   )r   r   rV   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?rb   bool?ztype 'z+' does not supported unpacking with defaultscalartypeWithDefault
scalartypedeviceWithDefaultr  toInt64toSymInttoBoolWithDefaulttoBooltoDouble
stringViewlayoutWithDefaultr  memoryformatr2   optionalTensorr   	generatorz	Dimname[]toDimnameListOptional)Nr5   r7   r8   r/   Optionalztensorlist_n<r   
tensorlistr   list_of_optional_tensorsr   dimnamelistrY   intlistr   
doublelistr   
symintlistr   
scalarlistz%' is not supported by PythonArgParser)r%   rr   rV   r   r&   r   r2   r   r   r   r   lowerr   r   r   rY   r   rb   r   r   r   r   rX   arg_parser_unpack_methodr   rt   )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-   rL   r0   z_r.rK   rP   )r&   r   r   r   )r*   r  r'   r)   r   r&   )	arg_indexrn   r-   has_defaultunpack_methodr)   r   s          r"   arg_parser_output_exprr  P  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-   irn   es         r"   arg_parser_output_exprsr  c  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   r1   zauto self = ;rM   zauto out = zout[rH   z
Dimname[]?zauto __rT   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ri   r    rm   rn   tensor_options_args_namess     r"   ro   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, r:   c              3  &   K   | ]  }|v  
 y wri   r    r  s     r"   ro   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(rF   rL   z,
                       z);
zE: expected "requires_grad" in tensor_options_args absent, but found [c              3  <   K   | ]  }|j                        y wri   r  )rm   rn   lambda_args_exprss     r"   ro   z(dispatch_lambda_exprs.<locals>.<genexpr>  s     C!%aff-Cs   )r   r   )r  r_  r   r   r&   r   r   rV   rW   rp   rf   r   r  r  r%   r'   r,   r}   rr   TENSOR_OPTIONS_FIELDSr>   r5  r   r   r   r   )r[  r   r-   arg_parser_outputslambda_argsr   has_toptionsrn   r&   arg_parser_exprr  out_argr  r  s               @@r"   dispatch_lambda_exprsr  x  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,   rb   rc   r   )r   r   rc   rb   )r   r   r   rb   r-   rb   rc   r%   )r   r   rc   z
int | None)rn   r   rc   r$   )r   r   r,   rb   r   rb   rc   ry   )
r   r   r   r(   r,   rb   r   rb   rc   ry   )r   r   rc   z	list[str])r   r   rc   r%   )r   ry   rc   ztuple[str, str] | None)r   ry   rc   r%   )T)r[  ry   r   r   r-   rb   rc   z"tuple[DispatchLambdaArgument, ...])r   r   rc   r%   )r   r   r  zPythonSignature | Nonerc   r   )
r   r   r)   r(   r*   r(   r-   rb   rc   r%   )r  rY   rn   r$   r-   rb   rc   r   )r[  ry   r   r   r-   rb   rc   z$dict[str, PythonArgParserOutputExpr])r[  ry   r   r   r-   rb   rc   r   );
__future__r   dataclassesr   typingr   torchgen.apir   torchgen.api.typesr   r   r	   torchgen.genr
   torchgen.modelr   r   r   r   r   r   r   r   r   r   collections.abcr   r   r$   rW   ry   r   r   r   r   r   r   r   r   r<   r   r   r   r  r6  rU   rE  rQ  r   r_  rx  r{  r  r  r  r  r  r  r  r    r!   r"   <module>r     s   " !    G G *   (h $      $Y) Y) Y)x $!C !C !CH $xU xU xUz $' ' 'f $   $'
 '
 '
^ $   $* * *0 $  2 9> N7 %*$@7@7!@737@7@7F  */E"&59 F
F "F 	F
 
F F`.&AH$.,^
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!   