
    ¯wg                       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                   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d eej2                        dd      d	      Z edd      Z ed ed ee             ed eej2                        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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   mutated_viewmutated_view_idxreapply_viewszat::functionalizationInverseReturnModeinverse_return_mode)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_copyfuncr   unambiguous_name)g
is_reverseinclude_namespacer   api_names        c/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/torchgen/api/functionalization.pyr   r   [   s      zAFF$566;;"""  	
))+[[""335 
 z((    c                d    | j                   j                  j                         }|rd| dS | dS )Nz+at::functionalization::FunctionalInverses::_inverse)r$   r   r%   )fr(   r)   s      r*   r!   r!   s   s9     vv{{++-H<XJhOO8$$r+   c               $   | j                   j                  }|d   j                  t        t        j
                        k(  sJ |dd  }|D cg c]  }t        j                  |d       }}|rt        nt        g}|j                  |       |S c c}w )Nr      T)remove_non_owning_ref_types)	argumentsflat_allr   r   r   Tensorr   r   inverse_return_mode_bindingreapply_views_bindingextend)r$   r'   argsnon_self_argsanon_self_value_bindingsall_bindingss          r*   capture_argumentsr=      s     >>""D7<<8FMM2222HMJWEF
A4@ 
 (2#7LL /0s   Bc                    t        | j                        dk\  sJ | j                  D ]  }|j                  j                         rJ  t	        t
              S )Nr0   )lenreturnsr   is_tensor_liker   r   )r$   rets     r*   returns_typerC      sO    t||!!!|| )xx&&((() Wr+   c                @    | rt         t        t        gS t         t        gS )N)base_bindingmutated_view_bindingmutated_view_idx_binding)r'   s    r*   outer_argumentsrH      s     24LMM677r+   c                    t        | j                        dkD  s?t        | j                        dk(  r-| j                  d   j                  j                         rt        S y )Nr0   r   )r?   r@   r   is_list_likerG   )r$   s    r*   inner_call_indexrK      sH     4<<1DLLQ4<<?#7#7#D#D#F''r+   c                `   | j                   j                  }|d   j                  t        t        j
                        k(  sJ |dd  }|D cg c]  }t        j                  |       }}|s
t        g|z   S t        |       }|t        t        t        |g|z   S t        t        t        g|z   S c c}w )Nr   r0   )r2   r3   r   r   r   r4   r   r   rE   rK   rF   r5   )r$   r'   r8   r9   r:   non_self_bindingsindex_bindings          r*   inner_argumentsrO      s    >>""D7<<8FMM2222HM :GGA,,Q/GG~ 111
 ).$$+	
 "" " $+ "	" "# Hs   B+)
r&   r   r'   boolr(   rP   r   zbool | Nonereturnstr)r.   r   r(   rP   rQ   rR   )r$   r   r'   rP   rQ   list[Binding])r$   r   rQ   r
   )r'   rP   rQ   rS   )r$   r   rQ   zBinding | None)$
__future__r   torchgen.apir   torchgen.api.typesr   r   r   r   r	   r
   r   r   r   torchgen.modelr   r   r   r   r   r   r4   rE   rF   rG   rP   r6   InverseReturnModeTr5   r   r!   r=   rC   rH   rK   rO    r+   r*   <module>rZ      s   " #
 
 
 4 	6i6H(IJ(6==14D  	>i>P0QR(6==14D   #	-Ie4DE(6==14D    	?51AB8FKK#8$SW   !!8:MN %	0yAS7TU"fkk"  * "&)) ) 	)
 ) 	)0	%$8"r+   