Ë
    7^(hM  ã            
       óø   — d dl Z d dlZd dlmZ d dlmZmZ ddlmZ d dl	m
Z  e j                  «       Zeeef   Z G d„ d«      Z G d	„ d
e«      Zdddœdededeeeef      defd„Zddedeeeef      defd„Zy)é    N©Úwraps)ÚOptionalÚUnioné   )Úget_profiling_on)Úprotonc                   óT   — e Zd ZdZddedeeeef      ddfd„Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zy)Úscopea  
    A context manager and decorator for entering and exiting a scope.

    Usage:
        context manager:
        ```python
        with proton.scope("test0", {metric_name: metric_value}):
            foo[1,](x, y)
        ```

        decorator:
        ```python
        @proton.scope("test0", {metric_name: metric_value})
        def foo(x, y):
            ...
        ```

    Args:
        name (str): The name of the scope.
        metrics (dict[str, float], optional): The metrics of the scope. Default is None.
    NÚnameÚmetricsÚreturnc                 ó.   — || _         || _        d | _        y ©N)r   r   Úid)Úselfr   r   s      úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/triton/profiler/scope.pyÚ__init__zscope.__init__%   s   € ØˆŒ	ØˆŒØˆ�ó    c                 ó  — t        «       sy t        j                  «       | _        t        j                  | j                  | j
                  «       | j                  r+t        j                  | j                  | j                  «       y y r   )r   Ú	libprotonÚrecord_scoper   Úenter_scoper   r   Úadd_metrics©r   s    r   Ú_enter_scopezscope._enter_scope*   sW   € ÜÔ!ØÜ×(Ñ(Ó*ˆŒÜ×Ñ˜dŸg™g t§y¡yÔ1Ø�<Š<Ü×!Ñ! $§'¡'¨4¯<©<Õ8ð r   c                 ó†   — t        «       r| j                  €y t        j                  | j                  | j                  «       y r   )r   r   r   Ú
exit_scoper   r   s    r   Ú_exit_scopezscope._exit_scope2   s+   € ÜÔ! T§W¡W _ØÜ×Ñ˜TŸW™W d§i¡iÕ0r   c                 ó&   — | j                  «        | S r   )r   r   s    r   Ú	__enter__zscope.__enter__7   s   € Ø×ÑÔØˆr   c                 ó$   — | j                  «        y r   )r   )r   Úexc_typeÚ	exc_valueÚ	tracebacks       r   Ú__exit__zscope.__exit__;   s   € Ø×ÑÕr   c                 ó2   ‡ ‡— t        ‰«      ˆˆ fd„«       }|S )Nc                  ó€   •— ‰j                  «        	  ‰| i |¤Ž‰j                  «        S # ‰j                  «        w xY wr   )r   r   )ÚargsÚkwargsÚfuncr   s     €€r   Úwrapperzscope.__call__.<locals>.wrapper@   s:   ø€ à×ÑÔð#Ù˜TÐ, VÑ,à× Ñ Õ"ø�× Ñ Õ"ús   “+ «=r   )r   r+   r,   s   `` r   Ú__call__zscope.__call__>   s    ù€ ä	ˆt‹ô	#ó 
ð	#ð ˆr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   ÚdictÚMetricValueTyper   r   r   r!   r&   r-   © r   r   r   r      sJ   „ ññ,˜Sð ¨8°D¸¸oÐ9MÑ4NÑ+Oð Ð[_ó ò
9ò1ò
òó
r   r   c                   óV   ‡ — e Zd ZdZd	dedeeeef      ddfˆ fd„Zˆ fd„Z	ˆ fd„Z
ˆ xZS )
Úcpu_timed_scopezÈ
    A scope that measures elapsed time (cpu_time).

    Args:
        name (str): The name of the scope.
        metrics (dict[str, float], optional): Additional metrics to add. Default is None.
    Nr   r   r   c                 óX   •— t         ‰| �  ||«       d | _        |rd|v rt        d«      ‚y y )NÚcpu_timez'The metric name 'cpu_time' is reserved.)Úsuperr   Ú
start_timeÚ
ValueError)r   r   r   Ú	__class__s      €r   r   zcpu_timed_scope.__init__T   s6   ø€ Ü‰Ñ˜˜wÔ'ØˆŒÙ�z WÑ,ÜÐFÓGÐGð -ˆ7r   c                 ój   •— t        «       sy t        j                  «       | _        t        ‰| �  «        y r   )r   ÚtimeÚtime_nsr;   r:   r   )r   r=   s    €r   r   zcpu_timed_scope._enter_scopeZ   s$   ø€ ÜÔ!ØÜŸ,™,›.ˆŒÜ‰ÑÕr   c                 óØ   •— t        «       sy t        ‰| �	  «        | j                  �Dt	        j
                  «       | j                  z
  }t        j                  | j                  d|i«       y y )Nzcpu_time (ns)(exc))	r   r:   r   r;   r?   r@   r   r   r   )r   r9   r=   s     €r   r   zcpu_timed_scope._exit_scope`   sT   ø€ ÜÔ!ØÜ‰ÑÔØ�?‰?Ð&Ü—|‘|“~¨¯©Ñ7ˆHÜ×!Ñ! $§'¡'Ð,@À(Ð+KÕLð 'r   r   )r.   r/   r0   r1   r2   r   r3   Úfloatr   r   r   Ú__classcell__)r=   s   @r   r7   r7   K   sF   ø„ ññH˜Sð H¨8°D¸¸e¸Ñ4DÑ+Eð HÐQUõ Hô÷Mð Mr   r7   F)Ú	triton_opr   r   rD   r   r   c                óH  — t        «       syt        j                  «       }t        t        dg «      t        _        t        j
                  j                  || f«       |rt        j                  || «       nt        j                  || «       |rt        j                  ||«       |S )NéÿÿÿÿÚscopes)
r   r   r   ÚgetattrÚthread_local_scopesrG   ÚappendÚenter_opr   r   )r   rD   r   r   s       r   r   r   i   s   € ÜÔØÜ	×	Ñ	Ó	!€BÜ!(Ô)<¸hÈÓ!KÔÔÜ×Ñ×%Ñ% r¨4 jÔ1ÙÜ×Ñ˜2˜tÕ$ä×Ñ˜b $Ô'ÙÜ×Ñ˜b 'Ô*Ø€Ir   c                 óì   — t        «       syt        j                  j                  «       \  }}| rt	        j
                  ||«       nt	        j                  ||«       |rt	        j                  ||«       |S )NrF   )r   rI   rG   Úpopr   Úexit_opr   r   )rD   r   r   r   s       r   r   r   x   s^   € ÜÔØÜ"×)Ñ)×-Ñ-Ó/�H€BˆÙÜ×Ñ˜"˜dÕ#ä×Ñ˜R Ô&ÙÜ×Ñ˜b 'Ô*Ø€Ir   )FN)Ú	threadingr?   Ú	functoolsr   Útypingr   r   Úflagsr   Útriton._C.libprotonr	   r   ÚlocalrI   rB   Úintr4   r   r7   r2   Úboolr3   r   r   r5   r   r   ú<module>rW      s±   ðÛ Û Ý ß "å #Ý 3à%�i—o‘oÓ'Ð à˜˜s˜
Ñ#€÷:ñ :ôzM�eô Mð< 16Ðgkò �cð ¨ð ÀÈÈcÐSbÐNbÑIcÑ@dð Ðpsó ñ
˜$ð 
°¸$¸sÀOÐ?SÑ:TÑ1Uð 
Ðadô 
r   