o
    vZh                     @  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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mZmZmZ d 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 )%    )annotations)cpp)ArgNameArrayRefCType	BaseCTypeBindingConstRefCTypedimnameListTintArrayRefTiOptTensorListRefTiTensorListRefT
NamedCTypeOptionalCTypeoptionalIntArrayRefToptionalScalarRefToptionalTensorRefTscalarTtensorT)	ArgumentBaseTyBaseTypeListTypeNativeFunctionsGroupOptionalTypeSelfArgumentTensorOptionsArgumentsType)assert_nevertr   mutableboolbindsr   returnr   c                C  s  t j| d||d}|d ur|S t| tr9| jtjkr#t|tt	t
S | jtjkr2t|tt	tS td|  t| tr| jttjkrMt|t	tS | jttjkr\t|t	tS t| jtrqt| jjdkrqt|t	tS t| j||d}t|t|jS t| tr| jttjkrt|tt	tS | jtttjkrt|t	tS t| jdkrt|t	tS t| jdkrt|t	tS t| j||d}t|t|jS tdt|  )NF)Zsymintr!   r   z&base type should have been value type intr   r!   ZDimnamezunrecognized type )r   Zvaluetype_type
isinstancer   namer   ZTensorr   r   r   r   ZScalarr   AssertionErrorr   elemr   r   r   strr   argumenttype_typer   typer   r   r
   r	   r   repr)r   r   r!   rr(    r.   F/var/www/auris/lib/python3.10/site-packages/torchgen/api/structured.pyr*   ,   s<   


r*   ar   c                C  s   t | j| j|dS )Nr$   )r*   r+   Zis_write)r0   r!   r.   r.   r/   argument_typeY   s   r1   0Argument | SelfArgument | TensorOptionsArgumentslist[Binding]c                 C  sZ   t | trtt| | jd| jd | dgS t | trt| jS t | tr'tdt	|  d S )N)r!   )Znctyper&   defaultargumentz2structured kernels don't support TensorOptions yet)
r%   r   r   r1   r&   r   r5   r   r'   r   )r0   r.   r.   r/   r5   d   s   



r5   gr   c                 C  s   g }| j jr=g }| j jjjD ] }t|tr)|j| j jjv r)|	| j jj|j  q|
| q|	| |	| j jj n	|	| j jjj |	| j jjj  dd |D S )Nc                 S     g | ]}t |D ]}|qqS r.   r5   .0argr-   r.   r.   r/   
<listcomp>       z"impl_arguments.<locals>.<listcomp>)outZprecomputedfunc	argumentsnon_outr%   r   r&   replaceextendappendadd)r6   argsZnon_out_args_replacedr0   r.   r.   r/   impl_argumentsv   s   
rG   c                 C  s$   g }| | jjjj dd |D S )Nc                 S  r7   r.   r8   r9   r.   r.   r/   r<      r=   z"meta_arguments.<locals>.<listcomp>)rC   Z
functionalr?   r@   rA   r6   rF   r.   r.   r/   meta_arguments      rI   c                 C  s$   g }| | jjjj dd |D S )Nc                 S  r7   r.   r8   r9   r.   r.   r/   r<      r=   z!out_arguments.<locals>.<listcomp>)rC   r>   r?   r@   rH   r.   r.   r/   out_arguments   rJ   rK   N)r   r   r   r    r!   r   r"   r   )r0   r   r!   r   r"   r   )r0   r2   r"   r3   )r6   r   r"   r3   )'
__future__r   Ztorchgen.apir   Ztorchgen.api.typesr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Ztorchgen.modelr   r   r   r   r   r   r   r   r   Ztorchgen.utilsr   r*   r1   r5   rG   rI   rK   r.   r.   r.   r/   <module>   s    H,

-


