
    eЄi                         d dl 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)
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z  ez  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 sequence 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        c/home/obispo/Crisostomo_bridge/mision_env/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      sZ    VZZv||VZZfkk	 8# 8(X"5"G 8 8r4   r   c            	       :    e Zd Zededz  dededz  defd       Zy)	ReturnGenr   Nr   
annotationr   c                 B    t        | t        j                  |      |      S N)r   r   r"   )r   r   r7   s      r*   r"   zReturnGen.from_example>   s     dG005zBBr4   )	r+   r,   r-   r2   r0   r   r   r   r"   r3   r4   r*   r6   r6   =   sC    CDjC"C0:T0AC	C Cr4   r6   c                   >    e Zd Zededededz  dedz  def
d       Zy)ArgumentGenr   r   defaultNr7   r   c                 F    t        | t        j                  |      ||      S )N)r<   r7   )r   r   r"   )r   r   r<   r7   s       r*   r"   zArgumentGen.from_exampleF   s%     '&&s+W
 	
r4   )	r+   r,   r-   r2   r0   r   r   r   r"   r3   r4   r*   r;   r;   E   sE    


&)Dj
>H4>O
	
 
r4   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r9   )r6   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   )r@   rA   rB   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'::r4   N)	r+   r,   r-   r2   r0   r    r   r   r"   r3   r4   r*   r?   r?   O   sR    ;;eCHos23; sCx; 
	; ;r4   r?   N)typingr   torchgen.modelr   r   r   r   r   r	   r
   r   r   r   r   r   r6   r;   r?   r3   r4   r*   <module>rP      sG       (#8 #8LC C
 
; ;r4   