
    Ϧia                         S SK r S SKJr  S SKJrJr  SSKJr  S SKJ	r
  \ R                  " 5       r\\\4   r\\\\4   r " S S5      rS	SSS
.S\S\S\\\\4      S\\\\4      S\4
S jjrSS\S\4S jjrg)    Nwraps)OptionalUnion   )get_profiling_on)protonc            
       p    \ rS rSrSr  SS\S\\\\4      S\\\\	4      SS4S jjr
S	 rSS
 jrS rSrg)scope   a  
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                 (    Xl         X l        X0l        g N)r   r   r   )selfr   r   r   s       T/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/triton/profiler/scope.py__init__scope.__init__%   s    	$    c                    [        5       (       d  U $ [        R                  " 5       U l        [        R                  " U R                  U R
                  5        U R                  (       a+  [        R                  " U R                  U R                  5        U R                  (       a+  [        R                  " U R                  U R                  5        U $ r   )
r   	libprotonrecord_scopeidenter_scoper   r   add_metricsr   set_properties)r   s    r   	__enter__scope.__enter__+   s{    !!K((*dggtyy1<<!!$''4<<8??$$TWWdoo>r   c                 z    [        5       (       d  g [        R                  " U R                  U R                  5        g r   )r   r   
exit_scoper   r   )r   exc_type	exc_value	tracebacks       r   __exit__scope.__exit__6   s&    !!TWWdii0r   c                 4   ^ ^ [        T5      UU 4S j5       nU$ )Nc                    > [        5       (       a  [        R                  " 5       n[        R                  " UTR                  5        TR
                  (       a!  [        R                  " UTR
                  5        TR                  (       a!  [        R                  " UTR                  5        T" U 0 UD6n[        5       (       a!  [        R                  " WTR                  5        U$ r   )
r   r   r   r   r   r   r   r   r   r"   )argskwargsr   retfuncr   s       r   wrapperscope.__call__.<locals>.wrapper=   s    !!++-%%b$))4<<))"dll;??,,RA''C!!$$R3Jr   r   )r   r-   r.   s   `` r   __call__scope.__call__;   s     	t	 
	 r   )r   r   r   r   )NN)r   N)__name__
__module____qualname____firstlineno____doc__strr   dictMetricValueTypePropertyValueTyper   r   r&   r0   __static_attributes__ 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   r=   r   r   r   c                   [        5       (       d  g[        R                  " 5       n[        [        S5      (       d  / [        l        [        R
                  R                  X@45        U(       a  [        R                  " X@5        O[        R                  " X@5        U(       a  [        R                  " XB5        U(       a  [        R                  " XC5        U$ )Nscopes)r   r   r   hasattrthread_local_scopesr@   appendenter_opr   r   r   )r   r=   r   r   r   s        r   r   r   N   s    				!B&11%'"%%rj12$b'b*  0Ir   c                     [        5       (       d  g[        R                  R                  5       u  pU (       a  [        R
                  " X5        U$ [        R                  " X5        U$ )Nr?   )r   rB   r@   popr   exit_opr"   )r=   r   r   s      r   r"   r"   a   sQ    "))--/HB"# I 	R&Ir   )F)	threading	functoolsr   typingr   r   flagsr   triton._C.libprotonr	   r   localrB   floatintr9   r7   r:   r   boolr8   r   r"   r<   r   r   <module>rQ      s      " # 3oo' s
#%c/* = =@ 16gkEIc  cSbNbIc@d $T#/@*@%ABNQ&$ 3 r   