U
    d
                     @   s  d dl mZmZmZmZmZmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZmZ d dlZd dlmZmZmZ eeddd	Zd
deeeee
dddZd
deeee
dddZee edddZeee dddZd
deee	dddZeee	 dddZdS )    )ArgumentFunctionSchemaReturnSelfArgumentTensorOptionsArgumentsType)ArgNameBinding
NamedCTypeCType)cpp)	concatMapassert_neverN)SequenceListUnion)funcreturnc                 C   s
   t | S N)r   namer    r   ;/tmp/pip-unpacked-wheel-ua33x9lu/torchgen/api/dispatcher.pyr   !   s    r   F)remove_non_owning_ref_types)tmutablebindsr   r   c                C   s   t j| |||dS N)r   r   r   )r   argumenttype_type)r   r   r   r   r   r   r   r   %   s    r   )ar   r   r   c                C   s   t | j| j||dS r   )r   typeZis_write)r   r   r   r   r   r   argument_type4   s    r!   )rsr   c                 C   s
   t | S r   )r   returns_type)r"   r   r   r   r#   ?   s    r#   c                 C   sB   t tttf tt ddd}tt|t| j	j
| j	j| j	jS )N)r   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   ZdtypeZlayoutZdeviceZ
pin_memoryr   )r   r   r   r   to_argumentE   s    


z"jit_arguments.<locals>.to_argument)r   r   r   r   r   listr   	itertoolschain	arguments
positionalZ
kwarg_onlyout)r   r&   r   r   r   jit_argumentsD   s      r-   )r   r   r   c                C   s   t t| | j|d| j| dS )N)r   r   )Znctyper   r%   )r	   r!   r   )r   r   r   r   r   r%   [   s      r%   c                 C   s   dd t | D S )Nc                 S   s   g | ]}t |qS r   )r%   ).0r   r   r   r   
<listcomp>f   s     zarguments.<locals>.<listcomp>)r-   r   r   r   r   r*   e   s    r*   )Ztorchgen.modelr   r   r   r   r   r   Ztorchgen.api.typesr   r	   r
   r   Ztorchgen.apir   Ztorchgen.utilsr   r   r(   typingr   r   r   strr   boolr   r!   r#   r-   r%   r*   r   r   r   r   <module>   s2    	     
