PyDispatcher

PyDispatcher provides the Python programmer with a multiple-producer-multiple-consumer signal-registration and routing infrastructure for use in multiple contexts.  The mechanism of PyDispatcher started life as a highly rated recipe in the Python Cookbook.  The SourceForge project aims to include various enhancements to the recipe developed during use in various applications.

To be more concrete about what PyDispatcher does for you:

The dispatcher mechanism is particularly useful when constructing Model-View-Controller style applications where it is not desirable to have the Model objects aware of the event model.

Acquisition and Installation

PyDispatcher is available as a standard Python distutils installation package from the SourceForge project file repository.  To install, unzip the source archive into a temporary directory and run:

python setup.py install

PyDispatcher does not include any binary packages, so there should be no issues in installation.  To use the CVS version of PyDispatcher (useful for developers of PyDispatcher), simply check out the module to a directory on your PythonPath.

PyDispatcher represents one of the more involved usage patterns for Python weakref objects. We have discovered a few problems in weakref operation of which users of the package should be aware.

Python 2.2.2 (and earlier) weak reference implementations have a subtle bug in their weakref destructor code which can cause memory access errors (aka segfaults) on program shutdown.  If you are using Python 2.2, it is strongly recommended that you use Python 2.2.3 or later when using PyDispatcher.  Note that this will not address the following issue.

Python 2.3.2 (and earlier) has a different (even more subtle) bug in the weakref destructor code which, again, can cause segfaults.  If you are using Python 2.3, it is strongly recommended that you use Python 2.3.3 or later when using PyDispatcher.  This bug-fix will not be ported back to the Python 2.2.x branch, so if you are using Python 2.2.3 you may encounter this situation.

Documentation

You can find usage samples in the examples directory of the distribution.  The dispatcher module's reference documentation is currently the major source of information regarding usage.

PyDispatcher welcomes contributions, suggestions, and feedback from users in the pydispatcher-dev mailing list.

Release Notes