o
    h                     @   s2  d dl mZ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ede"ded	efd
dZ#deded	efddZ$deeeef d	ee	 fddZ%ded	ee	 fddZ&ded	ee	 fddZ'ded	ee	 fddZ(dS )    )ListUnion)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tmutablebindsreturnc                C   s  t j| d|d}|d ur|S t| tr8| jtjkr"t|tt	t
S | jtjkr1t|tt	tS td|  t| tr| jttjkrLt|t	tS | jttjkr[t|t	tS t| jtrpt| jjdkrpt|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!   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   M/var/www/html/ai/venv/lib/python3.10/site-packages/torchgen/api/structured.pyr/   ,   s<   


r/   ac                C   s   t | j| j|dS )Nr%   )r/   r0   is_write)r5   r!   r3   r3   r4   argument_typeY   s   r7   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:   gc                 C   s   g }| j jrBg }| j jjjD ]%}t|tr.|j| j jjv r.| j jj|j D ]}|	| q%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appendextendadd)r;   argsnon_out_args_replacedr5   replacementr3   r3   r4   impl_argumentsv   s   
rO   c                 C   s$   g }| | jjjj dd |D S )Nc                 S   r<   r3   r=   r>   r3   r3   r4   rA      rB   z"meta_arguments.<locals>.<listcomp>)rJ   
functionalrE   rF   rG   r;   rL   r3   r3   r4   meta_arguments      rR   c                 C   s$   g }| | jjjj dd |D S )Nc                 S   r<   r3   r=   r>   r3   r3   r4   rA      rB   z!out_arguments.<locals>.<listcomp>)rJ   rC   rE   rF   rQ   r3   r3   r4   out_arguments   rS   rT   N))typingr   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   boolr/   r7   r:   rO   rR   rT   r3   r3   r3   r4   <module>   s    H,
- 