o
    ,i                     @   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mZ d dlmZ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e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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)	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                C   sb   |d u r|sJ |rt | j|S |sJ | jd usJ |r$| jjj n| jjj }d| dS )Nz
at::_ops::z::call)reverse_nameview	view_copyfuncr   unambiguous_name)r    r!   r"   r   api_name r*   \/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/torchgen/api/functionalization.pyr   [   s   r   fc                 C   s&   | j j }|rd| dS | dS )Nz+at::functionalization::FunctionalInverses::_inverse)r'   r   r(   )r,   r"   r)   r*   r*   r+   r$   s   s   
r$   r'   c                C   sV   | j j}|d jttjksJ |dd  }dd |D }|r!tn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    z%capture_arguments.<locals>.<listcomp>)		argumentsflat_allr   r   r   Tensorinverse_return_mode_bindingreapply_views_bindingextend)r'   r!   argsnon_self_argsnon_self_value_bindingsall_bindingsr*   r*   r+   capture_arguments   s   

r?   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_type   s   
rD   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   
rH   c                 C   s4   t | jdkst | jdkr| jd j rtS d S )Nr.   r   )r@   rA   r   is_list_likerG   )r'   r*   r*   r+   inner_call_index   s   rJ   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*   r0   r1   r*   r*   r+   r4      s    z#inner_arguments.<locals>.<listcomp>)
r5   r6   r   r   r   r7   rE   rJ   rF   r8   )r'   r!   r;   r<   non_self_bindingsindex_bindingr*   r*   r+   inner_arguments   s*   
rM   )&typingr   r   torchgen.apir   torchgen.api.typesr   r   r   r   r	   r
   r   r   r   torchgen.modelr   r   r   r   r   r   r7   rE   rF   rG   boolr9   InverseReturnModeTr8   strr   r$   r?   rD   rH   rJ   rM   r*   r*   r*   r+   <module>   s    , 
	


