Ë
    g^(h˜  ã                   óÌ  — 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m	Z	 d dl
mZ d dlmZ d dlmZmZ d d	lmZ  G d
„ de«      Z e«       Zej-                  e«      d„ «       Zej-                  e«      d„ «       Zej2                  d„ «       Z ej-                  ej6                  «       e	ed¬«      «       ej-                  ej8                  «      d„ «       Zd„ Zed„ «       Zd„ Z y)é    )ÚcontextmanagerN)ÚDispatchKey©Ústrict_mode)Úautograd_not_implemented)ÚHigherOrderOperator)ÚFakeTensorMode)ÚProxyTorchDispatchModeÚtrack_tensor_tree)Ú_pytreec                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ÚExportTracepointc                 ó$   •— t         ‰| �  d«       y )NÚ_export_tracepoint)ÚsuperÚ__init__)ÚselfÚ	__class__s    €úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_export/wrappers.pyr   zExportTracepoint.__init__   s   ø€ Ü‰ÑÐ-Õ.ó    c                 ó"   •— t        ‰| �  |i |¤ŽS ©N)r   Ú__call__)r   ÚargsÚkwargsr   s      €r   r   zExportTracepoint.__call__   s   ø€ Ü‰wÑ Ð0¨Ñ0Ð0r   )Ú__name__Ú
__module__Ú__qualname__r   r   Ú__classcell__)r   s   @r   r   r      s   ø„ ô/÷1ð 1r   r   c                 óÖ   — t        j                  | j                  j                  ||f«      \  }}| j                  j	                  dt
        ||«      }t        ||d | j                  ¬«      S )NÚcall_function)ÚconstantÚtracer)ÚpytreeÚtree_mapr#   Úunwrap_proxyÚcreate_proxyr   r   )Úmoder   r   Úp_argsÚp_kwargsÚproxys         r   Úexport_tracepoint_dispatch_moder,      sZ   € ä—‘ t§{¡{×'?Ñ'?À$ÈÀÓPÑ€FˆHØ�K‰K×$Ñ$ØÔ+¨V°Xó€Eô ˜T 5°4ÀÇÁÔLÐLr   c                 ó6   — | 5  |cd d d «       S # 1 sw Y   y xY wr   © )r(   r   r   s      r   Ú"export_tracepoint_fake_tensor_moder/   #   s   € à	ñ Ø÷÷ ò ús   ƒ�c                 ó¬   — | j                  |«      }| j                  |«      }| j                  «       5  t        |i |¤Ž |cd d d «       S # 1 sw Y   y xY wr   )Úunwrap_tensorsÚredispatch_to_nextr   )Úctxr   r   Úunwrapped_argsÚunwrapped_kwargss        r   Úexport_tracepoint_functionalr6   )   sU   € à×'Ñ'¨Ó-€NØ×)Ñ)¨&Ó1Ðà	×	Ñ	Ó	!ñ Ü˜NÐ?Ð.>Ò?Ø÷÷ ò ús   ³A
Á
AT)Údeferred_errorc                  ó   — | S r   r.   )r   r   s     r   Úexport_tracepoint_cpur9   8   s   € à€Kr   c                 ó6  ‡‡‡‡	— t        | t        j                  j                  «      sJ ‚‰dk7  sJ ‚t        j                  j
                  j                  | ‰«      }ˆfd„Š	d„ Šˆˆfd„}ˆˆˆ	fd„}|j                  |d¬«      }|j                  |d¬«      }||fS )NÚ c                 óR   •— | ‰v r‰|    d   |k(  sJ ‚‰|    d   |k(  sJ ‚||dœ‰| <   y )NÚin_specÚout_spec)r=   r>   r.   )Úpathr=   r>   Úmodule_call_specss      €r   Úupdate_module_call_signaturesz6_wrap_submodule.<locals>.update_module_call_signaturesB   sL   ø€ ØÐ$Ñ$Ø$ TÑ*¨9Ñ5¸Ò@Ð@Ð@Ø$ TÑ*¨:Ñ6¸(ÒBÐBÐBØ.5À8Ñ"LÐ˜$Òr   c           	      ó’   — | D ]B  }t        |t        j                  t        t        t
        t        f«      rŒ3|€Œ6t        d|› �«      ‚ y )NzGOnly Tensors or scalars are supported as pytree flattened inputs, got: )Ú
isinstanceÚtorchÚTensorÚstrÚintÚfloatÚboolÚAssertionError)Ú	flat_argsÚas     r   Úcheck_flattenedz(_wrap_submodule.<locals>.check_flattenedH   sG   € Øò 	ˆAÜ˜q¤5§<¡<´´c¼5Ä$Ð"GÕHÈAÉIÜ$Ø]Ð^_Ð]`Ðaóð ñ	r   c                 óš   •— t        j                  ||f«      \  }} ‰|«       t        |d‰dœŽ}t        j                  ||«      \  }}||fS )NÚmodule_call_inputs©Úkindr?   ©r$   Útree_flattenr   Útree_unflatten)Úmoduler   r   rK   r=   rM   r?   s        €€r   Úpre_hookz!_wrap_submodule.<locals>.pre_hookO   sT   ø€ Ü#×0Ñ0°$¸°Ó@Ñˆ	�7Ù˜	Ô"Ü&¨	Ð8LÐSWÒXˆ	Ü×,Ñ,¨Y¸Ó@‰ˆˆfØ�Vˆ|Ðr   c                 óÐ   •— t        j                  ||f«      \  }}t        j                  |«      \  }} ‰|«       t        |d‰	dœŽ} ‰
‰	||«       t        j                  ||«      S )NÚmodule_call_outputsrP   rR   )rU   r   r   ÚresÚ_r=   Úflat_resr>   rM   r?   rA   s           €€€r   Ú	post_hookz"_wrap_submodule.<locals>.post_hookV   sg   ø€ Ü×(Ñ(¨$°¨Ó8‰
ˆˆ7Ü#×0Ñ0°Ó5Ñˆ�(Ù˜Ô!Ü% xÐ6KÐRVÒWˆÙ% d¨G°XÔ>Ü×$Ñ$ X¨xÓ8Ð8r   T)Úwith_kwargs)	rC   rD   ÚnnÚModuleÚfxÚgraph_moduleÚ	_get_attrÚregister_forward_pre_hookÚregister_forward_hook)
Úmodr?   r@   Ú	submodulerV   r\   Ú
pre_handleÚpost_handlerM   rA   s
    ``     @@r   Ú_wrap_submoduleri   =   s�   û€ Ü�cœ5Ÿ8™8Ÿ?™?Ô+Ð+Ð+Ø�2Š:Ðˆ:Ü—‘×%Ñ%×/Ñ/°°TÓ:€IôMòõö9ð ×4Ñ4°XÈ4Ð4ÓP€JØ×1Ñ1°)ÈÐ1ÓN€KØ�{Ð"Ð"r   c              #   óÆ   K  — g }	 |D ]  }|j                  t        | ||«      «       Œ  d –— |D ]  }|j                  «        Œ y # |D ]  }|j                  «        Œ w xY w­wr   )Úextendri   Úremove)ÚfÚpreserve_signatureÚmodule_call_signaturesÚhandlesr?   Úhandles         r   Ú_wrap_submodulesrr   c   sj   è ø€ à€GðØ&ò 	MˆDØ�N‰Nœ?¨1¨dÐ4JÓKÕLð	Mãàò 	ˆFØ�M‰M�Oñ	ø�gò 	ˆFØ�M‰M�Oñ	üs   ‚A!†'A ­A!ÁAÁA!c                 ó   — d„ }|| _         | S )Nc                 ó   — t        | |«      S r   r   )r   r   s     r   Úcallz'_mark_strict_experimental.<locals>.callq   s   € Ü˜4 Ó&Ð&r   )r   )Úclsru   s     r   Ú_mark_strict_experimentalrw   p   s   € ò'ð €C„LØ€Jr   )!Ú
contextlibr   rD   Útorch._custom_opsÚtorch._Cr   Ú#torch._higher_order_ops.strict_moder   Útorch._higher_order_ops.utilsr   Ú
torch._opsr   Útorch._subclasses.fake_tensorr	   Ú"torch.fx.experimental.proxy_tensorr
   r   Útorch.utilsr   r$   r   r   Úpy_implr,   r/   Úpy_functionalize_implr6   ÚAutogradÚCPUr9   ri   rr   rw   r.   r   r   ú<module>r…      s  ðå %ã Û Ý  Ý ;Ý BÝ *Ý 8ß XÝ )ô1Ð*ô 1ñ &Ó'Ð ð ×ÑÐ2Ó3ñMó 4ðMð ×Ñ˜NÓ+ñó ,ðð
 ×)Ñ)ñó *ðð 1Ð × Ñ ˜;×/Ñ/Ó 0ÙÐ/ÀÔEôð
 ×Ñ˜KŸO™OÓ,ñó -ðò##ðL ñ	ó ð	ór   