
    Yh'                       d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZ 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 erd dlmZmZ 	 dhdidZ ed           G d d                      Z ed           G d d                      Z ed           G d de                      Z ed           G d d                      Z  ed           G d de                       Z! ed           G d d                       Z" ed           G d! d"                      Z# ed           G d# d$                      Z$ ed           G d% d&                      Z% ed           G d' d(                      Z&d)d*djd0Z'dkd1Z(d)dd2dld7Z)dmd9Z*dnd<Z+d)d)d=dod?Z,d)d)d=dpdCZ-dqdGZ.drdHZ/drdIZ0dsdLZ1dtdMZ2	 dudvdPZ3h dQZ4dwdRZ5dwdSZ6d
dTdxdXZ7ddYdyd\Z8ddYdzd_Z9ddYd{daZ:dbdcdddededfZ;ddYd|dgZ<d
S )}    )annotations)	dataclass)TYPE_CHECKING)cpp)BindingCppSignatureCppSignatureGroup)pythonify_default)
ArgumentBaseTyBaseTypeFunctionSchemaListTypeNativeFunctionOptionalTypeReturnTypeVariant)IterableSequence Nnamestr	argumentsIterable[str]return_type
str | Nonereturnc                   t          |t          t          f          st          |          }|d| nd}d|  dd                    |           d| d}t	          |          dk    s&t	          |          d	k    st          |          d
k    r|S d|  dgd |D             d| d}d                    |          }t          d |D                       r|S |                    d          dz   S )Nz ->  zdef (, ): ...P   r   selfc              3  "   K   | ]
}d | dV  dS )z    ,Nr   ).0args     e/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/torchgen/api/python.py	<genexpr>z,format_function_signature.<locals>.<genexpr>   s*      	-	-C----	-	-	-	-	-	-    
c              3  <   K   | ]}t          |          d k    V  dS )r%   N)len)r*   lines     r,   r-   z,format_function_signature.<locals>.<genexpr>   s,      
-
-t3t99?
-
-
-
-
-
-r.   z ...z  # fmt: skip
    ...)
isinstancelisttuplejoinr1   allremovesuffix)r   r   r   sigliness        r,   format_function_signaturer;      s3    i$// %)$$	*5*A&&&&rK
A
A
A		),,
A
A{
A
A
AC
3xx2~~Y1,,i0@0@I0M0M
 	t	-	-9	-	-	- 	KE
 ))E

C

-
-u
-
-
--- 
 F##&>>>r.   T)frozenc                      e Zd ZU ded<   dS )PythonReturnstuple[Return, ...]returnsN__name__
__module____qualname____annotations__r   r.   r,   r>   r>      s         r.   r>   c                  X    e Zd ZU ded<   ded<   ded<   ded<   dd	d
ddZdddddZdS )PythonArgumentr   r   r   typer   defaultdefault_initFTmethodsymintrL   boolrM   r   c               "   t          | j        |                              dd                              dd          }| j        }|dk    r|dv r|sd}| j        /ddddd	                    | j        | j                  }| d
| d| S | d
| S )NrM   zconst r    z &r'   )TensorNumberinputNone)nullptr::std::nulloptstd::nullopt{} =)argument_type_strrH   replacer   rI   get)r'   rL   rM   type_strr   rI   s         r,   argument_strzPythonArgument.argument_str   s    di777WXr""WT2 	 y 6>>h*>>>v>D <#!"( &	 
 c$,--  1111111'''''r.   rL   
deprecatedra   c          	        t          | j                  }| j        }|dk    r|dk    r|s|sd}|dk    r|dz  }|dk    r!|dk    r|s| d                    dd          }|ot	          | t
                    o
| j        d	k    }| j        |st	          | j        t                    r| j        j        t          t          j                  k    r| j                            d
          rn| j                            d          rTdd                    t          t           j        | j        dd                             d                              z   dz   }n'd	d	d	d	ddd                    | j        | j                  }| d| d| S | d| S )Nr'   rQ   rS   from_out | None | None | NonerT   {}r!   r"      r)   r#   contiguous_formatper_tensor_affine)rU   rV   rW   rX   zc10::MemoryFormat::ContiguouszQScheme::PER_TENSOR_AFFINE:  = )argument_type_str_pyirH   r   r\   r3   PythonOutArgumentrI   r   elemr   r   int
startswithendswithr6   mapr   stripsplitr]   )r'   rL   ra   r^   r   treat_as_no_defaultrI   s          r,   argument_str_pyizPythonArgument.argument_str_pyi  s    )33y 6>>h(2262*2D6>>CKD 5==X11*1"+++334DiPPH  '4!233'& 	 <#,?#49h//2INhvz&:&:::L++C00 ;L))#.. ;
 $))C	4<"3E3K3KC3P3P$Q$QRRRUXX 
  &&,$* 5H2E  #dlDL11  44h447444((h(((r.   N)rL   rN   rM   rN   r   r   )rL   rN   ra   rN   r   r   )rB   rC   rD   rE   r_   rz   r   r.   r,   rG   rG      s         IIIJJJ  .34 ( ( ( ( ( (6 !&%0) 0) 0) 0) 0) 0) 0) 0)r.   rG   c                  2    e Zd ZU ded<   edd            ZdS )rq   tuple[PythonArgument, ...]outputsr   PythonOutArgument | Nonec                z   | sd S t          |           }|dk    r*t          | d         j        | d         j        dd |           S |dk    rdt	          d | D                       rt          d|            t          dt          t          t          j	                  |          dd |           S t          d          )	Nrj   r   rT   )r   rH   rI   rJ   r}   c              3  J   K   | ]}|j                                          V  d S NrH   is_tensor_liker*   as     r,   r-   z1PythonOutArgument.from_outputs.<locals>.<genexpr>^  s3      @@1qv,,...@@@@@@r.   zUnsupported output type: re   z!Unexpected PythonOutArgument size)r1   rq   r   rH   anyRuntimeErrorr   r   r   rQ   AssertionError)r}   sizes     r,   from_outputszPythonOutArgument.from_outputsO  s     	47||199$QZ_QZ_!    AXX@@@@@@@ J"#Hw#H#HIII$hv}55t<<!    ABBBr.   N)r}   r|   r   r~   )rB   rC   rD   rE   staticmethodr   r   r.   r,   rq   rq   F  sH          ('''C C C \C C Cr.   rq   c                      e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ed!d            Zdddd"dZd#dZd#dZdddd$dZ	ddd%dZ
ddd&dZd S )'PythonSignaturer   r   r|   
input_argsinput_kwargsr~   output_argsr>   r@   tensor_options_argsrN   rL   r   c                    dS )NFr   r&   s    r,   ra   zPythonSignature.deprecated  s    ur.   F)skip_outputsskip_tensor_optionsr   r   .tuple[PythonArgument | PythonOutArgument, ...]c               
   g }|                     | j                   |                     | j                   | j        |s|                    | j                   |s|                     | j                   t          |          S r   )extendr   r   r   appendr   r5   )r'   r   r   results       r,   r   zPythonSignature.arguments  s~     <>do&&&d'(((''MM$*+++" 	4MM$2333V}}r.   rs   c                D    t          |                                           S r   )r1   r   r&   s    r,   arguments_countzPythonSignature.arguments_count  s    4>>##$$$r.   c                T    t          | j                  t          | j                  z   S r   )r1   r   r   r&   s    r,   
output_idxzPythonSignature.output_idx  s"    4?##c$*;&<&<<<r.   Tr   rM   rM   c               
                          |          } fd|D             }t           j                  }t          |          |k    r|                    |d            j         dd                    |           dS )Nr   c                H    g | ]}|                     j                   S )rK   )r_   rL   )r*   r   r'   rM   s     r,   
<listcomp>z1PythonSignature.signature_str.<locals>.<listcomp>  s8     %
 %
 %
BCANN$+fN==%
 %
 %
r.   *r!   r"   r#   )r   r1   r   insertr   r6   )r'   r   rM   argsschema_formalspositional_argcs   ` `   r,   signature_strzPythonSignature.signature_str  s    ~~<~88%
 %
 %
 %
 %
GK%
 %
 %
 do..~00!!/3777)::dii77::::r.   r   c               J                          |          } fd|D             }t           j                  }t          |          |k    r|                    |d           t	                     } j        r|                    dd           t           j        ||          S )Nr   c                F    g | ]}|                     j                   S rL   rz   rL   r*   r   r'   s     r,   r   z5PythonSignature.signature_str_pyi.<locals>.<listcomp>  9     %
 %
 %
78Adk22%
 %
 %
r.   r   r   r'   )r   r1   r   r   returns_str_pyirL   r;   r   r'   r   r   r   r   returns_strs   `     r,   signature_str_pyiz!PythonSignature.signature_str_pyi  s    ~~<~88%
 %
 %
 %
<@%
 %
 %
 do..~00!!/3777 &d++; 	-!!!V,,,(NKPPPr.   r   c               4                          |          } fd|D             }                                 }|dk    rd S t           j                  }|d         j        }t          |t                    rt          |j                  dv r|dk    sd S t          |t                    sJ d|d         j	        z   dz   t          |j                  z   |d<   t                     } j        r|                    dd           t           j	        ||          S )	Nr   c                F    g | ]}|                     j                   S r   r   r   s     r,   r   z<PythonSignature.signature_str_pyi_vararg.<locals>.<listcomp>  r   r.   r   )rs   SymIntrj   r   rn   r'   )r   r   r1   r   rH   r3   r   r   rr   r   rp   r   rL   r   r;   )r'   r   r   r   num_argsnum_positionalargsvararg_typer   s   `       r,   signature_str_pyi_varargz(PythonSignature.signature_str_pyi_vararg  s<   ~~<~88%
 %
 %
 %
<@%
 %
 %
 ''))q==4 111gl{H--	K$%%):::"a''4 +x00000$q',%(=k>N(O(OO 	q &d++; 	-!!!V,,,(NKPPPr.   Nr   rN   )r   rN   r   rN   r   r   )r   rs   r   rN   rM   rN   r   r   r   rN   r   r   r   rN   r   r   )rB   rC   rD   rE   propertyra   r   r   r   r   r   r   r   r.   r,   r   r   k  sV         III +*** -,,,))))  4333 LLL   X ',
 
 
 
 
 
% % % %= = = = 5:$ 	; 	; 	; 	; 	; 	; 9> Q Q Q Q Q Q  @E  Q  Q  Q  Q  Q  Q  Q  Qr.   r   c                  h    e Zd ZU ded<   ded<   edd            Zdd	d
ddZddddZddddZdS )PythonSignatureDeprecatedr   deprecated_schematuple[str, ...]deprecated_args_exprsr   rN   c                    dS )NTr   r&   s    r,   ra   z$PythonSignatureDeprecated.deprecated      tr.   FTr   r   rM   r   c               B    t                               | ||          dz   S )Nr   z|deprecated)r   r   )r'   r   rM   s      r,   r   z'PythonSignatureDeprecated.signature_str  s0    ))< *   	
r.   r   c                                         |          } fd|D             }t           j                  }t          |          |k    r|                    |d           t	                     }t           j        ||          S )Nr   c                H    g | ]}|                     j        d           S )Tr`   r   r   s     r,   r   z?PythonSignatureDeprecated.signature_str_pyi.<locals>.<listcomp>  s;     %
 %
 %
HIAdkdCC%
 %
 %
r.   r   )r   r1   r   r   r   r;   r   r   s   `     r,   r   z+PythonSignatureDeprecated.signature_str_pyi  s    ~~<~88%
 %
 %
 %
MQ%
 %
 %
 do..~00!!/3777%d++(NKPPPr.   r   c                   d S r   r   )r'   r   s     r,   r   z2PythonSignatureDeprecated.signature_str_pyi_vararg  r   r.   Nr   r   r   r   )	rB   rC   rD   rE   r   ra   r   r   r   r   r.   r,   r   r     s          &%%% +***   X 5:$ 
 
 
 
 
 
 9> 
Q 
Q 
Q 
Q 
Q 
Q @E        r.   r   c                  $    e Zd ZU ded<   ded<   dS )!PythonSignatureNativeFunctionPairr   	signaturer   functionNrA   r   r.   r,   r   r     s*         r.   r   c                  F    e Zd ZU ded<   ded<   ded<   edd            ZdS )PythonSignatureGroupr   r   r   basezNativeFunction | Noneoutplace
functionalr   re   (PythonSignatureNativeFunctionPair | Noner   c                    |t          |j        |j        d           S |j        j                                        }|j        j        |d<   t           t          |j                  di ||j        |j                  S )N)r   r   r   r   r   )r   r   r   __dict__copyr   rH   )clsr   re   signature_kwargss       r,   
from_pairszPythonSignatureGroup.from_pairs1  s     ;'$.(    =16688
  4 	./ $)d3=))==,<==$\
 
 
 	
r.   N)r   r   re   r   r   r   )rB   rC   rD   rE   classmethodr   r   r.   r,   r   r   $  s^         
   $###
 
 
 [
 
 
r.   r   c                  .    e Zd ZU ded<   ded<   ded<   dS )DispatchLambdaArgumentr   r   r^   rN   
is_out_argNrA   r   r.   r,   r   r   T  s0         IIIMMMr.   r   c                  P    e Zd ZU ded<   ded<   ded<   ded<   edd	            Zd
S )PythonArgParserOutputExprr   r   exprrs   indexrG   argumentr   c                    d| j          dS )Nz
_r.isNone(r#   )r   r&   s    r,   is_none_exprz&PythonArgParserOutputExpr.is_none_expro  s    )DJ))))r.   N)r   r   )rB   rC   rD   rE   r   r   r   r.   r,   r   r   `  sc          III III JJJ * * * X* * *r.   r   c                  $    e Zd ZU ded<   ded<   dS )DispatchLambdaArgumentExprszSequence[str]exprsinitsNrA   r   r.   r,   r   r   y  s.           r.   r   Fr   fr   rL   rN   r   c               8    t          j        | |          j        S )Nr   )r	   from_native_functionr   )r   rL   s     r,   _cpp_signaturer     s    1!FCCCMMr.   c                (    | j         j        j        d uS r   )funcr   tensor_options)r   s    r,   has_tensor_optionsr     s    6*$66r.   simple_typerM   tr   r   rM   c               4   t          | t                    r| j        t          j        k    rdS | j        t          j        k    rdS | j        t          j        k    rdS | j        t          j        t          j        t          j	        t          j
        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        fv r| j        j        S not          | t*                    rt-          | j        ||          }| dS t          | t0                    r(|s| j        nd }t          | j                  dk    r| j        J d| j         dS t          | j                  d	k    r
|d
| dndS t          | j                  dk    r|r
|d| dndS |d
| dndS t          | j                  dk    r
|d| dndS t          | j                  dk    r
|d| dndS t          | j                  dk    r|rdS dS t          | j                  dk    r
|d| dndS t-          | j        ||          }d| dS t5          dt7          |                      )Nint64_tdoublezc10::string_viewr   ?rN   z::std::array<bool,>rs   zIntArrayRef[]IntArrayRefr   zSymIntArrayRef[SymIntArrayRefrQ   zTensorList[
TensorListScalarzScalarList[
ScalarListTensor?z"c10::List<::std::optional<Tensor>>z*const c10::List<::std::optional<Tensor>> &DimnamezDimnameList[DimnameListz	ArrayRef<unrecognized type )r3   r   r   r   rs   floatr   rQ   rN   QSchemer   
ScalarType	GeneratorStorageLayoutDeviceDeviceIndexMemoryFormatr  Streamr   r   r[   rr   r   r   r   repr)r   r   rM   rr   r   s        r,   r[   r[     s    !X 7#6VZ9Vv|##8Vvz!!%%VMKNMNMMNMM
 
 
" 6;#
& 
A|	$	$ # [PPPzzz	Ax	 	  #(2qvvdqv;;&  6%%%11111[[E!!-1-=)$))))=P[[H$$ U151A-d----GW 261A-d----}T[[H$$,0,<(((((,N[[H$$,0,<(((((,N[[I%% D;;CC[[I%%-1-=)$))))=P [PPP"4""""
5DGG55
6
66r.   
int | Nonec                p    |                                  }|t          |j                  dk    r|j        S d S )NrN   )is_list_liker   rr   r   )r   ls     r,   argument_type_sizer    s4    	A}QV..vtr.   r   r   c                    t          | j        | j        | j        ;t	          t          t          j        | j        | j        d                              nd d           S )NFrP   r   rH   rI   rJ   )rG   r   rH   rI   r   r
   r   default_expr)r   s    r,   r   r     sb    VV y$ !#"219afU"S"S"STTUUU
 
 
 
r.   )rL   pyir  c               <    t          | j        | j        ||          S )N)category_overriderL   r  )signature_from_schemar   r  )r   rL   r  s      r,   r   r     s)     !	!"5f#   r.   r   r   r  c          
     	    g }|                      j        j                   |s0 j        j        $|                     j        j        j                   |                      j        j                   |                      j        j                   |                      j        j                   |                      j        j	                   d  j        j
        D             d  j        j        D             d  j        j	        D             t          t          t
          t          fd|                              }t          t          t
          t          fd|                              }t          t          t
          t          fd|                              }t          d  j        j        D                       }t          d                                  D                       rt%          d	          t          d
  j        D                       }	t)          j                   }
|dk    p|	o| }|dv p)|
                    d          p|
                    d          }|dk    }g }|s|r|sd  fd}|                    t1          dt3          t5          t6          j                            d|rd n
 |d                               |                    t1          dt3          t5          t6          j                            d|rd n
 |d                               |                    t1          dt3          t5          t6          j                            d|rd n |d          pd                     |                    t1          dt3          t5          t6          j                            dd                      |                    t1          dt3          t5          t6          j                            dd                      tA           j                  }tC          tE           j        j                  ||tF          $                    |          t          |          ||          S )!Nc                    h | ]	}|j         
S r   r   r   s     r,   	<setcomp>z(signature_from_schema.<locals>.<setcomp>  s    DDDQVDDDr.   c                    h | ]	}|j         
S r   r  r   s     r,   r  z(signature_from_schema.<locals>.<setcomp>  s    EEEafEEEr.   c                    h | ]	}|j         
S r   r  r   s     r,   r  z(signature_from_schema.<locals>.<setcomp>  s    666a16666r.   c                    | j         v S r   r  )r   input_arg_sets    r,   <lambda>z'signature_from_schema.<locals>.<lambda>  s    af6M r.   c                    | j         v S r   r  )r   kwarg_only_sets    r,   r#  z'signature_from_schema.<locals>.<lambda>  s    qv'? r.   c                    | j         v S r   r  )r   out_arg_sets    r,   r#  z'signature_from_schema.<locals>.<lambda>  s    16[3H r.   c              3  H   K   | ]}|j                                         V  d S r   r   r   s     r,   r-   z(signature_from_schema.<locals>.<genexpr>(  sA        $%     r.   c              3  ,   K   | ]}|j         d k    V  dS )requires_gradNr  r   s     r,   r-   z(signature_from_schema.<locals>.<genexpr>+  s)      
L
L16_$
L
L
L
L
L
Lr.   zTargument named requires_grad is reserved, should not explicitly add it in the schemac              3  H   K   | ]}|j                                         V  d S r   r   r*   rs     r,   r-   z(signature_from_schema.<locals>.<genexpr>2  s0      JJAF1133JJJJJJr.   factory)newlikenew__likedummyr   r   r   r   c                    j         j        }|d S t          ||           }|j        |j        dk    rd S t	          j        |j        |j        d          S )NrT   FrP   )r   r   getattrrI   r   r  rH   )r   	topt_argsr   r   s      r,   topt_default_initz0signature_from_schema.<locals>.topt_default_initB  s\    5I t	4((Ay AI$7$7t#AIqveDDDDr.   dtyperT   r  layoutdevicez$torch::tensors::get_default_device()
pin_memoryFalser*  r@   )r   r   r   r   r   r@   rL   )r   r   r   r   )%r   r   pre_self_positionalself_argr   r   post_self_positionalpre_tensor_options_kwarg_onlypost_tensor_options_kwarg_onlyre   flat_positionalflat_kwarg_onlyr5   rv   filterr   flat_non_outschema_order_arguments
ValueErrorr@   r   r   rt   ru   rG   r   r   r   r  r	  r
  rN   r>   r   r   rq   r   )r   r  rL   r  r   r   r   r}   has_tensor_input_arghas_tensor_returnr   is_factory_functionis_like_or_new_functionis_dummy_functionr   r7  r@   r"  r%  r'  s   `                @@@r,   r  r    s    DKK2333 6dn-9DN+4555KK3444KK<=== 	KK=>>>KK"###DDT^%CDDDMEEdn&DEEEN664>#5666Ks8V,M,M,M,Mt%T%TUUVVJHf????FFGG L C&)H)H)H)H$"O"OPPQQG   )-)D     
L
Ld.I.I.K.K
L
L
LLL 
b
 
 	
 JJT\JJJJJD+y8 6"66  	_, 	"??6""	"==!! 
 *W402 =
6 =
@Q =
	E 	E 	E 	E 	E 	E 	""!(6+<"="=>>3SDD9J9J79S9S  		
 		
 		
 	""!(6="9"9::3TDD9J9J89T9T  		
 		
 		
 	""!(6="9"9:: /DD *)(33 BA  	
 	
 	
 	""!!(6;"7"788!	  	
 	
 	
 	""$!(6;"7"788!	  	
 	
 	
 DL111G  !%227;;!"566   r.   r@   r?   	list[str]c                    t          |           dk    st          d | D                       rg S t          d | D                       rt          d          d | D             S )Nrj   c              3  (   K   | ]}|j         d u V  d S r   r  r,  s     r,   r-   z'structseq_fieldnames.<locals>.<genexpr>  s(      @@1$@@@@@@r.   c              3  (   K   | ]}|j         d u V  d S r   r  r,  s     r,   r-   z'structseq_fieldnames.<locals>.<genexpr>  s(      //!qv~//////r.   z)Unnamed field is not supported by codegenc                6    g | ]}t          |j                  S r   )r   r   r,  s     r,   r   z(structseq_fieldnames.<locals>.<listcomp>  s     ---AF---r.   )r1   r7   r   rH  r=  s    r,   structseq_fieldnamesrS    sy    
7||qC@@@@@@@	//w///// 
	J HIII--W----r.   c                   d}t          | t                    r	| j        } d}d}t          | t                    r| j        t
          j        t
          j        fv rd}| j        t
          j        k    rd}n6| j        t
          j	        k    rd}n| j        t
          j
        k    rd}n| j        t
          j        k    rd}n| j        t
          j        k    rd	}n| j        t
          j        k    rd
}n| j        t
          j        k    rd}n| j        t
          j        k    rd}n| j        t
          j        k    rd}nn| j        t
          j        k    rd}nU| j        t
          j        k    rd}n<| j        t
          j        k    rd}n#| j        t
          j        t
          j        t
          j        fv r| j        j        }nt          | t.                    rt          | j                  dk    r| j        dnd}n|                                 rd}| j        dnd}nt          | j                  dk    rd}nvt          | j                  dk    r$| j        t5          | j                  }| d| d}n:t5          | j                  }d| d}nt7          dt9          |                      |r| d                    dd          }|S )NFTr    _intz_int | SymInt_floatr   zNumber | _complex_dtype_bool_qscheme_layoutzDeviceLikeType | Nonememory_formatzstr | EllipsisType | NonezStorage | UntypedStoragers   z_int | _size_sizez*Tensor | tuple[Tensor, ...] | list[Tensor]z!tuple[Tensor, ...] | list[Tensor]r  zSequence[_float]r   z | Sequence[r   z	Sequence[r  rf   rg   )r3   r   rr   r   r   r   rs   r  r   r  r   r   r  rN   r  r	  r
  r  r  r  rQ   r  r  r   r   r   rp   r   r  r\   )r   add_optionalretrr   s       r,   rp   rp     s   L!\"" F
C!X 6;6fj&"4555C6V]""!CCVv|##CCVvz!!CCVv}$$%CCVv(((CCVv{""CCVv~%%CCVv}$$CCVv}$$)CCVv***!CCVv~%%-CCVv~%%,CCVv'7GGG&+C	Ax	 	  ;qv;;%$%F$6..GCC 	&  L 6% =<8 C
 [[G##$CC[[H$$);(00D..t...CC(00D%d%%%CC 9Q99::: Cooo%%&6	BBJr.   c                   t          | t                    r-t          | j                  }| d                    dd          S t          | t
                    r=| j        t          j        k    rdS | j        t          j	        k    rdS t          |           S t          | t                    rt          | j                  }d| dS t          |           S )Nrf   rg   _devicer   tuple[z, ...])r3   r   return_type_str_pyirr   r\   r   r   r   r
  r  rp   r   )r   inners     r,   rb  rb    s     !\"" F#AF++   (()99EEE!X ,6V]""9Vv~%%<(+++!X &#AF++%%%%% ###r.   r   tuple[str, str] | Nonec                   d | j         j         D             }| j        }t          | j         j                   }|rdd                    |           d}d| d| dg}t	          ||          D ]#\  }}|                    dd	| d
| dg           $|                    ddd| ddddt          |           dt          |           dddg
           d                    |          }||fS d S )Nc                6    g | ]}t          |j                  S r   rb  rH   r,  s     r,   r   z)returns_structseq_pyi.<locals>.<listcomp>  #    UUUa)!&11UUUr.   ra  r"   r   zclass r!   z):  # fmt: skipz    @propertyz    def z
(self) -> r$   z    def __new__(z        cls,z        sequence: r)   z    ) -> Self:  # fmt: skipz        ...z    n_fields: Final[_int] = z%    n_sequence_fields: Final[_int] = z%    n_unnamed_fields: Final[_int] = 0zG    def __init_subclass__(cls) -> NoReturn: ...  # prohibit subclassingr    r/   )r@   r   rS  r6   zipr   r1   )	r   python_returnsstructseq_namefield_namesseq_typestructseq_def_linesr   ret_typestructseq_defs	            r,   returns_structseq_pyirq    sa   UU9;L;TUUUN^N&y'8'@AAK /- 9DIIn55888?^??h???
 "+~>> 	 	ND(&&#>t>>x>>>    	"""0X000-As;/?/?AAJK8H8HJJ7Y	
 	
 	
 		"566$ },,4r.   c                   t          | j        j                  }|r
d| j         S d | j        j        D             }t          |          dk    rdd                    |          z   dz   S t          |          dk    r|d         S dS )	Nztorch.return_types.c                6    g | ]}t          |j                  S r   rg  r,  s     r,   r   z#returns_str_pyi.<locals>.<listcomp>>  rh  r.   rj   ra  r"   r   r   rT   )rS  r@   r   r1   r6   )r   rl  rj  s      r,   r   r   9  s    &y'8'@AAK 65Y^555UU9;L;TUUUN
>Q$))N333c99
>aa  6r.   ps"tuple[DispatchLambdaArgument, ...]c                    t           t                    r j        }n|j        }t	          j        |j        d|d|j                  }d |j        j        D             d	 fd}t          t          ||                    S )
NF)r   faithfulrM   rL   cpp_no_default_argsc                    h | ]	}|j         
S r   r  r   s     r,   r  z'dispatch_lambda_args.<locals>.<setcomp>~  s    ???Q!&???r.   cpp_argr   r   r   c                    | j         }| j        v }j        r| j        dk    rd}n0t                    dk    p| }|rddi                    ||          }t          | j        ||          S )Nr'   zconst at::Tensor &rj   zat::Tensor &
at::Tensor)r   r^   r   )rH   r   rL   r1   r]   r   )rz  r^   r   ensure_temp_safeout_argsrt  s       r,   dispatch_lambda_argz1dispatch_lambda_args.<locals>.dispatch_lambda_arg  s    <\X-
9 	*//+HH  #8}}1C^ *"L#h))  &!
 
 
 	
r.   )rz  r   r   r   )
r3   r   r   r   r   r   rx  re   r5   rv   )rt  r   rM   schemacpp_argsr  r~  s   `     @r,   dispatch_lambda_argsr  n  s     "/00 % }"1  H @?&*:*>???H
 
 
 
 
 
 
, ((33444r.   >   void*
at::Scalar
at::Streamat::QSchemeat::ScalarTypeat::IntArrayRef::std::vector<at::Tensor>::std::tuple<double,int64_t>#::std::tuple<at::Tensor,at::Tensor>.::std::tuple<at::Tensor,at::Tensor,at::Tensor>2::std::tuple<at::Tensor,::std::vector<at::Tensor>>2::std::tuple<at::Tensor,at::Tensor,double,int64_t>6::std::tuple<at::Tensor,at::Tensor,at::Tensor,int64_t>9::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>=::std::tuple<at::Tensor,at::Tensor,double,at::Tensor,int64_t>A::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,int64_t>D::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>O::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>r::std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,c10::SymInt,c10::SymInt,at::Tensor,at::Tensor,at::Tensor>rN   voidr   r   r|  c                    t          d | j        j        D                       }t          j        |d                                          }|t          vrt          | j        j         d|           |S )Nc              3  L   K   | ]}t          |j        |j        d           V   d S r   )r   r   rH   r,  s     r,   r-   z-dispatch_lambda_return_str.<locals>.<genexpr>  sC       ' ')*qvqvt$$' ' ' ' ' 'r.   TrP   z returns unsupported type )	r5   r   r@   r   returns_typecpp_typeSUPPORTED_RETURN_TYPESr   r   )r   returns_without_annotation
return_strs      r,   dispatch_lambda_return_strr    s    ( "' ' './fn' ' ' " " !"<TJJJSSUUJ///afkQQZQQRRRr.   c                v   | j                                         }t          j        | j         |          }t          j        | j        v rd| S t          j        | j        v rDt          |           s)| j         j        j        j	        
                    d          rd}nd}| d| S t          d| j                    )N)symint_overloadzself.r2  torchatz::z1could not dispatch, neither function nor method: )r   
has_symintr   r   r   rL   variantsr   r   r   ru   r   )r   rM   r   	namespaces       r,   cpp_dispatch_targetr    s    V  F8AFF333D~##t~~1:%%a   	AFK$4$9$B$B7$K$K 	III%%t%%%
S16SS
T
TTr.   )python_signaturer  PythonSignature | Noner   c               d    t           d                                          }d}t          |t                    st	          d |D                       }n%t	          t           fd|j                            }t          j         j	        v r"t	          t          dj
        |                    }|S )NFr   r   c              3  $   K   | ]}|j         V  d S r   r  r   s     r,   r-   z%cpp_dispatch_exprs.<locals>.<genexpr>  s$      //af//////r.   c                B    | dk    pj                                         S )Nre   )r   	is_out_fn)nr   s    r,   r#  z$cpp_dispatch_exprs.<locals>.<lambda>  s    !u*:(8(8(:(: r.   r'   )r   r   r3   r   r5   rE  r   r   rL   r  __ne__)r   r  r  r   s   `   r,   cpp_dispatch_exprsr    s    
 #15"A"A"A"K"K"M"MHE&(ABB 

//h///// :::: 6 
 
 ~##fV]E2233Lr.   rP   rI   rJ   c               V   |d u}|r$t          |           dvrt          d|  d          t          | t                    rZ| j        t
          j        t
          j        t
          j        t
          j	        t
          j
        fv r| j        j                                        S | j        t
          j        k    r|rdndS | j        t
          j        k    r|rdndS | j        t
          j        k    rdS | j        t
          j        k    rdS | j        t
          j        k    r|rd	ndS | j        t
          j        k    r|rd
ndS | j        t
          j        k    rdS | j        t
          j         k    rdS | j        t
          j        k    r|rdndS | j        t
          j        k    rdS n}t          | t*                    rt          | j                  dk    rdS t          | j                  dk    rdS t          | j                  dk    rdS |s|dv rt/          | j        d d |          dz   S t/          | j        |||          S t          | t0                    rt          | j                  dk    r| j        d| j         dndS t          | j                  dk    rdS t          | j                  dk    rd S t          | j                  d!k    rd"S t          | j                  d#k    rd$S t          | j                  d%k    r|rd&nd"S t          | j                  d'k    rd(S t          d|  d)          )*N)ScalarType?r  r
  Device?r	  Layout?rN   bool?ztype 'z+' does not supported unpacking with defaultscalartypeWithDefault
scalartypedeviceWithDefaultr:  toInt64toSymInttoBoolWithDefaulttoBooltoDouble
stringViewlayoutWithDefaultr9  memoryformatrQ   optionalTensorr  	generatorz	Dimname[]toDimnameListOptional)NrT   rV   rW   rP   Optionalztensorlist_n<r   
tensorlistr   list_of_optional_tensorsr  dimnamelistrs   intlistr  
doublelistr   
symintlistr   
scalarlistz%' is not supported by PythonArgParser)r   r   r3   r   r   r   rQ   r  r  r   r  lowerr  r
  r  rs   r   rN   r  r	  r  r   rr   arg_parser_unpack_methodr   r   )r   rI   rJ   rM   has_default_inits        r,   r  r    sf    $4/ 
TCFF 	+ 	 	 RARRRSSS!X H 6MMNMN
 
 
 6;$$&&&Vv(((.>P**LPVv}$$*:H&&HVv)))9Vvz!!9Vv}$$!'6::Y6Vv{""*:H&&HVv|##:Vvz!!<Vv}$$*:H&&HVv***!> + 
A|	$	$ ) qv;;(""##[[K'';[[K''**! 	g 2
 '
 '
 )tFKKKjX
 ,f    
Ax	 	   qv;;(""010B,16,,,,T[[I%%--[[I%% =[[E!!9[[G##<[[H$$#)8<<y8[[H$$<
HHHH
I
IIr.   	arg_indexrs   c                   |j         d u}t          |j        |j        |j         |          }|r
d|j          nd}d| d|  | d}t	          |j        || |          S )N)r   rI   rJ   rM   r"   r    z_r.r!   r#   )r   r   r   r   )rJ   r  rH   rI   r   r   )r  r   rM   has_defaultunpack_methodrI   r   s          r,   arg_parser_output_exprr  k  s     .,K,
&!)!.  M (3:#1>###G6666G666D$V	   r.   $dict[str, PythonArgParserOutputExpr]c               ^    fdt          |                                           D             S )Nc                J    i | ]\  }}t          ||           }|j        | S )rP   )r  r   )r*   ir   erM   s       r,   
<dictcomp>z+arg_parser_output_exprs.<locals>.<dictcomp>  sE       Aq(Af===A 	
  r.   )	enumerater   )rt  r   rM   s     `r,   arg_parser_output_exprsr  ~  s>       bllnn--   r.   r  r  r  r  )r8  r:  r9  r;  r*  c               6   t          | ||          }t          | ||          }g }i t          |          }|                     d          D ]}|j        }||j                 j        }	|r&|dk    r |                    d|	 dg           ||<   Dt          |t                    rtt          |j
                  dk    r\|j                                        rC|                    d|	 dg           t          |j
                  D ]\  }
}d	|
 d
|j        <   t          |j                  dk    r/|                    d| d|	 dd| d| d| dg           ||<   |	|<   | j        rdd<   d | j        D             |rj|j                                        rt%          |j         d          | j        D ]}|j        t&          vrt%          |j         d|j         d          t          |j                  t&                              |j                  k    r4t%          |j         dt          |j                   d|j         d          t+          fdt&          D                       st%          |j         d           |                    d|d         j         d|d         j         d|d          j         d!|d"         j         d#|d$         j         d%           d&d&<   |srdv r|j                                        s!t%          |j         d'|  d(| j                   t+          fd)d*D                       st%          |j         d+          |                    d,|d-         j         d.|d         j         d/|d         j         d.|d          j         d/|d         j         d.|d         j         d0           d"vrt%          |j         d1 d
          t1          t3          fd2|D                       |3          S )4NrP   T)r   r'   zauto self = ;rj   zauto out = zout[r   z
Dimname[]?zauto __ro   z::std::optional<DimnameList> z = __z& ? ::std::make_optional(DimnameList(__z.value())) : ::std::nullopt;c                    g | ]	}|j         
S r   r  r   s     r,   r   z)dispatch_lambda_exprs.<locals>.<listcomp>  s     H H HA H H Hr.   z : tensor options with output argz%: unrecognized tensor options field 'z' in python binding argumentsz: unrecognized type 'z' for tensor options field ''c              3      K   | ]}|v V  	d S r   r   r*   r   tensor_options_args_namess     r,   r-   z(dispatch_lambda_exprs.<locals>.<genexpr>  s)      QQa111QQQQQQr.   z": incomplete tensor options args: z0const auto options = TensorOptions()
    .dtype(r8  z)
    .device(r:  z)
    .layout(r9  z)
    .requires_grad(r*  z)
    .pinned_memory(r;  z3);
torch::utils::maybe_initialize_device(options);
optionsz3: dtype in tensor_options_args without output arg, rY   c              3      K   | ]}|v V  	d S r   r   r  s     r,   r-   z(dispatch_lambda_exprs.<locals>.<genexpr>  s)      TT!q55TTTTTTr.   )r9  r:  z,: incomplete tensor options for output checkzcheck_out_type_matches(re   r"   z,
                       z);
zE: expected "requires_grad" in tensor_options_args absent, but found [c              3  2   K   | ]}|j                  V  d S r   r  )r*   r   lambda_args_exprss     r,   r-   z(dispatch_lambda_exprs.<locals>.<genexpr>
  s+      CC!%af-CCCCCCr.   )r   r   )r  r  r   r   r   r   r   r3   rq   r1   r}   r   r  r  r   rH   rL   r   r   TENSOR_OPTIONS_FIELDSr]   r7   r   r   r   r5   )rt  r   rM   arg_parser_outputslambda_argsr   has_toptionsr   r   arg_parser_exprr  out_argr  r  s               @@r,   dispatch_lambda_exprsr    s    1QvFFF&r1V<<<KE(*%a((L \\d\33 '6 '6v,QV49 #	6DFNNLL5?555  
 '+d##q+,,	6AI""  "" # LL4/444  
 (	22 > >
72=+++!',//>[[L(( LL9d99999 ND  N  Nt  N  Nko  N  N  N   '+d## '6d## 
y +$*&! !I H1G H H H 16 	L!&JJJKKK' 	 	Av222"viiAFiii   16{{377????"vffCKKff]^]cfff   @ QQQQ;PQQQQQ 	6XX=VXX   	w',   ).   ).	 
 '7<  '|49  
	
 
	
 
	
 (1)$  5 ///6##%% "veeRTeeWYWcee   TTTT?STTTTT "vKKK   LL*516 :LW:U:Z *73@ DVW_D`De  +849  >PPX=Y=f     ";;;6||`y|||   'CCCC{CCCCC   r.   )r   N)r   r   r   r   r   r   r   r   )r   r   rL   rN   r   r   )r   r   r   rN   )r   r   r   rN   rM   rN   r   r   )r   r   r   r  )r   r   r   rG   )r   r   rL   rN   r  rN   r   r   )
r   r   r  r   rL   rN   r  rN   r   r   )r@   r?   r   rN  )r   r   r   r   )r   r   r   rd  )r   r   r   r   )T)rt  r   r   r   rM   rN   r   ru  )r   r   r   r   )r   r   r  r  r   r   )
r   r   rI   r   rJ   r   rM   rN   r   r   )r  rs   r   rG   rM   rN   r   r   )rt  r   r   r   rM   rN   r   r  )rt  r   r   r   rM   rN   r   r   )=
__future__r   dataclassesr   typingr   torchgen.apir   torchgen.api.typesr   r   r	   torchgen.genr
   torchgen.modelr   r   r   r   r   r   r   r   r   r   collections.abcr   r   r;   r>   rG   rq   r   r   r   r   r   r   r   r   r   r[   r  r   r   r  rS  rp   rb  rq  r   r  r  r  r  r  r  r  r  r  r  r   r.   r,   <module>r     s   " " " " " " ! ! ! ! ! !                   G G G G G G G G G G * * * * * *                         322222222j IM? ? ? ? ?0 $                $Y) Y) Y) Y) Y) Y) Y) Y)x $!C !C !C !C !C !C !C !CH $vQ vQ vQ vQ vQ vQ vQ vQv $' ' ' ' ' ' ' 'f $        $'
 '
 '
 '
 '
 '
 '
 '
^ $        $* * * * * * * *0 $       2 9> N N N N N N7 7 7 7 %*$<7 <7 <7 <7 <7 <7~        */E      F F F F F F`. . . .&B B B BJ$ $ $ $.4 4 4 4n
 
 
 
l <@)5 )5 )5 )5 )5^   :   :U U U U" 04     R OSYJ YJ YJ YJ YJ YJ~ :>     ( ?C         ?Cy y y y y y y yr.   