Description
========= aiosignal ========= .. image:: https://github.com/aio-libs/aiosignal/workflows/CI/badge.svg :target: https://github.com/aio-libs/aiosignal/actions?query=workflow%3ACI :alt: GitHub status for master branch .. image:: https://codecov.io/gh/aio-libs/aiosignal/branch/master/graph/badge.svg?flag=pytest :target: https://codecov.io/gh/aio-libs/aiosignal?flags[0]=pytest :alt: codecov.io status for master branch .. image:: https://badge.fury.io/py/aiosignal.svg :target: https://pypi.org/project/aiosignal :alt: Latest PyPI package version .. image:: https://readthedocs.org/projects/aiosignal/badge/?version=latest :target: https://aiosignal.readthedocs.io/ :alt: Latest Read The Docs .. image:: https://img.shields.io/discourse/topics?server=https%3A%2F%2Faio-libs.discourse.group%2F :target: https://aio-libs.discourse.group/ :alt: Discourse group for io-libs .. image:: https://badges.gitter.im/Join%20Chat.svg :target: https://gitter.im/aio-libs/Lobby :alt: Chat on Gitter Introduction ============ 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 <https://docs.aiohttp.org/en/stable/web_advanced.html#aiohttp-web-signals> section of the `Web Server Advanced <https://docs.aiohttp.org/en/stable/web_advanced.html>` chapter of the `aiohttp documentation`_. Installation ------------ :: $ pip install aiosignal Documentation ============= https://aiosignal.readthedocs.io/ 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 <https://github.com/aio-libs/aiosignal/issues>`_ if you have found a bug or have some suggestions to improve the library. .. _GitHub: https://github.com/aio-libs/aiosignal .. _aiohttp documentation: https://docs.aiohttp.org/
Release History
| Version | Changes | Urgency | Date |
|---|---|---|---|
| 1.4.0 | Imported from PyPI (1.4.0) | Low | 4/21/2026 |
| v1.4.0 | Features -------- - Added decorator functionality to ``Signal`` as a convenient way to add a callback -- by ``@Vizonex``. `#699 <https://github.com/aio-libs/aiosignal/pulls/699>`_ - Improved type safety by allowing callback parameters to be type checked (typing-extensions is now required for Python <3.13). Parameters for a ``Signal`` callback should now be defined like ``Signal[int, str]`` -- by @Vizonex and @Dreamsorcerer. `#699 <https://github.com/aio-libs/aiosignal/pulls/699>`_, `#710 | Low | 7/3/2025 |
| v1.3.2 | Deprecations and Removals ------------------------- - Dropped Python 3.7 support. (#413) - Dropped Python 3.8 support. (#645) Misc ---- - (#362) ---- | Low | 12/13/2024 |
| v1.3.1 | Bugfixes -------- - Removed stray quote and comma from setup.cfg preventing PyPI from accepting a release. (#361) ---- | Low | 11/8/2022 |
| v1.2.0 | Features -------- - Added support for Python 3.10. (#328) Bugfixes -------- - Mark aiosignal as Python3-only package (#165) ---- | Low | 10/16/2021 |
| v1.2.0a0 | Features -------- - Added support for Python 3.10. (#328) Bugfixes -------- - Mark aiosignal as Python3-only package (#165) ---- | Low | 10/16/2021 |
| v1.1.1 | Changes ======= Features -------- - Support type hints | Low | 11/27/2020 |
| v1.1.0 | Changes ======== Features -------- - Added support of Python 3.8 and 3.9 | Low | 11/27/2020 |
| v1.0.0 | Release v1.0.0 | Low | 11/11/2019 |
| v1.0.0a0 | Initial release of the new aiosignal project, freshly extracted from the [aiohttp project](https://github.com/aio-libs/aiohttp/). | Low | 8/28/2019 |
