
    Χg@                       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-m.Z.m/Z/m0Z0 d dl1m2Z2 ddddHdZ3dddddIdZ4ddddJdZ5dddKd"Z6dddLd$Z7dddMd'Z8dddNd*Z9d+d,dOd1Z:d2d3d4d5d6d7d8d9Z;dPd;Z<dddQdCZ=dddRdFZ>dGS )S    )annotations)Sequence)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_neverF)faithful_name_for_out_overloadssymint_overloadfuncr'   r0   boolr1   returnstrc                   t          | j        j                  }|r|dz  }|                                 r|r|dz  }n|dz  }|S )N_symint_outf_out)r5   name	is_out_fn)r2   r0   r1   r:   s       L/var/www/html/ai-engine/env/lib/python3.11/site-packages/torchgen/api/cpp.pyr:   r:   H   sZ     ty~D 	~~ * 	GODDFNDK    T)mutableremove_non_owning_ref_typessyminttr.   bindsr   r>   r?   r@   NamedCType | Nonec                  t          | t                    r| j        t          j        k    s| j        t          j        k    rd S t          |           dk    rF|r"t          |t          t                              S t          |t          t                              S |r$| j        t          j        k    rt          d          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SymIntz1string ref->value conversion: not implemented yetrB   r>   r@   r3   unrecognized type )
isinstancer&   r:   r%   TensorScalarr5   r   r	   r   r   AssertionErrorr
   r*   valuetype_typeelemr   typer(   sizer   r   repr)rA   rB   r>   r?   r@   rM   s         r<   rL   rL   ]   s    !X =6V]""af&=&=4VVx ;!%7););<<<!%5)9)9:::& 	v##$G   %+?+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=   )r?   r@   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          |                      )N)rB   r>   r@   r?   z&base type should have been value type rI   rJ   intrE   )r>   rB   r@   DimnameTensor?rG   )%rL   rH   r&   r:   r%   rI   r   !use_const_ref_for_mutable_tensorsr   r   r	   r   r   rJ   r   rK   r*   r5   rM   r   r(   r   r   argumenttype_typerN   r!   r   r   r   r   use_ilistref_for_tensor_listsr   r   r   r   r   rP   )rA   r>   rB   r?   r@   rrM   s          r<   rV   rV      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=   r@   ar#   c               <    t          | j        | j        ||          S )N)r>   r@   rB   )rV   rN   is_write)rZ   rB   r@   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__TrF   zTNative functions should never return a mutable tensor list. They should return void.F)r>   z'fixed size list returns not supported: rI   zunrecognized return type )rL   rN   rH   r&   r:   r%   rI   r   rU   r   r	   r   r   rJ   r   r(   returntype_typerM   rO   r!   r*   r5   r   rK   )rA   r>   r@   rX   rM   s        r<   r`   r`      s    	q 174PPPA}v!X '6V]"" 
*:<< ;(7););<<<&y'9'9::: !)))Vv}$$W%%% %	Ax	 	  
'	b 	ba	b 	b 	b qvu555v~~LLL~~~4   	A|	$	$ 'qvw777qv;;("" &&&
8Q88
9
99r=   rX   r+   c               :    t          | j        | j        |          S )N)r>   r@   )r`   rN   r\   )rX   r@   s     r<   return_typerb     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      rY   c                2    g | ]}t          |           S )rY   )rb   ).0rX   r@   s     r<   
<listcomp>z returns_type.<locals>.<listcomp>  s&    EEEQ;q888EEEr=   )lenr	   r"   rb   r    )rc   r@   s    `r<   returns_typerk     si    
2ww!||	RA2a50000EEEE"EEEFFFr=   result)fallback_namefr)   rm   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:   )rh   rZ   rX   s     r<   	<genexpr>zreturn_names.<locals>.<genexpr>-  s=          %&!&            r=   _returnrf   )	enumerater2   returnsr:   inplacer;   	argumentsoutanyschema_order_argumentsrj   append)rn   rm   rv   ir:   name_conflictrX   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   rT   r      r   ' rf   \"z\"r   rY   []{}rE   zc10::SymInt()z,Expected a list default '[...]' but found: ')r5   rH   r&   r:   r%   rj   r*   default_exprrM   r(   
startswithendswithisdigitrO   
ValueErrorJIT_TO_CPP_DEFAULTget)r   rA   r@   sr}   s        r<   r   r   I  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 )NrZ   r   r4   r   c                .    t          |           S )N)r   r   r   r@   r   )argument)rZ   r   r   r   r   r@   s    r<   sub_argumentzargument.<locals>.sub_argument  s.      31
 
 
 	
r=   memory_formatrY   )rB   r@   )nctyper:   defaultr   optionsc              3  ,   K   | ]}|j         d k    V  dS )r   N)r   )rh   xs     r<   rs   zargument.<locals>.<genexpr>  s)      88119&888888r=   r   r   r   )rZ   r   r4   r   )rH   r#   r:   r    possibly_redundant_memory_formatr   r   rN   r   r]   r-   dtypelayoutdevice
pin_memoryallr   r	   r   r,   r   r/   )	rZ   r   r   r   r@   r   r   rB   r   s	    `````   r<   r   r   v  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=   rx   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   r@   r   r   r   )r   tensor_options
no_default)rh   rZ   rX   rx   r   r   r   r@   s      r<   ri   zarguments.<locals>.<listcomp>  sz       (7tC 3
 
 
   #)   r=   )extendnon_outry   )rx   r   r@   r   r   argss   ````` r<   rx   rx     s     DFD 'I%&&&IM""""IM"""I%&&&          r=   N)r2   r'   r0   r3   r1   r3   r4   r5   )rA   r.   rB   r   r>   r3   r?   r3   r@   r3   r4   rC   )rA   r.   r>   r3   rB   r   r?   r3   r@   r3   r4   r   )rZ   r#   rB   r   r@   r3   r4   r   )rA   r.   r>   r3   r@   r3   r4   r   )rX   r+   r@   r3   r4   r   )rc   rd   r@   r3   r4   r   )rn   r)   rm   r5   r4   ro   )r   r5   rA   r.   r@   r3   r4   r5   )rZ   r   r   r   r   r3   r   r3   r@   r3   r   r3   r4   r   )rx   r$   r   r3   r@   r3   r   r3   r   r   r4   r   )?
__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/   r:   rL   rV   r]   r`   rb   rk   r   r   r   r   rx    r=   r<   <module>r      s   " " " " " "                                                                         >                            ( ' ' ' ' '0 -2!	     2 (-#= #= #= #= #= #=^ ).T= T= T= T= T= T=p 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=   