o
    ܹiB                     @   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   R/home/ubuntu/veenaModal/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