o
    ^i                  	   @  s  d dl 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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d6d7ddZddd8d d!Z d9d$d%Z!d:d'd(Z"d;d)d*Z#d<d,d-Z$d<d.d/Z%d=d>d2d3Z&d?d4d5Z'dS )@    )annotations)
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   has_symbolic_inputsmutated_view	out_indexreapply_viewszat::functionalizationInverseReturnModeinverse_return_modeFfuncr   with_namespaceboolreturnstrc                 C  s    |rdnd}| | j   dS )Nzat::functionalization:: 	_ViewMeta)r   unambiguous_name)r    r!   	namespace r)   Y/var/www/html/RAG/RAG_venv/lib/python3.10/site-packages/torchgen/api/functionalization.py	classname_   s   r+   )r   gr   
is_reverseinclude_namespacebool | Nonec                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_copyr    r   r'   )r,   r-   r.   r   api_namer)   r)   r*   r   e   s   r   fr   c                 C  s&   | j j }|rd| dS | dS )Nz+at::functionalization::FunctionalInverses::_inverse)r    r   r'   )r4   r.   r3   r)   r)   r*   r0   }   s   
r0   r	   c                 C  s4   t | jdks	J | jD ]	}|j sJ qttS )N   )lenreturnsr   is_tensor_liker   r   )r    retr)   r)   r*   returns_type   s   
r;   c                 C  s0   t | jdkpt | jdko| jd j d uS )Nr6   r   )r7   r8   r   is_list_liker    r)   r)   r*   is_multi_output   s    r>   list[Binding]c                 C  s   t g}t| r|t |S )N)has_symbolic_inputs_bindingr>   appendout_index_binding)r    	argumentsr)   r)   r*   base_ctor_arguments   s   
rD   c                 C  s   t | ddS )NFowning)
attributesr=   r)   r)   r*   extra_ctor_arguments   s   rH   TrF   c                   sB   | j j}|d jttjksJ ttg fdd|dd  D S )Nr   c                   s   g | ]	}t j| d qS ))remove_non_owning_ref_typesr   r   .0arE   r)   r*   
<listcomp>   s    zattributes.<locals>.<listcomp>r6   )rC   flat_allr   r   r   Tensorreapply_views_bindinginverse_return_mode_binding)r    rF   argsr)   rE   r*   rG      s   rG   c                 C  sn   | j j}|d jttjksJ |dd  }dd |D }|s$tg| S t| r0ttt	t
g| S ttt	g| S )Nr   r6   c                 S  s   g | ]}t |qS r)   rJ   rK   r)   r)   r*   rN      s    z op_arguments.<locals>.<listcomp>)rC   rO   r   r   r   rP   base_bindingr>   mutated_view_bindingrR   rB   )r    r-   rS   non_self_argsnon_self_bindingsr)   r)   r*   op_arguments   s(   
rX   )F)r    r   r!   r"   r#   r$   )
r,   r   r-   r"   r.   r"   r   r/   r#   r$   )r4   r   r.   r"   r#   r$   )r    r   r#   r	   )r    r   r#   r"   )r    r   r#   r?   )T)r    r   rF   r"   r#   r?   )r    r   r-   r"   r#   r?   )(
__future__r   torchgen.apir   torchgen.api.typesr   r   r   r   r   r	   r
   r   r   torchgen.modelr   r   r   r   r   r   rP   rT   r"   r@   rU   intrB   rQ   InverseReturnModeTrR   r+   r   r0   r;   r>   rD   rH   rG   rX   r)   r)   r)   r*   <module>   s    , 	
	





