{"id":291,"library":"aiosignal","title":"aiosignal","description":"aiosignal is a Python library designed to manage asynchronous callbacks in asyncio projects. The current version is 1.4.0, released on July 3, 2025. The library has a moderate release cadence, with updates typically occurring annually.","status":"active","version":"1.4.0","language":"python","source_language":"en","source_url":"https://github.com/aio-libs/aiosignal","tags":["asyncio","callbacks","signals","python"],"install":[{"cmd":"pip install aiosignal","lang":"bash","label":"Install aiosignal"}],"dependencies":[{"reason":"Required for managing immutable lists","package":"frozenlist","optional":false},{"reason":"Needed for enhanced type hinting in Python versions below 3.13","package":"typing-extensions","optional":true}],"imports":[{"note":"The correct import is directly from the aiosignal package; importing from submodules is incorrect.","wrong":"from aiosignal.signal import Signal","symbol":"Signal","correct":"from aiosignal import Signal"}],"quickstart":{"code":"import asyncio\nfrom aiosignal import Signal\n\nasync def callback(data):\n    print(f'Received data: {data}')\n\nasync def main():\n    signal = Signal(owner=None)\n    signal.append(callback)\n    signal.freeze()\n    await signal.send('Hello, World!')\n\nasyncio.run(main())","lang":"python","description":"This example demonstrates creating a Signal, registering a callback, freezing the signal, and sending data to the callback."},"warnings":[{"fix":"Upgrade your Python environment to version 3.9 or newer.","message":"Dropped support for Python 3.7 and 3.8.","severity":"breaking","affected_versions":"1.3.2 and later"},{"fix":"Ensure all necessary callbacks are added before calling freeze().","message":"Once a Signal is frozen, adding or removing callbacks is forbidden.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Define callbacks using async def.","message":"Callbacks must be asynchronous functions.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"search_vec":"'1.4.0':19 '2025':24 '3':23 'aiosign':1,2 'annual':36 'asynchron':10 'asyncio':13,37 'cadenc':31 'callback':11,38 'current':16 'design':7 'juli':22 'librari':6,26 'manag':9 'moder':29 'occur':35 'project':14 'python':5,40 'releas':20,30 'signal':39 'typic':34 'updat':33 'version':17","created_at":"2026-03-28T08:20:34.660367+00:00","updated_at":"2026-04-15T19:40:31.404485+00:00","problems":[{"fix":"pip install aiosignal","cause":"The 'aiosignal' package is not installed in the Python environment.","error":"ModuleNotFoundError: No module named 'aiosignal'"},{"fix":"from aiosignal import Signal","cause":"The 'Signal' class is not found in the 'aiosignal' module, possibly due to an incorrect import statement or version mismatch.","error":"ImportError: cannot import name 'Signal' from 'aiosignal'"},{"fix":"Use 'await signal.send(data)' to trigger callbacks.","cause":"Attempting to call a 'Signal' object as a function, which is not supported.","error":"TypeError: 'Signal' object is not callable"},{"fix":"Use 'signal.connect(callback)' to add callbacks.","cause":"Trying to use list methods like 'append' on a 'Signal' object, which does not support them.","error":"AttributeError: 'Signal' object has no attribute 'append'"},{"fix":"Ensure modifications are made before calling 'signal.freeze()'.","cause":"Attempting to modify a 'Signal' object after it has been frozen.","error":"RuntimeError: Cannot modify frozen signal"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"quickstart_score":80,"quickstart_tag":"verified","pypi_latest":"1.4.0","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/aio-libs/aiosignal","docs":null,"changelog":null,"pypi":"https://pypi.org/project/aiosignal/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["http-networking","web-framework"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-28","last_verified":"2026-06-28","next_check":"2026-07-28","install_tag":"verified"}}