§
    OŠtjí  ã            	       óx  — d dl Z d dlZd dlmZ d dlmZmZmZmZ ddl	m	Z	 ddl
mZmZ d dlmZ  e j        ¦   «         Zeeeee         ee         f         Z G d„ d	¦  «        Z G d
„ de¦  «        Zddœdedeeeef                  dee         fd„Zdddœdee         deeeef                  dee         fd„ZdS )é    N©Úwraps)ÚOptionalÚUnionÚAnyÚSequenceé   )Úflags)Útransform_tensor_metricsÚset_metric_kernels)Úprotonc                   ób   — 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dS )Ú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                 ó0   — || _         || _        d | _        d S ©N©r   r   Úid)Úselfr   r   s      úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/triton/profiler/scope.pyÚ__init__zscope.__init__&   s   € ØˆŒ	ØˆŒØˆŒˆˆó    c                 ó  — t           j        sd S t          j        ¦   «         | _        t          j        | j        | j        ¦  «         | j        r9t          ¦   «          t          j	        | j        gt          | j        ¦  «        ¢R Ž  d S d S r   )r
   Úprofiling_onÚ	libprotonÚrecord_scoper   Úenter_scoper   r   r   Úadd_metricsr   ©r   s    r   Ú_enter_scopezscope._enter_scope+   sˆ   € ÝÔ!ð 	ØˆFÝÔ(Ñ*Ô*ˆŒÝÔ˜dœg t¤yÑ1Ô1Ð1ØŒ<ð 	TÝÑ Ô Ð ÝÔ! $¤'ÐSÕ,DÀTÄ\Ñ,RÔ,RÐSÐSÐSÐSÐSÐSð	Tð 	Tr   c                 ón   — t           j        r| j        €d S t          j        | j        | j        ¦  «         d S r   )r
   r   r   r   Ú
exit_scoper   r!   s    r   Ú_exit_scopezscope._exit_scope4   s5   € ÝÔ!ð 	 T¤W _ØˆFÝÔ˜TœW d¤iÑ0Ô0Ð0Ð0Ð0r   c                 ó.   — |                       ¦   «          | S r   )r"   r!   s    r   Ú	__enter__zscope.__enter__9   s   € Ø×ÒÑÔÐØˆr   c                 ó.   — |                       ¦   «          d S r   )r%   )r   Úexc_typeÚ	exc_valueÚ	tracebacks       r   Ú__exit__zscope.__exit__=   s   € Ø×ÒÑÔÐÐÐr   c                 ó@   ‡ ‡— t          ‰¦  «        ˆˆ fd„¦   «         }|S )Nc                  ó˜   •— ‰                      ¦   «          	  ‰| i |¤Ž‰                     ¦   «          S # ‰                     ¦   «          w xY wr   )r"   r%   )ÚargsÚkwargsÚfuncr   s     €€r   Úwrapperzscope.__call__.<locals>.wrapperB   sY   ø€ à×ÒÑÔÐð#Ø�t˜TÐ, VÐ,Ð,à× Ò Ñ"Ô"Ð"Ð"ø�× Ò Ñ"Ô"Ð"Ð"øøøs	   —3 ³A	r   )r   r1   r2   s   `` r   Ú__call__zscope.__call__@   s9   øø€ å	ˆt‰Œð	#ð 	#ð 	#ð 	#ð 	#ñ 
Œð	#ð ˆr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   Údictr   r   r"   r%   r'   r,   r3   © r   r   r   r      s§   € € € € € ðð ð,ð ˜Sð ¨8°D¸¸c¸´NÔ+Cð Ètð ð ð ð ð
Tð Tð Tð1ð 1ð 1ð
ð ð ðð ð ð
ð 
ð 
ð 
ð 
r   r   c                   ób   ‡ — 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                 óˆ   •— t          ¦   «                              ||¦  «         d | _        |rd|v rt          d¦  «        ‚d S d S )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__V   sX   ø€ Ý‰Œ×Ò˜˜wÑ'Ô'Ð'ØˆŒØð 	H�z WÐ,Ð,ÝÐFÑGÔGÐGð	Hð 	HÐ,Ð,r   c                 ó”   •— t           j        sd S t          j        ¦   «         | _        t          ¦   «                              ¦   «          d S r   )r
   r   ÚtimeÚtime_nsr@   r?   r"   )r   rB   s    €r   r"   zcpu_timed_scope._enter_scope\   s<   ø€ ÝÔ!ð 	ØˆFÝœ,™.œ.ˆŒÝ‰Œ×ÒÑÔÐÐÐr   c                 óà   •— t           j        sd S | j        �7t          j        ¦   «         | j        z
  }t          j        | j        d|i¦  «         t          ¦   «          	                    ¦   «          d S )Nzcpu_time (ns)(exc))
r
   r   r@   rD   rE   r   r    r   r?   r%   )r   r>   rB   s     €r   r%   zcpu_timed_scope._exit_scopeb   sd   ø€ ÝÔ!ð 	ØˆFØŒ?Ð&Ý”|‘~”~¨¬Ñ7ˆHÝÔ! $¤'Ð,@À(Ð+KÑLÔLÐLÝ‰Œ×ÒÑÔÐÐÐr   r   )r4   r5   r6   r7   r8   r   r9   r   r   r"   r%   Ú__classcell__)rB   s   @r   r<   r<   M   sª   ø€ € € € € ðð ðHð H˜Sð H¨8°D¸¸c¸´NÔ+Cð HÈtð Hð Hð Hð Hð Hð Hðð ð ð ð ðð ð ð ð ð ð ð ð r   r<   )r   r   r   r   c                óR  — t           j        sd S t          j        ¦   «         }t	          t
          dg ¦  «        t
          _        t
          j                             || f¦  «         t          j        || ¦  «         |r-t          ¦   «          t          j
        |gt          |¦  «        ¢R Ž  |S )NÚscopes)r
   r   r   r   ÚgetattrÚthread_local_scopesrI   Úappendr   r   r    r   r   s      r   r   r   k   s    € ÝÔð ØˆtÝ	Ô	Ñ	!Ô	!€BÝ!(Õ)<¸hÈÑ!KÔ!KÕÔÝÔ×%Ò% r¨4 jÑ1Ô1Ð1ÝÔ˜"˜dÑ#Ô#Ð#Øð FÝÑÔÐÝÔ˜bÐEÕ#;¸GÑ#DÔ#DÐEÐEÐEÐEØ€Ir   c                ó.  — t           j        sd S t          j                             ¦   «         \  }}| r| |k    rt          d| › d|› �¦  «        ‚| s|} |r-t          ¦   «          t          j        |gt          |¦  «        ¢R Ž  t          j
        || ¦  «         |S )NzScope name mismatch: z != )r
   r   rK   rI   ÚpoprA   r   r   r    r   r$   )r   r   r   Úpopped_names       r   r$   r$   x   s·   € åÔð ØˆtÝ)Ô0×4Ò4Ñ6Ô6�O€BˆØð �˜Ò#Ð#ÝÐH°ÐHÐH¸;ÐHÐHÑIÔIÐIØð ØˆØð FÝÑÔÐÝÔ˜bÐEÕ#;¸GÑ#DÔ#DÐEÐEÐEÐEÝÔ˜˜TÑ"Ô"Ð"Ø€Ir   r   )Ú	threadingrD   Ú	functoolsr   Útypingr   r   r   r   r
   Úmetricr   r   Útriton._C.libprotonr   r   ÚlocalrK   ÚfloatÚintÚMetricValueTyper   r<   r8   r9   r   r$   r:   r   r   ú<module>rY      s³  ðØ Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3à%�i”oÑ'Ô'Ð à˜˜s H¨U¤O°X¸c´]ÐBÔC€ð;ð ;ð ;ð ;ð ;ñ ;ô ;ð ;ð|ð ð ð ð �eñ ô ð ð< CGð 
ð 
ð 
�cð 
 x°°S¸#°X´Ô'?ð 
È8ÐTWÌ=ð 
ð 
ð 
ð 
ðÐRVð ð ð �X˜c”]ð °xÀÀSÈ#ÀXÄÔ7Oð Ð[cÐdgÔ[hð ð ð ð ð ð r   