
    '}h                     J   d dl 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 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j4                        dd      d	      Z edd      Z ed ed ee             ed eej4                        dd      d	      Zdddedededee   def
dZdededefdZ dededee   fdZ!dedefdZ"dedee   fdZ#dedee   fdZ$dededee   fdZ%y)    )ListOptional)
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   g
is_reverseinclude_namespacereturnc                *   ||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)r!   r"   r#   r   api_names        ]/var/www/html/test/engine/venv/lib/python3.12/site-packages/torchgen/api/functionalization.pyr   r   [   s      zAFF$566;;"""  	
))+[[""335 
 z((    fc                 d    | j                   j                  j                         }|rd| dS | dS )Nz+at::functionalization::FunctionalInverses::_inverse)r)   r   r*   )r.   r#   r+   s      r,   r&   r&   s   s9     vv{{++-H<XJhOO8$$r-   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 )Nr2   )lenreturnsr   is_tensor_liker   r   )r)   rets     r,   returns_typerE      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_argumentsrJ      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 )Nr2   r   )rA   rB   r   is_list_likerI   )r)   s    r,   inner_call_indexrM      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   r2   )r4   r5   r   r   r   r6   r   r   rG   rM   rH   r7   )r)   r"   r:   r;   r<   non_self_bindingsindex_bindings          r,   inner_argumentsrQ      s    >>""D7<<8FMM2222HM :GGA,,Q/GG~ 111
 ).$$+	
 "" " $+ "	" "# Hs   B+)&typingr   r   torchgen.apir   torchgen.api.typesr   r   r   r	   r
   r   r   r   r   torchgen.modelr   r   r   r   r   r   r6   rG   rH   rI   boolr8   InverseReturnModeTr7   strr   r&   r?   rE   rJ   rM   rQ    r-   r,   <module>rZ      sO   ! #
 
 
 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"  * %))) ) 	)
 D>) 	)0	%N 	%t 	% 	%N 4 DM $~ % 84 8DM 8> hw.? ". "d "tG} "r-   