o
    ,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rFd d	lmZ d1ddZdddd2ddZdddd3d d!Zdd"d4d&d'Zd5d)d*Zdddd6d,d-Zdd"d7d/d0ZdS )8    )annotationsN)TYPE_CHECKING)assert_never)cpp)ArgNameBindingCType
NamedCType)ArgumentFunctionSchemaReturnSelfArgumentTensorOptionsArgumentsType)	concatMap)Sequencefuncr   returnstrc                 C  s
   t | S N)r   name)r    r   R/var/www/html/scripts/venv/lib/python3.10/site-packages/torchgen/api/dispatcher.pyr   (   s   
r   FT)remove_non_owning_ref_typessyminttr   mutableboolbindsr   r   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   ar
   c                C  s   t | j| j|||dS )N)r   r   r   r   )r   typeis_write)r    r   r   r   r   r   r   argument_typeA   s   r#   r   rsSequence[Return]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  s.   ddd}t t|t| jj| jj| jjS )Nr    0Argument | TensorOptionsArguments | SelfArgumentr   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_argumentW   s   


z"jit_arguments.<locals>.to_argument)r    r)   r   r(   )listr   	itertoolschain	arguments
positional
kwarg_onlyout)r   r0   r   r   r   jit_argumentsV   s   
r8   r   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+   m   s   r+   list[Binding]c                  s    fddt | D S )Nc                   s   g | ]}t | d qS )r$   )r+   ).0r    r$   r   r   
<listcomp>}   s    zarguments.<locals>.<listcomp>)r8   )r   r   r   r$   r   r4   |   s   r4   )r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r	   )
r    r
   r   r   r   r   r   r   r   r	   )r%   r&   r   r   r   r   )r   r   r   r(   )r    r
   r   r   r   r   r   r   )r   r   r   r   r   r:   ) 
__future__r   r2   typingr   typing_extensionsr   torchgen.apir   torchgen.api.typesr   r   r   r	   torchgen.modelr
   r   r   r   r   r   torchgen.utilsr   collections.abcr   r   r   r#   r'   r8   r+   r4   r   r   r   r   <module>   s,     
	
