
    9j                     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      ^/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torchgen/api/functionalization.py	classnamer)   _   s+    -;)I[3356i@@    )r   c               `   ||st        d      |rt        | j                  |      S |st        d      | j                  t        d      |r.| j                  j                  j
                  j                         n-| j                  j                  j
                  j                         }d| dS )Nz*reapply_views can only be None for reversez*include_namespace must be True for forwardz&view_copy must be non-None for forwardz
at::_ops::z::call)AssertionErrorreverse_nameview	view_copyr%   r   r$   )g
is_reverseinclude_namespacer   api_names        r(   r   r   e   s       !MNNAFF$566IJJ{{EFF  	
))+[[""335 
 z((r*   c                d    | j                   j                  j                         }|rd| dS | dS )Nz+at::functionalization::FunctionalInverses::_inverse)r%   r   r$   )fr2   r3   s      r(   r-   r-      s9     vv{{++-H<XJhOO8$$r*   c                    t        | j                        dk  rt        d      | j                  D ]4  }|j                  j	                         rt        d|j                          t        t              S )N   z"Expected at least one return valuez&Expected tensor-like return type, got )lenreturnsr,   r   is_tensor_liker   r   )r%   rets     r(   returns_typer=      sh    
4<<1ABB|| Vxx&&( #I#((!TUUV
 Wr*   c                    t        | j                        dkD  xsC t        | j                        dk(  xr) | j                  d   j                  j                         d uS )Nr8   r   )r9   r:   r   is_list_liker%   s    r(   is_multi_outputrA      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_bindingrA   appendout_index_binding)r%   	argumentss     r(   base_ctor_argumentsrG      s)    ,-I t*+r*   c                    t        | d      S )NF)owning)
attributesr@   s    r(   extra_ctor_argumentsrK      s    d5))r*   c                (   | j                   j                  }|d   j                  t        t        j
                        k7  rt        d|d   j                         t        t        g|dd  D cg c]  }t        j                  ||       c}S c c}w )Nr   %Expected first arg to be Tensor, got r8   )remove_non_owning_ref_types)rF   flat_allr   r   r   Tensorr,   reapply_views_bindinginverse_return_mode_bindingr   r   )r%   rI   argsas       r(   rJ   rJ      s    >>""DAw||x..DT!W\\NSTT# OSSTSUh	W*

aV
D	W  
Xs   -Bc                   | j                   j                  }|d   j                  t        t        j
                        k7  rt        d|d   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   rM   r8   )rF   rO   r   r   r   rP   r,   r   r   base_bindingrA   mutated_view_bindingrR   rE   )r%   r1   rS   non_self_argsrT   non_self_bindingss         r(   op_argumentsrZ      s    >>""DAw||x..DT!W\\NSTTHM :GGA,,Q/GG~ 111
 4 $+!	
 "" " $+ "	" "! Hs   $C)F)r%   r   r&   boolreturnstr)
r0   r   r1   r[   r2   r[   r   zbool | Noner\   r]   )r6   r   r2   r[   r\   r]   )r%   r   r\   r
   )r%   r   r\   r[   )r%   r   r\   list[Binding])T)r%   r   rI   r[   r\   r^   )r%   r   r1   r[   r\   r^   )(
__future__r   torchgen.apir   torchgen.api.typesr   r   r   r   r	   r
   r   r   r   torchgen.modelr   r   r   r   r   r   rP   rV   r[   rC   rW   intrE   rQ   InverseReturnModeTrR   r)   r   r-   r=   rA   rG   rK   rJ   rZ    r*   r(   <module>rf      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 "&)) ) 	)
 ) 	)6	%		 *"r*   