o
    h                  
   @   sJ  d dl mZmZmZ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! dede"fd	d
Z#dede$de
de$def
ddZ%dee de$defddZ&dede
de$defddZ'deeeef de$de$dee fddZ(dede$dee fddZ)dS )    )ListOptionalSequenceUnion)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funcreturnc                 C   s:   t | jj}|  r|d7 }| jjr|d| jj 7 }|S )N_out_)strname	is_out_fnoverload_name)r   r#    r&   I/var/www/html/ai/venv/lib/python3.10/site-packages/torchgen/api/native.pyr#   -   s   r#   tmutablebindssymintc                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?[]ScalarzScalar?r)   r*   r+   )r"   r   r	   r   r   !use_const_ref_for_mutable_tensorsr   r   r   r   r   r   argumenttype_type)r(   r)   r*   r+   tensor_typer&   r&   r'   r/   7   s   r/   rsc                C   s   t j| |dS )Nr+   )r   returns_type)r1   r+   r&   r&   r'   r3   K   s   r3   ac                C   s   t | j| j||dS )Nr-   )r/   typeis_write)r4   r*   r+   r&   r&   r'   argument_typeO   s   r7   is_outc             	   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 )
Nr2   )r*   r+   )nctyper#   defaultargument)r8   r+   z{}dtypelayoutdevice
pin_memory)
isinstancer   r:   r   default_exprr5   r
   r7   r#   r   r;   r   r   r   r	   r   r   r   r   r   )r4   r8   r+   should_defaultr:   r&   r&   r'   r;   S   sX   


r;   c                   s4   g }|  jj |  jj  fdd|D S )Nc                    s(   g | ]}t |  d D ]}|qqS ))r+   r8   )r;   r$   ).0argrr   r+   r&   r'   
<listcomp>   s
    zarguments.<locals>.<listcomp>)extend	argumentsnon_outout)r   r+   argsr&   rF   r'   rI      s   rI   N)*typingr   r   r   r   torchgenr   torchgen.apir   torchgen.api.typesr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   torchgen.modelr   r   r   r   r   r   torchgen.utilsr   r"   r#   boolr/   r3   r7   r;   rI   r&   r&   r&   r'   <module>   s<    D 


@