
    JThEt                       S SK Jr  S SKrS SKJr  S SKJr  S SKJs  J	r	  S SK
Jr  S SKJrJrJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#  S S	K$J%r%  \(       a  S S
K&J'r'  SS/r(SS/r)/ SQr*S/r+    SS jr,SS jr-SS jr.SS jr/    S S jr0SS jr1      S!S jr2      S"S jr3S#S jr4S$S jr5\S%S j5       r6\S%S j5       r7g)&    )annotationsN)defaultdict)TYPE_CHECKING)	translate)BindingDispatcherSignatureExpr)with_native_function)
AnnotationArgumentBackendIndexBackendMetadataBaseOperatorNameBaseTyBaseTypeDEFAULT_KERNEL_NAMESPACEDeviceCheckTypeDispatchKeyFunctionSchemaNativeFunctionNativeFunctionsGroupOperatorNameReturn
SchemaKindVariant)	concatMap)Sequencez'adaptive_avg_pool3d_backward.grad_inputz _slow_conv2d_backward.grad_input_cummax_helper_cummin_helper)$_assert_asyncz_assert_async.msg_assert_tensor_metadata_cslt_sparse_mm_search_assert_scalar_dimI_dimV_has_same_storage_numel_linalg_check_errors_local_scalar_dense%_nested_tensor_from_mask_left_aligned_nnz_use_cudnn_ctc_lossz_use_cudnn_ctc_loss.Tensor#_validate_compressed_sparse_indicesallclose	dense_dimequalis_coalesced	is_pinnedis_same_size	is_set_toq_per_channel_axisq_scaleq_zero_pointqschemerecord_stream
sparse_dimsym_constrain_rangesym_constrain_range_for_size_nested_tensor_storage_offsets'_chunk_grad_outputs_efficient_attention_fused_sdp_choice_print_sink_tokens_nested_get_ragged_idx
polygamma_c                    [        [        5      nU  H[  nXR                  R                  5          nUR                  R	                  5       U;  d   eX#UR                  R	                  5       '   M]     U$ N)r   dictfunc	signaturekind)native_functionspre_grouped_native_functionsfds       [/var/www/auris/envauris/lib/python3.13/site-packages/torchgen/native_function_generation.pypre_group_native_functionsrN   n   sd    
 	D ! ()9)9);<vv{{}A%%%!&&++-  ('    c                    U (       d  S$ U  S3$ )Nout_out )overload_names    rM   &get_expected_out_variant_overload_namerU   |   s    %5Am_D+AArO   c                2   U R                  5       [        R                  :X  d   eU R                  R                  c   e[        U R                  R                  5       R                  [        U R                  R                  5      5      U R                  R                  5       R                  [        SU R                  R                  R                  R                  S U R                  R                  R                  R                   S9/5      U R"                  S9$ )NrQ   nametypedefault
annotationrX   	argumentsreturns)rH   r   inplacer]   self_argr   rX   remove_inplacewith_overloadrU   rT   remove_self_annotationwith_out_argsr   argumentrY   r[   r^   )rF   s    rM   self_to_out_signaturerf      s    99;*,,,,,>>""...
 YY%%'5524993J3JK
 ..779GG0099>> #~~66??JJ		
  rO   c                F   U R                  5       [        R                  :X  d   e[        U 5      u  p[	        U R
                  R                  [        U R
                  R                  5      5      U R                  R                  5       R                  U5      [        U5      S9$ Nr\   )rH   r   
functionalgenerate_out_args_from_schemar   rX   rb   rU   rT   r]   rG   rd   tuplerF   new_returnsnew_out_argss      rM   functional_to_out_signaturero      s    99;*///// =d CK
 YY$$24993J3JK
 ..**,::
 k" rO   c           
        [        S U R                   5       5      (       a   eU R                   Vs/ s H%  oR                  R                  5       (       d  M#  UPM'     nn[	        U5      S:  d   e[        S U R                  R                  5      n[        R                   Vs/ s H  oDU;  d  M
  UPM     nn[        S U R                   5       5      n/ n/ n[        U R                  5       H  u  pUR                  R                  5       (       a  [        [	        U R                  5      S:X  a  SOSU	 3UR                  S [        R                  " XY    S35      S9n
UR                  U
5        U(       a2  [!        S U
R                  U
R"                  S	9nUR                  U5        M  M  UR                  U5        M     X4$ s  snf s  snf )
Nc              3  v   #    U  H/  oR                   S L=(       a    UR                   R                  v   M1     g 7frD   )r[   is_write.0rs     rM   	<genexpr>0generate_out_args_from_schema.<locals>.<genexpr>   s,      DPqD :Q\\%:%::Ls   79r   c                L    U R                   c  / $ U R                   R                  $ rD   )r[   	alias_set)as    rM   <lambda>/generate_out_args_from_schema.<locals>.<lambda>   s    ,"H!,,2H2HHrO   c              3  l   #    U  H*  oR                   [        [        R                  5      :H  v   M,     g 7frD   )rY   r   r   Tensorrs   s     rM   rv   rw      s      W,Qvv&--)@@,s   24   rQ   !rW   )rX   rY   r[   )anyr^   rY   is_tensor_likelenr   r]   flat_allstringascii_lowercaseall	enumerater   r   parseappendr   r[   )rF   ru   tensorlike_retsused_annotationsxvalid_annotationsall_rets_are_tensorsrn   rm   inew_outnew_rets               rM   rj   rj      s   
  DHLL     #',,J,Q&&2G2G2Iq,OJ!### H %+$:$:X$:qGW>W$:XW$,,WW#%L !#K$,,'66  ""!$,,/14UCs)VV%++/@/C.DA,FG	G (# !GLLW=O=O ""7+ $ q!# ($ $$E K Ys   "GG$	G1Gc                F   U R                  5       [        R                  :X  d   e[        U 5      u  p[	        U R
                  R                  5       R                  [        U R
                  R                  5      5      U R                  R                  U5      [        U5      S9$ rh   )rH   r   mutablerj   r   rX   ra   rb   rU   rT   r]   rd   rk   rl   s      rM   mutable_to_out_signaturer      s    99;*,,,,, !>d CKYY%%'5524993J3JK
 ....|<k" rO   c                   SSK Jn  U[        R                  :X  Ga   U R                  R                  5       [        R                  :w  d   eU R                  R                  SS9R                  [        [        U R                  R                  R                  R                  SU R                  R                  R                  R                  U R                  R                  5       [        R                  :H  S9U R                  R                  R                  S95      nOU[        R                  :X  a  U R                  R                  5       [        R                   :X  a  [#        U R                  5      nOU R                  R                  5       [        R                  :X  a  [%        U R                  5      nOXU R                  R                  5       [        R                  :X  a  ['        U R                  5      nO[)        S5      e[)        S	5      eUR                  5       [        R                  :X  a  UR                  R+                  5       OUR                  U5      nU R                  R-                  5       (       a  US
-  n[.        R0                  UR                  [3        US[4        S900nS1[7        U R8                  1 Sk-  5      -  n[;        S&0 SU_SU R<                  _S[>        R@                  1_SS_SS _SS _SS _S/ _S0 _SS_SS_SS _SS _SS_S[B        RD                  _SU RF                  _S[7        5       _SU RH                  _S S_S!S_S"S_S#S_S$U_S%U RJ                  _6U4$ )'Nr   )cppT)keep_return_namesF)baser_   dunder_methodfunctional_overload)rX   rT   z^We only bother generating out= functions from either inplace or mutable or functional variantszDWe currently only generate either functional or out= NativeFunctions_symint)kernel
structuredcpp_namespace	generated>   	view_copypt2_compliant_tagnondeterministic_seededrF   !use_const_ref_for_mutable_tensorsvariantsr   structured_delegatestructured_inheritsprecomputedautogenufunc_inner_loopmanual_kernel_registrationmanual_cpp_bindingpython_modulecategory_overridedevice_guarddevice_checkloccpp_no_default_argsis_abstract&has_composite_implicit_autograd_kernel4has_composite_implicit_autograd_nested_tensor_kernel&has_composite_explicit_autograd_kernel5has_composite_explicit_autograd_non_functional_kerneltags	namespacerS   )&torchgen.apir   r   ri   rF   rH   rG   	with_namer   r   rX   r   r   r   rT   rQ   r_   rf   r   ro   AssertionErrorunambiguous_name
has_symintr   CompositeExplicitAutogradr   r   setr   r   r   r   functionr   NoCheckr   r   r   )rK   kr   rF   kernel_namebackend_metadatar   s          rM   generate_functionr     s7    !J!!!vv{{}
 5 5555 vv$7AA%))..!"#&&++"2"2"@"@()9K9K(K  ffkk77	
 
jnn	 66;;=J...(0DVV[[]j000+AFF3DVV[[]j333.qvv6D p  R
 	
 99;*..( 			""$XXd^ 
 	vvy --II" 60
 =3	NN D
 	 	
	
./.Q.Q	
 &&'		

 	
 !%	
 !%	
 	
 	
  	
 (-	
  %	
 	
 #	
 	
  )00!	
" #	
$ !$%	
& '	
( 49)	
* BG+	
, 48-	
. CH/	
4 5	
6 kk7	
: 	= rO   c                   [        U 5      nUR                  5        GH  n[        R                  U;   n[        R                  U;   n[        R
                  U;   n[        R                  U;   n[        S UR                  5        5       5      nU(       d  U(       d  U(       d	  U(       d  M  [        S UR                  5        5       5      n	[        S UR                  5        5       5      n
[        S UR                  5        5       5      nU	(       d  U
(       d  U(       a
  U(       d  GM  U(       a  [        UR                  5       5      S:X  am  [        U[        R                     R                  R                  5      [        ;  a2  [        S[        U[        R                     R                  5       35      eGM  U(       a;  [        U[        R                     R                  R                  5      [        ;   a  GM  U(       a  U[        R
                     OFU(       a  U[        R                     O,U(       a  U[        R                     OU[        R                     nUR                  R!                  5       [        R                  :H  =(       d&    [        S UR                  R"                   5       5      n[        S UR$                   5       5      nU(       + =(       a    U=(       a    UnU(       dw  U(       dp  [        UR                  R                  5      [&        ;  aI  [        UR                  R                  5      [(        ;  a"  [        S	[        UR                  5       S
35      eU(       aX  [+        U[        R                  5      u  nnUU[        R                  '   [,        R.                  " UU5        U R1                  U5        U(       a  GM  U(       d
  U(       d  GM  [+        U[        R                  5      u  nnUU[        R                  '   [,        R.                  " UU5        U R1                  U5        GM!     g )Nc              3  @   #    U  H  nS UR                   ;   v   M     g7f)coreN)r   )rt   variants     rM   rv   1add_generated_native_functions.<locals>.<genexpr>  s     GJf,Js   c              3  8   #    U  H  oR                   v   M     g 7frD   )r   rt   rK   s     rM   rv   r     s     F:a11:   c              3     #    U  HC  oR                   =(       a,    [        UR                  R                  R                  5      S :g  v   ME     g7f)set_N)
is_view_opstrrF   rX   r   s     rM   rv   r     s5      JTQ@QVV[[%5%5!6&!@@*s   AAc              3  8   #    U  H  oR                   v   M     g 7frD   )r   r   s     rM   rv   r     s      )BLQ88*r   r   zEFound an out= operator that we could not find any other variants of: c              3  T   #    U  H  oR                   R                  5       v   M      g 7frD   )rY   r   rs   s     rM   rv   r     s#      M1EA%%''1Es   &(c              3  >   #    U  H  nS [        U5      ;   v   M     g7f)rQ   N)r   )rt   op_names     rM   rv   r     s     QgES\1s   zBFound an operator that we could not generate an out= variant for: z.
This type of operators don't have tensor-like return, making it difficult to generate a proper out= variant. If
out= variant is not needed, please add the function name into FUNCTIONAL_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT list.)rN   valuesr   ri   r_   r   rQ   r   r   r   r   rF   rX   &OUT_OPS_THAT_DONT_GET_GROUPED_PROPERLYr   *INPLACE_OPS_THAT_DONT_GET_GROUPED_PROPERLYrH   r^   r   *MUTABLE_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT-FUNCTIONAL_OPS_THAT_CANNOT_GET_AN_OUT_VARIANTr   r   
grow_indexr   )rsindicesrJ   rL   has_functionalhas_inplacehas_mutablehas_outis_core
are_manualhas_view_opsare_composite_implicitbase_fnbase_fn_valid	needs_outgets_out_variantfnmetadatas                     rM   add_generated_native_functionsr     sH    $>b#A )002#..!3 ((A- ((A-..A%GAHHJGG +NNF188:FFJ  JK((* L &) )BC((*) &" \-CG3qxxz?a/ *..)..334AB )_`cdefpftftdudzdz`{_|}  
 *,,-22778=>   *$$%  z))*  z~~&z,,- " $LL--/:3E3EE  M181E1EM JM QQQI#*{J}J=))*EFGLL--.HI )^_bcjcoco_p^q rr u   0*..IH$&*..!'':		"
 ">w2B2B0*:O:OPH+-*''('':		"c 3rO   c                    [        U 5      [        U5      :X  d   e[        U 5      S:X  a  g[        U 5      S:X  a	  SUS    S3$ S[        R                  " U 5      R                  5        SSR	                  U5       S3$ )	Nr    r   zreturn ;(, );)r   
dispatcherreturns_typecpp_typejoin)retsnamess     rM   
return_strr     sy    t9E
"""
4yA~	Taq
!$$006??AB!DIIeDTCUUWXXrO   c                    U R                  5       n/ n[        U R                  5      S:  n[        U5       H+  u  pVUb  M
  UR	                  U(       a	  SU SU S3OU5        M-     U$ )Nr   	std::get<>())aliased_return_namesr   r^   r   r   )rF   out_varaliased_retsnon_aliased_namesis_out_var_a_tupler   ru   s          rM   gather_nonaliased_inner_retsr    sl    ,,.LT\\*Q.,'9$$/A)A3b	+w (
 rO   c                   SU R                   R                  ;  a  g U R                  b'  SU R                  R                  ;  a  U R                  nO\U R                  b'  SU R                  R                  ;  a  U R                  nO([	        [        U R                   R                  5      5      e[        U R                   R                  5      n[        UR                  5      n/ n/ n/ n[        [        R                  " U R                   R                  5      [        R                  " UR                  5      5       H  u  pxUR                  b  UR                  R                  (       a  UR                  SUR                   SUR                   S35        UR                  [        UR                   S3[        R                   " XwR                  S9S95        UR                  UR                   S35        M  UR                  [        R"                  " U5      5        M     SR%                  ['        XCR)                  5       5       V	s/ s H  oR*                  PM     sn	5      n
S	n[-        UR                  R.                  5      S
:  a  SU S3OSn[1        UR                  U5      n[3        U R                   R                  R.                  X-   5      nSR%                  U5      nSUR5                  UR                  5       U R6                  R                  R9                  5       (       a  SOS-   S9 SU SU SUR                  R                  R;                  5        SU
 SU S3$ s  sn	f )Nr   zauto z_clone = clone_arg(r   _clone)binds)exprrY   r   outputr   z = r   
r   rX   z {
  
  z
at::_ops::::call();
  
}
)ri   r   r_   r   r   r   rF   r   zipr   jit_argumentsr[   rr   r   rX   r	   argument_typere   r   r   r]   r  r   r^   r  r   defnrQ   r   r   )gtarget_fsig
target_sigcontextclone_mutable_inputscloned_return_namesa_curra_tgteexprsout_namemaybe_assigninner_return_namesret_strclone_mutable_inputs_strs                   rM   gen_composite_functional_kernelr$    s    !,,+++yyAIINN!B99	
	;aiinn#D99 S!2!2344
all//
0C$X]]3J$&G   !2!23  / 'E,<,<,E,E ''}$7}BG NN"KK=/#11&L  &&&++f'=>NN:..v67#$ IIy:N:N:P'QR'Q!vv'QRSEH,/0E0E,F,JU8*C(PRL5hmmXN	!!#5#KG  $yy)=>sxxz!%%***?*?*A*AYrJK L M .
8==-->>@A P
) 	  Ss   Mc                   SU R                   R                  ;  a  g [        U R                   R                  5      n[        U R                  R                  5      nSR                  [        UR                  5       UR                  5       5       Vs/ s H  o3R                  PM     sn5      n/ nSn[        U R                   R                  R                  R                   5       Ho  u  px[        U R                  R                  R                  5      S:X  a  UOSU SU S3n	UR                  SUR                   SU	 S	UR                   SU	 S
3	5        Mq     / n
[        U R                   R                  R                  5       5       Hd  u  p{Ub  U
R                  U5        M  [        U R                  R                  R                  5      S:X  a  UOSU SU S3n	U
R                  U	5        Mf     SR                  U5      nSUR                  U R                   R                  R                  R!                  5       U R                   R                  R#                  5       (       a  SOS-   S9 SU SU R                  R                  R                  R!                  5        SU SU S[%        U R                   R                  R                  U
5       S3$ s  snf )Nr   r   
tmp_outputr   r   r   r   z  resize_out_helper(z);
  copy_arg(r   r
  r   r   r  z
 {
  auto z = at::_ops::r  r  r  r  )rQ   r   r   rF   ri   r   r   r]   r  r   r   r^   r   rX   r   r  r   r   r   )r  r  r  r  r  	copy_outsr  r   out_argfunctional_return_namer   ret_namecopy_outs_strs                rM   gen_composite_out_kernelr,  T  s}    !%%**$ aeejj
)C$Q\\%6%67JII"3==?J4H4H4JKLKAKLE IH

 4 4 8 89
 1<<$$,,-2 QCr(1- 	
 	\\N"%;$< =LL>2329	
 : D !!@!@!BCKK! q||((001Q6  2hZq1 #
 KK./ D IIi(Mquuzz//1!%%**BWBWBYBYY_abc d ezq||0055FFHIQVPW X/ aeejj  $'( )	 G 	Ms   K)rI   zSequence[NativeFunction]returnz6dict[FunctionSchema, dict[SchemaKind, NativeFunction]])rT   
str | Noner-  r   )rF   r   r-  r   )rF   r   r-  z#tuple[list[Return], list[Argument]])rK   r   r   r   r-  zMtuple[NativeFunction, dict[DispatchKey, dict[OperatorName, BackendMetadata]]])r   zlist[NativeFunction]r   z6dict[DispatchKey, dict[OperatorName, BackendMetadata]]r-  None)r   ztuple[Return, ...]r   	list[str]r-  r   )rF   r   r   r   r-  r0  )r  r   r-  r.  )8
__future__r   r   collectionsr   typingr   torchgen.api.dispatcherapir   torchgen.api.translater   torchgen.api.typesr   r   r	   torchgen.contextr
   torchgen.modelr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   torchgen.utilsr   collections.abcr   r   r   r   r   rN   rU   rf   ro   rj   r   r   r   r   r  r$  r,  rS   rO   rM   <module>r<     s=   "  #   , , , A A 1    & % ( . '* & 	. *%1 -Z . *
(.
(;
(BB*+%
+%(+%fFcc$cRc\yyCy 
yxY	 9 9| 6 6rO   