
    wg5                         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eeeef   Z G d d      Zd	ddd
dededeeeef      deeeef      def
dZddedefdZy)    Nwraps)OptionalUnion   )get_profiling_on)protonc            
       b    e Zd ZdZ	 	 ddedeeeef      deeeef      ddfdZ	d Z
d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)
        ```

        decoarator:
        ```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
propertiesreturnc                 .    || _         || _        || _        y N)_name_metrics_properties)selfr   r   r   s       Z/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/triton/profiler/scope.py__init__zscope.__init__%   s    
%    c                 |   t               s| S t        j                         | _        t        j                  | j                  | j
                         | j                  r*t        j                  | j                  | j                         | j                  r*t        j                  | j                  | j                         | S r   )
r   	libprotonrecord_scope_identer_scoper   r   add_metricsr   set_properties)r   s    r   	__enter__zscope.__enter__+   s|    !K))+dhh

3==!!$((DMM:$$TXXt/?/?@r   c                 n    t               sy t        j                  | j                  | j                         y r   )r   r   
exit_scoper   r   )r   exc_type	exc_value	tracebacks       r   __exit__zscope.__exit__6   s#    !TXXtzz2r   c                 2     t               fd       }|S )Nc                     t               rt        j                         }t        j                  |j                         j
                  r t        j                  |j
                         j                  r t        j                  |j                          | i |}t               r t        j                  j                         |S r   )
r   r   r   r   r   r   r   r   r   r"   )argskwargsidretfuncr   s       r   wrapperzscope.__call__.<locals>.wrapper=   s    !++-%%b$**5==))"dmm<##,,R1A1AB''C!$$R4Jr   r   )r   r-   r.   s   `` r   __call__zscope.__call__;   s     	t	 
	 r   )NN)r   N)__name__
__module____qualname____doc__strr   dictMetricValueTypePropertyValueTyper   r    r&   r/    r   r   r   r      sb    , SWFJ&S &8Do9M4N+O &%d30A+A&BC&OS&	3
r   r   F)	triton_opr   r   r   r9   r   r   r   c                z   t               syt        j                         }t        t        d      sg t        _        t        j
                  j                  || f       |rt        j                  ||        nt        j                  ||        |rt        j                  ||       |rt        j                  ||       |S )Nscopes)r   r   r   hasattr_localr<   appendenter_opr   r   r   )r   r9   r   r   r+   s        r   r   r   N   s    				!B68$
MM"d$2t$b$'b'*  Z0Ir   c                     t               syt        j                  j                         \  }}| rt	        j
                  ||       |S t	        j                  ||       |S )Nr;   )r   r>   r<   popr   exit_opr"   )r9   r+   r   s      r   r"   r"   a   sR    }}  "HB"d# I 	R&Ir   )F)	threading	functoolsr   typingr   r   flagsr   triton._C.libprotonr	   r   localr>   floatintr6   r4   r7   r   boolr5   r   r"   r8   r   r   <module>rM      s      " # 3		s
#%c/* = =@ 16gkEIc  cSbNbIc@d $T#/@*@%ABNQ&$ 3 r   