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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)symintr!   r   z&base type should have been value type intr   r!   Dimnamezunrecognized type )r   valuetype_type
isinstancer   namer   Tensorr   r   r   r   Scalarr   AssertionErrorr   elemr   r   r   strr   argumenttype_typer   typer   r   r
   r	   r   repr)r   r   r!   rr-    r3   k/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/torchgen/api/structured.pyr/   ,   s<   


r/   ar   c                C  s   t | j| j|dS )Nr%   )r/   r0   is_write)r5   r!   r3   r3   r4   argument_typeY   s   r7   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!   )nctyper)   defaultargumentz2structured kernels don't support TensorOptions yet)
r(   r   r   r7   r)   r   r<   r   r,   r   )r5   r3   r3   r4   r<   d   s   



r<   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 r3   r<   .0argr2   r3   r3   r4   
<listcomp>       z"impl_arguments.<locals>.<listcomp>)outprecomputedfunc	argumentsnon_outr(   r   r)   replaceextendappendadd)r=   argsnon_out_args_replacedr5   r3   r3   r4   impl_argumentsv   s   
rP   c                 C  s$   g }| | jjjj dd |D S )Nc                 S  r>   r3   r?   r@   r3   r3   r4   rC      rD   z"meta_arguments.<locals>.<listcomp>)rK   
functionalrG   rH   rI   r=   rN   r3   r3   r4   meta_arguments      rS   c                 C  s$   g }| | jjjj dd |D S )Nc                 S  r>   r3   r?   r@   r3   r3   r4   rC      rD   z!out_arguments.<locals>.<listcomp>)rK   rE   rG   rH   rR   r3   r3   r4   out_arguments   rT   rU   N)r   r   r   r    r!   r   r"   r   )r5   r   r!   r   r"   r   )r5   r8   r"   r9   )r=   r   r"   r9   )'
__future__r   torchgen.apir   torchgen.api.typesr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   torchgen.modelr   r   r   r   r   r   r   r   r   torchgen.utilsr   r/   r7   r<   rP   rS   rU   r3   r3   r3   r4   <module>   s    H,

-


