o
    ^i                     @   sd   d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ G dd dZG dd	 d	ZdS )
    )LazyDict)abstractmethod)DictAnyOptional)defaultdictNc                   @   s   e Zd ZU dZeed< edededede	eef dedd	fd
dZ
ededd	fddZededd	fddZedddZedddZd	S )Hookr   prioritymodulefunctionnamemetadata_grouphashreturnNc                 C      t NNotImplementedError)selfr
   r   r   r   r    r   U/var/www/html/RAG/RAG_venv/lib/python3.10/site-packages/triton/profiler/hooks/hook.pyinit_handle   s   zHook.init_handlemetadatac                 C   r   r   r   r   r   r   r   r   enter      z
Hook.enterc                 C   r   r   r   r   r   r   r   exit   r   z	Hook.exitc                 C   r   r   r   r   r   r   r   activate   r   zHook.activatec                 C   r   r   r   r   r   r   r   
deactivate   r   zHook.deactivate)r   N)__name__
__module____qualname__r	   int__annotations__r   r   strr   r   r   r   r   r   r   r   r   r   r   r      s    
 r   c                   @   s
  e Zd ZU g Zee ed< edd Ze	e
e	eef f ed< edededede	eef d	ed
dfddZeded
dfddZeded
dfddZeddee
 d
dfddZeddee
 d
dfddZedede
d
dfddZeddee
 d
dfddZdS )HookManageractive_hooksc                   C   s   t tS r   )r   boolr   r   r   r   <lambda>%   s    zHookManager.<lambda>session_hooksr
   r   r   r   r   r   Nc                 C   s"   t jD ]}|| |||| qd S r   )r&   r'   r   )r
   r   r   r   r   hookr   r   r   r   '   s   
zHookManager.init_handler   c                 C   s   t jD ]}||  qd S r   )r&   r'   r   r   r+   r   r   r   r   ,   s   
zHookManager.enterc                 C   s   t tjD ]}||  qd S r   )reversedr&   r'   r   r,   r   r   r   r   1   s   zHookManager.exitsessionc                 C   sx   | d u r
t j }n| g}|D ] } t j|  D ]}|t jvr'|  t j| dt j|  |< qqt jjdd dd d S )NTc                 S      | j S r   r	   xr   r   r   r)   E       z&HookManager.activate.<locals>.<lambda>keyreverse)r&   r*   keysr'   r   appendsort)r.   sessionsr+   r   r   r   r   7   s   
zHookManager.activatec                    s   | d u r
t j }n| g}t }|D ]} t j|  D ]  t jv r%|  dt j|   < qq|D ] t fddt j D sJ   t j	  q0d S )NFc                 3       | ]}|  V  qd S r   r   .0r*   r+   r   r   	<genexpr>W       z)HookManager.deactivate.<locals>.<genexpr>)
r&   r*   r7   setr'   addanyvaluesr   remove)r.   r:   deactivated_hooksr   r>   r   r   G   s    

zHookManager.deactivater+   c                 C   st   dt j| | < | t jvr|   t j|  t jjdd dd tjj	t j
 tjj	t j tjj	t j d S )NTc                 S   r/   r   r0   r1   r   r   r   r)   b   r3   z&HookManager.register.<locals>.<lambda>r4   )r&   r*   r'   r   r8   r9   knobsruntimekernel_load_end_hookrB   r   launch_enter_hookr   launch_exit_hookr   )r+   r.   r   r   r   register[   s   
zHookManager.registerc                    s   | d ur| t jvrd S | d u r$t jD ]    qt j  t j  n*t j| }| D ]\ }|s5q.t fddt j D sM   t j	  q.t jskt
jj	t j t
jj	t j t
jj	t j d S d S )Nc                 3   r;   r   r   r<   r>   r   r   r?   y   r@   z)HookManager.unregister.<locals>.<genexpr>)r&   r*   r'   r   clearpopitemsrC   rD   rE   rG   rH   rI   r   rJ   r   rK   r   )r.   popped_hooksactiver   r>   r   
unregisteri   s(   


zHookManager.unregisterr   )r    r!   r"   r'   listr   r$   r   r*   r   r#   r(   staticmethodr   r%   r   r   r   r   r   r   r   rL   rR   r   r   r   r   r&   !   s"   
 $,r&   )triton.compilerr   abcr   typingr   r   r   collectionsr   triton.knobsrG   r   r&   r   r   r   r   <module>   s    