
    Yh?                       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mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 erd dl3m4Z4 ddd	dIdZ5ddddJdZ6ddddKdZ7dd dLd#Z8dd dMd%Z9dd dNd(Z:dd dOd+Z;d,d-dPd2Z<d3d4d5d6d7d8d9d:Z=dQd<Z>dd dRdDZ?dd dSdGZ@dHS )T    )annotations)TYPE_CHECKING)assert_never)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)SequenceF)faithful_name_for_out_overloadssymint_overloadfuncr(   r1   boolr2   returnstrc                   t          | j        j                  }|r|dz  }|                                 r|r|dz  }n|dz  }|S )N_symint_outf_out)r6   name	is_out_fn)r3   r1   r2   r;   s       b/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/torchgen/api/cpp.pyr;   r;   L   sZ     ty~D 	~~ * 	GODDFNDK    Tmutablesyminttr/   bindsr   r@   rA   NamedCType | Nonec               8   t          | t                    r| j        t          j        t          j        fv rd S t          |           dk    rF|r"t          |t          t                              S t          |t          t                              S t          |t          t          | j                                     S t          | t                    r>t          | j        |||          }|d S t          |t          |j                            S t          | t"                    rXt          | j                  dk    r>| j        J t          |t'          t          t(                    | j                            S d S t+          dt-          |                      )NSymIntrC   r@   rA   r4   unrecognized type )
isinstancer'   r;   r&   TensorScalarr6   r   r
   r   r   r   r+   valuetype_typeelemr   typer)   sizer   r   AssertionErrorrepr)rB   rC   r@   rA   rM   s        r=   rL   rL   a   sa    !X =6fmV]3334VVx ;!%7););<<<!%5)9)9:::%+?+G!H!HIII	A|	$	$ =afE76RRR<4%ty!9!9:::	Ax	 	  =qv;;&  6%%%eZ	%0@0@!&%I%IJJJ4;$q'';;<<<r>   )remove_non_owning_ref_typesrA   rR   r   c               *   t          | |||          }||S t          | t                    r| j        t          j        k    rs|rBt          j                    s/t          |t          t          t                                        S t          |t          t          t                                        S | j        t          j        k    r/t          |t          t          t                                        S t          d|            t          | t                     rt#          | j                  dk    r|rBt          j                    s/t          |t          t          t                                        S t          |t          t'          t          t                                                  S t#          | j                  dk    r<t          |t          t'          t          t                                                  S t          | j        t(                    r?t#          | j        j                  dk    r"t          |t          t*                              S t          | j        t(                    rct#          | j        j                  dk    rF|r"t          |t          t,                              S t          |t          t*                              S t/          | j        |||          }t          |t'          |j                            S t          | t(                    rt#          | j                  dk    rS|r/t          |t3          t          t4                                        S t          |t          t6                              S t#          | j                  dk    r|r`|r/t          |t3          t          t8                                        S t          |t3          t          t4                                        S |r"t          |t          t:                              S t          |t          t6                              S t#          | j                  dk    rdt          j                    r/t          |t          t          t>                                        S t          |t          t@                              S t#          | j                  dk    r/t          |tC          t          t                                        S t#          | j                  dk    r"t          |t          tD                              S t#          | j                  d	k    rIt          |t          tG          t'          t          t                                                            S t/          | j        |||          }t          |tC          |j                            S t          d
tI          |                      )NrG   z&base type should have been value type rJ   rK   intrF   )r@   rC   rA   DimnameTensor?rH   )%rL   rI   r'   r;   r&   rJ   r   !use_const_ref_for_mutable_tensorsr   r   r
   r    r   rK   r   rP   r+   r6   rM   r   r)   r   r   argumenttype_typerN   r"   r   r   r   r   use_ilistref_for_tensor_listsr   r   r	   r   r   rQ   )rB   r@   rC   rR   rA   rrM   s          r=   rX   rX      s    				 	 	A 	}!X A=6V]"" LuFHH L!%Yw5G5G)H)HIII!%y7I7I)J)JKKKVv}$$e]9W3E3E%F%FGGG !M!!M!MNNN	A|	$	$ 7=qv;;("" uFHH !;y'9'9::   "=y7I7I)J)JKK   [[H$$e]=7ASAS3T3T%U%UVVV)) 	Jc!&+.>.>%.G.GeY/C%D%DEEE)) 	Jc!&+.>.>(.J.J J!%3J)K)KLLL!%3G)H)HIII fUUU%ty!9!9:::	Ax	 	  "=qv;;%* B!%Yu5E5E)F)FGGG!%<)@)@AAAqv;;(""* 	F L%e[79K9K-L-LMMM%e[59I9I-J-JKKK F%eY-G-GHHH%eY|-D-DEEEqv;;(""244 A!%y7Q7Q)R)RSSS!%;)?)?@@@[[H$$e]9W3E3E%F%FGGG[[I%%eY|%<%<===[[I%%}Y}Yw=O=O/P/P%Q%QRR   !fUUU%ty!9!9:::;$q'';;<<<r>   rA   ar$   c               <    t          | j        | j        ||          S )N)r@   rA   rC   )rX   rN   is_write)r\   rC   rA   s      r=   argument_typer_      s    QVQZeTTTTr>   r   c               4   t          | d|d          }||j        S t          | t                    r| j        t
          j        k    rk|rUt          j                    r!t          t          t                              S t          t          t                              S t          t                    S | j        t
          j        k    rt          t                    S nt          | t                    rE|r
J d            t!          | j        d          }| j        J d|              t'          |          S t          | t(                    r=t!          | j        |          }t+          | j                  dk    rt-          |          S t/          d	|            )
N__placeholder__TrG   zTNative functions should never return a mutable tensor list. They should return void.F)r@   z'fixed size list returns not supported: rJ   zunrecognized return type )rL   rN   rI   r'   r;   r&   rJ   r   rW   r   r
   r    r   rK   r   r)   returntype_typerM   rO   r"   r+   r6   r   rP   )rB   r@   rA   rZ   rM   s        r=   rb   rb      s    	q 174PPPA}v!X '6V]"" 
*:<< ;(7););<<<&y'9'9::: !)))Vv}$$W%%% %	Ax	 	  
' 	
 	
b	
 	
 	
 qvu555v~~LLL~~~4   	A|	$	$ 'qvw777qv;;("" &&&
8Q88
9
99r>   rZ   r,   c               :    t          | j        | j        |          S )Nr?   )rb   rN   r^   )rZ   rA   s     r=   return_typerd     s    161:fEEEEr>   rsSequence[Return]c                   t          |           dk    rt          t                    S t          |           dk    rt          | d                   S t	          fd| D                       S )Nr      r[   c                2    g | ]}t          |           S )r[   )rd   ).0rZ   rA   s     r=   
<listcomp>z returns_type.<locals>.<listcomp>  s&    EEEQ;q888EEEr>   )lenr
   r#   rd   r!   )re   rA   s    `r=   returns_typerm     si    
2ww!||	RA2a50000EEEE"EEEFFFr>   result)fallback_namefr*   ro   Sequence[str]c               N   g }t          | j        j                  D ]\  }| j        j        j        j        r|dk    s
J d            d}n| j                                        r| j        j        j        |         j        }nj        r`t          fd| j        	                                D                       }|r$| j                                        sj         d}n-j        }n%t          | j        j                  dk    r|n| | }|                    |           |S )Nr   z.illegal inplace function with multiple returnsselfc              3  8   K   | ]}j         |j         k    V  d S )N)r;   )rj   r\   rZ   s     r=   	<genexpr>zreturn_names.<locals>.<genexpr>*  s=          %&!&            r>   _returnrh   )	enumerater3   returnsr;   inplacer<   	argumentsoutanyschema_order_argumentsrl   append)rp   ro   rx   ir;   name_conflictrZ   s         @r=   return_namesr     sV   G!&.))  1 6;# 	X666K666DD V 	X6#'*/DDV 	X        *+&*G*G*I*I       M  QV%5%5%7%7 &)))v
 %($7$71$<$<==]BWTUBWBWDtNr>   falsetrue::std::nulloptzat::Reduction::Mean{}zc10::MemoryFormat::Contiguous	at::kLong)FalseTrueNoneMeanz[]contiguous_formatlongdc                  | dk    rt          |          dk    rdS t          |t                    r|j        t          j         u rt          |           dk    r| d         dk    r| d         dk    rd}d	}|d	z   t          |           k     ro| |         d
k    r#| |         dk    r|dz  }n|| |         z  }|d	z  }n*| |d	z            dk    r|dz  }n|| ||dz            z  }|dz  }|d	z   t          |           k     od| dS t          |t                    r| dk    rdS t          | |j        |          S t          |t                    r| 
                    d          r%|                     d          rd| d	d         z   dz   S |r2|                                 rt          |j                  dk    rd|  dS |j        t          d|  d          t                              | |           S )Nr   rV   r      r   ' rh   \"z\"r   r[   []{}rF   zc10::SymInt()z,Expected a list default '[...]' but found: ')r6   rI   r'   r;   r&   rl   r+   default_exprrM   r)   
startswithendswithisdigitrO   
ValueErrorJIT_TO_CPP_DEFAULTget)r   rB   rA   sr   s        r=   r   r   F  s   F{{s1vv**t!X 16VZ#7#7q66Q;;1Q43;;1R5C<<AAa%#a&&..Q44<<ts{{U
QqT	FAAQx3SQq1q5y\)FA a%#a&&.. q888O!\"" 6;;##Aqvf5555!X R<< 	RC 	R1R4=3&& 	R		 	RAFx(?(?&!&&&&V^PAPPPQQQ!!!Q'''r>   0Argument | TensorOptionsArguments | SelfArgumentcpp_no_default_argsset[str]methodfaithfulhas_tensor_optionslist[Binding]c               Z   dfd}t          | t                    rx| j        dk    rrt          j        }n| j        }d }| j        vr#| j        t          | j        | j                  }t          t          | |          | j        || 	          gS t          | t                    rrC || j                   || j                  z    || j                  z    || j                  z   S d }d
vsJ t          d |                                 D                       rd}n| j        j        dk    rd}t          t!          d
t#          t$                              d
|| 	          gS t          | t&                    rrg S  || j                  S t+          |            d S )Nr\   r   r5   r   c                .    t          |           S )N)r   r   r   rA   r   )argument)r\   r   r   r   r   rA   s    r=   sub_argumentzargument.<locals>.sub_argument|  s.      31
 
 
 	
r>   memory_formatr[   )rC   rA   )nctyper;   defaultr   optionsc              3  ,   K   | ]}|j         d k    V  dS )r   N)r   )rj   xs     r=   ru   zargument.<locals>.<genexpr>  s)      88119&888888r>   r   r   r   )r\   r   r5   r   )rI   r$   r;   r    possibly_redundant_memory_formatr   r   rN   r   r_   r.   dtypelayoutdevice
pin_memoryallr   r
   r   r-   r   r   )	r\   r   r   r   rA   r   r   rC   r   s	    `````   r=   r   r   s  s"   

 

 

 

 

 

 

 

 

 

 !X 06_$$);$"CEEFE"6,,,1F"19afVDDDG$QeFCCCV	  
 	
 
A-	.	.  	QW%%,qx((),qx(() ,q|,,- G$777778888888 &F**%%i>1J1JKK"#	    
A|	$	$  	,I<
+++Qr>   rz   r%   c               
    g }r5|                      j                   |                      j                   n4|                      j                   |                      j                    fd|D             S )Nc           
     ~    g | ]9}t          |j        d u          D ]}r|                                n|:S )N)r   rA   r   r   r   )r   tensor_options
no_default)rj   r\   rZ   rz   r   r   r   rA   s      r=   rk   zarguments.<locals>.<listcomp>  sz       (7tC 3
 
 
   #)   r>   )extendnon_outr{   )rz   r   rA   r   r   argss   ````` r=   rz   rz     s     DFD 'I%&&&IM""""IM"""I%&&&          r>   N)r3   r(   r1   r4   r2   r4   r5   r6   )
rB   r/   rC   r   r@   r4   rA   r4   r5   rD   )rB   r/   r@   r4   rC   r   rR   r4   rA   r4   r5   r   )r\   r$   rC   r   rA   r4   r5   r   )rB   r/   r@   r4   rA   r4   r5   r   )rZ   r,   rA   r4   r5   r   )re   rf   rA   r4   r5   r   )rp   r*   ro   r6   r5   rq   )r   r6   rB   r/   rA   r4   r5   r6   )r\   r   r   r   r   r4   r   r4   rA   r4   r   r4   r5   r   )rz   r%   r   r4   rA   r4   r   r4   r   r   r5   r   )A
__future__r   typingr   typing_extensionsr   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/   collections.abcr0   r;   rL   rX   r_   rb   rd   rm   r   r   r   r   rz    r>   r=   <module>r      s   " " " " " "             * * * * * *                                                                   >                              )((((((0 -2!	     2 = = = = = =R ).S= S= S= S= S= S=n BG U U U U U U ?D #: #: #: #: #: #:N .3 F F F F F F
 :? G G G G G G =E      B !
8  '( '( '( '(f E E E E E EX 	       r>   