Version 1.9.0
-------------

Released 2024-11-08

-   Drop support for Python 3.8. :pr:`175`
-   Remove previously deprecated ``__version__``, ``receiver_connected``,
    ``Signal.temporarily_connected_to`` and ``WeakNamespace``. :pr:`172`
-   Skip weakref signal cleanup if the interpreter is shutting down.
    :issue:`173`


Version 1.8.2
-------------

Released 2024-05-06

-   Simplify type for ``_async_wrapper`` and ``_sync_wrapper`` arguments.
    :pr:`156`


Version 1.8.1
-------------

Released 2024-04-28

-   Restore identity handling for ``str`` and ``int`` senders. :pr:`148`
-   Fix deprecated ``blinker.base.WeakNamespace`` import. :pr:`149`
-   Fix deprecated ``blinker.base.receiver_connected import``. :pr:`153`
-   Use types from ``collections.abc`` instead of ``typing``. :pr:`150`
-   Fully specify exported types as reported by pyright. :pr:`152`


Version 1.8.0
-------------

Released 2024-04-27

-   Deprecate the ``__version__`` attribute. Use feature detection, or
    ``importlib.metadata.version("blinker")``, instead. :issue:`128`
-   Specify that the deprecated ``temporarily_connected_to`` will be removed in
    the next version.
-   Show a deprecation warning for the deprecated global ``receiver_connected``
    signal and specify that it will be removed in the next version.
-   Show a deprecation warning for the deprecated ``WeakNamespace`` and specify
    that it will be removed in the next version.
-   Greatly simplify how the library uses weakrefs. This is a significant change
    internally but should not affect any public API. :pr:`144`
-   Expose the namespace used by ``signal()`` as ``default_namespace``.
    :pr:`145`


Version 1.7.0
-------------

Released 2023-11-01

-   Fixed messages printed to standard error about unraisable exceptions during
    signal cleanup, typically during interpreter shutdown. :pr:`123`
-   Allow the Signal ``set_class`` to be customised, to allow calling of
    receivers in registration order. :pr:`116`.
-   Drop Python 3.7 and support Python 3.12. :pr:`126`


Version 1.6.3
-------------

Released 2023-09-23

-   Fix ``SyncWrapperType`` and ``AsyncWrapperType`` :pr:`108`
-   Fixed issue where ``connected_to`` would not disconnect the receiver if an
    instance of ``BaseException`` was raised. :pr:`114`


Version 1.6.2
-------------

Released 2023-04-12

-   Type annotations are not evaluated at runtime. typing-extensions is not a
    runtime dependency. :pr:`94`


Version 1.6.1
-------------

Released 2023-04-09

-   Ensure that ``py.typed`` is present in the distributions (to enable other
    projects to use Blinker's typing).
-   Require typing-extensions > 4.2 to ensure it includes ``ParamSpec``.
    :issue:`90`


Version 1.6
-----------

Released 2023-04-02

-   Add a ``muted`` context manager to temporarily turn off a signal. :pr:`84`
-   ``int`` instances with the same value will be treated as the same sender,
    the same as ``str`` instances. :pr:`83`
-   Add a ``send_async`` method to allow signals to send to coroutine receivers.
    :pr:`76`
-   Update and modernise the project structure to match that used by the Pallets
    projects. :pr:`77`
-   Add an initial set of type hints for the project.


Version 1.5
-----------

Released 2022-07-17

-   Support Python >= 3.7 and PyPy. Python 2, Python < 3.7, and Jython
    may continue to work, but the next release will make incompatible
    changes.


Version 1.4
-----------

Released 2015-07-23

-   Verified Python 3.4 support, no changes needed.
-   Additional bookkeeping cleanup for non-``ANY`` connections at
    disconnect time.
-   Added ``Signal._cleanup_bookeeping()`` to prune stale bookkeeping on
    demand.


Version 1.3
-----------

Released 2013-07-03

-   The global signal stash behind ``signal()`` is now backed by a
    regular name-to-``Signal`` dictionary. Previously, weak references
    were held in the mapping and ephermal usage in code like
    ``signal('foo').connect(...)`` could have surprising program
    behavior depending on import order of modules.
-   ``Namespace`` is now built on a regular dict. Use ``WeakNamespace``
    for the older, weak-referencing behavior.
-   ``Signal.connect('text-sender')`` uses an alterate hashing strategy
    to avoid sharp edges in text identity.


Version 1.2
-----------

Released 2011-10-26

-   Added ``Signal.receiver_connected`` and
    ``Signal.receiver_disconnected`` per-``Signal`` signals.
-   Deprecated the global ``receiver_connected`` signal.
-   Verified Python 3.2 support, no changes needed.


Version 1.1
-----------

Released 2010-07-21

-   Added ``@signal.connect_via(sender)`` decorator
-   Added ``signal.connected_to`` shorthand name for the
    ``temporarily_connected_to`` context manager.


Version 1.0
-----------

Released 2010-03-28

-   Python 3.0 and 3.1 compatibility.


Version 0.9
-----------

Released 2010-02-26

-   Added ``Signal.temporarily_connected_to`` context manager.
-   Docs! Sphinx docs, project web site.


Version 0.8
-----------

Released 2010-02-14

-   Initial release.
-   Extracted from ``flatland.util.signals``.
-   Added Python 2.4 compatibility.
-   Added nearly functional Python 3.1 compatibility. Everything except
    connecting to instance methods seems to work.
