o
    h                     @   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dedededee def
ddZdededee fddZdede
fddZdedee fddZdedee fddZdededee f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   nctypeargumentr   mutated_viewmutated_view_idxreapply_views)r   g
is_reverseinclude_namespacereturnc                C   s   |d u r|sJ |r%| j d usJ | j jj }|r d| dS | dS |s)J | j d us0J |r9| jjj n| j jj }d| dS )Nz+at::functionalization::FunctionalInverses::_inversez
at::_ops::z::call)	view_copyfuncr   unambiguous_nameview)r   r   r   r   api_name r&   T/var/www/html/ai/venv/lib/python3.10/site-packages/torchgen/api/functionalization.pyr   K   s   
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)remove_non_owning_ref_typesr   r   .0ar&   r&   r'   
<listcomp>s   s    z%capture_arguments.<locals>.<listcomp>)	argumentsflat_allr   r   r   Tensorreapply_views_binding)r"   r   argsnon_self_argsnon_self_value_bindingsall_bindingsr&   r&   r'   capture_argumentsl   s   
r7   c                 C   s4   t | jdks	J | jD ]	}|j sJ qttS )Nr(   )lenreturnsr   is_tensor_liker   r   )r"   retr&   r&   r'   returns_typez   s   
r<   c                 C   s   | rt ttgS t tgS )N)base_bindingmutated_view_bindingmutated_view_idx_binding)r   r&   r&   r'   outer_arguments   s   
r@   c                 C   s4   t | jdkst | jdkr| jd j rtS d S )Nr(   r   )r8   r9   r   is_list_liker?   )r"   r&   r&   r'   inner_call_index   s   rB   c                 C   sv   | j j}|d jttjksJ |dd  }dd |D }|s$tg| S t| }|d ur4ttt	|g| S ttt	g| S )Nr   r(   c                 S   s   g | ]}t |qS r&   r*   r+   r&   r&   r'   r.      s    z#inner_arguments.<locals>.<listcomp>)
r/   r0   r   r   r   r1   r=   rB   r>   r2   )r"   r   r3   r4   non_self_bindingsindex_bindingr&   r&   r'   inner_arguments   s*   
rE   )!typingr   r   torchgen.apir   torchgen.api.typesr   r   r   r   r	   r
   r   r   torchgen.modelr   r   r   r   r   r1   r=   r>   r?   boolr2   strr   r7   r<   r@   rB   rE   r&   r&   r&   r'   <module>   sj    (

!

