Whistle
Whistle is a lightweight Event Dispatcher library for Python 3.10+ that enables decoupled application communication through event dispatching and listening.
It's largely inspired from Symfony's EventDispatcher component.
Using an event dispatcher is a great way to write loosely coupled extensible code, having each part only communicate using light events, making your code more modular, testable, and maintainable.
Quick start
Install the whistle package:
$ pip install whistle
Create an event dispatcher
from whistle import EventDispatcher
dispatcher = EventDispatcher()
Add a listener to react to events
def on_spectacle_starts(event):
print('Please turn down your phones!')
dispatcher.add_listener('spectacle.starts', on_spectacle_starts)
Or use the decorator syntax for convenience:
@dispatcher.listen('spectacle.starts')
def on_spectacle_starts(event):
print('Please turn down your phones!')
Dispatch it!
dispatcher.dispatch('spectacle.starts')
# Output: Please turn down your phones!
License
Whistle and the surrounding material (like this website) is licensed under the Apache License, version 2.0.