
    "ha                         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)
        ```

        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
propertiesreturnc                 .    || _         || _        || _        y N)r   r   r   )selfr   r   r   s       R/var/www/html/sandstorm/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__+   sx    !K((*dggtyy1<<!!$''4<<8??$$TWWdoo>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#    !TWWdii0r   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kwargsr   retfuncr   s       r   wrapperzscope.__call__.<locals>.wrapper=   s    !++-%%b$))4<<))"dll;??,,RA''C!$$R3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%	1
r   r   F)	triton_opr   r   r   r5   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thread_local_scopesr8   appendenter_opr   r   r   )r   r5   r   r   r   s        r   r   r   N   s    				!B&1%'"%%r4j12t$b$'b'*  Z0Ir   c                     t               syt        j                  j                         \  }}| rt	        j
                  ||       |S t	        j                  ||       |S )Nr7   )r   r:   r8   popr   exit_opr   )r5   r   r   s      r   r   r   a   sT    "))--/HB"d# I 	R&Ir   )F)	threading	functoolsr   typingr   r   flagsr   triton._C.libprotonr	   r   localr:   floatintr2   r0   r3   r   boolr1   r   r   r4   r   r   <module>rI      s      " # 3%ioo' s
#%c/* = =@ 16gkEIc  cSbNbIc@d $T#/@*@%ABNQ&$ 3 r   