
    #h                         d dl mZ d dlmZmZ d dlmZmZmZm	Z	 e G d d             Z
 e
       Zdeg df   deg df   fd	Zdeg df   deg df   fd
Zy)    )contextmanager)	dataclassfield)AnyCallable	GeneratorListc                      e Zd ZU  ee      Zeeg df      ed<    ee      Z	eeg df      ed<   deg df   deg df   fdZ
deg df   deg df   fdZdeg df   ddfd	Zdeg df   ddfd
ZddZddZededeef   fd       ZddZy)CompilationCallbackHandler)default_factoryNstart_callbacksend_callbackscallbackreturnc                 <    | j                   j                  |       |S )z
        Register a callback function to be called when the compilation starts.

        Args:
        - callback (Callable): The callback function to register.
        )r   appendselfr   s     S/var/www/html/sandstorm/venv/lib/python3.12/site-packages/torch/_dynamo/callback.pyregister_start_callbackz2CompilationCallbackHandler.register_start_callback   s     	##H-    c                 <    | j                   j                  |       |S )z
        Register a callback function to be called when the compilation ends.

        Args:
        - callback (Callable): The callback function to register.
        )r   r   r   s     r   register_end_callbackz0CompilationCallbackHandler.register_end_callback   s     	!!(+r   c                 :    | j                   j                  |       y)z
        Remove a registered start callback function.

        Args:
        - callback (Callable): The callback function to remove.
        N)r   remover   s     r   remove_start_callbackz0CompilationCallbackHandler.remove_start_callback!   s     	##H-r   c                 :    | j                   j                  |       y)z
        Remove a registered end callback function.

        Args:
        - callback (Callable): The callback function to remove.
        N)r   r   r   s     r   remove_end_callbackz.CompilationCallbackHandler.remove_end_callback*   s     	!!(+r   c                 4    | j                   D ]	  } |         y)z9
        Execute all registered start callbacks.
        N)r   r   s     r   run_start_callbacksz.CompilationCallbackHandler.run_start_callbacks3   s     ,, 	HJ	r   c                 4    | j                   D ]	  } |         y)z7
        Execute all registered end callbacks.
        N)r   r   s     r   run_end_callbacksz,CompilationCallbackHandler.run_end_callbacks:   s     ** 	HJ	r   c              #      K   	 | j                          d | j                          y# | j                          w xY ww)zc
        Context manager to install the callbacks and run them when the context is exited.
        N)r    r"   r   s    r   install_callbacksz,CompilationCallbackHandler.install_callbacksA   s2     
	%$$&""$D""$s   >) >;>c                 l    | j                   j                          | j                  j                          y)z1
        Clear all registered callbacks.
        N)r   clearr   r$   s    r   r'   z CompilationCallbackHandler.clearL   s(     	""$  "r   )r   N)__name__
__module____qualname__r   listr   r	   r   __annotations__r   r   r   r   r   r    r"   r   r   r   r%   r'    r   r   r   r      s    05d0KOT(2t8,-K.3D.IM4T*+I
 T*
	"d(	
hr4x.@ XbRVhEW .hr4x.@ .T .,HRX,> ,4 , %9T3^#< % %#r   r   r   Nr   c                 0    t         j                  |        | S )zU
    Decorator to register a callback function for the start of the compilation.
    )callback_handlerr   r   s    r   on_compile_startr1   W   s     ,,X6Or   c                 0    t         j                  |        | S )zS
    Decorator to register a callback function for the end of the compilation.
    )r/   r   r0   s    r   on_compile_endr3   _   s     **84Or   )
contextlibr   dataclassesr   r   typingr   r   r   r	   r   r/   r1   r3   r-   r   r   <module>r7      s    % ( 1 1 J# J# J#Z ./ xD1 hr4x6H Xb$h/ HRX4F r   