o
    vZhR                     @  s   d dl mZ d dlmZ 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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 d dlm Z  erXd dl!m"Z" d*ddZ#d+ddZ$d,ddZ%d-d d!Z&d.d%d&Z'd/d'd(Z(d)S )0    )annotations)TYPE_CHECKING)local)cpp)ArgName	BaseCTypeBindingboolTConstRefCTypeCTypedeviceTlayoutT	ListCTypeMutRefCType
NamedCTypeOptionalCTypescalarTscalarTypeTtensorT)ArgumentFunctionSchemaReturnSelfArgumentTensorOptionsArgumentsType)assert_never)Sequencefuncr   returnstrc                 C  s:   t | jj}|  r|d7 }| jjr|d| jj 7 }|S )NZ_out_)r   name	is_out_fnZoverload_name)r   r!    r#   B/var/www/auris/lib/python3.10/site-packages/torchgen/api/native.pyr!   3   s   r!   tr   mutableboolbindsr   symintr   c                C  s   t | dkr ttt}|rt st|t|S t|t|S t | dkr3t|tt	tttS t | dkrBt|ttt
S t | dkrSt|tttt
S tj| |||dS )NzTensor?z	Tensor?[]ZScalarzScalar?r&   r(   r)   )r   r   r   r   r   Z!use_const_ref_for_mutable_tensorsr   r   r
   r   r   r   argumenttype_type)r%   r&   r(   r)   Ztensor_typer#   r#   r$   r+   =   s   r+   rsSequence[Return]r   c                C  s   t j| |dS )Nr)   )r   returns_type)r,   r)   r#   r#   r$   r/   Q   s   r/   ar   c                C  s   t | j| j||dS )Nr*   )r+   typeZis_write)r0   r(   r)   r#   r#   r$   argument_typeU   s   r2   0Argument | SelfArgument | TensorOptionsArgumentsis_outlist[Binding]c             	   C  s  | }t | tr+d }|r| jd urtj| j| j|d}tt| | j|d| j|| dgS t | t	r8t
| j
||dS t | tr}d }|rCd}ttdtttd|| dttdtttd|| dttdtttd|| dttd	tttd	|| dgS t|  d S )
Nr.   )r(   r)   )Znctyper!   defaultargument)r4   r)   z{}ZdtypeZlayoutZdeviceZ
pin_memory)
isinstancer   r6   r   Zdefault_exprr1   r   r2   r!   r   r7   r   r   r   r   r   r   r   r	   r   )r0   r4   r)   Zshould_defaultr6   r#   r#   r$   r7   Y   sX   


r7   c                  s4   g }|  jj |  jj  fdd|D S )Nc                   s(   g | ]}t |  d D ]}|qqS ))r)   r4   )r7   r"   ).0argrr   r)   r#   r$   
<listcomp>   s
    zarguments.<locals>.<listcomp>)extend	argumentsZnon_outout)r   r)   argsr#   r<   r$   r?      s   r?   N)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   r3   r4   r'   r)   r'   r   r5   )r   r   r)   r'   r   r5   ))
__future__r   typingr   Ztorchgenr   Ztorchgen.apir   Ztorchgen.api.typesr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Ztorchgen.modelr   r   r   r   r   r   Ztorchgen.utilsr   collections.abcr   r!   r+   r/   r2   r7   r?   r#   r#   r#   r$   <module>   s    D 





@