o
    i                     @   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)Zsymintr!   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/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/torchgen/api/structured.pyr*   ,   s<   


r*   ac                C   s   t | j| j|dS )Nr$   )r*   r+   Zis_write)r0   r!   r.   r.   r/   argument_typeY   s   r1   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   r3   r   r'   r   )r0   r.   r.   r/   r3   d   s   



r3   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 r.   r3   .0argr-   r.   r.   r/   
<listcomp>       z"impl_arguments.<locals>.<listcomp>)outZprecomputedfunc	argumentsnon_outr%   r   r&   replaceappendextendadd)r4   argsZnon_out_args_replacedr0   replacementr.   r.   r/   impl_argumentsv   s   
rF   c                 C   s$   g }| | jjjj dd |D S )Nc                 S   r5   r.   r6   r7   r.   r.   r/   r:      r;   z"meta_arguments.<locals>.<listcomp>)rB   Z
functionalr=   r>   r?   r4   rD   r.   r.   r/   meta_arguments      rH   c                 C   s$   g }| | jjjj dd |D S )Nc                 S   r5   r.   r6   r7   r.   r.   r/   r:      r;   z!out_arguments.<locals>.<listcomp>)rB   r<   r=   r>   rG   r.   r.   r/   out_arguments   rI   rJ   N))typingr   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   boolr*   r1   r3   rF   rH   rJ   r.   r.   r.   r/   <module>   s    H,
- 