U
    •Ê¹j  ã                	   @   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 kr|st ‚|rJ| jd k	s"t ‚| jjj ¡ }|r@d|› d�S |› d�S |sRt ‚| jd k	s`t ‚|rr| jjj ¡ n| jjj ¡ }d|› d�S )Nz+at::functionalization::FunctionalInverses::Z_inversez
at::_ops::z::call)ÚAssertionErrorZ	view_copyÚfuncr   Zunambiguous_nameÚview)r   r   r   r   Zapi_name© r    ú]/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torchgen/api/functionalization.pyr   K   s    
ÿýr   )r   r   r   c                C   sH   | j j}|d jttjƒks t‚|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>s   s    z%capture_arguments.<locals>.<listcomp>)Ú	argumentsÚflat_allr   r   r   ÚTensorr   Úreapply_views_binding)r   r   ÚargsÚnon_self_argsZnon_self_value_bindingsZall_bindingsr    r    r!   Úcapture_argumentsl   s    ÿ
r.   )r   r   c                 C   s4   t | jƒdkst‚| jD ]}|j ¡ st‚qttƒS )Nr"   )ÚlenÚreturnsr   r   Zis_tensor_liker   r   )r   Úretr    r    r!   Úreturns_typez   s    
r2   )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    
r6   c                 C   s4   t | jƒdks,t | jƒdkr0| jd j ¡ r0tS d S )Nr"   r   )r/   r0   r   Zis_list_liker5   )r   r    r    r!   Úinner_call_index‹   s    ÿÿr7   c                 C   sz   | j j}|d jttjƒks t‚|dd … }dd„ |D ƒ}|sHtg| S t| ƒ}|d k	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'   ›   s     z#inner_arguments.<locals>.<listcomp>)r(   r)   r   r   r   r*   r   r3   r7   r4   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*   r3   r4   r5   Úboolr+   Ústrr   r.   r2   r6   r7   r8   r    r    r    r!   Ú<module>   sx   (
   ÿú   ÿú   ÿú   ÿúûú!

