a
    .=ic                  	   @   s  d dl 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mZmZ d dlmZ d dlmZmZ edede	e
ededeejddddd	Zed
ed
e	e
ededeejddddd	Zedede
ededeejddddd	Zedede
ededeejddddd	Zddeeeee edddZeeee dddZeedddZeee dddZeee dddZeeee dddZ dS )    )FunctionSchemaBaseTyBaseTypeNativeFunctionsViewGroupArgument)Binding
NamedCTypeConstRefCType	BaseCTypeCTypetensorTlongTboolT)
dispatcher)ListOptionalbase)nametypeN)r   r   default
annotation)r   Znctypeargumentr   Zmutated_viewZmutated_view_idxreapply_views)r   )g
is_reverseinclude_namespacer   returnc                C   s   |d u r|sJ |rJ| j d us"J | j jj }|r@d| dS | dS |sRJ | j d us`J |rr| jjj n| j jj }d| dS )Nz+at::functionalization::FunctionalInverses::Z_inversez
at::_ops::z::call)Z	view_copyfuncr   Zunambiguous_nameview)r   r   r   r   Zapi_name r   o/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/torchgen/api/functionalization.pyr   I   s    
r   )r   r   r   c                C   sH   | j j}|d jttjks J |dd  }dd |D }tg| }|S )Nr      c                 S   s   g | ]}t j|d dqS )T)Zremove_non_owning_ref_typesr   r   .0ar   r   r    
<listcomp>q   s   z%capture_arguments.<locals>.<listcomp>)	argumentsflat_allr   r   r   Tensorreapply_views_binding)r   r   argsnon_self_argsZnon_self_value_bindingsZall_bindingsr   r   r    capture_argumentsj   s    
r-   )r   r   c                 C   s4   t | jdksJ | jD ]}|j sJ qttS )Nr!   )lenreturnsr   Zis_tensor_liker
   r   )r   retr   r   r    returns_typex   s    
r1   )r   r   c                 C   s   | rt ttgS t tgS d S )N)base_bindingmutated_view_bindingmutated_view_idx_binding)r   r   r   r    outer_arguments   s    
r5   c                 C   s4   t | jdks,t | jdkr0| jd j r0tS d S )Nr!   r   )r.   r/   r   Zis_list_liker4   )r   r   r   r    inner_call_index   s    r6   c                 C   sz   | j j}|d jttjks J |dd  }dd |D }|sHtg| S t| }|d urhttt	|g| S ttt	g| S d S )Nr   r!   c                 S   s   g | ]}t |qS r   r"   r#   r   r   r    r&          z#inner_arguments.<locals>.<listcomp>)
r'   r(   r   r   r   r)   r2   r6   r3   r*   )r   r   r+   r,   Znon_self_bindingsZindex_bindingr   r   r    inner_arguments   s*    
r8   )!Ztorchgen.modelr   r   r   r   r   Ztorchgen.api.typesr   r   r	   r
   r   r   r   r   Ztorchgen.apir   typingr   r   r)   r2   r3   r4   boolr*   strr   r-   r1   r5   r6   r8   r   r   r   r    <module>   s`   (
!

