
    sh1                       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  S SK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$  S SK%J&r&  \(       a  S SK'J(r(         SS	 jr)S
S.         S S jjr*S!S jr+S"S jr,S#S jr-S$S jr.SS.S%S jjr/SSSSSSS.r0S&S jr1            S'S jr2          S(S jr3g))    )annotations)TYPE_CHECKING)local)ArgName	BaseCTypeBindingConstRefCTypeCTypeMutRefCType
NamedCTypeSpecialArgName
TupleCTypeVectorCTypevoidT)ArrayRefCTypeBaseTypeToCppMappingOptionalCTypescalarTtensorListTtensorT)Argument	ArgumentsBaseTyBaseTypeListTypeNativeFunctionOptionalTypeReturnSelfArgumentTensorOptionsArgumentsType)assert_never)Sequencec          	        [        U [        5      (       a  U R                  [        R                  :X  d  U R                  [        R
                  :X  a  g [        U 5      S:X  a*  [        U[        [        [        R                     5      5      $ [        U[        [        U R                     5      5      $ [        U [        5      (       a7  [        U R                  US9nUc  g [        U[        UR                  5      5      $ [        U [         5      (       a\  [        U R                  5      S:X  aB  U R"                  c   e[        U[%        [        [        [        R&                     5      5      5      $ g [)        S[+        U 5       35      e)NSymIntbindsboolunrecognized type )
isinstancer   namer   TensorScalarstrr   r   r   intr   valuetype_typeelemr   typer   sizer   r(   AssertionErrorrepr)tr'   r1   s      r/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torchgen/executorch/api/et_cpp.pyr0   r0   B   s!   
 !X66V]]"aff&=VxeY/CFJJ/O%PQQ%+?+G!HII	A|	$	$affE2<%tyy!9::	Ax	 	 qvv;& 66%%%}Y/CFKK/P%QR  1$q';<<    F)remove_non_owning_ref_typesc          
        [        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      (       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$                  XS9n[        U['        UR*                  5      5      $ [        U [,        5      (       a  [#        U R$                  5      S:X  a  [        U[        [.        5      5      $ [#        U R$                  5      S:X  a  [1        S5      e[#        U R$                  5      S:X  a+  [        U[3        ['        [        [        5      5      5      5      $ [)        U R$                  XS9n[        U[3        UR*                  5      5      $ [        S	[5        U 5       35      e)
Nr&   z&base type should have been value type r,   r-   mutabler'   Dimnamez"Executorch doesn't support DimnameTensor?r)   )r0   r*   r   r+   r   r,   r   !use_const_ref_for_mutable_tensorsr   r   r   r   r	   r-   r   r4   r   r.   r1   r   argumenttype_typer2   r   r   NotImplementedErrorr   r5   )r6   r<   r'   r9   rr1   s         r7   r@   r@   d   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 F%tyy!9::	Ax	 	 qvv;("eY{%;<<[I%%&JKK[I%e]=7AS3T%UVV F%tyy!9::1$q';<<r8   c               @    [        U R                  U R                  US9$ )Nr;   )r@   r2   is_write)ar'   s     r7   argument_typerF      s    QVVQZZuEEr8   c                  [        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      $ OY[        U [        5      (       aD  U(       a   S5       e[!        U R"                  SS9nU R$                  b
   SU  35       e['        U5      $ [)        SU  35      e)N__placeholder__r&   zTNative functions should never return a mutable tensor list. They should return void.Fr<   z'fixed size list returns not supported: zunrecognized return type )r0   r2   r*   r   r+   r   r,   r   r?   r	   r   r   r   r-   r   r   returntype_typer1   r3   r   r4   )r6   r<   rB   r1   s       r7   rJ   rJ      s   q 12A}vv!X66V]]"::<<(7);<<&y'9:: !))VVv}}$W%% %	Ax	 	  	
b	
{ qvvu5vv~L!HLL~4  
4QC8
99r8   c                >    [        U R                  U R                  S9$ )NrI   )rJ   r2   rD   )rB   s    r7   return_typerL      s    1661::66r8   c                    [        U 5      S:X  a  [        [        5      $ [        U 5      S:X  a  [        U S   5      $ [	        U  Vs/ s H  n[        U5      PM     sn5      $ s  snf )Nr      )lenr   r   rL   r   )rsrB   s     r7   returns_typerQ      sS    
2w!|	RA2a5!!262a;q>26776s   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)r+   ).0rE   rB   s     r7   	<genexpr>return_names.<locals>.<genexpr>   s"       *IQ!&& *Is   &)_returnrN   )	enumeratefuncreturnsr+   inplace	is_out_fn	argumentsoutanyschema_order_argumentsrO   append)frS   r]   ir+   name_conflictrB   s         @r7   return_namesrh      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 Nr8   falsetrueztorch::execustd::nullopt{}z+torch::executorch::MemoryFormat::Contiguousztorch::executorch::kLong)FalseTrueNonez[]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X U   -  nUS	-  nOXS	-      S:X  a  US-  nO	X X3S-    -  nUS-  nUS	-   [        U 5      :  a  MV  SU S3$ [        U[        5      (       a  U S:X  a  g[        XR                  5      $ [        U[        5      (       aS  U R                  S5      (       a!  U R                  S5      (       a  SU S	S -   S-   $ UR                  c  [        SU  S35      e[        R                  X 5      $ )Nrn   r>   rk      r   ' rN   \"z\"ztorch::executor::nullopt[]{}z,Expected a list default '[...]' but found: ')r.   r*   r   r+   r   rO   r   default_exprr1   r   
startswithendswithr3   
ValueErrorJIT_TO_CPP_DEFAULTget)dr6   srf   s       r7   r|   r|      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!\"";-Avv&&!X<<C1R=3&&VV^KA3aPQQ!!!''r8   c               ,  ^^^^     S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                  5      n[        [        XS9U R                  UU S9/$ [        U [        5      (       a  [        S5      e[        U [        5      (       a  T(       a  / $ U" U R                  5      $ [        U 5        g )Nc                   > [        U TTTTS9$ )N)cpp_no_default_argsmethodfaithfulhas_tensor_options)argument)rE   r   r   r   r   s    r7   sub_argumentargument.<locals>.sub_argument/  s!      31
 	
r8   memory_formatr&   )nctyper+   defaultr   z3Need to implement type resolution for TensorOptions)rE   0Argument | TensorOptionsArguments | SelfArgumentreturnlist[Binding])r*   r   r+   r    possibly_redundant_memory_formatr   r|   r2   r   rF   r    rA   r   r   r"   )rE   r   r   r   r   r   r'   r   s    ````   r7   r   r   '  s    	
;	
		
 	
 !X66_$);"CCEFFE"66,,1F"199aff5G$Q4VV	
 	
 
A-	.	.!"WXX	A|	$	$I

++Qr8   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 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   )extendnon_outra   r   tensor_options
no_default)r`   r   r   r   argsrE   rB   s          r7   r`   r`   W  s     DFDI%%&IMM"IMM"I%%& 
A(77tC 3
A #)
 	*
 
 
s   <ACN)r6   r!   r'   r   r   zNamedCType | None)
r6   r!   r<   r(   r'   r   r9   r(   r   r   )rE   r   r'   r   r   r   )r6   r!   r<   r(   r   r
   )rB   r   r   r
   )rP   zSequence[Return]r   r
   )re   r   rS   r.   r   zSequence[str])r   r.   r6   r!   r   r.   )rE   r   r   set[str]r   r(   r   r(   r   r(   r   r   )
r`   r   r   r(   r   r(   r   r   r   r   )4
__future__r   typingr   torchgenr   torchgen.api.typesr   r   r   r	   r
   r   r   r   r   r   r   torchgen.executorch.api.typesr   r   r   r   r   r   torchgen.modelr   r   r   r   r   r   r   r   r   r    r!   torchgen.utilsr"   collections.abcr#   r0   r@   rF   rJ   rL   rQ   rh   r   r|   r   r`    r8   r7   <module>r      sh   "           ( (&== = 	=N ).1=1= 1= 	1=
 "&1= 1=jF:B7
8 =E B &
F& %(V-7- "- 	-
 - - -`  	
 " r8   