Ë
    Z^(hµ  ã                  óp  — d dl mZ d dlZd dlZd dlmZ d dlmZ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l0m1Z1 ddl2m3Z3 erd dl4m5Z5m6Z6 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)ÚCallableÚ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)ÚIterableÚSequence)SÚaliasÚ
contiguousÚis_cudaÚ	is_sparseÚis_sparse_csrÚsizeÚstrideÚ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)Úfrh   Ú
skip_regexr   Úpatterns        úm/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torchgen/packaged/autograd/gen_python_functions.pyÚshould_generate_py_bindingrr   Ä   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_© )rh   s    rq   Úget_pycnamerw   Ú   s   € Ø˜$˜Ð Ð rs   c                ób   — t        | «      dk(  xr  | d   j                  j                  «       dk(  S )Nr&   r   )Úlenr   Úarguments_count)Ú	overloadss    rq   Úis_noargr|   Þ   s.   € Üˆy‹>˜QÑÒP 9¨Q¡<×#9Ñ#9×#IÑ#IÓ#KÈqÑ#PÐPrs   c                óZ   — | j                   d u xr t        j                  | j                  v S ©N)Úpython_moduler"   ÚmethodÚvariants©rn   s    rq   Úis_py_variable_methodrƒ   â   s#   € Ø�?‰?˜dÐ"ÒC¤w§~¡~¸¿¹Ð'CÐCrs   c                óZ   — | j                   d u xr t        j                  | j                  v S r~   )r   r"   Úfunctionr�   r‚   s    rq   Úis_py_torch_functionr†   æ   s%   € Ø�?‰?˜dÐ"ÒE¤w×'7Ñ'7¸1¿:¹:Ð'EÐErs   c                ó    — | j                   dk(  S )NÚnn©r   r‚   s    rq   Úis_py_nn_functionrŠ   ê   s   € Ø�?‰?˜dÑ"Ð"rs   c                ó    — | j                   dk(  S )NÚfftr‰   r‚   s    rq   Úis_py_fft_functionr�   î   s   € Ø�?‰?˜eÑ#Ð#rs   c                ó    — | j                   dk(  S )NÚlinalgr‰   r‚   s    rq   Úis_py_linalg_functionr�   ò   ó   € Ø�?‰?˜hÑ&Ð&rs   c                ó    — | j                   dk(  S )NÚnestedr‰   r‚   s    rq   Úis_py_nested_functionr”   ö   r‘   rs   c                ó    — | j                   dk(  S )NÚsparser‰   r‚   s    rq   Úis_py_sparse_functionr—   ú   r‘   rs   c                ó    — | j                   dk(  S )NÚspecialr‰   r‚   s    rq   Úis_py_special_functionrš   þ   s   € Ø�?‰?˜iÑ'Ð'rs   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©NTrv   ©Úfns    rq   ú<lambda>zgen.<locals>.<lambda>q  ó   � rs   zpython_return_types.cppc                 ó   — yr­   rv   r®   s    rq   r°   zgen.<locals>.<lambda>t  r±   rs   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    €rq   Úgen_tags_enumzgen.<locals>.gen_tags_enumy  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Úfilterrr   Ú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              @rq   Ú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Õ2rs   c                óÐ   — t        t        «      }| D ]Q  } ||j                  «      sŒ||j                  j                  j                  j                     j                  |«       ŒS |S r~   )r   r¿   r…   ri   rh   Úappend)ÚpairsÚpredÚgroupedÚpairs       rq   Úgroup_filter_overloadsrÖ   …  s^   € ô
 	”DÓð ð ò ?ˆÙ�—‘ÕØ�D—M‘M×&Ñ&×+Ñ+×0Ñ0Ñ1×8Ñ8¸Õ>ð?ð €Nrs   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   €€€€€€rq   r°   z(create_python_bindings.<locals>.<lambda>°  s9   ø€ Ø!$Ø × <Ñ <Ó >Ð?¸qÀÀ
ÐKñ"Là&Ø&Ø$Ø,ñ
€ rs   N)rÖ   r¸   Úkeysrl   rÑ   Úmethod_implÚ
method_defÚextendÚforward_declsÚbaseÚwrite_with_template)rÌ   rÒ   rÓ   Úmodulerè   r€   rœ   rÔ   rh   r{   râ   rã   rå   rä   s   `   `     @@@@rq   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ð ×ÑØØ÷	
ð 	
õrs   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   €€€€rq   r°   z4create_python_return_type_bindings.<locals>.<lambda>Ù  s3   ø€ Ø!$Ø × <Ñ <Ó >Ð?¸qÀÀ
ÐKñ"Là9Ø-Jñ	
€ rs   N)rÖ   r¸   ré   rl   Ú1generate_return_type_definition_and_registrationsrÑ   r·   rï   )rÌ   rÒ   rÓ   rè   rÔ   rh   r{   ÚdefinitionsÚregistrationsrö   rõ   s   `  `     @@rq   rÄ   rÄ   »  s¯   û€ ð -/ÐØ/1Ð!ä$ U¨DÓ1€Gä�w—|‘|“~¬3Ô/ò 

ˆØ˜D‘Mˆ	Ü%VØó&
Ñ"ˆ�]ð 	#×)Ñ)Ù!‰B t§y¡y°Ó'=ô	
ð 	&×,Ñ,Ù#‰B¨¯©°=Ó)Aõ	
ð

ð ×ÑØØö	
õ	rs   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   €€€rq   r°   z;create_python_return_type_bindings_header.<locals>.<lambda>ú  s0   ø€ Ø!$Ø × <Ñ <Ó >Ð?¸qÀÀ
ÐKñ"Là,Hñ
€ rs   N)rÖ   r¸   ré   rl   Ú!generate_return_type_declarationsrÑ   r·   rï   )	rÌ   rÒ   rÓ   rè   rÔ   rh   r{   Údeclarationsrü   s	   `  `    @rq   rÅ   rÅ   â  s   ú€ ð /1Ð ä$ U¨DÓ1€Gä�w—|‘|“~¬3Ô/ò 
ˆØ˜D‘Mˆ	Ü8¸ÓCˆØ$×+Ñ+Ù"‰B¨¯	©	°,Ó(?õ	
ð
ð ×ÑØØõ	
õrs   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    rq   Úkey_funcz0create_python_bindings_sharded.<locals>.key_func  s   € ð �!‰u�z‰zÐrs   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  rh   Úfn_pairsr€   rð   rœ   s      €€€rq   Úenv_funcz0create_python_bindings_sharded.<locals>.env_func  sd   ø€ ð ‰ˆˆhà1°$·)±)°¸CÐ@ÐAÜ¤¨d°HÀVÔ LÓMä˜D &¨(¸6È&ÔQðô  *¨$°¸ÈÔPÐQñ
ð 	
rs   rá   rÞ   rß   rà   >   rä   râ   rã   rå   )Úbase_envÚkey_fnÚenv_callabler¥   Úsharded_keysN)r  ú@tuple[BaseOperatorName, list[PythonSignatureNativeFunctionPair]]r¼   rl   )r  r
  r¼   zdict[str, list[str]])rÖ   Úwrite_shardedÚitemsrç   )rÌ   rÒ   rÓ   rð   rè   r€   r¥   rœ   rÔ   r  r  s      ` ` `   rq   rÃ   rÃ     s”   ú€ ô % U¨DÓ1€GðØLðà	óð

ØLð
à	÷
ð ×ÑØØ�‰‹à Ø × <Ñ <Ó >Ð?¸qÀÀ
ÐKñ"Lð
ð ØØÚSð õ rs   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   )rn   r€   r  s    €€rq   Úgen_signature_pairsz,load_signatures.<locals>.gen_signature_pairs8  s   ø€ ä0Ü ¨&°cÔ:Øô
ð 	
rs   r  )rn   r   r¼   r   )r   r¿   ÚmapÚload_deprecated_signatures)r¾   rÊ   r€   r  r  r  rÒ   Ú
deprecateds     ` `   rq   rÁ   rÁ   0  sT   ù€ ô õ
ó ð
ô ”Ð(Ð*:Ó;Ó<€EÜ+ØÐ#¨F¸ô€Jñ $ˆ5Ð;¨°Ñ);Ð;rs   c               óv  ‡‡‡‡‡— 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 rŒ|‰v rŒJ d|› �«       ‚ 	 	 	 	 dˆˆˆˆˆfd	„}d
}||
   D ]Ë  } ||j"                  j$                  «      sŒ d}t'        ‰|j"                  j(                  ||¬«      }|j	                  t+        t-        |j                  |j.                  |j0                  |j2                  |j4                  |j6                  ‰t9        ‰«      |j:                  ¬«	      |j"                  ¬«      «       ŒÍ |r�Œ™J d|
› dt=        ‰«      › �«       ‚ |S # 1 sw Y   �Œ¾xY wc c}w )N)ÚLoaderrh   ÚatenÚ_outrµ   Ú1ÚScalarz*deprecation definiton: 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~   rv   )Ú.0ÚaÚbs      rq   ú	<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Ú	enumeratery   Ú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           €€€€€rq   Úis_schema_compatiblez8load_deprecated_signatures.<locals>.is_schema_compatibleq  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ð rs   FT)Úcategory_overrider€   r  )	rh   Ú
input_argsÚinput_kwargsÚoutput_argsÚtensor_options_argsr€   Údeprecated_schemaÚdeprecated_args_exprsr,  r  zNo native function with name z matched signature:
  )r/  r   r¼   Úbool)r   r¿   r   rh   rÑ   ÚopenÚyamlÚloadr%   r   Úparser$   ÚendswithÚreplacer!   r%  r'  r…   ri   r   r<  r   r   r=  r>  r?  r@  r€   Útupler,  rl   )rÒ   rÊ   r€   r  rÔ   rÕ   Úresultsrn   Údeprecated_defsr  Ú	aten_namer   rh   r;  Úany_schema_foundÚ
python_sigr6  r7  r8  r9  r:  s                   @@@@@rq   r  r  F  sa  ü€ ô CNÌdÓBS€GØò 2ˆØ�—‘×#Ñ#Ñ$×+Ñ+¨DÕ1ð2ð 8:€Gä	Ð"Ó	#ð : qÜŸ)™) A¬jÔ9ˆ÷:ð &ó S
ˆ
Ü×%Ñ% 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ØÐ.Ò.°$¸/Ò2Ið Ø<¸T¸FÐCóÐIð	ð	Ø'ð	à÷	ñ 	ð@ !ÐØ˜IÑ&ò 	ˆDÙ'¨¯©×(:Ñ(:Ô;ØØ#Ðä.ØØ"&§-¡-×"AÑ"AØØô	ˆJð �N‰NÜ1Ü7Ø'Ÿ_™_Ø#-×#8Ñ#8Ø%/×%<Ñ%<Ø$.×$:Ñ$:Ø,6×,JÑ,JØ)×0Ñ0Ø*0Ü.3°IÓ.>Ø *× 2Ñ 2ô
ð "Ÿ]™]ôõð	ó8  ð 	
Ø+¨I¨;Ð6MÌcÐRXËkÈ]Ð[ó	
ÐðcS
ðj €N÷q:ñ :üò Ms   ÁH)Ã8H6È)H3c                ó¨   — t        j                  | j                  «      }t        | j                  j                  «      }dj                  |g|z   «      S )NÚ_)r   rh   ri   r   r,  r·   )rn   rh   Ú
fieldnamess      rq   Úgen_structseq_typename_keyrS  ¼  s<   € ä�8‰8�A—F‘FÓ€DÜ% a§f¡f§n¡nÓ5€JØ�8‰8�T�F˜ZÑ'Ó(Ð(rs   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…   ri   r,  r   rh   rS  Úgetry   rÑ   )r{   Ú	typenamesÚtypedefsÚoverloadrR  rh   Útn_keyÚtypenames           rq   Úemit_structseq_callr^  Ã  sÓ   € ð 	ð ð €Hàò ˆÜ)¨(×*;Ñ*;×*@Ñ*@×*HÑ*HÓIˆ
ÙØä�x‰x˜×)Ñ)×.Ñ.Ó/ˆÜ+¨H×,=Ñ,=Ó>ˆØ—=‘= Ó(ˆØÑØ#©h¡B¼CÀ»MÐ#JÐKˆHØ (ˆI�fÑØ�O‰OðØ�ZÐ1°$°°}ðHõðð  �YÐÐrs   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", ""}Nrv   )r  r¯   s     rq   r"  zDgenerate_return_type_definition_and_registrations.<locals>.<genexpr>õ  s   è ø€ ÒB°˜S   GÔ,ÑBùs   ‚rU  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…   ri   r,  r·   r   rh   rS  rX  ry   rÑ   )
r{   rY  rø   rù   r[  rR  Úfieldsrh   r\  r]  s
             rq   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 ˜Ð%Ð%rs   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.
    rU  rµ   rc  rV  rW  )r{   rY  rþ   r[  rR  rh   r\  r]  s           rq   rý   rý     sÍ   € ð 	ð ð !€Làò JˆÜ)¨(×*;Ñ*;×*@Ñ*@×*HÑ*HÓIˆ
ÙØä�x‰x˜×)Ñ)×.Ñ.Ó/ˆÜ+¨H×,=Ñ,=Ó>ˆØ—=‘= Ó(ˆàÑà�&˜
©\¡2¼sÀ<Ó?PÐ"QÐRð ð !)ˆI�fÑØ×ÑÐ"4°T°F¸-Ð HÕIðJð  Ðrs   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     rq   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   rz   rk  s     rq   r"  zmethod_impl.<locals>.<genexpr>·  s   è ø€ ÒF°q�Q—[‘[×0Ñ0×2ÑFùs   ‚$&)rh   rð   Únoargr€   Úself_Únullptr)
rh   ÚpycnameÚmethod_headerÚmax_argsÚ
signaturesÚ	traceableÚcheck_has_torch_functionÚdispatchÚmethod_footerrt  )rw   r|   r^  r-  Úgroup_overloadsry   r(  r   Úsignature_strrÑ   r   rl   Ú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)rh   rð   r{   r€   rœ   rv  rs  Ústructseq_initsÚstructseq_typenamesrw  r}  rz  Úgrouped_overloadsÚis_singletonry  r|  rp  r[  r   Údispatch_bodyÚtemplates                        rq   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ð ó ð ð &/ð ó ð rs   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 )NzMif(check_has_torch_function(self_)) {
  return handle_torch_function(self_, "z");
}
rµ   rt  ru  Ú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.Tensorrv   )rh   rð   rs  r€   rt  Ú	namespaces         rq   r‡  r‡  Æ  s”   € ñ Ùð(à(, vð .ðð ð á‰G 9€Eñ ð 2Ø6Ø8Ø>Ø>Ø>Ø@ñ	
ð ò	ð  ð ð$à$) 7Ð*:¸9¸+ÀSÈÒIaÐSaÐHbð cðð rs   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î   )r[  r‰  rœ   s      rq   r€  r€  õ  s›   € ð ×ÑÐ$ä×)Ñ)Ø×&Ñ&×1Ñ1Ó3Ü.Ø×"Ñ" H§M¡MÐ3FÈvôô 3Ø×"Ñ"Ø×!Ñ!Ø#Øô	ð *ó 
ð 	
ô $Ø×Ñ §¡Ð/BÈ6ô
ð 	
rs   c               óP   — |ryt        | «      }t        |«      rd|› d�fS d|› d�fS )Nrv   zstatic PyObject * z#(PyObject* self_, PyObject* args);
z5(PyObject* self_, PyObject* args, PyObject* kwargs);
)rw   r|   )rh   r{   r€   rv  s       rq   rí   rí     sX   € ñ Øä˜$Ó€GÜ�	ÔðØ�)ð ðð
ð 	
ðØ�)ð ðð
ð 	
rs   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_STATICrb  z", r`  z, nullptr},)rw   Údunder_methodr|   )rh   rð   r{   r€   rv  Úflagss         rq   rë   rë   <  sx   € ô ˜$Ó€Gà×Òà1°'°¸!Ð<ˆä�	ÔÙ!'‘Ð-K‰à0°°	¸Ð;ˆØ.ˆà�ÒØÐ!Ñ!ˆà���c˜'˜ " U G¨<Ð8Ð8rs   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- Nrv   )r  Ú	candidates     rq   r"  z"group_overloads.<locals>.<genexpr>‹  s   è ø€ ÒI°˜b  Ô,ÑIùs   ‚)Ú
functionalrÇ   )r   r  r…   ri   Ú	is_out_fnÚRuntimeErrorr  rl   rh   r  rÑ   r·   r   Ú
from_pairsrX  Úsort_overloads)r{   rœ   ÚbasesÚ	outplacesr[  ÚsigrÇ   Ú
candidatesÚout_sigrî   rÔ   s              rq   r~  r~  _  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Ë dt        | «      v xr dt        |«      v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?ÚDimnamezint[]Úintzint?zTensor[]z[]éÿÿÿÿzSymInt[]ÚSymInt)rl   Úfind)Út1Út2s     rq   Úis_arg_smallerz&sort_overloads.<locals>.is_arg_smallerÊ  s  € ä�‹G�xÑò $Ü�B“˜8Ñ#ò$ä�2‹w˜)Ñ#ò %Ü�B“˜9Ñ$ò$ð œC ›GÐ#ò )Ø¤ R£Ð(ò$ô �‹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Ñ#ð3	
rs   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      rq   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~   )rl   r)  )r  rÂ  rÃ  r¿  s      €rq   r"  z5sort_overloads.<locals>.is_smaller.<locals>.<genexpr>ð  sI   øè ø€ ò 
á��dô �—	‘	‹Nœc $§)¡)›nÑ,ÒT±¸t¿y¹yÈ$Ï)É)Ó0TÓTñ
ùs   ƒAA)r%  ry   r-  r.  )Ús1Ús2Úargs1Úargs2ÚequalÚsmaller_or_equalr¿  s         €rq   Ú
is_smallerz"sort_overloads.<locals>.is_smallerç  s}   ø€ à—|‘|°�|Ó6¸¿¹ÐRV¸Ó8WˆuˆÜˆu‹:œ˜U›Ò#Øô ÑO¼SÀÈÓ=NÔOÓOˆÜó 
ä! %¨Ó/ô
ó 
Ðð  Ò-¨ IÐ-rs   c                ó<   •— | j                   j                  ‰¬«      S )Nr›   )r   r  )Úxrœ   s    €rq   r°   z sort_overloads.<locals>.<lambda>ø  s   ø€ ¨¯©×)BÑ)BÈ&Ð)BÓ)Q€ rs   rÙ   c                ó   •— | ‰vS r~   rv   )rÍ  Úlarger_thans    €rq   r°   z sort_overloads.<locals>.<lambda>  s   ø€ °!¸;Ð2F€ rs   )r½  r!   r¾  r!   r¼   rC  )rÅ  r   rÆ  r   r¼   rC  )r¸   r   Úsetr(  r   Úaddr¿   ry   rÀ   Úrangeré   ÚdiscardrÑ   )rŠ  rœ   rË  Úi1Ú	overload1Úi2Ú	overload2ÚNÚ
sorted_idsÚidxr0  ÚjÚlargerrÍ  r¿  rÏ  s    `            @@rq   r¯  r¯  Å  s<  ú€ ó

õ:.ô  ØÓ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«      rQ| j                  j/                  «       t0        j2                  k(  r&|�t5        |j6                  j8                  «      sJ ‚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::r`  c              3  óR   K  — | ]  }|j                   › d |j                  › �–— Œ! y­w)ú N)Útype_strrh   )r  r   s     rq   r"  z3emit_single_dispatch.<locals>.go.<locals>.<genexpr>2  s(   è ø€ ò #
Ø)*ˆq�z‰zˆl˜!˜AŸF™F˜8Ô$ñ#
ùs   ‚%'r›   )Úpython_signaturerò   Úrequires_gradz.set_requires_grad(r¶   rµ   ÚvoidÚ	_foreach_z\PyObject* self_tensorlist = _r.args[0];
Py_INCREF(self_tensorlist);
return self_tensorlist;
rh  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   rA  ri   r   rh   r·   r   r   r
   r	   r   r   ÚinitsÚexprsr@  r   r€   Úexprr%  Úself_argrl   Ú
startswithÚkindr    Úinplacer'   Úargumentr)  rX  rS  )rn   Úschema_commentrh   Úlambda_formalsÚlambda_returnÚdispatch_calleeÚdispatch_argsÚparser_outputsÚlambda_arg_exprsré  Úlambda_argsÚneed_set_requires_gradÚset_requires_gradrì  Úreturn_stmtr]  Ústructseq_typerefÚpsr‰  rœ   s                    €€€rq   Ú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ð  Ð+Ô0CØ×%Ñ%×*Ñ*ô1ð ð ð‘ð
 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ðð rs   ©rn   r   r¼   rl   r   )rý  rn   r‰  rœ   rþ  s   ` `` rq   rŸ  rŸ    s%   ú€ ô öQó ðQñf ˆa‹5€Lrs   )rn   r   r¼   rC  )rh   r   r¼   rl   )r{   ú+Sequence[PythonSignatureNativeFunctionPair]r¼   rC  )rÇ   rl   rÈ   rl   rÉ   rl   rÊ   rl   rË   rl   rœ   rC  r¼   ÚNone)rÒ   r   rÓ   ú Callable[[NativeFunction], bool]r¼   z?dict[BaseOperatorName, list[PythonSignatureNativeFunctionPair]])rÌ   r#   rÒ   r   rÓ   r  rð   ú
str | Nonerè   rl   r€   rC  rœ   rC  r¼   r  )
rÌ   r#   rÒ   r   rÓ   r  rè   rl   r¼   r  )rÌ   r#   rÒ   r   rÓ   r  rð   r  rè   rl   r€   rC  r¥   r¹  rœ   rC  r¼   r  )r¾   zlist[NativeFunction]rÊ   rl   r€   rC  r  rC  r  rC  r¼   r   )
rÒ   r   rÊ   rl   r€   rC  r  rC  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])rh   r   rð   r  r{   r   r€   rC  rœ   rC  r¼   rl   )
rh   r   rð   r  rs  rC  r€   rC  r¼   rl   )r[  r   r‰  r½   rœ   rC  r¼   rl   )rh   r   r{   r   r€   rC  r¼   ztuple[str, ...])
rh   r   rð   r  r{   r   r€   rC  r¼   rl   )r{   r   rœ   rC  r¼   úSequence[PythonSignatureGroup])rŠ  r  rœ   rC  r¼   r  )
rý  r   rn   r   r‰  r½   rœ   rC  r¼   rl   )_Ú
__future__r   r#  ÚreÚcollectionsr   Útypingr   r   rE  Ú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*   Ú_SKIP_PYTHON_BINDINGSÚcompilerj   rm   rr   rw   r|   rƒ   r†   rŠ   r�   r�   r”   r—   rš   rÏ   rÖ   rÂ   rÄ   rÅ   rÃ   rÁ   r  rS  r^  r÷   rý   r…  r�  r„  rƒ  rê   r‡  r�  r€  rí   rë   r~  r¯  rŸ  )rp   s   0rq   ú<module>r     sC  ðõD #ã Û 	Ý #ß *ã å ÷÷ ÷ ÷ õ  0Ý 1ß GÑ G÷÷ ñ ÷ :Ý *å 9Ý (ñ ß2òTÐ ðn 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ó<ð,lØ6ðlàðlð ð	lð
 
ðlð -ólðl ò)ó ð)ðØ:ðà%óð>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ñN6Ø5ðN6ØBFðN6à#óN6ðz ñ_Øð_àð_ð (ð_ð
 ð_ð 	ô_ùòW#s   ÂH3