Source code for clay.eventhook

"""
Events implemetation for signal handling.
"""


[docs]class EventHook(object): """ Event that can have handlers attached. """
[docs] def __init__(self): self.event_handlers = []
[docs] def __iadd__(self, handler): """ Add event handler. """ self.event_handlers.append(handler) return self
[docs] def __isub__(self, handler): """ Remove event handler. """ self.event_handlers.remove(handler) return self
[docs] def fire(self, *args, **kwargs): """ Execute all handlers. """ for handler in self.event_handlers: handler(*args, **kwargs)