
    i                    f   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 d dlmZmZmZmZmZmZ  ed ed e	 ee                   ed eej*                        dd      d	      Z ed
 ed
 ee             ed
 eej.                        dd      d	      Z ed ed e	 ee                   ed eej*                        dd      d	      Z ed ed ee             ed eej4                        dd      d	      Z ed ed ee             ed eej.                        dd      d	      Z edd      Z ed ed ee             ed eej.                        dd      d	      ZdddZdd	 	 	 	 	 	 	 	 	 ddZ ddZ!ddZ"d dZ#d!dZ$d!dZ%d"d#dZ&d$dZ'y)%    )annotations)
dispatcher)	BaseCppType	BaseCTypeBindingboolTConstRefCTypeCTypelongT
NamedCTypetensorT)ArgumentBaseTyBaseTypeFunctionSchemaNativeFunctionNativeFunctionsViewGroupbase)nametypeN)r   r   default
annotation)r   nctypeargumentr   has_symbolic_inputsmutated_view	out_indexreapply_viewszat::functionalizationInverseReturnModeinverse_return_modec                L    |rdnd}| | j                   j                          dS )Nzat::functionalization:: 	_ViewMeta)r   unambiguous_name)funcwith_namespace	namespaces      X/var/www/html/engine/venv/lib/python3.12/site-packages/torchgen/api/functionalization.py	classnamer)   _   s+    -;)I[3356i@@    )r   c               *   ||sJ |rt        | j                  |      S |sJ | j                  J |r.| j                  j                  j                  j                         n-| j                  j                  j                  j                         }d| dS )Nz
at::_ops::z::call)reverse_nameview	view_copyr%   r   r$   )g
is_reverseinclude_namespacer   api_names        r(   r   r   e   s      zAFF$566;;"""  	
))+[[""335 
 z((r*   c                d    | j                   j                  j                         }|rd| dS | dS )Nz+at::functionalization::FunctionalInverses::_inverse)r%   r   r$   )fr1   r2   s      r(   r,   r,   }   s9     vv{{++-H<XJhOO8$$r*   c                    t        | j                        dk\  sJ | j                  D ]  }|j                  j                         rJ  t	        t
              S )N   )lenreturnsr   is_tensor_liker   r   )r%   rets     r(   returns_typer<      sO    t||!!!|| )xx&&((() Wr*   c                    t        | j                        dkD  xsC t        | j                        dk(  xr) | j                  d   j                  j                         d uS )Nr7   r   )r8   r9   r   is_list_liker%   s    r(   is_multi_outputr@      sO    t||q  DLLQR4<<?#7#7#D#D#Fd#Rr*   c                T    t         g}t        |       r|j                  t               |S )N)has_symbolic_inputs_bindingr@   appendout_index_binding)r%   	argumentss     r(   base_ctor_argumentsrF      s)    ,-I t*+r*   c                    t        | d      S )NF)owning)
attributesr?   s    r(   extra_ctor_argumentsrJ      s    d5))r*   c                    | j                   j                  }|d   j                  t        t        j
                        k(  sJ t        t        g|dd  D cg c]  }t        j                  ||       c}S c c}w )Nr   r7   )remove_non_owning_ref_types)
rE   flat_allr   r   r   Tensorreapply_views_bindinginverse_return_mode_bindingr   r   )r%   rH   argsas       r(   rI   rI      sr    >>""D7<<8FMM2222# OSSTSUh	W*

aV
D	W  
Xs   A6c                d   | j                   j                  }|d   j                  t        t        j
                        k(  sJ |dd  }|D cg c]  }t        j                  |       }}|s
t        g|z   S t        |       rt        t        t        t        g|z   S t        t        t        g|z   S c c}w )Nr   r7   )rE   rM   r   r   r   rN   r   r   base_bindingr@   mutated_view_bindingrP   rD   )r%   r0   rQ   non_self_argsrR   non_self_bindingss         r(   op_argumentsrX      s    >>""D7<<8FMM2222HM :GGA,,Q/GG~ 111
 4 $+!	
 "" " $+ "	" "! Hs   B-)F)r%   r   r&   boolreturnstr)
r/   r   r0   rY   r1   rY   r   zbool | NonerZ   r[   )r5   r   r1   rY   rZ   r[   )r%   r   rZ   r
   )r%   r   rZ   rY   )r%   r   rZ   list[Binding])T)r%   r   rH   rY   rZ   r\   )r%   r   r0   rY   rZ   r\   )(
__future__r   torchgen.apir   torchgen.api.typesr   r   r   r   r	   r
   r   r   r   torchgen.modelr   r   r   r   r   r   rN   rT   rY   rB   rU   intrD   rO   InverseReturnModeTrP   r)   r   r,   r<   r@   rF   rJ   rI   rX    r*   r(   <module>rd      s   " #
 
 
 & 	6i6H(IJ(6==14D  &	0y7GH"fkk"	 
  	>i>P0QR(6==14D   	;Yu-=>x

3Td    	?51AB8FKK#8$SW   !!8:MN %	0yAS7TU"fkk"  A "&)) ) 	)
 ) 	)0	%	 *"r*   