File size: 615 Bytes
9c6594c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
"""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)