"""Module to facilitate adding hooks to wandb actions. | |
Usage: | |
import trigger | |
trigger.register('on_something', func) | |
trigger.call('on_something', *args, **kwargs) | |
trigger.unregister('on_something', func) | |
""" | |
from typing import Any, Callable | |
_triggers = {} | |
def reset(): | |
_triggers.clear() | |
def register(event: str, func: Callable): | |
_triggers.setdefault(event, []).append(func) | |
def call(event_str: str, *args: Any, **kwargs: Any): | |
for func in _triggers.get(event_str, []): | |
func(*args, **kwargs) | |
def unregister(event: str, func: Callable): | |
_triggers[event].remove(func) | |