o
    h                  	   @  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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.ddZd/ddZd0d"d#Zd1d%d&Z d2d'd(Z!d3d*d+Z"d0d,d-Z#dS )4    )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   mutated_viewmutated_view_idxreapply_viewszat::functionalizationInverseReturnModeinverse_return_mode)r   gr   
is_reverseboolinclude_namespacebool | Nonereturnstrc                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,   r/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/torchgen/api/functionalization.pyr   [   s   r   fr   c                 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)   r   list[Binding]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   

rB   r	   c                 C  s4   t | jdks	J | jD ]	}|j sJ qttS )Nr1   )lenreturnsr   is_tensor_liker   r   )r)   retr,   r,   r-   returns_type   s   
rG   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   
rK   Binding | Nonec                 C  s4   t | jdkst | jdkr| jd j rtS d S )Nr1   r   )rC   rD   r   is_list_likerJ   )r)   r,   r,   r-   inner_call_index   s   rN   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   r1   c                 S  s   g | ]}t |qS r,   r3   r4   r,   r,   r-   r7      s    z#inner_arguments.<locals>.<listcomp>)
r8   r9   r   r   r   r:   rH   rN   rI   r;   )r)   r    r>   r?   non_self_bindingsindex_bindingr,   r,   r-   inner_arguments   s*   
rQ   )
r   r   r    r!   r"   r!   r   r#   r$   r%   )r.   r   r"   r!   r$   r%   )r)   r   r    r!   r$   r0   )r)   r   r$   r	   )r    r!   r$   r0   )r)   r   r$   rL   )$
__future__r   torchgen.apir   torchgen.api.typesr   r   r   r   r   r	   r
   r   r   torchgen.modelr   r   r   r   r   r   r:   rH   rI   rJ   r!   r<   InverseReturnModeTr;   r   r&   rB   rG   rK   rN   rQ   r,   r,   r,   r-   <module>   sp    , 
	






