
    sg                         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mZmZmZmZmZ  G d d      Z G d d      Z G d d      Z G d	 d
      Zy)    )AnyOptionalTupleUnion)
AnnotationArgument	ArgumentsBaseOperatorNameBaseTyBaseTypeCustomClassTypeFunctionSchemaListTypeOperatorNameReturnc                       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       Zy)TypeGenobjreturnc                    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                        rt	        t
        j                        S t        | |j                        r't        | j                         j                               S t        | t        t        f      rpt        |       dkD  sJ | D cg c]  }t         j#                  |       }}t        t%        |            dkD  rt'        d| d      t)        |d   t        |             S t+        |       }|t         j,                  vrt'        d|       t	        t         j,                  |         S c c}w )Nr      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lenr   from_examplesetRuntimeErrorr   typeconvert_to_base_ty)r   r   xall_base_tystps        L/var/www/html/venv/lib/python3.12/site-packages/torchgen/gen_schema_utils.pyr%   zTypeGen.from_example   sw   c588//0F..//U\\*FMM**U\\*FMM**U]]+FNN++U//0"399;#3#3#566dE]+s8a<<=@AG003ALA3|$%)"\]i\j k. . 
 LOSX66#YW///!22$788222677 Bs   2GN)__name__
__module____qualname__intr   floatstrboolr)   staticmethodr   r   r   r   r   r%        r-   r   r      s\    VZZv||VZZfkk	 8# 8%(O(K"L 8 8r7   r   c            	       :    e Zd Zedee   dedee   defd       Z	y)	ReturnGenr!   r   
annotationr   c                 B    t        | t        j                  |      |      S N)r   r   r%   )r!   r   r:   s      r-   r%   zReturnGen.from_example>   s     dG005zBBr7   N)
r.   r/   r0   r5   r   r3   r   r   r   r%   r6   r7   r-   r9   r9   =   sC    CsmC"%C3;J3GC	C Cr7   r9   c                   >    e Zd Zedededee   dee   def
d       Z	y)ArgumentGenr!   r   defaultr:   r   c                 F    t        | t        j                  |      ||      S )N)r?   r:   )r   r   r%   )r!   r   r?   r:   s       r-   r%   zArgumentGen.from_exampleF   s%     '&&s+W
 	
r7   N)
r.   r/   r0   r5   r3   r   r   r   r   r%   r6   r7   r-   r>   r>   E   sE    


&.sm
AI*AU
	
 
r7   r>   c            	       L    e Zd Zededeeeef   df   deedf   defd       Zy)FunctionSchemaGenop_nameexample_inputs.example_outputsr   c           
      J   g }|D ],  \  }}|j                  t        j                  ||d d              . t        t	               d t	        |      t	               d t	               t	                     }t	        d |D              }t        t        | ddd      d      } t        | ||      S )Nc              3   J   K   | ]  }t         j                  d |d         y wr<   )r9   r%   ).0outs     r-   	<genexpr>z1FunctionSchemaGen.from_example.<locals>.<genexpr>]   s$      
8;I""4d3
s   !#F )appendr>   r%   r	   r#   r   r
   r   )rC   rD   rE   argsr!   inp	argumentsreturnss           r-   r%   zFunctionSchemaGen.from_exampleP   s     ' 	IID#KK00sD$GH	I GT5;uw
	  
?N
 
 /uMrRgy'::r7   N)	r.   r/   r0   r5   r3   r   r   r   r%   r6   r7   r-   rB   rB   O   sR    ;;eCHos23; sCx; 
	; ;r7   rB   N)typingr   r   r   r   torchgen.modelr   r   r	   r
   r   r   r   r   r   r   r   r   r9   r>   rB   r6   r7   r-   <module>rS      sJ    . .   (#8 #8LC C
 
; ;r7   