
    '}hH@                        d dl mZmZmZmZ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 d dl3m4Z4 dddde+d	e5d
e5de6fdZ7dddde2de	de5de5dee   f
dZ8dddde2de5de	de5de5defdZ9ddde'de	de5defdZ:ddde2de5de5defdZ;ddde/de5defdZ<dddee/   de5defdZ=ddde-d e6dee6   fd!Z>d"d#d$d%d&d'd(d)Z?d*e6de2de5de6fd+Z@dddee'e1e0f   d,ee6   d-e5d.e5de5d/e5dee   fd0ZAddd1e(d.e5de5d-e5d,ee6   dee   fd2ZBy3)4    )ListOptionalSequenceSetUnion)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funcr3   r4   returnc                    t        | j                  j                        }|r|dz  }| j                         r|r|dz  }|S |dz  }|S )N_symint_outf_out)strname	is_out_fn)r5   r3   r4   r<   s       O/var/www/html/test/engine/venv/lib/python3.12/site-packages/torchgen/api/cpp.pyr<   r<   E   sP     tyy~~D	~~*GOD K FNDK    )remove_non_owning_ref_typessyminttbindsr@   rA   c                F   t        | t              r| j                  t        j                  k(  s| j                  t        j
                  k(  ry t        |       dk(  r4|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                  ||      }|y t        |t!        |j"                              S t        | t$              rTt        | j                        dk(  r;| j&                  J t        |t)        t        t*              | j&                              S y t        dt-        |              )NSymIntz1string ref->value conversion: not implemented yetrC   rA   boolunrecognized type )
isinstancer)   r<   r(   TensorScalarr;   r   r   r   r   AssertionErrorr   r-   valuetype_typeelemr   typer+   sizer
   r   repr)rB   rC   r@   rA   rN   s        r>   rM   rM   Z   s?    !X66V]]"aff&=Vx!%7);<<!%5)9::&vv#$G  %+?+G!HII	A|	$affE&A<%tyy!9::	Ax	 qvv;& 66%%%eZ	%0@!&&%IJJ1$q';<<r?   mutablec                6
   t        | |||      }||S t        | t              r| j                  t        j
                  k(  rZ|r6t        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(  rc|r6t        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(              rVt#        | j$                  j$                        dk(  r4|rt        |t        t,                    S t        |t        t*                    S t/        | j$                  |||      }t        |t'        |j0                              S t        | t(              r?t#        | j$                        dk(  r=|r"t        |t3        t        t4                          S t        |t        t6                    S t#        | j$                        dk(  r||rF|r"t        |t3        t        t8                          S t        |t3        t        t4                          S |rt        |t        t:                    S t        |t        t6                    S t#        | j$                        dk(  rOt        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(  r4t        |t        tG        t'        t        t                                      S t/        | j$                  |||      }t        |tC        |j0                              S t        d
tI        |              )N)rC   rA   r@   z&base type should have been value type rJ   rK   intrE   )rR   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-   r;   rN   r   r+   r   r   argumenttype_typerO   r$   r   r   r   r   use_ilistref_for_tensor_listsr   r    r   r   r   rQ   )rB   rR   rC   r@   rA   rrN   s          r>   rX   rX      s    		$?		A 	}!X66V]]"uFF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!;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!%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?   rA   ac                H    t        | j                  | j                  ||      S )N)rR   rA   rC   )rX   rO   is_write)r\   rC   rA   s      r>   argument_typer_      s    QVVQZZeTTr?   c                   t        | dd      }||j                  S t        | t              r| j                  t
        j                  k(  rU|rDt        j                         rt        t        t                    S t        t        t                    S t        t              S | j                  t
        j                  k(  rt        t              S t        | t              rA|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)rR   z'fixed size list returns not supported: rJ   zunrecognized return type )rM   rO   rI   r)   r<   r(   rJ   r   rW   r   r   r"   r   rK   r   r+   returntype_typerN   rP   r$   r-   r;   r   rL   )rB   rR   rA   rZ   rN   s        r>   rb   rb      s/    	q 1$?A}vv!X66V]]"::<(7);<<&y'9:: !))VVv}}$W%%	Ax	 	ba	bqvvu5vv~L!HLL~4  	A|	$qvvw7qvv;(" &&
4QC8
99r?   rZ   c                F    t        | j                  | j                  |      S )N)rR   rA   )rb   rO   r^   )rZ   rA   s     r>   return_typerd   
  s    1661::fEEr?   rsc          	          t        |       dk(  rt        t              S t        |       dk(  rt        | d   |      S t	        | D cg c]  }t        ||       c}      S c c}w )Nr      r[   )lenr   r%   rd   r#   )re   rA   rZ   s      r>   returns_typeri     sT    
2w!|	RA2a500"EQ;q8EFFEs   A result)fallback_namefrk   c                   g }t        | j                  j                        D ]3  \  }| j                  j                  j                  j                  r|dk(  sJ d       d}n| j                  j                         r.| j                  j                  j                  |   j                  }nj                  ret        fd| j                  j                         D              }|r*| j                  j                         sj                   d}n7j                  }n*t        | j                  j                        dk(  r|n| | }|j                  |       6 |S )Nr   z.illegal inplace function with multiple returnsselfc              3   P   K   | ]  }j                   |j                   k(    y w)N)r<   ).0r\   rZ   s     r>   	<genexpr>zreturn_names.<locals>.<genexpr>(  s#       %&!&&  s   #&_returnrg   )	enumerater5   returnsr<   inplacer=   	argumentsoutanyschema_order_argumentsrh   append)rl   rk   rt   ir<   name_conflictrZ   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&&)vv
 %($71$<=]OTUSVBWDt56 Nr?   falsetruec10::nulloptzat::Reduction::Mean{}zMemoryFormat::Contiguous	at::kLong)FalseTrueNoneMeanz[]contiguous_formatlongdc                :   | dk(  rt        |      dk(  ryt        |t              r|j                  t        j                   u rt        |       dk\  r| d   dk(  rz| d   dk(  rrd}d	}|d	z   t        |       k  rW| |   d
k7  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  rWd| dS t        |t              r| dk(  ryt        | |j                  |      S t        |t              rx| j                  d      r| j                  d      rd| d	d z   dz   S |r.| j                         rt        |j                        dk(  rd|  dS |j                  t        d|  d      t        j!                  | |       S )Nr   rV   r      r   ' rg   \"z\"r   r[   []{}rE   zc10::SymInt()z,Expected a list default '[...]' but found: ')r;   rI   r)   r<   r(   rh   r-   default_exprrN   r+   
startswithendswithisdigitrP   
ValueErrorJIT_TO_CPP_DEFAULTget)r   rB   rA   sr{   s        r>   r   r   D  s   F{s1v*!X166VZZ#7q6Q;1Q43;1R5C<AAa%#a&.Q44<ts{U
QqT	FAQx3SQq1q5\)FA a%#a&. qc8O!\";!Aqvvf55!X<<C1R=3&&		AFFx(?!!A&&VV^KA3aPQQ!!!Q''r?   cpp_no_default_argsmethodfaithfulhas_tensor_optionsc                   dt         t        t        t        f   dt        t
           ffd}t        | t              r| 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rK || j                         || j                        z    || j                         z    || j"                        z   S d }dvsJ t%        d	 | j%                         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/        |        y )Nr\   r6   c                 &    t        |       S )N)r   r   r   rA   r   )argument)r\   r   r   r   r   rA   s    r>   sub_argumentzargument.<locals>.sub_argumentz  s$      31
 	
r?   memory_formatr[   rF   )nctyper<   defaultr   optionsc              3   :   K   | ]  }|j                   d k(    yw)r   N)r   )rp   xs     r>   rq   zargument.<locals>.<genexpr>  s     81199&8s   r   r   r   )r   r&   r0   r/   r   r   rI   r<   r    possibly_redundant_memory_formatr   r   rO   r_   dtypelayoutdevice
pin_memoryallr   r   r!   r   r2   )	r\   r   r   r   rA   r   r   rC   r   s	    `````   r>   r   r   q  s   

1<?@

	g

 

 !X66_$);"CCEFFE!%66,,1F"199affVDG$QeFCVV	
 	
 
A-	.QWW%qxx()qxx() q||,- G$7777888F*%%i>1JK"#	  
A|	$I

++Qr?   rv   c                |   g }|r7|j                  | j                         |j                  | j                         n6|j                  | j                         |j                  | j                         |D cg c]8  }t        ||||| j                  d u|      D ]  }|r|j                         n| : c}}S c c}}w )N)r   rA   r   r   r   )extendnon_outrw   r   tensor_options
no_default)rv   r   rA   r   r   argsr\   rZ   s           r>   rv   rv     s     IKDI%%&IMM"IMM"I%%& (77tC 3
  #))  s   7=B8N)Ctypingr   r   r   r   r   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/   r0   r1   torchgen.utilsr2   rG   r;   r<   rM   rX   r_   rb   rd   ri   r}   r   r   r   rv    r?   r>   <module>r      s   7 7        >    (. -2!	
 &* 	
 	2 )."="= "= "&	"=
 "= j"=\ ).S=S= S= 	S=
 "&S= S= S=n BG UX U U$ U: U ?D #:t #: #:t #: #:N .3 F6 Fd Fu F
 :? GXf% G$ G5 G =E N c RU B !
3 '(C '(D '(T '(c '(f EX-|;<E SE 	E
 E E E 
']EX 	  	
  S 
']r?   