
    j                        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j                  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 d0d"Z!d1d$Z"d2d%Z#d3d'Z$d3d(Z%d4d5d+Z&d6d,Z'dS )7    )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_modeFfuncr   with_namespaceboolreturnstrc                J    |rdnd}| | j                                          dS )Nzat::functionalization:: 	_ViewMeta)r   unambiguous_name)r!   r"   	namespaces      h/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/torchgen/api/functionalization.py	classnamer,   _   s4    -;C))I@3355@@@@    )r   gr   
is_reverseinclude_namespacebool | Nonec               @   ||st          d          |rt          | j        |          S |st          d          | j        t          d          |r#| j        j        j                                        n"| 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)   )r.   r/   r0   r   api_names        r+   r   r   e   s       	O !MNNN 7AF$5666 KIJJJ{EFFF 	6))+++["3355 
 )((((r-   fr   c                X    | j         j                                        }|rd| dS | dS )Nz+at::functionalization::FunctionalInverses::_inverse)r!   r   r)   )r8   r0   r7   s      r+   r4   r4      sA     v{++--H %OXOOOO$$$$r-   r
   c                    t          | j                  dk     rt          d          | j        D ]2}|j                                        st          d|j                   3t          t                    S )N   z"Expected at least one return valuez&Expected tensor-like return type, got )lenreturnsr3   r   is_tensor_liker   r   )r!   rets     r+   returns_typerA      s    
4<1ABBB| V Vx&&(( 	V !T#(!T!TUUU	V Wr-   c                    t          | j                  dk    p=t          | j                  dk    o%| j        d         j                                        d uS )Nr<   r   )r=   r>   r   is_list_liker!   s    r+   is_multi_outputrE      sO    t|q  DLQR4<?#7#D#D#F#Fd#Rr-   list[Binding]c                h    t           g}t          |           r|                    t                     |S )N)has_symbolic_inputs_bindingrE   appendout_index_binding)r!   	argumentss     r+   base_ctor_argumentsrL      s7    ,-I t ,*+++r-   c                $    t          | d          S )NF)owning)
attributesrD   s    r+   extra_ctor_argumentsrP      s    d5))))r-   TrN   c                    | j         j        }|d         j        t          t          j                  k    rt          d|d         j                   t          t          gfd|dd          D             S )Nr   %Expected first arg to be Tensor, got c                <    g | ]}t          j        |           S ))remove_non_owning_ref_typesr   r   ).0arN   s     r+   
<listcomp>zattributes.<locals>.<listcomp>   s)    	W	W	W*
aV
D
D
D	W	W	Wr-   r<   )	rK   flat_allr   r   r   Tensorr3   reapply_views_bindinginverse_return_mode_binding)r!   rN   argss    ` r+   rO   rO      s    >"DAw|x....ST!W\SSTTT# 
X	W	W	WdSTSUSUh	W	W	W r-   c                p   | j         j        }|d         j        t          t          j                  k    rt          d|d         j                   |dd          }d |D             }|st          g|z   S t          |           rt          t          t          t          g|z   S t          t          t          g|z   S )Nr   rR   r<   c                6    g | ]}t          j        |          S  rU   )rV   rW   s     r+   rX   z op_arguments.<locals>.<listcomp>   s#    GGGA,Q//GGGr-   )rK   rY   r   r   r   rZ   r3   base_bindingrE   mutated_view_bindingr\   rJ   )r!   r/   r]   non_self_argsnon_self_bindingss        r+   op_argumentsre      s    >"DAw|x....ST!W\SSTTTHM HGGGG "~ 111
 4   	"$+!	
 "" " $+ "	" "r-   )F)r!   r   r"   r#   r$   r%   )
r.   r   r/   r#   r0   r#   r   r1   r$   r%   )r8   r   r0   r#   r$   r%   )r!   r   r$   r
   )r!   r   r$   r#   )r!   r   r$   rF   )T)r!   r   rN   r#   r$   rF   )r!   r   r/   r#   r$   rF   )(
__future__r   torchgen.apir   torchgen.api.typesr   r   r   r   r	   r
   r   r   r   torchgen.modelr   r   r   r   r   r   rZ   ra   r#   rH   rb   intrJ   r[   InverseReturnModeTr\   r,   r   r4   rA   rE   rL   rP   rO   re   r`   r-   r+   <module>rl      sX   " " " " " " # # # # # #
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
               & w	:6ii6H6H(I(IJJJX((6=114D      &g	:0yy7G7GHHHX"Xfk""	   
 
 
  w	:>ii>P>P0Q0QRRRX((6=114D       G	:;YYu-=-=>>>Xxx
33Td        	:?51A1ABBBX88FK#8#8$SW       ![!8:MNN %g	:0yyAS7T7TUUUX"Xfk""      A A A A A "&) ) ) ) ) )6	% 	% 	% 	%	 	 	 	   	 	 	 	 * * * *    " " " " " "r-   