
    JTh?                    @   S SK Jr  S SK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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%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0  S SK1J2r2  \(       a  S SK3J4r4  SSS	.       S$S
 jjr5SSS.         S%S jjr6SSS.           S&S jjr7SS.S'S jjr8SS.S(S jjr9SS.S)S jjr:SS.S*S jjr;SS.S+S jjr<SSSSSSSS.r=S,S  jr>SS.             S-S! jjr?SS.           S.S" jjr@g#)/    )annotations)TYPE_CHECKING)local)ArgName
ArrayCTypeArrayRefCType	BaseCTypeBaseTypeToCppMappingBindingboolTConstRefCTypeCTypedimnameListTintArrayRefTiTensorListRefT	ListCTypelongTMutRefCType
NamedCTypeOptionalCTypeoptionalIntArrayRefToptionalSymIntArrayRefTscalarTSpecialArgNamesymIntArrayRefTSymIntTtensorListTtensorOptionsTtensorT
TupleCTypeVectorCTypevoidT)Argument	ArgumentsBaseTyBaseTypeFunctionSchemaListTypeNativeFunctionOptionalTypeReturnSelfArgumentTensorOptionsArgumentsType)assert_never)SequenceF)faithful_name_for_out_overloadssymint_overloadc                   [        U R                  R                  5      nU(       a  US-  nU R                  5       (       a  U(       a  US-  nU$ US-  nU$ )N_symint_outf_out)strname	is_out_fn)funcr1   r2   r8   s       H/var/www/auris/envauris/lib/python3.13/site-packages/torchgen/api/cpp.pyr8   r8   L   sS     tyy~~D	~~*GOD K FNDK    Tmutablesymintc                  [        U [        5      (       a  U R                  [        R                  [        R
                  4;   a  g [        U 5      S:X  a9  U(       a  [        U[        [        5      5      $ [        U[        [        5      5      $ [        U[        [        U R                     5      5      $ [        U [        5      (       a8  [        U R                  XUS9nUc  g [        U[        UR                   5      5      $ [        U ["        5      (       aV  [        U R                  5      S:X  a<  U R$                  c   e[        U['        [        [(        5      U R$                  5      5      $ g [+        S[-        U 5       35      e)NSymIntbindsr>   r?   boolunrecognized type )
isinstancer&   r8   r%   TensorScalarr7   r   r	   r   r   r
   r*   valuetype_typeelemr   typer(   sizer   r   AssertionErrorrepr)trC   r>   r?   rJ   s        r;   rI   rI   a   s    !X66fmmV]]33Vx!%7);<<!%5)9::%+?+G!HII	A|	$	$affE6R<%tyy!9::	Ax	 	 qvv;& 66%%%eZ	%0@!&&%IJJ1$q';<<r<   )remove_non_owning_ref_typesr?   c               
   [        U UUUS9nUb  U$ [        U [        5      (       a  U R                  [        R
                  :X  ae  U(       a<  [        R                  " 5       (       d"  [        U[        [        [        5      5      5      $ [        U[        [        [        5      5      5      $ U R                  [        R                  :X  a"  [        U[        [        [        5      5      5      $ [        SU  35      e[        U [         5      (       Ga  [#        U R$                  5      S:X  an  U(       a<  [        R                  " 5       (       d"  [        U[        [        [        5      5      5      $ [        U[        ['        [        [        5      5      5      5      $ [#        U R$                  5      S:X  a+  [        U[        ['        [        [        5      5      5      5      $ [        U R$                  [(        5      (       a<  [#        U R$                  R$                  5      S:X  a  [        U[        [*        5      5      $ [        U R$                  [(        5      (       a\  [#        U R$                  R$                  5      S:X  a9  U(       a  [        U[        [,        5      5      $ [        U[        [*        5      5      $ [/        U R$                  XUS9n[        U['        UR0                  5      5      $ [        U [(        5      (       Ga[  [#        U R$                  5      S:X  aB  U(       a"  [        U[3        [        [4        5      5      5      $ [        U[        [6        5      5      $ [#        U R$                  5      S:X  a  U(       aK  U(       a"  [        U[3        [        [8        5      5      5      $ [        U[3        [        [4        5      5      5      $ U(       a  [        U[        [:        5      5      $ [        U[        [6        5      5      $ [#        U R$                  5      S:X  aU  [        R<                  " 5       (       a"  [        U[        [        [>        5      5      5      $ [        U[        [@        5      5      $ [#        U R$                  5      S:X  a"  [        U[C        [        [        5      5      5      $ [#        U R$                  5      S:X  a  [        U[        [D        5      5      $ [#        U R$                  5      S	:X  a4  [        U[        [G        ['        [        [        5      5      5      5      5      $ [/        U R$                  XUS9n[        U[C        UR0                  5      5      $ [        S
[I        U 5       35      e)NrB   z&base type should have been value type rG   rH   intrA   )r>   rC   r?   DimnameTensor?rE   )%rI   rF   r&   r8   r%   rG   r   !use_const_ref_for_mutable_tensorsr   r   r	   r   r   rH   r   rM   r*   r7   rJ   r   r(   r   r   argumenttype_typerK   r!   r   r   r   r   use_ilistref_for_tensor_listsr   r   r   r   r   rN   )rO   r>   rC   rP   r?   rrJ   s          r;   rV   rV      s    				A 	}!X66V]]"uFFHH!%Yw5G)HII!%y7I)JKKVVv}}$e]9W3E%FGG #I!!MNN	A|	$	$qvv;("uFFHH!;y'9:  "=y7I)JK  [H$e]=7AS3T%UVV))c!&&++.>%.GeY/C%DEE))c!&&++.>(.J!%3J)KLL!%3G)HII fU%tyy!9::	Ax	 	 qvv;%*!%Yu5E)FGG!%<)@AAqvv;("*%e[79K-LMM%e[59I-JKK%eY-GHH%eY|-DEEqvv;("2244!%y7Q)RSS!%;)?@@[H$e]9W3E%FGG[I%eY|%<==[I%}Y}Yw=O/P%QR  !fU%tyy!9::1$q';<<r<   r?   c               @    [        U R                  U R                  X!S9$ )N)r>   r?   rC   )rV   rK   is_write)arC   r?   s      r;   argument_typer]      s    QVVQZZTTr<   c               "   [        U SUSS9nUb  UR                  $ [        U [        5      (       a  U R                  [
        R                  :X  a`  U(       aJ  [        R                  " 5       (       a  [        [        [        5      5      $ [        [        [        5      5      $ [        [        5      $ U R                  [
        R                  :X  a  [        [        5      $ O[        U [        5      (       aD  U(       a   S5       e[!        U R"                  SS9nU R$                  b
   SU  35       e['        U5      $ [        U [(        5      (       a8  [!        U R"                  US9n[+        U R"                  5      S:X  a  [-        U5      $ [/        S	U  35      e)
N__placeholder__TrB   zTNative functions should never return a mutable tensor list. They should return void.F)r>   z'fixed size list returns not supported: rG   zunrecognized return type )rI   rK   rF   r&   r8   r%   rG   r   rU   r   r	   r   r   rH   r   r(   returntype_typerJ   rL   r!   r*   r7   r   rM   )rO   r>   r?   rX   rJ   s        r;   r`   r`      sA    	q 174PA}vv!X66V]]"::<<(7);<<&y'9:: !))VVv}}$W%% %	Ax	 	  	
b	
{ qvvu5vv~L!HLL~4  	A|	$	$qvvw7qvv;(" &&
4QC8
99r<   c               @    [        U R                  U R                  US9$ )Nr=   )r`   rK   r[   )rX   r?   s     r;   return_typerb     s    1661::fEEr<   c          
         [        U 5      S:X  a  [        [        5      $ [        U 5      S:X  a  [        U S   US9$ [	        U  Vs/ s H  n[        X!S9PM     sn5      $ s  snf )Nr      rY   )lenr	   r"   rb   r    )rsr?   rX   s      r;   returns_typerg     sV    
2w!|	RA2a500"E"Q;q8"EFFEs   Aresult)fallback_namec                 ^ / n[        U R                  R                  5       GHP  u  nmU R                  R                  R                  R                  (       a  US:X  d   S5       eSnOU R                  R                  5       (       a.  U R                  R                  R                  U   R                  nOTR                  (       ap  [        U4S jU R                  R                  5        5       5      nU(       a/  U R                  R                  5       (       d  TR                   S3nO8TR                  nO+[        U R                  R                  5      S:X  a  UOU U 3nUR                  U5        GMS     U$ )Nr   z.illegal inplace function with multiple returnsselfc              3  V   >#    U  H  nTR                   UR                   :H  v   M      g 7f)N)r8   ).0r\   rX   s     r;   	<genexpr>return_names.<locals>.<genexpr>*  s"       *IQ!&& *Is   &)_returnrd   )	enumerater:   returnsr8   inplacer9   	argumentsoutanyschema_order_argumentsre   append)fri   rr   ir8   name_conflictrX   s         @r;   return_namesr|     s   G!&&..)1 66;;##6KKK6D VV66##''*//DVV  *+&&*G*G*I  M QVV%5%5%7%7&&)vv
 %($71$<=]OTUSVBWDt5 *6 Nr<   falsetrue::std::nulloptzat::Reduction::Mean{}zc10::MemoryFormat::Contiguous	at::kLong)FalseTrueNoneMeanz[]contiguous_formatlongc                  U S:X  a  [        U5      S:X  a  g[        U[        5      (       a  UR                  [        R                   L a  [        U 5      S:  a  U S   S:X  a{  U S   S:X  ar  SnS	nUS	-   [        U 5      :  aV  X   S
:w  a  X   S:X  a  US-  nOX0U   -  nUS	-  nOXS	-      S:X  a  US-  nO	X0XDS-    -  nUS-  nUS	-   [        U 5      :  a  MV  SU S3$ [        U[        5      (       a  U S:X  a  g[        XR                  US9$ [        U[        5      (       a  U R                  S5      (       a!  U R                  S5      (       a  SU S	S -   S-   $ U(       a4  U R                  5       (       a  [        UR                  5      S:X  a  SU  S3$ UR                  c  [        SU  S35      e[        R!                  X 5      $ )Nr   rT   r      r   ' rd   \"z\"r   rY   []{}rA   zc10::SymInt()z,Expected a list default '[...]' but found: ')r7   rF   r&   r8   r%   re   r*   default_exprrJ   r(   
startswithendswithisdigitrL   
ValueErrorJIT_TO_CPP_DEFAULTget)drO   r?   srz   s        r;   r   r   F  s   F{s1v*!X166VZZ#7q6Q;1Q43;1R5C<AAa%#a&.44<ts{U
qT	FAQx3Sqq5\)FA a%#a&. qc8O!\"";#Avvf55!X<<C1R=3&&		AFFx(?!!A&&VV^KA3aPQQ!!!''r<   c                 ^^^^^     SUUUUU4S jjn[        U [        5      (       a  U R                  S:X  a  T(       a  [        R                  nOU R                  nS nU R                  T;  a,  U R
                  b  [        U R
                  U R                  TS9n[        [        XTS9U R                  UU S9/$ [        U [        5      (       a  T(       aK  U" U R                  5      U" U R                  5      -   U" U R                  5      -   U" U R                  5      -   $ S nST;  d   e[        S U R                  5        5       5      (       a  SnOU R                  R
                  S	:X  a  S
n[        [!        S[#        [$        5      5      SUU S9/$ [        U [&        5      (       a  T(       a  / $ U" U R(                  5      $ [+        U 5        g )Nc           	         > [        U TTTTTS9$ )N)cpp_no_default_argsmethodfaithfulr?   has_tensor_options)argument)r\   r   r   r   r   r?   s    r;   sub_argumentargument.<locals>.sub_argument|  s$      31
 	
r<   memory_formatrY   )rC   r?   )nctyper8   defaultr   optionsc              3  >   #    U  H  oR                   S :H  v   M     g7f)r   N)r   )rm   xs     r;   rn   argument.<locals>.<genexpr>  s     8199&s   r   r   r   )r\   0Argument | TensorOptionsArguments | SelfArgumentreturnlist[Binding])rF   r#   r8   r    possibly_redundant_memory_formatr   r   rK   r   r]   r-   dtypelayoutdevice
pin_memoryallr   r	   r   r,   r   r/   )	r\   r   r   r   r?   r   r   rC   r   s	    `````   r;   r   r   s  s   

;

	

 

 !X66_$);"CCEFFE"66,,1F"199affVDG$QFCVV	
 	
 
A-	.	.QWW%qxx()qxx() q||,- G$77778888F*%%i>1JK"#	  
A|	$	$I

++Qr<   c                  / nU(       a7  UR                  U R                  5        UR                  U R                  5        O6UR                  U R                  5        UR                  U R                  5        U VVs/ s H>  n[        UUUUU R                  S LUS9  H  nU(       a  UR                  5       OUPM     M@     snn$ s  snnf )N)r   r?   r   r   r   )extendnon_outru   r   tensor_options
no_default)rt   r   r?   r   r   argsr\   rX   s           r;   rt   rt     s     DFDI%%&IMM"IMM"I%%& A(77tC 3
A #)
 	*  s   <ACN)r:   r'   r1   rD   r2   rD   r   r7   )
rO   r.   rC   r   r>   rD   r?   rD   r   zNamedCType | None)rO   r.   r>   rD   rC   r   rP   rD   r?   rD   r   r   )r\   r#   rC   r   r?   rD   r   r   )rO   r.   r>   rD   r?   rD   r   r   )rX   r+   r?   rD   r   r   )rf   zSequence[Return]r?   rD   r   r   )ry   r)   ri   r7   r   zSequence[str])r   r7   rO   r.   r?   rD   r   r7   )r\   r   r   set[str]r   rD   r   rD   r?   rD   r   rD   r   r   )rt   r$   r   rD   r?   rD   r   rD   r   r   r   r   )A
__future__r   typingr   torchgenr   torchgen.api.typesr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   torchgen.modelr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   torchgen.utilsr/   collections.abcr0   r8   rI   rV   r]   r`   rb   rg   r|   r   r   r   rt    r<   r;   <module>r      s   "          >    ( (0 -2!	
 &* 	
 	2 == = 	=
 = =R ).S=S= S= 	S=
 "&S= S= S=n BG U ?D #:N .3 F
 :? G =E B !
8 '(f E7E "E 	E
 E E E EX 	  	
  " r<   