aiosignal¶
A project to manage callbacks in asyncio projects.
Signal is a list of registered asynchronous callbacks.
The signal’s life-cycle has two stages: after creation its content
could be filled by using standard list operations: sig.append()
etc.
After you call sig.freeze() the signal is frozen: adding, removing
and dropping callbacks is forbidden.
The only available operation is calling the previously registered
callbacks by using await sig.send(data).
For concrete usage examples see the Signals section of the Web Server Advanced chapter of the aiohttp documentation.
API¶
- class aiosignal.Signal(owner)¶
The signal, implements the
collections.abc.MutableSequenceinterface. The owner object is shown in the signal representation, and is there to make debugging easier.- async send(*args, **kwargs)¶
Call all registered callbacks one by one starting from the beginning of the list.
- freeze()¶
Freeze the list. After calling, any content modification is forbidden.
Installation¶
$ pip install aiosignal
The library requires Python 3.8 or newer.
Dependencies¶
aiosignal depends on the frozenlist library.
Documentation¶
Communication channels¶
aio-libs discourse group: https://aio-libs.discourse.group
Feel free to post your questions and ideas here.
gitter chat https://gitter.im/aio-libs/Lobby
Requirements¶
Python >= 3.8
frozenlist >= 1.0.0
License¶
aiosignal is offered under the Apache 2 license.
Source code¶
The project is hosted on GitHub
Please file an issue in the bug tracker if you have found a bug or have some suggestions to improve the library.