
    9j                         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      ryt        |       dk(  rt!        d      | 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   zlist/tuple must be non-empty   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lenAssertionErrorr   from_examplesetRuntimeErrorr   typeconvert_to_base_ty)r   r   xall_base_tystps        Y/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torchgen/gen_schema_utils.pyr#   zTypeGen.from_example   s~   c588//0F..//U\\*FMM**U\\*FMM**U]]+FNN++U//0"399;#3#3#566dE]+3x1}$%CDD=@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   ;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 8r5   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   r8   s      r+   r#   zReturnGen.from_example?   s     dG005zBBr5   )	r,   r-   r.   r3   r1   r   r   r   r#   r4   r5   r+   r7   r7   >   sC    CDjC"C0:T0AC	C Cr5   r7   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   defaultNr8   r   c                 F    t        | t        j                  |      ||      S )N)r=   r8   )r   r   r#   )r   r   r=   r8   s       r+   r#   zArgumentGen.from_exampleG   s%     '&&s+W
 	
r5   )	r,   r-   r.   r3   r1   r   r   r   r#   r4   r5   r+   r<   r<   F   sE    


&)Dj
>H4>O
	
 
r5   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:   )r7   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   )rA   rB   rC   argsr   inp	argumentsreturnss           r+   r#   zFunctionSchemaGen.from_exampleQ   s     ' 	IID#KK00sD$GH	I GT5;uw
	  
?N
 
 /uMrRgy'::r5   N)	r,   r-   r.   r3   r1   r    r   r   r#   r4   r5   r+   r@   r@   P   sR    ;;eCHos23; sCx; 
	; ;r5   r@   N)typingr   torchgen.modelr   r   r   r   r   r	   r
   r   r   r   r   r   r7   r<   r@   r4   r5   r+   <module>rQ      sG       ($8 $8NC C
 
; ;r5   