o
    vZh                     @   s   d dl mZmZ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 G dd dZG dd dZG dd dZG d	d
 d
ZdS )    )AnyOptionalUnion)
AnnotationArgument	ArgumentsBaseOperatorNameBaseTyBaseTypeCustomClassTypeFunctionSchemaListTypeOperatorNameReturnc                   @   sH   e Zd ZeejeejeejeejiZe	de
deeeef fddZdS )TypeGenobjreturnc                 C   s
  dd l }t| |jjrttjS t| |jrttjS t| |jr&ttjS t| |jr1ttjS t| |j	r?t
|   S t| ttfrnt| dksNJ dd | D }tt|dkretd| dt|d t| S t| }|tjvr~td| ttj| S )Nr   c                 S   s   g | ]}t |qS  )r   from_example).0xr   r   H/var/www/auris/lib/python3.10/site-packages/torchgen/gen_schema_utils.py
<listcomp>/   s    z(TypeGen.from_example.<locals>.<listcomp>   zFCannot generate schema for a seqeunce of args of heterogeneous types: zc. Consider unpacking the argument and give proper names to them if possible instead of using *args.zunsupported type )torch
isinstanceZfxZGraphModuler
   r	   ZTensorZSymIntZSymBoolZScriptObjectr   _typenamelisttuplelensetRuntimeErrorr   typer   convert_to_base_ty)r   r   Zall_base_tystpr   r   r   r      s.   





zTypeGen.from_exampleN)__name__
__module____qualname__intr	   floatstrboolr$   staticmethodr   r   r
   r   r   r   r   r   r   r   r      s    "r   c                	   @   s2   e Zd Zedee dedee defddZ	dS )	ReturnGenr   r   
annotationr   c                 C   s   t | t||S N)r   r   r   )r   r   r/   r   r   r   r   >   s   zReturnGen.from_exampleN)
r&   r'   r(   r-   r   r+   r   r   r   r   r   r   r   r   r.   =   s    r.   c                   @   s6   e Zd Zedededee dee def
ddZ	dS )	ArgumentGenr   r   defaultr/   r   c                 C   s   t | t|||dS )N)r2   r/   )r   r   r   )r   r   r2   r/   r   r   r   r   F   s   zArgumentGen.from_exampleN)
r&   r'   r(   r-   r+   r   r   r   r   r   r   r   r   r   r1   E   s    r1   c                	   @   sB   e Zd Zededeeeef df deedf defddZdS )	FunctionSchemaGenop_nameexample_inputs.example_outputsr   c              	   C   sz   g }|D ]\}}| t||d d  qtt d t|t d t t }tdd |D }tt| dddd} t| ||S )Nc                 s   s    | ]
}t d |d V  qd S r0   )r.   r   )r   outr   r   r   	<genexpr>]   s    
z1FunctionSchemaGen.from_example.<locals>.<genexpr>F )appendr1   r   r   r   r   r   r   )r4   r5   r6   argsr   inp	argumentsreturnsr   r   r   r   P   s   zFunctionSchemaGen.from_exampleN)	r&   r'   r(   r-   r+   r   r   r   r   r   r   r   r   r3   O   s    
r3   N)typingr   r   r   Ztorchgen.modelr   r   r   r   r	   r
   r   r   r   r   r   r   r.   r1   r3   r   r   r   r   <module>   s    4&
