trigger.py 615 B

1234567891011121314151617181920212223242526272829
  1. """Module to facilitate adding hooks to wandb actions.
  2. Usage:
  3. import trigger
  4. trigger.register('on_something', func)
  5. trigger.call('on_something', *args, **kwargs)
  6. trigger.unregister('on_something', func)
  7. """
  8. from typing import Any, Callable
  9. _triggers = {}
  10. def reset():
  11. _triggers.clear()
  12. def register(event: str, func: Callable):
  13. _triggers.setdefault(event, []).append(func)
  14. def call(event_str: str, *args: Any, **kwargs: Any):
  15. for func in _triggers.get(event_str, []):
  16. func(*args, **kwargs)
  17. def unregister(event: str, func: Callable):
  18. _triggers[event].remove(func)