Ë
    ÌÓ^júµ  ã                  óp  — d dl mZ d dlZd dlZd dlmZ d dlmZ d dl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mZmZmZ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#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z. ddl/m0Z0 ddl1m2Z2 er
d dl3m4Z4m5Z5m6Z6 g d¢Z7e7D � cg c]  }  ejp                  d| › d�«      ‘Œ c} Z9g d¢Z:ed=d„«       Z;d>d„Z<d?d„Z=d=d„Z>d=d„Z?d=d„Z@d=d„ZAd=d„ZBd=d„ZCd=d„ZDd=d„ZEd d!œ	 	 	 	 	 	 	 	 	 	 	 	 	 d@d"„ZF	 	 	 	 	 	 dAd#„ZGd d!œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dBd$„ZH	 	 	 	 	 	 	 	 	 	 dCd%„ZI	 	 	 	 	 	 	 	 	 	 dCd&„ZJd d!œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dDd'„ZKd(d(d)œ	 	 	 	 	 	 	 	 	 	 	 dEd*„ZL	 	 	 	 	 	 	 	 	 	 dFd+„ZMedGd,„«       ZN	 	 	 	 dHd-„ZO	 	 	 	 dId.„ZP	 	 	 	 dJd/„ZQ ed0«      ZR ed1«      ZS ed2«      ZT ed3«      ZUd d!œ	 	 	 	 	 	 	 	 	 	 	 dKd4„ZV	 	 	 	 	 	 	 	 	 	 dLd5„ZW ed6«      ZXd d!œ	 	 	 	 	 	 	 dMd7„ZY	 	 	 	 	 	 	 	 dNd8„ZZ	 	 	 	 	 	 	 	 	 	 dOd9„Z[d d!œ	 	 	 	 	 dPd:„Z\d d!œ	 	 	 	 	 dQd;„Z]d d!œ	 	 	 	 	 	 	 	 	 dRd<„Z^yc c} w )Sé    )ÚannotationsN)Údefaultdict)ÚTYPE_CHECKING)Úcpp)Úarg_parser_output_exprsÚcpp_dispatch_exprsÚcpp_dispatch_targetÚdispatch_lambda_argsÚdispatch_lambda_exprsÚdispatch_lambda_return_strÚhas_tensor_optionsÚPythonSignatureÚPythonSignatureDeprecatedÚPythonSignatureGroupÚ!PythonSignatureNativeFunctionPairÚ	signatureÚsignature_from_schemaÚstructseq_fieldnames)ÚCodeTemplate©Úwith_native_function)Ú
cpp_stringÚparse_native_yamlÚparse_tags_yaml)ÚArgumentÚBaseOperatorNameÚFunctionSchemaÚNativeFunctionÚ
SchemaKindÚTypeÚVariant)ÚFileManagerÚsplit_name_params)Ú
YamlLoaderé   )Úis_tensor_list_type)Úshould_trace)ÚCallableÚIterableÚSequence)YÚaliasÚ
contiguousÚdimÚ
get_deviceÚis_contiguousÚis_cudaÚ	is_sparseÚis_sparse_csrÚnumelÚsizeÚstorage_offsetÚstrideÚsym_is_contiguousÚsym_sizeÚ
sym_strideÚsym_storage_offsetÚ	sym_numelz.*_backwardz#.*_backward_(out|input|weight|bias)z
.*_forwardz.*_forward_outz.*_jvpÚ_unsafe_viewÚtensorz2_?sparse_(coo|compressed|csr|csc|bsr|bsc)_tensor.*z_range.*Ú_sparse_add_outz_sparse_div.*z_sparse_mul.*z_sparse_sub.*Ú_sparse_dense_add_outÚindexÚ	index_outÚunique_dim_consecutivez	_cumsum.*z
_cumprod.*z_sum.*z_prod.*z_th_.*z_thnn_.*zrange.*z_solve.*z
_inverse.*z_cholesky.*z_triangular_solve.*z_qr.*z_svd.*ÚsliceÚitemÚ_local_scalar_denseÚtoÚ_to_copyÚ_to_copy_outÚ_reshape_copyÚ_reshape_copy_outÚcopy_sparse_to_sparse_Úcopy_Ú_foreach_copyÚnumpy_TÚmatrix_HÚmTÚmHznonzero(_(out|numpy))?Úset_dataz.*_overrideableÚdataÚis_leafÚ	output_nrÚ_versionÚrequires_grad_Úretains_gradÚset_Ú
_fw_primalÚ)fake_quantize_per_tensor_affine_cachemaskÚ*fake_quantize_per_channel_affine_cachemaskÚ!_new_zeros_with_same_feature_metaÚ_has_same_storage_numelÚ_reshape_aliasÚreplace_Úcopyzfill.Tensorzfill.Scalarzlift.*Únormal_functionalÚnbytesÚitemsizeÚ_batch_norm_with_updateÚ_batch_norm_with_update_outÚ_batch_norm_no_updateú^ú$)z?add.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> TensorzHadd_.Scalar(Tensor(a!) self, Scalar other, Scalar alpha=1) -> Tensor(a!)z?sub.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> TensorzHsub_.Scalar(Tensor(a!) self, Scalar other, Scalar alpha=1) -> Tensor(a!)z/mul.Scalar(Tensor self, Scalar other) -> Tensorz8mul_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!)z/div.Scalar(Tensor self, Scalar other) -> Tensorz8div_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!)c                ó  — d| j                   v rd| j                   vryt        j                  | j                  «      }t        D ]  }|j                  |«      sŒ y t        | j                  «      }t        D ]	  }||k(  sŒ	 y y)NÚ	generatedÚ	view_copyFT)Útagsr   ÚnameÚfuncÚSKIP_PYTHON_BINDINGSÚmatchÚstrÚSKIP_PYTHON_BINDINGS_SIGNATURES)Úfrn   Ú
skip_regexr   Úpatterns        úz/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torchgen/packaged/autograd/gen_python_functions.pyÚshould_generate_py_bindingrx   Ê   s~   € ð �a—f‘fÑ °A·F±FÑ!:Øä�8‰8�A—F‘FÓ€DÜ*ò ˆ
Ø×Ñ˜DÕ!Ùðô �A—F‘F“€IÜ2ò ˆØ�iÓÙðð ó    c                ó   — d| › �S )NÚTHPVariable_© )rn   s    rw   Úget_pycnamer}   à   s   € Ø˜$˜Ð Ð ry   c                ób   — t        | «      dk(  xr  | d   j                  j                  «       dk(  S )Nr%   r   )Úlenr   Úarguments_count)Ú	overloadss    rw   Úis_noargr‚   ä   s.   € Üˆy‹>˜QÑÒP 9¨Q¡<×#9Ñ#9×#IÑ#IÓ#KÈqÑ#PÐPry   c                óZ   — | j                   d u xr t        j                  | j                  v S ©N)Úpython_moduler!   ÚmethodÚvariants©rt   s    rw   Úis_py_variable_methodr‰   è   s#   € Ø�?‰?˜dÐ"ÒC¤w§~¡~¸¿¹Ð'CÐCry   c                óZ   — | j                   d u xr t        j                  | j                  v S r„   )r…   r!   Úfunctionr‡   rˆ   s    rw   Úis_py_torch_functionrŒ   ì   s%   € Ø�?‰?˜dÐ"ÒE¤w×'7Ñ'7¸1¿:¹:Ð'EÐEry   c                ó    — | j                   dk(  S )NÚnn©r…   rˆ   s    rw   Úis_py_nn_functionr�   ð   s   € Ø�?‰?˜dÑ"Ð"ry   c                ó    — | j                   dk(  S )NÚfftr�   rˆ   s    rw   Úis_py_fft_functionr“   ô   s   € Ø�?‰?˜eÑ#Ð#ry   c                ó    — | j                   dk(  S )NÚlinalgr�   rˆ   s    rw   Úis_py_linalg_functionr–   ø   ó   € Ø�?‰?˜hÑ&Ð&ry   c                ó    — | j                   dk(  S )NÚnestedr�   rˆ   s    rw   Úis_py_nested_functionrš   ü   r—   ry   c                ó    — | j                   dk(  S )NÚsparser�   rˆ   s    rw   Úis_py_sparse_functionr�      r—   ry   c                ó    — | j                   dk(  S )NÚspecialr�   rˆ   s    rw   Úis_py_special_functionr      s   € Ø�?‰?˜iÑ'Ð'ry   T©Úsymintc          
     óš  ‡— t        | |d¬«      }t        ||«      j                  }t        t	        t
        |«      «      }t        ||d¬«      }t        ||t        d dd|¬«       t        ||d¬«      }	t        ||	t        dddd	|¬
«       t        ||	t        ddd|¬«       t        ||	t        ddd|¬«       t        ||	t        ddd|¬«       t        ||	t        ddd¬«       t        ||	t        ddd|¬«       t        ||	t         ddd|¬«       t#        ||	d„ d«       t%        ||	d„ d«       t'        |«      Šdˆfd„}
|j)                  d|
«       y )NF)Úinstall_dirÚtemplate_dirÚdry_runT©r†   zpython_variable_methods.cpp©r†   r¢   Útorchzpython_torch_functions.cppé   )r†   Ú
num_shardsr¢   útorch.nnzpython_nn_functions.cppú	torch.fftzpython_fft_functions.cppútorch.linalgzpython_linalg_functions.cppútorch.nestedzpython_nested_functions.cppútorch.sparsezpython_sparse_functions.cppútorch.specialzpython_special_functions.cppc                 ó   — y©NTr|   ©Úfns    rw   ú<lambda>zgen.<locals>.<lambda>w  ó   � ry   zpython_return_types.cppc                 ó   — yr³   r|   r´   s    rw   r¶   zgen.<locals>.<lambda>z  r·   ry   zpython_return_types.hc                 óp   •— ddj                  t        ‰«      D � cg c]  } d| › d| › d�‘Œ c} «      iS c c} w )NÚenum_of_valid_tagsÚ z	
.value("z", at::Tag::ú))ÚjoinÚsorted)ÚtagÚ
valid_tagss    €rw   Úgen_tags_enumzgen.<locals>.gen_tags_enum  sD   ø€ à Ø—‘ÜEKÈJÓEWÖX¸c�z #  l°3°%°qÒ9ÒXóð
ð 	
ùò Ys   ›3
zpython_enum_tag.cpp)Úreturnúdict[str, str])r"   r   Únative_functionsÚlistÚfilterrx   Úload_signaturesÚcreate_python_bindingsr‰   Úcreate_python_bindings_shardedrŒ   r�   r“   r–   rš   r�   r    Ú"create_python_return_type_bindingsÚ)create_python_return_type_bindings_headerr   Úwrite)ÚoutÚnative_yaml_pathÚtags_yaml_pathÚdeprecated_yaml_pathÚtemplate_pathr¢   ÚfmrÄ   ÚmethodsÚ	functionsrÁ   rÀ   s              @rw   ÚgenrÕ     s¡  ø€ ô 
 °=È%Ô	P€BÜ(Ø˜.óçÑð ô œFÔ#=Ð?OÓPÓQÐäÐ.Ð0DÈTÔR€GÜØ
ØÜØØ%ØØõô  Ð 0Ð2FÈuÔU€IÜ"Ø
ØÜØØ$ØØØõ	ô Ø
ØÜØØ!ØØõô Ø
ØÜØØ"ØØõô Ø
ØÜØØ%ØØõô Ø
ØÜØØ%Øõô Ø
ØÜØØ%ØØõô Ø
ØÜØØ&ØØõô 'Ø
ˆI‘Ð(Aôô .Ø
ˆI‘Ð(?ôô ! Ó0€Jõ
ð ‡H�HÐ" MÕ2ry   c                óÐ   — t        t        «      }| D ]Q  } ||j                  «      sŒ||j                  j                  j                  j                     j                  |«       ŒS |S r„   )r   rÅ   r‹   ro   rn   Úappend)ÚpairsÚpredÚgroupedÚpairs       rw   Úgroup_filter_overloadsrÜ   ‹  s^   € ô
 	”DÓð ð ò ?ˆÙ�—‘ÕØ�D—M‘M×&Ñ&×+Ñ+×0Ñ0Ñ1×8Ñ8¸Õ>ð?ð €Nry   c          
     ó²  ‡ ‡‡
‡‡‡— g Šg Š
g Šg Št        ||«      }t        |j                  «       t        ¬«      D ]€  }||   }	‰j	                  t        |||	||¬«      «       ‰j	                  t        |||	|¬«      «       ‰j                  t        ||	|¬«      «       ‰
j	                  d|j                  › d�«       Œ‚ ‰ j                  ‰‰ˆˆ ˆ
ˆˆˆfd„«       y)ú+Generates Python bindings to ATen functions©Úkeyr¨   r§   ú#include <ATen/ops/ú.h>c                 óB   •— dd‰j                  «       › d‰ › �z   ‰‰‰‰dœS )Nú@úgenerated from ú/)Úgenerated_commentÚops_headersÚpy_forwardsÚ
py_methodsÚpy_method_defs©Útemplate_dir_for_comments)ÚfilenamerÒ   rè   ré   rë   rê   s   €€€€€€rw   r¶   z(create_python_bindings.<locals>.<lambda>¶  s9   ø€ Ø!$Ø × <Ñ <Ó >Ð?¸qÀÀ
ÐKñ"Là&Ø&Ø$Ø,ñ
€ ry   N)rÜ   r¾   Úkeysrr   r×   Úmethod_implÚ
method_defÚextendÚforward_declsÚbaseÚwrite_with_template)rÒ   rØ   rÙ   Úmodulerî   r†   r¢   rÚ   rn   r�   rè   ré   rë   rê   s   `   `     @@@@rw   rÈ   rÈ   ˜  sØ   ý€ ð €JØ€KØ "€NØ€Kä$ U¨DÓ1€Gä�w—|‘|“~¬3Ô/ò AˆØ˜D‘Mˆ	Ø×ÑÜ˜˜f i¸ÀvÔNô	
ð 	×Ñœj¨¨v°yÈÔPÔQØ×Ñœ=¨¨yÀÔHÔIØ×ÑÐ0°·±°¸3Ð?Õ@ðAð ×ÑØØ÷	
ð 	
õry   c                ó\  ‡ ‡‡	‡
— g Š	g Š
t        ||«      }t        |j                  «       t        ¬«      D ]]  }||   }t	        |«      \  }}‰	j                  |sdndj                  |«      «       ‰
j                  |sdndj                  |«      «       Œ_ ‰ j                  ‰‰ˆˆ ˆ	ˆ
fd„«       y)z®
    Generate function to initialize and return named tuple for native functions
    which returns named tuple and registration invocations in `python_return_types.cpp`.
    rß   r»   ú
c                 ó>   •— dd‰j                  «       › d‰ › �z   ‰‰dœS )Nrä   rå   ræ   )rç   Úpy_return_typesÚpy_return_types_registrationsrì   )rî   rÒ   Úpy_return_types_definitionrû   s   €€€€rw   r¶   z4create_python_return_type_bindings.<locals>.<lambda>ß  s3   ø€ Ø!$Ø × <Ñ <Ó >Ð?¸qÀÀ
ÐKñ"Là9Ø-Jñ	
€ ry   N)rÜ   r¾   rï   rr   Ú1generate_return_type_definition_and_registrationsr×   r½   rõ   )rÒ   rØ   rÙ   rî   rÚ   rn   r�   ÚdefinitionsÚregistrationsrü   rû   s   `  `     @@rw   rÊ   rÊ   Á  s¯   û€ ð -/ÐØ/1Ð!ä$ U¨DÓ1€Gä�w—|‘|“~¬3Ô/ò 

ˆØ˜D‘Mˆ	Ü%VØó&
Ñ"ˆ�]ð 	#×)Ñ)Ù!‰B t§y¡y°Ó'=ô	
ð 	&×,Ñ,Ù#‰B¨¯©°=Ó)Aõ	
ð

ð ×ÑØØö	
õ	ry   c                ó  ‡ ‡‡— g Št        ||«      }t        |j                  «       t        ¬«      D ]6  }||   }t	        |«      }‰j                  |sdndj                  |«      «       Œ8 ‰ j                  ‰‰ˆˆ ˆfd„«       y)z°
    Generate function to initialize and return named tuple for native functions
    which returns named tuple and relevant entry for the map in `python_return_types.cpp`.
    rß   r»   rø   c                 ó<   •— dd‰j                  «       › d‰ › �z   ‰dœS )Nrä   rå   ræ   )rç   Úpy_return_types_declarationsrì   )rî   rÒ   r  s   €€€rw   r¶   z;create_python_return_type_bindings_header.<locals>.<lambda>   s0   ø€ Ø!$Ø × <Ñ <Ó >Ð?¸qÀÀ
ÐKñ"Là,Hñ
€ ry   N)rÜ   r¾   rï   rr   Ú!generate_return_type_declarationsr×   r½   rõ   )	rÒ   rØ   rÙ   rî   rÚ   rn   r�   Údeclarationsr  s	   `  `    @rw   rË   rË   è  s   ú€ ð /1Ð ä$ U¨DÓ1€Gä�w—|‘|“~¬3Ô/ò 
ˆØ˜D‘Mˆ	Ü8¸ÓCˆØ$×+Ñ+Ù"‰B¨¯	©	°,Ó(?õ	
ð
ð ×ÑØØõ	
õry   c          
     óÌ   ‡‡‡— t        ||«      }	 	 	 	 d
d„}		 	 	 	 dˆˆˆfd„}
| j                  ||j                  «       ddd| j                  «       › d|› �z   i|	|
|h d£¬«       y	)rÞ   c                ó    — | d   j                   S )Nr   )rô   )Úkvs    rw   Úkey_funcz0create_python_bindings_sharded.<locals>.key_func  s   € ð �!‰u�z‰zÐry   c           	     óž   •— | \  }}d|j                   › d�gt        t        ||‰¬«      «      t        |‰|‰‰¬«      gt	        |‰|‰¬«      gdœS )Nrá   râ   r§   r¨   )rè   ré   rê   rë   )rô   rÅ   ró   rð   rñ   )r  rn   Úfn_pairsr†   rö   r¢   s      €€€rw   Úenv_funcz0create_python_bindings_sharded.<locals>.env_func  sd   ø€ ð ‰ˆˆhà1°$·)±)°¸CÐ@ÐAÜ¤¨d°HÀVÔ LÓMä˜D &¨(¸6È&ÔQðô  *¨$°¸ÈÔPÐQñ
ð 	
ry   rç   rä   rå   ræ   >   rê   rè   ré   rë   )Úbase_envÚkey_fnÚenv_callabler«   Úsharded_keysN)r  ú@tuple[BaseOperatorName, list[PythonSignatureNativeFunctionPair]]rÂ   rr   )r  r  rÂ   zdict[str, list[str]])rÜ   Úwrite_shardedÚitemsrí   )rÒ   rØ   rÙ   rö   rî   r†   r«   r¢   rÚ   r  r  s      ` ` `   rw   rÉ   rÉ     s”   ú€ ô % U¨DÓ1€GðØLðà	óð

ØLð
à	÷
ð ×ÑØØ�‰‹à Ø × <Ñ <Ó >Ð?¸qÀÀ
ÐKñ"Lð
ð ØØÚSð õ ry   F)Úskip_deprecatedÚpyic               ó€   ‡‡— t         dˆˆfd„«       }t        t        || «      «      }t        ||‰‰¬«      }|r|S ||z   S )Nc                ó6   •— t        t        | ‰‰¬«      | ¬«      S )N©r†   r  ©r   r‹   )r   r   )rt   r†   r  s    €€rw   Úgen_signature_pairsz,load_signatures.<locals>.gen_signature_pairs>  s   ø€ ä0Ü ¨&°cÔ:Øô
ð 	
ry   r  )rt   r   rÂ   r   )r   rÅ   ÚmapÚload_deprecated_signatures)rÄ   rÐ   r†   r  r  r  rØ   Ú
deprecateds     ` `   rw   rÇ   rÇ   6  sT   ù€ ô õ
ó ð
ô ”Ð(Ð*:Ó;Ó<€EÜ+ØÐ#¨F¸ô€Jñ $ˆ5Ð;¨°Ñ);Ð;ry   c               ó†  ‡‡‡‡‡— t        t        «      }| D ]*  }||j                  j                     j	                  |«       Œ, g }t        |«      5 }t        j                  |t        ¬«      }d d d «       D �]´  }	t        j                  |	d   «      Št        |	d   «      \  }
Š|
j                  d«      Š‰r|
j                  dd«      }
dt        j                  d«      iŠ‰j                  j                   D �ci c]  }|j                  |“Œ c}Š‰D ]  }|‰vsŒ|‰vsŒt#        d|› �«      ‚ 	 	 	 	 dˆˆˆˆˆfd	„}d
}||
   D ]Ë  } ||j$                  j&                  «      sŒ d}t)        ‰|j$                  j*                  ||¬«      }|j	                  t-        t/        |j                  |j0                  |j2                  |j4                  |j6                  |j8                  ‰t;        ‰«      |j<                  ¬«	      |j$                  ¬«      «       ŒÍ |r�Œ�t#        d|
› dt?        ‰«      › �«      ‚ |S # 1 sw Y   �ŒÆxY wc c}w )N)ÚLoaderrn   ÚatenÚ_outr»   Ú1ÚScalarz+deprecation definition: Unrecognized value c                óh  •— ‰	r?t        j                  | j                  j                  | j                  j                  «      }n| j                  j
                  }t        |«      D ]p  \  }}|t        ‰«      k  rO‰|   }|‰
v r‰
|   }d }n‰|   }|j                  }|j                  }||j                  k7  s||j                  k7  sŒa y|j                  �Œp y t        ‰j                  «      t        | j                  «      k(  xr0 t        d„ t        ‰j                  | j                  «      D «       «      S )NFc              3  ó,   K  — | ]  \  }}||k(  –— Œ y ­wr„   r|   )Ú.0ÚaÚbs      rw   ú	<genexpr>zKload_deprecated_signatures.<locals>.is_schema_compatible.<locals>.<genexpr>”  s   è ø€ ò KÙ˜1˜a��Q•ñKùs   ‚)Ú	itertoolsÚchainÚ	argumentsrÍ   Úflat_non_outÚflat_allÚ	enumerater   ÚtypeÚ
annotationÚdefaultÚreturnsÚallÚzip)Úaten_schemar+  ÚiÚargÚarg_nameÚschema_typeÚschema_annotationÚ
schema_argÚ	call_argsÚis_outÚknown_constantsÚschemaÚschema_args_by_names           €€€€€rw   Úis_schema_compatiblez8load_deprecated_signatures.<locals>.is_schema_compatiblex  s"  ø€ ñ Ü%ŸO™OØ×)Ñ)×-Ñ-¨{×/DÑ/D×/QÑ/Qó‘	ð (×1Ñ1×:Ñ:�	ä# IÓ.ò %‘��3Ø”s˜9“~Ò%Ø(¨™|�HØ ?Ñ2Ø&5°hÑ&?˜Ø,0Ñ)à%8¸Ñ%B˜
Ø&0§o¡o˜Ø,6×,AÑ,AÐ)à" c§h¡hÒ.Ð2CÀsÇ~Á~Ó2UÙ$à—{‘{Ñ*Ù$ð%ô" �v—~‘~Ó&¬#¨k×.AÑ.AÓ*BÑBò Äsñ KÜ#& v§~¡~°{×7JÑ7JÓ#KôKó Hð ry   FT)Úcategory_overrider†   r  )	rn   Ú
input_argsÚinput_kwargsÚoutput_argsÚtensor_options_argsr†   Údeprecated_schemaÚdeprecated_args_exprsr2  r  zNo native function with name z matched signature:
  )r5  r   rÂ   Úbool) r   rÅ   r   rn   r×   ÚopenÚyamlÚloadr$   r   Úparser#   ÚendswithÚreplacer    r+  r-  ÚAssertionErrorr‹   ro   r   rB  r   r   rC  rD  rE  rF  r†   Útupler2  rr   )rØ   rÐ   r†   r  rÚ   rÛ   Úresultsrt   Údeprecated_defsr  Ú	aten_namer&  rn   rA  Úany_schema_foundÚ
python_sigr<  r=  r>  r?  r@  s                   @@@@@rw   r  r  L  sd  ü€ ô CNÌdÓBS€GØò 2ˆØ�—‘×#Ñ#Ñ$×+Ñ+¨DÕ1ð2ð 8:€Gä	Ð"Ó	#ð : qÜŸ)™) A¬jÔ9ˆ÷:ð &ó Uˆ
Ü×%Ñ% j°Ñ&8Ó9ˆÜ0°¸FÑ1CÓDÑˆ	�9Ø×#Ñ# FÓ+ˆÙØ!×)Ñ)¨&°"Ó5ˆIð
 ”—‘˜HÓ%ð
ˆð 39×2BÑ2B×2KÑ2KÖL¨Q˜qŸv™v q™yÒLÐØò 	ˆDØÐ.Ò.°4¸Ò3NÜ$ØAÀ$ÀÐHóð ð	ð	Ø'ð	à÷	ñ 	ð@ !ÐØ˜IÑ&ò 	ˆDÙ'¨¯©×(:Ñ(:Ô;ØØ#Ðä.ØØ"&§-¡-×"AÑ"AØØô	ˆJð �N‰NÜ1Ü7Ø'Ÿ_™_Ø#-×#8Ñ#8Ø%/×%<Ñ%<Ø$.×$:Ñ$:Ø,6×,JÑ,JØ)×0Ñ0Ø*0Ü.3°IÓ.>Ø *× 2Ñ 2ô
ð "Ÿ]™]ôõð	ó8  Ü Ø/°	¨{Ð:QÔRUÐV\ÓR]ÐQ^Ð_óð ðgUðn €N÷u:ñ :üò Ms   ÁH1Ã8H>È1H;c                ó¨   — t        j                  | j                  «      }t        | j                  j                  «      }dj                  |g|z   «      S )NÚ_)r   rn   ro   r   r2  r½   )rt   rn   Ú
fieldnamess      rw   Úgen_structseq_typename_keyrZ  Ä  s<   € ä�8‰8�A—F‘FÓ€DÜ% a§f¡f§n¡nÓ5€JØ�8‰8�T�F˜ZÑ'Ó(Ð(ry   c                óz  — i }g }| D ]¯  }t        |j                  j                  j                  «      }|sŒ/t	        j
                  |j                  j                  «      }t        |j                  «      }|j                  |«      }|�Œ�d|sdn
t        |«      › �}|||<   |j                  d|› d|› d�«       Œ± ||fS )zr
    Generate block of named tuple type def inits, and add typeref snippets
    to declarations that use them
    Ú
NamedTupler»   zstatic PyTypeObject* z = generated::get_ú_structseq();©
r   r‹   ro   r2  r   rn   rZ  Úgetr   r×   )r�   Ú	typenamesÚtypedefsÚoverloadrY  rn   Útn_keyÚtypenames           rw   Úemit_structseq_callre  Ë  sÓ   € ð 	ð ð €Hàò ˆÜ)¨(×*;Ñ*;×*@Ñ*@×*HÑ*HÓIˆ
ÙØä�x‰x˜×)Ñ)×.Ñ.Ó/ˆÜ+¨H×,=Ñ,=Ó>ˆØ—=‘= Ó(ˆØÑØ#©h¡B¼CÀ»MÐ#JÐKˆHØ (ˆI�fÑØ�O‰OðØ�ZÐ1°$°°}ðHõðð  �YÐÐry   c                ó  — i }g }g }| D ]ü  }t        |j                  j                  j                  «      }|sŒ/dj	                  d„ |D «       «      }t        j                  |j                  j                  «      }t        |j                  «      }|j                  |«      }	|	�Œ™|› d|sdn
t        |«      › �}	|	||<   |j                  d|› d|› d|	› d|› d	t        |«      › d
|	› d|	› d|	› d�«       |j                  d|› d|› d�«       Œþ ||fS )zÉ
    Generate block of function in `python_return_types.cpp` to initialize
    and return named tuple for a native function which returns named tuple
    and registration invocations in same file.
    ú, c              3  ó(   K  — | ]
  }d |› d�–— Œ y­w)ú{"z", ""}Nr|   )r%  rµ   s     rw   r(  zDgenerate_return_type_definition_and_registrations.<locals>.<genexpr>ý  s   è ø€ ÒB°˜S   GÔ,ÑBùs   ‚r\  r»   úPyTypeObject* get_zI_structseq() {
    static PyStructSequence_Field NamedTuple_fields[] = { z(,  {nullptr} };
    static PyTypeObject zh;
    static bool is_initialized = false;
    static PyStructSequence_Desc desc = { "torch.return_types.z", nullptr, NamedTuple_fields, zB };
    if (!is_initialized) {
        PyStructSequence_InitType(&z, &desc);
        zm.tp_repr = (reprfunc)torch::utils::returned_structseq_repr;
        is_initialized = true;
    }
    return &z;
}
z$addReturnType(return_types_module, "z", generated::get_z_structseq());)r   r‹   ro   r2  r½   r   rn   rZ  r_  r   r×   )
r�   r`  rþ   rÿ   rb  rY  Úfieldsrn   rc  rd  s
             rw   rý   rý   ê  sc  € ð 	ð ð  €KØ!€Màò  ˆÜ)¨(×*;Ñ*;×*@Ñ*@×*HÑ*HÓIˆ
ÙØà—‘ÑB°zÔBÓBˆä�x‰x˜×)Ñ)×.Ñ.Ó/ˆÜ+¨H×,=Ñ,=Ó>ˆØ—=‘= Ó(ˆàÑØ˜˜z±K©"ÄSÈÓEUÐ)VÐWˆHØ (ˆI�fÑØ×ÑðØ�&ð <Ø<B¸8ð DØ!˜
ð #@à@D¸vÐEdÔehÐisÓetÐduð v$à$, :ð .	Ø	ˆ
ð ð ˆJð ðôð  × Ñ Ø6°t°fÐ<NÈtÈfÐTbÐcõð= ðD ˜Ð%Ð%ry   c                ót  — i }g }| D ]®  }t        |j                  j                  j                  «      }|sŒ/t	        j
                  |j                  j                  «      }t        |j                  «      }|j                  |«      }|�Œ�|› d|sdn
t        |«      › �}|||<   |j                  d|› d�«       Œ° |S )zŒ
    Generate block of function declarations in `python_return_types.h` to initialize
    and return named tuple for a native function.
    r\  r»   rj  r]  r^  )r�   r`  r  rb  rY  rn   rc  rd  s           rw   r  r    sÍ   € ð 	ð ð !€Làò JˆÜ)¨(×*;Ñ*;×*@Ñ*@×*HÑ*HÓIˆ
ÙØä�x‰x˜×)Ñ)×.Ñ.Ó/ˆÜ+¨H×,=Ñ,=Ó>ˆØ—=‘= Ó(ˆàÑà�&˜
©\¡2¼sÀ<Ó?PÐ"QÐRð ð !)ˆI�fÑØ×ÑÐ"4°T°F¸-Ð HÕIðJð  Ðry   a‹  \
// ${name}
static PyObject * ${pycname}(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  ${method_header}
  static PythonArgParser parser({
    ${signatures}
  }, /*traceable=*/${traceable});

  ParsedArgs<${max_args}> parsed_args;
  auto _r = parser.parse(${self_}, args, kwargs, parsed_args);
  ${check_has_torch_function}
  switch (_r.idx) {
    ${dispatch}
  }
  ${method_footer}
}

z&case ${overload_index}: {
  ${body}
}
ao  // ${name}
static PyObject * ${pycname}(PyObject* self_, PyObject* args, PyObject* kwargs)
{
  ${method_header}
  static PythonArgParser parser({
    ${signatures}
  }, /*traceable=*/${traceable});

  ParsedArgs<${max_args}> parsed_args;
  auto _r = parser.parse(${self_}, args, kwargs, parsed_args);
  ${check_has_torch_function}
  ${dispatch}
  ${method_footer}
}

z // ${name}
static PyObject * ${pycname}(PyObject* self_, PyObject* args)
{
  ${method_header}
  ${check_has_torch_function}
  ${dispatch}
  ${method_footer}
}

c               óº  — t        | «      }t        |«      }t        |«      \  }}dg}	|	|z  }	|	|rdgng z  }	|rg ndgdgz   }
t        d„ |D «       «      rdnd}t	        ||¬«      }t        |«      d	k(  }g }g }t        |«      D ]  \  }}|j                  j                  |¬«      }|j                  t        t        |«      «      › d
�«       t        |||¬«      }|j                  |st        j                  ||¬«      n|«       Œ� |rt        }n|rt         }nt"        }|j                  | ||	t%        d„ |D «       «      ||t'        | |||¬«      ||
|rd¬«
      S d¬«
      S )z?
    Generate a python binding for all overloads of an op.
    ÚHANDLE_TH_ERRORSz/const Tensor& self = THPVariable_Unpack(self_);úPy_RETURN_NONE;ÚEND_HANDLE_TH_ERRORSc              3  óF   K  — | ]  }t        |j                  «      –— Œ y ­wr„   )r'   r‹   ©r%  Úos     rw   r(  zmethod_impl.<locals>.<genexpr>   s   è ø€ ÒJ¸1œl¨1¯:©:×6ÑJùs   ‚!ÚtrueÚfalser¡   r%   ú,)Úoverload_indexÚbodyc              3  óP   K  — | ]  }|j                   j                  «       –— Œ  y ­wr„   )r   r€   rr  s     rw   r(  zmethod_impl.<locals>.<genexpr>¿  s   è ø€ ÒF°q�Q—[‘[×0Ñ0×2ÑFùs   ‚$&)rn   rö   Únoargr†   Úself_Únullptr)
rn   ÚpycnameÚmethod_headerÚmax_argsÚ
signaturesÚ	traceableÚcheck_has_torch_functionÚdispatchÚmethod_footerr{  )r}   r‚   re  r3  Úgroup_overloadsr   r.  r   Úsignature_strr×   r   rr   Úemit_dispatch_caseÚPY_VARIABLE_CASEÚ
substituteÚPY_VARIABLE_METHOD_NOARGSÚ$PY_VARIABLE_METHOD_VARARGS_SINGLETONÚPY_VARIABLE_METHOD_VARARGSÚmaxÚgen_has_torch_function_check)rn   rö   r�   r†   r¢   r}  rz  Ústructseq_initsÚstructseq_typenamesr~  r„  r�  Úgrouped_overloadsÚis_singletonr€  rƒ  rw  rb  r   Údispatch_bodyÚtemplates                        rw   rð   rð   ‰  s»  € ô ˜$Ó€GÜ�YÓ€EÜ+>¸yÓ+IÑ(€OÐ(à'Ð(€MØ�_Ñ$€MØÙ?EÐ	:Ñ;È2ñ€Mñ !‘RÐ'8Ð&9Ð>TÐ=UÑU€MäÑJÀ	ÔJÔJ‘ÐPW€Iä8GØ˜&ô9Ðô Ð(Ó)¨QÑ.€LØ€JØ€HÜ$-Ð.?Ó$@ò 

Ñ ˆ˜Ø×&Ñ&×4Ñ4¸FÐ4ÓCˆ	Ø×ÑœZ¬¨I«Ó7Ð8¸Ð:Ô;Ü*¨8Ð5HÐQWÔXˆØ�‰ñ  ô ×'Ñ'Ø-°Mð (ô ð õ	
ð	

ñ Ü,‰Ù	Ü7‰ä-ˆà×ÑØØØ#ÜÑF¸IÔFÓFØØÜ!=ØØØØô	"
ð Ø#Ùˆgð ó ð ð &/ð ó ð ry   c               óf   — |r	|rd| › d�S y|rdnd}|rdddd	d
dddœ|   nd}d|› d|› d|xs d› d�S )NzHif (has_torch_function(self_)) {
  return handle_torch_function(self_, "z");
}
r»   r{  r|  ÚTHPVariableFunctionsModuleÚTHPNNVariableFunctionsModuleÚTHPFFTVariableFunctionsModuleÚ THPLinalgVariableFunctionsModuleÚ THPNestedVariableFunctionsModuleÚ THPSparseVariableFunctionsModuleÚ!THPSpecialVariableFunctionsModule)r©   r¬   r­   r®   r¯   r°   r±   ÚTHPVariableClasszAif(_r.has_torch_function()) {
  return handle_torch_function(_r, z, args, kwargs, z, "ztorch.Tensorr|   )rn   rö   rz  r†   r{  Ú	namespaces         rw   rŽ  rŽ  Î  s”   € ñ Ùð(à(, vð .ðð ð á‰G 9€Eñ ð 2Ø6Ø8Ø>Ø>Ø>Ø@ñ	
ð ò	ð  ð ð$à$) 7Ð*:¸9¸+ÀSÈÒIaÐSaÐHbð cðð ry   zRif (_r.isNone(${out_idx})) {
  ${call_dispatch}
} else {
  ${call_dispatch_out}
}
c          
     óD  — | j                   �rt        j                  | j                  j	                  «       t        | j                  | j                  ||¬«      t        | j                  | j                   ||¬«      ¬«      S t        | j                  | j                  ||¬«      S )a0  
    Emit dispatch code for a single parsed signature. This corresponds to either
    a single native function, or a pair that differ only in output params. In the
    latter case, a single python signature is used for both and dispatching
    switches on the presence/absence of passed output args.
    r¡   )Úout_idxÚcall_dispatchÚcall_dispatch_out)ÚoutplaceÚPY_VARIABLE_OUTr‰  r   Ú
output_idxÚemit_single_dispatchrô   )rb  r�  r¢   s      rw   r‡  r‡  ý  s›   € ð ×ÑÐ$ä×)Ñ)Ø×&Ñ&×1Ñ1Ó3Ü.Ø×"Ñ" H§M¡MÐ3FÈvôô 3Ø×"Ñ"Ø×!Ñ!Ø#Øô	ð *ó 
ð 	
ô $Ø×Ñ §¡Ð/BÈ6ô
ð 	
ry   c               óP   — |ryt        | «      }t        |«      rd|› d�fS d|› d�fS )Nr|   zstatic PyObject * z#(PyObject* self_, PyObject* args);
z5(PyObject* self_, PyObject* args, PyObject* kwargs);
)r}   r‚   )rn   r�   r†   r}  s       rw   ró   ró   %  sX   € ñ Øä˜$Ó€GÜ�	ÔðØ�)ð ðð
ð 	
ðØ�)ð ðð
ð 	
ry   c               óœ   — t        | «      }| j                  rd|› d�}t        |«      r|rdnd}nd|› d�}d}|dk(  r|dz  }d	| › d
|› d|› d�S )z$
    Generate method def entry.
    zTypeError_to_NotImplemented_<ú>ÚMETH_NOARGSzMETH_VARARGS | METH_KEYWORDSzcastPyCFunctionWithKeywords(r¼   r©   z | METH_STATICri  z", rg  z, nullptr},)r}   Údunder_methodr‚   )rn   rö   r�   r†   r}  Úflagss         rw   rñ   rñ   D  sx   € ô ˜$Ó€Gà×Òà1°'°¸!Ð<ˆä�	ÔÙ!'‘Ð-K‰à0°°	¸Ð;ˆØ.ˆà�ÒØÐ!Ñ!ˆà���c˜'˜ " U G¨<Ð8Ð8ry   c          
     óà  — i }i }| D ]Ð  }|j                   j                  d|¬«      }|j                  j                  j	                  «       rG||v r=t        d|j                  j                  › d||   j                  j                  › d�«      ‚|||<   Œ‹||v r=t        d|j                  j                  › d||   j                  j                  › d�«      ‚|||<   ŒÒ |j                  «       D �])  \  }}||vsŒg }| D ]Ò  }t        |j                  j                  j                  j                  «      t        |j                  j                  j                  j                  «      k(  sŒk|j                  j                  j	                  «       rŒ�|j                   j                  rŒ§|j                  |j                   j                  d|¬«      «       ŒÔ |j                   j                  |¬«      }t        d|› d|› d	�d
j                  d„ |D «       «      z   «      ‚ |j                  «       D ��	cg c]+  \  }}	t        j                  |	|j                  |«      ¬«      ‘Œ- }
}}	t        |
|¬«      S c c}	}w )NT)Úskip_outputsr¢   z(Found duplicated function definition:
- z.
Existing definition:
- ú.r¡   z4While identifying overloads, we found an out schema z] without a corresponding non-out variant. We expected the non-out variant to have schema: 
- zy
Please check that you spelled the schema correctly in native_functions.yaml. We discovered the following candidate(s): 
rø   c              3  ó&   K  — | ]	  }d |› �–— Œ y­w)z- Nr|   )r%  Ú	candidates     rw   r(  z"group_overloads.<locals>.<genexpr>“  s   è ø€ ÒI°˜b  Ô,ÑIùs   ‚)Ú
functionalrÍ   )r   r†  r‹   ro   Ú	is_out_fnÚRuntimeErrorr  rr   rn   r  r×   r½   r   Ú
from_pairsr_  Úsort_overloads)r�   r¢   ÚbasesÚ	outplacesrb  ÚsigrÍ   Ú
candidatesÚout_sigrô   rÚ   s              rw   r…  r…  g  sˆ  € ð ;=€EØ>@€Ið ò "ˆØ× Ñ ×.Ñ.¸DÈÐ.ÓPˆØ×Ñ×!Ñ!×+Ñ+Ô-Ø�iÑÜ"Ø?À×@QÑ@Q×@VÑ@VÐ?Wð X/Ø/8¸©~×/FÑ/F×/KÑ/KÐ.LÈAðOóð ð &ˆI�cŠNà�e‰|Ü"Ø?À×@QÑ@Q×@VÑ@VÐ?Wð X/Ø/4°S©z×/BÑ/B×/GÑ/GÐ.HÈðKóð ð "ˆE�#ŠJð"ð" —O‘OÓ%ó ‰ˆˆSØ�eÒØ$&ˆJØ%ò �ä˜×)Ñ)×.Ñ.×3Ñ3×8Ñ8Ó9Ü˜3Ÿ<™<×,Ñ,×1Ñ1×6Ñ6Ó7ó8à$×-Ñ-×2Ñ2×<Ñ<Õ>Ø$×.Ñ.×9Ó9à×%Ñ%Ø ×*Ñ*×8Ñ8Ø)-°fð 9ó õðð —m‘m×1Ñ1¸Ð1Ó@ˆGÜØFÀwÀið PGØGJÀeð Lcðcð —)‘)ÑI¸jÔIÓIñJóð ð!ð8 Ÿ™›÷ñ
 ˆC�ô	 	×'Ñ'ØØ—‘˜cÓ"ö	
ð€Gñ ô ˜'¨&Ô1Ð1ùós   È*0I*c               ól  ‡‡‡— dd„Šdˆfd„}t        | ˆfd„¬«      } t        t        «      Št        | «      D ]J  \  }}t        | «      D ]7  \  }} ||j                  |j                  «      sŒ$‰|   j                  |«       Œ9 ŒL ‰st        | «      S t        | «      }t        t        ˆfd„t        |«      «      «      }t        |«      D ]R  }	||	   }
t        ‰j                  «       «      D ]/  }‰|   }|j                  |
«       |rŒ‰|= |j                  |«       Œ1 ŒT |D �cg c]  }| |   ‘Œ	 c}S c c}w )Nc                óÜ  — t        | «      dk(  xr t        |«      dk(  xsÍ t        | «      dk(  xr t        |«      dk(  xs­ t        | «      dk(  xr t        |«      dk(  xs t        |«      dk(  xs} t        | «      dk(  xr t        |«      j                  d	«      d
k7  xsN t        | «      dk(  xr t        |«      dk(  xs. t        | «      dk(  xs t        | «      dk(  xr t        |«      dk(  S )Nr"  ÚTensorzScalar?zTensor?zint[]Úintzint?zTensor[]z[]éÿÿÿÿzSymInt[]ÚSymInt)rr   Úfind)Út1Út2s     rw   Úis_arg_smallerz&sort_overloads.<locals>.is_arg_smallerÒ  sû   € ä�‹G�xÑò $Ü�B“˜8Ñ#ò$ä�2‹w˜)Ñ#ò %Ü�B“˜9Ñ$ò$ô �‹G�wÑò 8Ü�R“˜EÑ!Ò6¤S¨£W°Ñ%6ò$ô �‹G�zÑ!ò )Ü�B“—‘˜TÓ" bÑ(ò$ô  �‹G�zÑ!ò #Ü�B“˜7Ñ"ò#$ô* �‹W˜Ñ Ò4¤C¨£G¨uÑ$4ò $Ü�B“˜8Ñ#ð/	
ry   c                óþ   •— | j                  d¬«      |j                  d¬«      }}t        |«      t        |«      k7  ryt        d„ t        ||«      D «       «      }t        ˆfd„t        ||«      D «       «      }|xr | S )z-Returns True if s1 < s2 in the partial order.T)r®  Fc              3  óT   K  — | ]   \  }}|j                   |j                   k(  –— Œ" y ­wr„   )r/  )r%  Úarg1Úarg2s      rw   r(  z5sort_overloads.<locals>.is_smaller.<locals>.<genexpr>õ  s!   è ø€ ÒO©z¨t°T�D—I‘I §¡Õ*ÑOùs   ‚&(c              3  ó¸   •K  — | ]Q  \  }}t        |j                  «      t        |j                  «      k(  xs  ‰|j                  |j                  «      –— ŒS y ­wr„   )rr   r/  )r%  rÈ  rÉ  rÅ  s      €rw   r(  z5sort_overloads.<locals>.is_smaller.<locals>.<genexpr>ö  sI   øè ø€ ò 
á��dô �—	‘	‹Nœc $§)¡)›nÑ,ÒT±¸t¿y¹yÈ$Ï)É)Ó0TÓTñ
ùs   ƒAA)r+  r   r3  r4  )Ús1Ús2Úargs1Úargs2ÚequalÚsmaller_or_equalrÅ  s         €rw   Ú
is_smallerz"sort_overloads.<locals>.is_smallerí  s}   ø€ à—|‘|°�|Ó6¸¿¹ÐRV¸Ó8WˆuˆÜˆu‹:œ˜U›Ò#Øô ÑO¼SÀÈÓ=NÔOÓOˆÜó 
ä! %¨Ó/ô
ó 
Ðð  Ò-¨ IÐ-ry   c                ó<   •— | j                   j                  ‰¬«      S )Nr¡   )r   r†  )Úxr¢   s    €rw   r¶   z sort_overloads.<locals>.<lambda>þ  s   ø€ ¨¯©×)BÑ)BÈ&Ð)BÓ)Q€ ry   rß   c                ó   •— | ‰vS r„   r|   )rÓ  Úlarger_thans    €rw   r¶   z sort_overloads.<locals>.<lambda>  s   ø€ °!¸;Ð2F€ ry   )rÃ  r    rÄ  r    rÂ   rI  )rË  r   rÌ  r   rÂ   rI  )r¾   r   Úsetr.  r   ÚaddrÅ   r   rÆ   Úrangerï   Údiscardr×   )r‘  r¢   rÑ  Úi1Ú	overload1Úi2Ú	overload2ÚNÚ
sorted_idsÚidxr6  ÚjÚlargerrÓ  rÅ  rÕ  s    `            @@rw   r¶  r¶  Í  s<  ú€ ó

õ6.ô  ØÓQôÐô
 (3´3Ó'7€KÜ"Ð#4Ó5ò (‰ˆˆIÜ&Ð'8Ó9ò 	(‰MˆB�	Ù˜)×-Ñ-¨y×/BÑ/BÕCØ˜B‘×#Ñ# BÕ'ñ	(ð(ñ
 ÜÐ%Ó&Ð&ô 	ÐÓ€AÜ ¤Ó(FÌÈaËÓ!QÓR€Jä�Q‹xò %ˆà�s‰OˆÜ˜×(Ñ(Ó*Ó+ò 	%ˆAØ  ‘^ˆFØ�N‰N˜1ÔÚØ �NØ×!Ñ! !Õ$ñ	%ð%ð +5Ö5 QÐ˜aÓ Ò5Ð5ùÒ5s   Ä"D1c               ó:   ‡ ‡‡— t         dˆ ˆˆfd„«       } ||«      S )z:
    Emit dispatch code for a single native function.
    c                óª  •— t        ‰t        «      rd‰j                  › �}nd| j                  › �}t	        j
                  | j                  «      }dj                  d„ t        ‰| ‰¬«      D «       «      }t        | «      }t        | «      }dj                  t        | ‰¬«      «      }t        ‰| ‰¬«      }t        ‰| ‰¬«      }dj                  |j                  «      }	dj                  |j                  «      }
‰j                  xr  t!        | «       xs ‰j"                  xr d|v }|rd	|d   j$                  › d
�nd}|dk(  rÍ| j                  j&                  j(                  }t+        | j                  j
                  «      j-                  d«      rZ| j                  j/                  «       t0        j2                  k(  r/|�t5        |j6                  j8                  «      st;        d«      ‚d}nd}|› d|	› d|› d|› d|› d|› d|› d|› d|
› d
|› d|› d�S ‰j=                  t?        | «      «      }|�|› d�nd}|› d|	› d|› d|› d|› d|› d|› d|› d|› d|
› d
|› d�S )Nz// [deprecated] aten::z	// aten::rg  c              3  óR   K  — | ]  }|j                   › d |j                  › �–— Œ! y­w)ú N)Útype_strrn   )r%  r&  s     rw   r(  z3emit_single_dispatch.<locals>.go.<locals>.<genexpr>8  s(   è ø€ ò #
Ø)*ˆq�z‰zˆl˜!˜AŸF™F˜8Ô$ñ#
ùs   ‚%'r¡   )Úpython_signaturerø   Úrequires_gradz.set_requires_grad(r¼   r»   ÚvoidÚ	_foreach_z>Expected self_arg to be a tensor list type for inplace foreachz\PyObject* self_tensorlist = _r.args[0];
Py_INCREF(self_tensorlist);
return self_tensorlist;
ro  z
auto dispatch_z = [](z) -> z, {
  pybind11::gil_scoped_release no_gil;
  ú(z);
};
dispatch_z;
z3 {
  pybind11::gil_scoped_release no_gil;
  return z);
};
return wrap(Ú	dispatch_z);
) Ú
isinstancer   rG  ro   r   rn   r½   r
   r   r	   r   r   r   ÚinitsÚexprsrF  r   r†   Úexprr+  Úself_argrr   Ú
startswithÚkindr   Úinplacer&   Úargumentr/  rP  r_  rZ  )rt   Úschema_commentrn   Úlambda_formalsÚlambda_returnÚdispatch_calleeÚdispatch_argsÚparser_outputsÚlambda_arg_exprsrï  Úlambda_argsÚneed_set_requires_gradÚset_requires_gradrò  Úreturn_stmtrd  Ústructseq_typerefÚpsr�  r¢   s                    €€€rw   Úgoz emit_single_dispatch.<locals>.go.  sÌ  ø€ ô �bÔ3Ô4Ø5°b×6JÑ6JÐ5KÐL‰Nà(¨¯©¨Ð1ˆNô �x‰x˜Ÿ™ÓˆØŸ™ñ #
Ü.BÀ2ÀqÐQWÔ.Xô#
ó 
ˆô 3°1Ó5ˆô .¨aÓ0ˆØŸ	™	Ô"4°QÈÔ"LÓMˆô 1°°Q¸vÔFˆÜ0°°Q¸vÔFÐØ—	‘	Ð*×0Ñ0Ó1ˆØ—i‘iÐ 0× 6Ñ 6Ó7ˆð "$×!7Ñ!7ò "
Ü" 1Ó%Ð%ò CØ—	‘	ÒA˜°.Ð@ð 	ñ &ð " .°Ñ"A×"FÑ"FÐ!GÀqÑIàð 	ð ˜FÒ"ð —v‘v×'Ñ'×0Ñ0ˆHô �A—F‘F—K‘KÓ ×+Ñ+¨KÔ8Ø—F‘F—K‘K“M¤Z×%7Ñ%7Ò7ð Ð#Ô+>¸x×?PÑ?P×?UÑ?UÔ+VÜ(ØXóð ð‘ð
 0�àÐ ð Ø€ð Øˆf�F˜>Ð*¨%°¨ð ?àÐ�1�]�Oð $
à
ˆˆq��˜QÐ0Ð1ð 2Ø€ð ð	ð 	ð +×.Ñ.Ô/IÈ!Ó/LÓMˆHØ3;Ð3G 8 *¨B¡ÈRÐàÐ ð Ø€ð Øˆf�F˜>Ð*¨%°¨ð ?
à
Ð	˜!˜M˜?ð +àÐ˜y¨¨¨a°¨}¸AÐ>OÐ=Pð Qðð ry   ©rt   r   rÂ   rr   r   )r  rt   r�  r¢   r  s   ` `` rw   r¦  r¦  #  s%   ú€ ô öRó ðRñh ˆa‹5€Lry   )rt   r   rÂ   rI  )rn   r   rÂ   rr   )r�   ú+Sequence[PythonSignatureNativeFunctionPair]rÂ   rI  )rÍ   rr   rÎ   rr   rÏ   rr   rÐ   rr   rÑ   rr   r¢   rI  rÂ   ÚNone)rØ   r  rÙ   ú Callable[[NativeFunction], bool]rÂ   z?dict[BaseOperatorName, list[PythonSignatureNativeFunctionPair]])rÒ   r"   rØ   r  rÙ   r  rö   ú
str | Nonerî   rr   r†   rI  r¢   rI  rÂ   r  )
rÒ   r"   rØ   r  rÙ   r  rî   rr   rÂ   r  )rÒ   r"   rØ   r  rÙ   r  rö   r	  rî   rr   r†   rI  r«   r¿  r¢   rI  rÂ   r  )rÄ   zlist[NativeFunction]rÐ   rr   r†   rI  r  rI  r  rI  rÂ   r  )
rØ   r  rÐ   rr   r†   rI  r  rI  rÂ   z'list[PythonSignatureNativeFunctionPair]r  )r�   r  rÂ   z tuple[list[str], dict[str, str]])r�   r  rÂ   ztuple[list[str], list[str]])r�   r  rÂ   z	list[str])rn   r   rö   r	  r�   r  r†   rI  r¢   rI  rÂ   rr   )
rn   r   rö   r	  rz  rI  r†   rI  rÂ   rr   )rb  r   r�  rÃ   r¢   rI  rÂ   rr   )rn   r   r�   r  r†   rI  rÂ   ztuple[str, ...])
rn   r   rö   r	  r�   r  r†   rI  rÂ   rr   )r�   r  r¢   rI  rÂ   úSequence[PythonSignatureGroup])r‘  r
  r¢   rI  rÂ   r
  )
r  r   rt   r   r�  rÃ   r¢   rI  rÂ   rr   )_Ú
__future__r   r)  ÚreÚcollectionsr   Útypingr   rK  Útorchgen.apir   Útorchgen.api.pythonr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Útorchgen.code_templater   Útorchgen.contextr   Útorchgen.genr   r   r   Útorchgen.modelr   r   r   r   r   r    r!   Útorchgen.utilsr"   r#   Útorchgen.yaml_utilsr$   Úgen_inplace_or_view_typer&   Úgen_trace_typer'   Úcollections.abcr(   r)   r*   Ú_SKIP_PYTHON_BINDINGSÚcompilerp   rs   rx   r}   r‚   r‰   rŒ   r�   r“   r–   rš   r�   r    rÕ   rÜ   rÈ   rÊ   rË   rÉ   rÇ   r  rZ  re  rý   r  rŒ  rˆ  r‹  rŠ  rð   rŽ  r¤  r‡  ró   rñ   r…  r¶  r¦  )rv   s   0rw   ú<module>r     sF  ðõD #ã Û 	Ý #Ý  ã å ÷÷ ÷ ÷ õ  0Ý 1ß GÑ G÷÷ ñ ÷ :Ý *å 9Ý (ñ ß<Ñ<òZÐ ðz 0EöØ$+€J€B‡J�J�!�G�9˜AˆÕòÐ ò	#Ð ð òó ðó*!óQóDóFó#ó$ó'ó'ó'ó(ð$ ñy3Ø	ðy3àðy3ð ðy3ð ð	y3ð
 ðy3ð ðy3ð 
óy3ðx
Ø6ð
à
*ð
ð Eó
ð* ñ&Øð&à6ð&ð +ð&ð ð	&ð
 ð&ð ð&ð ð&ð 
ó&ðR$Øð$à6ð$ð +ð$ð ð	$ð
 
ó$ðNØðà6ðð +ðð ð	ð
 
óðR ñ+Øð+à6ð+ð +ð+ð ð	+ð
 ð+ð ð+ð ð+ð ð+ð 
ó+ðf "Øñ<Ø*ð<àð<ð ð	<ð
 ð<ð 
ð<ð 1ó<ð,nØ6ðnàðnð ð	nð
 
ðnð -ónðp ò)ó ð)ðØ:ðà%óð>0&Ø:ð0&à ó0&ðfØ:ðàóñL *ðóÐ ñ2  ðóÐ ñ (4ðó(Ð $ñ* )ð
óÐ ð* ñBØ
ðBàðBð ;ðBð
 ðBð ðBð 	óBðJ Ø
ð Ø$.ð Ø:>ð ØHLð àó ñH ðó€ð ñ	
Ø"ð
à'ð
ð ð	
ð
 	ó
ðP
Ø
ð
à:ð
ð ð	
ð
 ó
ð>9Ø
ð9àð9ð ;ð9ð
 ð9ð 	ó9ðH OSñ62Ø:ð62ØGKð62à#ó62ðN JNñL6Ø5ðL6ØBFðL6à#óL6ðv ñ`Øð`àð`ð (ð`ð
 ð`ð 	ô`ùòW#s   ÂH3