
    ^j'@                       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$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 erd dl2m3Z3 ddd		 	 	 	 	 	 	 d$d
Z4ddd	 	 	 	 	 	 	 	 	 d%dZ5ddd	 	 	 	 	 	 	 	 	 	 	 d&dZ6ddd'dZ7ddd(dZ8ddd)dZ9ddd*dZ:ddd+dZ;ddddddddZ<d,d Z=dd	 	 	 	 	 	 	 	 	 	 	 	 	 d-d!Z>dd	 	 	 	 	 	 	 	 	 	 	 d.d"Z?y#)/    )annotations)TYPE_CHECKING)assert_never)local)ArgName
ArrayCTypeArrayRefCType	BaseCTypeBaseTypeToCppMappingBindingboolTConstRefCTypeCType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_overloadc                   t        | j                  j                        }|r|dz  }| j                         r|r|dz  }|S |dz  }|S )N_symint_outf_out)strname	is_out_fn)funcr0   r1   r7   s       [/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torchgen/api/cpp.pyr7   r7   K   sP     tyy~~D	~~*GOD K FNDK    Tmutablesymintc                  t        | t              r| j                  t        j                  t        j
                  fv ry t        |       dk(  r4|rt        |t        t                    S t        |t        t                    S t        |t        t        | j                                 S t        | t              r;t        | j                  |||      }|y t        |t        |j                               S t        | t"              r]t        | j                        dk(  rD| j$                  t'        d      t        |t)        t        t*              | j$                              S y t'        dt-        |              )NSymIntbindsr=   r>   boolzbool ListType must have a sizeunrecognized type )
isinstancer&   r7   r%   TensorScalarr6   r   r
   r   r   r   r*   valuetype_typeelemr   typer(   sizeAssertionErrorr   r   repr)trB   r=   r>   rI   s        r:   rH   rH   `   s    !X66fmmV]]33Vx!%7);<<!%5)9::%+?+G!HII	A|	$affE76R<%tyy!9::	Ax	 qvv;& vv~$%EFFeZ	%0@!&&%IJJ1$q';<<r;   )remove_non_owning_ref_typesr>   c               	   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(  r4t        |t        tE        t'        t        t                                      S t/        | j$                  |||      }t        |tC        |j0                              S t        d	tG        |              )
NrA   z&base type should have been value type rF   rG   intr@   )r=   rB   r>   Tensor?rD   )$rH   rE   r&   r7   r%   rF   r   !use_const_ref_for_mutable_tensorsr   r   r
   r   r   rG   r   rL   r*   r6   rI   r   r(   r   r   argumenttype_typerJ   r!   r   r   r   r   use_ilistref_for_tensor_listsr   r   r	   r   rM   )rN   r=   rB   rO   r>   rrI   s          r:   rT   rT      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%}Y}Yw=O/P%QR  !fU%tyy!9::1$q';<<r;   r>   c               H    t        | j                  | j                  ||      S )N)r=   r>   rB   )rT   rJ   is_write)arB   r>   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              rI|rt!        d      t#        | j$                  d      }| j&                  t!        d|        t)        |      S t        | t*              r:t#        | j$                  |      }t-        | j$                        dk(  rt/        |      S t!        d	|        )
N__placeholder__TrA   zTNative functions should never return a mutable tensor list. They should return void.F)r=   z'fixed size list returns not supported: rF   zunrecognized return type )rH   rJ   rE   r&   r7   r%   rF   r   rS   r   r
   r   r   rG   r   r(   rL   returntype_typerI   rK   r!   r*   r6   r   )rN   r=   r>   rV   rI   s        r:   r^   r^      s5    	q 174PA}vv!X66V]]"::<(7);<<&y'9:: !))VVv}}$W%%	Ax	  +  qvvu566 #J1#!NOO4  	A|	$qvvw7qvv;(" &&
4QC8
99r;   c               F    t        | j                  | j                  |      S )Nr<   )r^   rJ   rY   )rV   r>   s     r:   return_typer`     s    1661::fEEr;   c          	         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      rW   )lenr
   r"   r`   r    )rsr>   rV   s      r:   returns_typere     sT    
2w!|	RA2a500"EQ;q8EFFEs   A result)fallback_namec                  g }t        | j                  j                        D ]7  \  }| j                  j                  j                  j                  r|dk7  rt        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                  |       : |S )Nr   z.illegal inplace function with multiple returnsselfc              3  P   K   | ]  }j                   |j                   k(    y w)N)r7   ).0rZ   rV   s     r:   	<genexpr>zreturn_names.<locals>.<genexpr>,  s#       %&!&&  s   #&_returnrb   )	enumerater9   returnsr7   inplacerL   r8   	argumentsoutanyschema_order_argumentsrc   append)frg   ro   ir7   name_conflictrV   s         @r:   return_namesry     s   G!&&..) 1 66;;##Av$%UVVD VV66##''*//DVV  *+&&*G*G*I  M QVV%5%5%7&&)vv
 %($71$<=]OTUSVBWDt78 Nr;   falsetrue::std::nulloptzat::Reduction::Mean{}zc10::MemoryFormat::Contiguous	at::kLong)FalseTrueNoneMeanz[]contiguous_formatlongc               :   | 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   rR   r}      r   ' rb   \"z\"r|   rW   []{}r@   zc10::SymInt()z,Expected a list default '[...]' but found: ')r6   rE   r&   r7   r%   rc   r*   default_exprrI   r(   
startswithendswithisdigitrK   
ValueErrorJIT_TO_CPP_DEFAULTget)drN   r>   srw   s        r:   r   r   H  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;   c               v   	 	 	 	 d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 rt        d      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 )Nc                &    t        |       S )N)cpp_no_default_argsmethodfaithfulr>   has_tensor_options)argument)rZ   r   r   r   r   r>   s    r:   sub_argumentzargument.<locals>.sub_argument~  s$      31
 	
r;   memory_formatrW   )rB   r>   )nctyper7   defaultr   optionsz.'options' should not be in cpp_no_default_argsc              3  :   K   | ]  }|j                   d k(    yw)r   N)r   )rk   xs     r:   rl   zargument.<locals>.<genexpr>  s     81199&8s   r}   r   r~   )rZ   0Argument | TensorOptionsArguments | SelfArgumentreturnlist[Binding])rE   r#   r7   r    possibly_redundant_memory_formatr   r   rJ   r   r[   r-   dtypelayoutdevice
pin_memoryrL   allr   r
   r   r,   r   r   )	rZ   r   r   r   r>   r   r   rB   r   s	    `````   r:   r   r   u  s   

;

	

 

 !X66_$);"CCEFFE"66,,1F"199affVDG$QeFCVV	
 	
 
A-	.QWW%qxx()qxx() q||,- G//$%UVV888F*%%i>1JK"#	  
A|	$I

++Qr;   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   r>   r   r   r   )extendnon_outrr   r   tensor_options
no_default)rq   r   r>   r   r   argsrZ   rV   s           r:   rq   rq     s     DFDI%%&IMM"IMM"I%%& (77tC 3
  #))  s   7=B8N)r9   r'   r0   rC   r1   rC   r   r6   )
rN   r.   rB   r   r=   rC   r>   rC   r   zNamedCType | None)rN   r.   r=   rC   rB   r   rO   rC   r>   rC   r   r   )rZ   r#   rB   r   r>   rC   r   r   )rN   r.   r=   rC   r>   rC   r   r   )rV   r+   r>   rC   r   r   )rd   zSequence[Return]r>   rC   r   r   )rv   r)   rg   r6   r   zSequence[str])r   r6   rN   r.   r>   rC   r   r6   )rZ   r   r   set[str]r   rC   r   rC   r>   rC   r   rC   r   r   )rq   r$   r   rC   r>   rC   r   rC   r   r   r   r   )@
__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"   torchgen.modelr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   collections.abcr/   r7   rH   rT   r[   r^   r`   re   ry   r   r   r   rq    r;   r:   <module>r      s   "   *        <     (0 -2!	
 &* 	
 	2 == = 	=
 = =T ).Q=Q= Q= 	Q=
 "&Q= Q= Q=j BG U ?D &:T .3 F
 :? G =E D !
8 '(f F7F "F 	F
 F F F FZ 	  	
  " r;   