o
    h                     @   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   m/var/www/html/construction_image-detection-poc/venv/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
isinstancefxGraphModuler
   r	   TensorSymIntSymBoolScriptObjectr   _typenamelisttuplelensetRuntimeErrorr   typer   convert_to_base_ty)r   r   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   r6   r   r   r   r   >   s   zReturnGen.from_exampleN)
r-   r.   r/   r4   r   r2   r   r   r   r   r   r   r   r   r5   =   s    r5   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   defaultr6   r   c                 C   s   t | t|||dS )N)r9   r6   )r   r   r   )r#   r   r9   r6   r   r   r   r   F   s   zArgumentGen.from_exampleN)
r-   r.   r/   r4   r2   r   r   r   r   r   r   r   r   r   r8   E   s    r8   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 r7   )r5   r   )r   outr   r   r   	<genexpr>]   s    
z1FunctionSchemaGen.from_example.<locals>.<genexpr>F )appendr8   r   r   r%   r   r   r   )r;   r<   r=   argsr#   inp	argumentsreturnsr   r   r   r   P   s   zFunctionSchemaGen.from_exampleN)	r-   r.   r/   r4   r2   r%   r   r   r   r   r   r   r   r:   O   s    
r:   N)typingr   r   r   torchgen.modelr   r   r   r   r	   r
   r   r   r   r   r   r   r5   r8   r:   r   r   r   r   <module>   s    4&
