a
    Dfe
                     @   s   d Z ddlZG dd dZdS )z
Callback utils
    Nc                   @   s:   e Zd ZdZdd ZdddZddd	Zd
dddZdS )	Callbacksz<"
    Handles all registered callbacks for YOLOv5 Hooks
    c                 C   s8   g g g g g g g g g g g g g g g g g g g d| _ d| _d S )N)on_pretrain_routine_starton_pretrain_routine_endon_train_starton_train_epoch_starton_train_batch_startZoptimizer_stepZon_before_zero_gradon_train_batch_endon_train_epoch_endon_val_starton_val_batch_starton_val_image_endon_val_batch_end
on_val_endon_fit_epoch_endon_model_saveon_train_endon_params_updateZteardownF)
_callbacksstop_training)self r   E/data/NAS7/SABIOD/METHODE/ermites/yolo-dyni/yolov5/utils/callbacks.py__init__   s*    zCallbacks.__init__ Nc                 C   sR   || j v s J d| d| j  t|s8J d| d| j | ||d dS )z
        Register a new action to a callback hook

        Args:
            hook: The callback hook name to register the action to
            name: The name of the action for later reference
            callback: The callback to fire
        hook '' not found in callbacks z
callback 'z' is not callable)namecallbackN)r   callableappend)r   hookr   r   r   r   r   register_action&   s    	 zCallbacks.register_actionc                 C   s   |r| j | S | j S )z"
        Returns all the registered actions by callback hook

        Args:
            hook: The name of the hook to check, defaults to all
        )r   )r   r    r   r   r   get_registered_actions3   s    z Callbacks.get_registered_actionsF)threadc                O   sf   || j v s J d| d| j  | j | D ]6}|rNtj|d ||dd  q*|d |i | q*dS )aX  
        Loop through the registered actions and fire all callbacks on main thread

        Args:
            hook: The name of the hook to check, defaults to all
            args: Arguments to receive from YOLOv5
            thread: (boolean) Run callbacks in daemon thread
            kwargs: Keyword Arguments to receive from YOLOv5
        r   r   r   T)targetargskwargsdaemonN)r   	threadingThreadstart)r   r    r#   r%   r&   loggerr   r   r   run<   s
     zCallbacks.run)r   N)N)__name__
__module____qualname____doc__r   r!   r"   r,   r   r   r   r   r   	   s
   

	r   )r0   r(   r   r   r   r   r   <module>   s   