"""
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)