a
    kº”hB  ã                   @   sT   d dl mZ ddlmZ d dlmZ G dd„ dƒZeddœd	d
„Z	ddœdd„Z
dS )é    )Úprotoné   )Úget_profiling_on©Úwrapsc                   @   s>   e Zd ZdZeddœdd„Zdd„ Zddœd	d
„Zdd„ ZdS )Ústateaz  
    A context manager and decorator for entering and exiting a state.

    Usage:
        context manager:
        ```python
        with proton.state("test0"):
            foo[1,](x, y)
        ```

        decorator:
        ```python
        @proton.state("test0")
        def foo(x, y):
            ...
        ```

    Args:
        name (str): The name of the state.
    N©ÚnameÚreturnc                 C   s
   || _ d S ©N©r	   )Úselfr	   © r   úC/var/www/auris/lib/python3.9/site-packages/triton/profiler/state.pyÚ__init__   s    zstate.__init__c                 C   s   t ƒ s
| S t | j¡ | S r   )r   Ú	libprotonÚenter_stater	   )r   r   r   r   Ú	__enter__   s    zstate.__enter__©r
   c                 C   s   t ƒ s
d S t ¡  d S r   )r   r   Ú
exit_state)r   Úexc_typeÚ	exc_valueÚ	tracebackr   r   r   Ú__exit__%   s    zstate.__exit__c                    s   t ˆ ƒ‡ ‡fdd„ƒ}|S )Nc                     s2   t ƒ rt ˆj¡ ˆ | i |¤Ž}t ƒ r.t ¡  |S r   )r   r   r   r	   r   )ÚargsÚkwargsÚret©Úfuncr   r   r   Úwrapper,   s    zstate.__call__.<locals>.wrapperr   )r   r   r   r   r   r   Ú__call__*   s    zstate.__call__)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   r   r   r    r   r   r   r   r      s
   r   Nr   c                 C   s   t  | ¡ d S r   )r   r   r   r   r   r   r   8   s    r   r   c                   C   s   t  ¡  d S r   )r   r   r   r   r   r   r   <   s    r   )Ztriton._C.libprotonr   r   Úflagsr   Ú	functoolsr   r   r%   r   r   r   r   r   r   Ú<module>   s
   2