a
    d                  	   @   s  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 d dlmZmZmZ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 )    )ListOptional)
dispatcher)	BaseCTypeBindingboolTConstRefCTypeCTypelongT
NamedCTypetensorT)ArgumentBaseTyBaseTypeFunctionSchemaNativeFunctionsViewGroup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   g/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/torchgen/api/functionalization.pyr   J   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>r   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_argumentsk   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_typey   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   )!typingr   r   Ztorchgen.apir   Ztorchgen.api.typesr   r   r   r   r	   r
   r   r   Ztorchgen.modelr   r   r   r   r   r)   r2   r3   r4   boolr*   strr   r-   r1   r5   r6   r8   r   r   r   r    <module>   s`   (
!

