
    wi@                       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 erd dl3m4Z4 ddd	dIdZ5dd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)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_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       `/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/torchgen/api/cpp.pyr;   r;   L   sZ     ty~D 	~~ * 	GODDFNDK    T)mutableremove_non_owning_ref_typessyminttr.   bindsr   r?   r@   rA   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rC   r?   rA   r4   unrecognized type )
isinstancer&   r;   r%   TensorScalarr6   r   r	   r   r   AssertionErrorr
   r*   valuetype_typeelemr   typer(   sizer   r   repr)rB   rC   r?   r@   rA   rN   s         r=   rM   rM   a   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@   rA   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)rC   r?   rA   r@   z&base type should have been value type rJ   rK   intrF   )r?   rC   rA   DimnameTensor?rH   )%rM   rI   r&   r;   r%   rJ   r   !use_const_ref_for_mutable_tensorsr   r   r	   r   r   rK   r   rL   r*   r6   rN   r   r(   r   r   argumenttype_typerO   r!   r   r   r   r   use_ilistref_for_tensor_listsr   r   r   r   r   rQ   )rB   r?   rC   r@   rA   rrN   s          r=   rW   rW      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   )rW   rO   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 )rM   rO   rI   r&   r;   r%   rJ   r   rV   r   r	   r   r   rK   r   r(   returntype_typerN   rP   r!   r*   r6   r   rL   )rB   r?   rA   rY   rN   s        r=   ra   ra      s    	q 174PPPA}v!X '6V]"" 
*:<< ;(7););<<<&y'9'9::: !)))Vv}$$W%%% %	Ax	 	  'rrrrr{qvu555v~~LLL~~~4   	A|	$	$ 'qvw777qv;;("" &&&
8Q88
9
99r>   rY   r+   c               :    t          | j        | j        |          S )N)r?   rA   )ra   rO   r]   )rY   rA   s     r=   return_typerc     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      rZ   c                2    g | ]}t          |           S )rZ   )rc   ).0rY   rA   s     r=   
<listcomp>z returns_type.<locals>.<listcomp>  s&    EEEQ;q888EEEr>   )lenr	   r"   rc   r    )rd   rA   s    `r=   returns_typerl     si    
2ww!||	RA2a50000EEEE"EEEFFFr>   result)fallback_namefr)   rn   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;   )ri   r[   rY   s     r=   	<genexpr>zreturn_names.<locals>.<genexpr>/  s=          %&!&            r>   _returnrg   )	enumerater3   returnsr;   inplacer<   	argumentsoutanyschema_order_argumentsrk   append)ro   rn   rw   ir;   name_conflictrY   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   rU   r      r   ' rg   \"z\"r   rZ   []{}rF   zc10::SymInt()z,Expected a list default '[...]' but found: ')r6   rI   r&   r;   r%   rk   r*   default_exprrN   r(   
startswithendswithisdigitrP   
ValueErrorJIT_TO_CPP_DEFAULTget)r   rB   rA   sr~   s        r=   r   r   K  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_formatrZ   )rC   rA   )nctyper;   defaultr   optionsc              3  ,   K   | ]}|j         d k    V  dS )r   N)r   )ri   xs     r=   rt   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   rO   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   x  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>   ry   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)ri   r[   rY   ry   r   r   r   rA   s      r=   rj   zarguments.<locals>.<listcomp>  sz       (7tC 3
 
 
   #)   r>   )extendnon_outrz   )ry   r   rA   r   r   argss   ````` r=   ry   ry     s     DFD 'I%&&&IM""""IM"""I%&&&          r>   N)r3   r'   r1   r4   r2   r4   r5   r6   )rB   r.   rC   r   r?   r4   r@   r4   rA   r4   r5   rD   )rB   r.   r?   r4   rC   r   r@   r4   rA   r4   r5   r   )r[   r#   rC   r   rA   r4   r5   r   )rB   r.   r?   r4   rA   r4   r5   r   )rY   r+   rA   r4   r5   r   )rd   re   rA   r4   r5   r   )ro   r)   rn   r6   r5   rp   )r   r6   rB   r.   rA   r4   r5   r6   )r[   r   r   r   r   r4   r   r4   rA   r4   r   r4   r5   r   )ry   r$   r   r4   rA   r4   r   r4   r   r   r5   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   r;   rM   rW   r^   ra   rc   rl   r   r   r   r   ry    r>   r=   <module>r      s   " " " " " "                                                                               >                            ( ' ' ' ' '  )((((((0 -2!	     2 (-#= #= #= #= #= #=^ ).T= T= T= T= T= T=p BG U U U U U U ?D !: !: !: !: !: !:J .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>   