U
    9%e                     @   s,  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! ee"ddd	Z#ee$e
e$ed
ddZ%ee e$edddZ&ee
e$edddZ'eeeef e$e$ee dddZ(ee$ee d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r6|d| jj 7 }|S )NZ_out_)strname	is_out_fnZoverload_name)r   r"    r$   R/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/torchgen/api/native.pyr"   -   s    r"   )tmutablebindssymintr   c                C   s   t | dkrBttt}|r2t s2t|t|S t|t|S nft | dkrht|tt	tttS t | dkrt|ttt
S t | dkrt|tttt
S tj| |||dS )NzTensor?z	Tensor?[]ZScalarzScalar?r'   r(   r)   )r!   r   r	   r   r   Z!use_const_ref_for_mutable_tensorsr   r   r   r   r   r   argumenttype_type)r&   r'   r(   r)   Ztensor_typer$   r$   r%   r+   7   s     r+   )rsr)   r   c                C   s   t j| |dS )Nr)   )r   returns_type)r,   r)   r$   r$   r%   r.   K   s    r.   )ar(   r)   r   c                C   s   t | j| j||dS )Nr*   )r+   typeZis_write)r/   r(   r)   r$   r$   r%   argument_typeO   s    r1   )r/   is_outr)   r   c             	   C   s  | }t | trVd }|r6| jd k	r6tj| j| j|d}tt| | j|d| j|| dgS t | t	rpt
| j
||dS t | t rd }|rd}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 )
Nr-   )r(   r)   )Znctyper"   defaultargument)r2   r)   z{}ZdtypeZlayoutZdeviceZ
pin_memory)
isinstancer   r3   r   Zdefault_exprr0   r
   r1   r"   r   r4   r   r   r   r	   r   r   r   r   r   )r/   r2   r)   Zshould_defaultr3   r$   r$   r%   r4   S   sX    

r4   )r   r)   r   c                   s4   g }|  jj |  jj  fdd|D S )Nc                    s(   g | ] }t |  d D ]}|qqS ))r)   r2   )r4   r#   ).0argrr   r)   r$   r%   
<listcomp>   s      zarguments.<locals>.<listcomp>)extend	argumentsZnon_outout)r   r)   argsr$   r9   r%   r<      s    r<   N)*typingr   r   r   r   Ztorchgenr   Ztorchgen.apir   Ztorchgen.api.typesr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Ztorchgen.modelr   r   r   r   r   r   Ztorchgen.utilsr   r!   r"   boolr+   r.   r1   r4   r<   r$   r$   r$   r%   <module>   s(   D    @