o
    h%                     @   sN  d dl Z d dlmZmZmZ d dlmZ d dl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mZ dedefd	d
ZddddedededededefddZddddededededef
ddZdddee dede
fddZdedee fddZddddededede	fddZdddededee	 fd d!ZdS )"    N)ListSequenceUnion)cpp)ArgNameBindingCType
NamedCType)ArgumentFunctionSchemaReturnSelfArgumentTensorOptionsArgumentsType)assert_never	concatMapfuncreturnc                 C   s
   t | S N)r   name)r    r   M/var/www/html/ai/venv/lib/python3.10/site-packages/torchgen/api/dispatcher.pyr   !   s   
r   FT)remove_non_owning_ref_typessyminttmutablebindsr   r   c                C   s   t j| ||||dS )N)r   r   r   r   )r   argumenttype_type)r   r   r   r   r   r   r   r   r   %   s   r   ac                C   s   t | j| j|||dS )N)r   r   r   r   )r   typeis_write)r   r   r   r   r   r   r   argument_type:   s   r!   r   rsc                C   s   t j| |dS )Nr"   )r   returns_type)r#   r   r   r   r   r$   J   s   r$   c                 C   sD   dt tttf dtt fdd}tt|t| j	j
| j	j| j	jS )Nr   r   c                 S   sL   t | tr| gS t | tr| jgS t | tr | j| j| j| jgS t	|  d S r   )

isinstancer
   r   argumentr   dtypelayoutdevice
pin_memoryr   )r   r   r   r   to_argumentP   s   


z"jit_arguments.<locals>.to_argument)r   r
   r   r   r   listr   	itertoolschain	arguments
positional
kwarg_onlyout)r   r+   r   r   r   jit_argumentsO   s   
r3   c                C   s   t t| | j||d| j| dS )N)r   r   r   )nctyper   r&   )r   r!   r   )r   r   r   r   r   r   r&   f   s   r&   c                   s    fddt | D S )Nc                    s   g | ]}t | d qS )r"   )r&   ).0r   r"   r   r   
<listcomp>v   s    zarguments.<locals>.<listcomp>)r3   )r   r   r   r"   r   r/   u   s   r/   )r-   typingr   r   r   torchgen.apir   torchgen.api.typesr   r   r   r	   torchgen.modelr
   r   r   r   r   r   torchgen.utilsr   r   strr   boolr   r!   r$   r3   r&   r/   r   r   r   r   <module>   s`     	

 
$