summaryrefslogtreecommitdiff
path: root/README.md
blob: 907a3ec771408e73fe7f152521fb0e19dcf6197a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
[![Build Status](https://travis-ci.org/jek/blinker.svg?branch=master)](https://travis-ci.org/jek/blinker)


# Blinker

Blinker provides a fast dispatching system that allows any number of
interested parties to subscribe to events, or "signals".

Signal receivers can subscribe to specific senders or receive signals
sent by any sender.

```python
>>> from blinker import signal
>>> started = signal('round-started')
>>> def each(round):
...     print "Round %s!" % round
...
>>> started.connect(each)

>>> def round_two(round):
...     print "This is round two."
...
>>> started.connect(round_two, sender=2)

>>> for round in range(1, 4):
...     started.send(round)
...
Round 1!
Round 2!
This is round two.
Round 3!
```

See the [Blinker documentation](https://pythonhosted.org/blinker/) for more information.

## Requirements

Blinker requires Python 2.7, Python 3.4 or higher, or Jython 2.7 or higher.

## Changelog Summary

1.3 (July 3, 2013)

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

1.2 (October 26, 2011)

 - 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!)

1.1 (July 21, 2010)

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

1.0 (March 28, 2010)

 - Python 3.x compatibility

0.9 (February 26, 2010)

 - Sphinx docs, project website
 - Added ``with a_signal.temporarily_connected_to(receiver): ...`` support