{"id":384,"library":"blinker","title":"Blinker","description":"Blinker is a fast and simple object-to-object and broadcast signaling library for Python, currently at version 1.9.0. It is actively maintained with a release cadence of approximately one to two months between major versions.","status":"active","version":"1.9.0","language":"python","source_language":"en","source_url":"https://github.com/pallets-eco/blinker","tags":["signal","event","broadcast","Python"],"install":[{"cmd":"pip install blinker","lang":"bash","label":"Install Blinker"}],"dependencies":[{"reason":"Provides support for type annotations in Python versions prior to 3.9","package":"typing-extensions","optional":true}],"imports":[{"note":"Ensure correct import path to avoid ImportError.","symbol":"Signal","correct":"from blinker import Signal"}],"quickstart":{"code":"import os\nfrom blinker import Signal\n\n# Create a new signal\nmy_signal = Signal('my_signal')\n\n# Define a receiver function\ndef my_receiver(sender):\n    print(f'Received signal from {sender}')\n\n# Connect the receiver to the signal\nmy_signal.connect(my_receiver)\n\n# Send the signal\nmy_signal.send('SenderName')","lang":"python","description":"This example demonstrates how to create a signal, connect a receiver function, and send the signal in Blinker."},"warnings":[{"fix":"Upgrade to Python 3.9 or later.","message":"Support for Python 3.8 has been dropped in version 1.9.0.","severity":"breaking","affected_versions":">=1.9.0"},{"fix":"Use `importlib.metadata.version('blinker')` to retrieve the version.","message":"The `__version__` attribute has been removed in version 1.9.0.","severity":"deprecated","affected_versions":">=1.9.0"},{"fix":"Refactor code to avoid using `WeakNamespace`.","message":"The `WeakNamespace` class has been removed in version 1.9.0.","severity":"deprecated","affected_versions":">=1.9.0"},{"fix":"Use alternative methods to temporarily connect signals.","message":"The `Signal.temporarily_connected_to` context manager has been removed in version 1.9.0.","severity":"deprecated","affected_versions":">=1.9.0"}],"env_vars":null,"last_verified":"2026-05-12T13:26:54.002Z","next_check":"2026-06-26T00:00:00.000Z","problems":[{"fix":"Downgrade Blinker to version 1.7.0 by running: 'pip install blinker==1.7.0'.","cause":"The 'blinker._saferef' module was removed in Blinker version 1.8.0, causing compatibility issues with packages like 'selenium-wire' that depend on it.","error":"ModuleNotFoundError: No module named 'blinker._saferef'"},{"fix":"Correct the import statement to: 'from blinker import signal'.","cause":"The 'signal' module is not directly importable from 'blinker'; it should be accessed via 'blinker.signal'.","error":"ImportError: cannot import name 'signal' from 'blinker'"},{"fix":"Use 'from blinker import signal' and then 'my_signal = signal('my-signal')'.","cause":"The 'Signal' class should be accessed using lowercase 'signal' in Blinker.","error":"AttributeError: module 'blinker' has no attribute 'Signal'"},{"fix":"Install the `blinker` library using pip: `pip install blinker`","cause":"The `blinker` library is not installed in the Python environment, or the Python interpreter cannot find the installed package.","error":"ImportError: No module named blinker"},{"fix":"Install the `blinker` library: `pip install blinker`","cause":"This error typically arises when a library (like `Flask-Security`) expects `blinker` to be installed and provides full signal functionality, but `blinker` is missing, causing the library to use a fallback `_FakeSignal` class without the expected `connect_via` attribute.","error":"AttributeError: '_FakeSignal' object has no attribute 'connect_via'"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":80,"quickstart_tag":"verified","pypi_latest":null,"install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.5,"disk_size":"17.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":1.5,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.7,"disk_size":"19.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.7,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.5,"disk_size":"11.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.5,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.8,"disk_size":"11.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.6,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.03,"mem_mb":1.4,"disk_size":"17.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.4,"disk_size":"18M"}]},"quickstart_checks":{"last_tested":"2026-04-23","tag":"verified","tag_description":"quickstart runs on critical runtimes, recently tested","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]}}