a
    h                     @  s:  d dl mZ d dlZd dlmZ d dl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 erd d	lmZ d
ddddZddddddddddddZdddddddddddZdddddd d!d"Zd
d#dd$d%Zddddddd&d'd(d)Zddd
dd*d+d,d-ZdS ).    )annotationsN)TYPE_CHECKING)assert_never)cpp)ArgNameBindingCType
NamedCType)ArgumentFunctionSchemaReturnSelfArgumentTensorOptionsArgumentsType)	concatMap)Sequencer   str)funcreturnc                 C  s
   t | S N)r   name)r    r   E/var/www/auris/lib/python3.9/site-packages/torchgen/api/dispatcher.pyr   (   s    r   FT)remove_non_owning_ref_typessymintr   boolr   r	   )tmutablebindsr   r   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   r
   )ar   r   r   r   c                C  s   t | j| j|||dS )N)r   r   r   r   )r   typeZis_write)r    r   r   r   r   r   r   argument_typeA   s    r"   r   zSequence[Return]r   )rsr   r   c                C  s   t j| |dS )Nr#   )r   returns_type)r$   r   r   r   r   r%   Q   s    r%   list[Argument]c                 C  s4   ddddd}t t|t| jj| jj| jjS )Nz0Argument | TensorOptionsArguments | SelfArgumentr&   )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_argumentW   s    


z"jit_arguments.<locals>.to_argument)listr   	itertoolschain	arguments
positionalZ
kwarg_onlyout)r   r)   r   r   r   jit_argumentsV   s    r0   r   )r    r   r   r   c                C  s   t t| | j||d| j| dS )N)r   r   r   )Znctyper   r(   )r   r"   r   )r    r   r   r   r   r   r(   m   s    r(   zlist[Binding])r   r   r   c                  s    fddt | D S )Nc                   s   g | ]}t | d qS )r#   )r(   ).0r    r#   r   r   
<listcomp>}       zarguments.<locals>.<listcomp>)r0   )r   r   r   r#   r   r-   |   s    r-   ) 
__future__r   r+   typingr   Ztyping_extensionsr   Ztorchgen.apir   Ztorchgen.api.typesr   r   r   r	   Ztorchgen.modelr
   r   r   r   r   r   Ztorchgen.utilsr   collections.abcr   r   r   r"   r%   r0   r(   r-   r   r   r   r   <module>   s*    	