ó
    IC˜jô  ã                  ó  • S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJrJrJrJrJrJ r   \(       a  S SK!J"r"  SS	 jr#          SS
 jr$SS jr%SS jr&        SS jr'SS jr(g)é    )Úannotations)ÚTYPE_CHECKING)Úassert_never)Úlocal)Úcpp)ÚArgNameÚ	BaseCTypeÚBindingÚboolTÚConstRefCTypeÚCTypeÚdeviceTÚlayoutTÚ	ListCTypeÚMutRefCTypeÚ
NamedCTypeÚOptionalCTypeÚscalarTÚscalarTypeTÚtensorT)ÚArgumentÚFunctionSchemaÚReturnÚSelfArgumentÚTensorOptionsArgumentsÚType)ÚSequencec                óæ   • [        U R                  R                  5      nU R                  5       (       a  US-  nU R                  R                  (       a  USU R                  R                   3-  nU$ )NÚ_outÚ_)ÚstrÚnameÚ	is_out_fnÚoverload_name)Úfuncr"   s     Ú¡C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\torchgen/api/native.pyr"   r"   3   sX   € Üˆt�y‰y�~‰~Ó€Dà‡~�~×ÑØ�‰ˆØ‡y�y××Ø�!�D—I‘I×+Ñ+Ð,Ð-Ñ-ˆØ€Kó    c               ól  • [        U 5      S:X  ac  [        [        [        5      5      nU(       a/  [        R
                  " 5       (       d  [        U[        U5      5      $ [        U[        U5      5      $ [        U 5      S:X  a4  [        U[        [        [        [        [        5      5      5      5      5      $ [        U 5      S:X  a"  [        U[        [        [        5      5      5      $ [        U 5      S:X  a+  [        U[        [        [        [        5      5      5      5      $ [        R                  " XX#S9$ )NzTensor?z	Tensor?[]ÚScalarzScalar?©ÚmutableÚbindsÚsymint)r!   r   r	   r   r   Ú!use_const_ref_for_mutable_tensorsr   r   r   r   r   r   Úargumenttype_type)Útr+   r,   r-   Útensor_types        r&   r/   r/   =   sæ   € ô ˆ1ƒv�ÓÜ%2´9¼WÓ3EÓ%FˆÞœ5×BÒB×DÑDÜ˜e¤[°Ó%=Ó>Ð>ä˜e¤]°;Ó%?Ó@Ð@Ü	ˆQ‹�;Ó	ÜØ”=¤¬=¼Ä7Ó9KÓ+LÓ!MÓNó
ð 	
ô 
ˆQ‹�8Ó	Ü˜%¤¬y¼Ó/AÓ!BÓCÐCÜ	ˆQ‹�9Ó	Ü˜%¤¬}¼YÄwÓ=OÓ/PÓ!QÓRÐRÜ× Ò  ¸5ÑPÐPr'   c               ó*   • [         R                  " XS9$ )N©r-   )r   Úreturns_type)Úrsr-   s     r&   r4   r4   Q   s   € Ü×Ò˜BÑ.Ð.r'   c               ó@   • [        U R                  U R                  XS9$ )Nr*   )r/   ÚtypeÚis_write)Úar,   r-   s      r&   Úargument_typer:   U   s   € Ü˜QŸV™V¨Q¯Z©Z¸uÑTÐTr'   c               ó  • U(       + n[        U [        5      (       ai  S nU(       a7  U R                  b*  [        R                  " U R                  U R
                  US9n[        [        X R                  US9U R                  UU S9/$ [        U [        5      (       a  [        U R                  XS9$ [        U [        5      (       a¹  S nU(       a  Sn[        [        S[        [        [        5      5      5      SUU S9[        [        S[        [        [         5      5      5      SUU S9[        [        S[        [        ["        5      5      5      SUU S9[        [        S	[        [        [$        5      5      5      S	UU S9/$ ['        U 5        g )
Nr3   )r,   r-   )Únctyper"   ÚdefaultÚargument)Úis_outr-   z{}ÚdtypeÚlayoutÚdeviceÚ
pin_memory)Ú
isinstancer   r=   r   Údefault_exprr7   r
   r:   r"   r   r>   r   r   r   r	   r   r   r   r   r   )r9   r?   r-   Úshould_defaultr=   s        r&   r>   r>   Y   s\  € ð  ”Z€NÜ�!”X×ÑØ"ˆÞ˜aŸi™iÑ3Ü×&Ò& q§y¡y°!·&±&ÀÑHˆGäÜ$ Q¯f©f¸VÑDØ—V‘VØØñ	ð
ð 	
ô 
�A”|×	$Ñ	$ä˜Ÿ
™
¨6ÑAÐAÜ	�AÔ-×	.Ñ	.ØˆÞØˆGô
 Ü! '¬=¼Ä;Ó9OÓ+PÓQØØØñ	ô Ü! (¬M¼)ÄGÓ:LÓ,MÓNØØØñ	ô Ü! (¬M¼)ÄGÓ:LÓ,MÓNØØØñ	ô Ü! ,´¼iÌÓ>NÓ0OÓPØ!ØØñ	ð'
ð 	
ô6 	�Q�r'   c          
     ó  • / nUR                  U R                  R                  5        UR                  U R                  R                  5        U VVs/ s H$  n[	        X1U R                  5       S9  H  oDPM     M&     snn$ s  snnf )N)r-   r?   )ÚextendÚ	argumentsÚnon_outÚoutr>   r#   )r%   r-   ÚargsÚargÚrs        r&   rI   rI   ™   sk   € ØCE€DØ‡K�K�—‘×&Ñ&Ô'Ø‡K�K�—‘×"Ñ"Ô#áôÚˆc¤8¨CÀtÇ~Á~ÓGWÕ#X˜aŠÑ#X‰‘Tòð ùó s   Á+BN)r%   r   Úreturnr!   )
r0   r   r+   Úboolr,   r   r-   rP   rO   r   )r5   zSequence[Return]r-   rP   rO   r   )r9   r   r,   r   r-   rP   rO   r   )r9   z0Argument | SelfArgument | TensorOptionsArgumentsr?   rP   r-   rP   rO   úlist[Binding])r%   r   r-   rP   rO   rQ   ))Ú
__future__r   Útypingr   Útyping_extensionsr   Útorchgenr   Útorchgen.apir   Útorchgen.api.typesr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Útorchgen.modelr   r   r   r   r   r   Úcollections.abcr   r"   r/   r4   r:   r>   rI   © r'   r&   Ú<module>r[      s³   ðÝ "å  Ý *å Ý ÷÷ ÷ ÷ ñ ÷"÷ ö Ý(ôðQØðQØðQØ&-ðQØ7;ðQàôQô(/ôUð=Ø7ð=ð ð=ð ð	=ð
 ô=õ@r'   