o
    oÇhB  ã                   @   sR   d dl mZ ddlmZ d dlmZ G dd„ dƒZdedd	fd
d„Z	ddd„Z
d	S )é    )Úprotoné   )Úget_profiling_on©Úwrapsc                   @   s<   e Zd ZdZdeddfdd„Zdd„ Z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.
    ÚnameÚreturnNc                 C   s
   || _ d S ©N©r   )Úselfr   © r   úi/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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__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__©r	   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   r   r   r   r   r   r   r   r      s    
r   r   r	   Nc                 C   s   t  | ¡ d S r
   )r   r   r   r   r   r   r   8   s   r   c                   C   s   t  ¡  d S r
   )r   r   r   r   r   r   r   <   s   r   r   )Útriton._C.libprotonr   r   Úflagsr   Ú	functoolsr   r   r$   r   r   r   r   r   r   Ú<module>   s    2