PyDispatcher Publisher's description
from Mike C. Fletcher
PyDispatcher provides the Python programmer with a multiple-producer-multiple-consumer signal-registration and routing infrastructure for use in multiple contexts.
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.
provides a centralized service for delivering messages to registered objects (in the local process). It allows you to register any number of functions (callable objects) which can receive signals from senders.
registration can be for all senders, particular sending objects, or "anonymous" messages (messages where the sender is None)
registration can be for any signal, or particular signals
a single signal will be delivered to all appropriate registered receivers, so that multiple registrations do not interfere with each other
there is no requirement for the sender or receiver to be dispatcher-aware. Any Python object save the None object can act as a sender, and any callable object can act as a receiver. There is no need to inherit from a particular class or provide a particular interface on the object.
the system uses weak references to receivers wherever possible
object lifetimes are not affected by PyDispatcher registrations (that is, when your object goes away, the registrations related to the object also go away).
references to common transient objects (in particular instance methods) are stored as compound weak references.
weak references can be disabled on a registration-by-registration basis
allows rich signal types, signals are simply hashable objects used to store and retrieve sub-tables, they are otherwise opaque to the dispatcher mechanism
allows sending more information when sending than any particular receiver can handle, dispatcher automatically culls those arguments which are not appropriate for the particular receiver. This allows registering very simple functions dealing with general messages, while still allowing natural passing of arguments to higher level functions.
What's New in This Release:В· Add "robust" module with single function sendRobust, which catches errors during callbacks and returns the error instances instead of propagating the error
В· Patch bug in SafeRef deletion where traceback module has already been deleted by interpreter shutdown
В· Patch bug in _removeReceiver where sendersBack has already been deleted by interpreter shutdown
В· Make SafeRef pre-cache method name to allow for repr after cleanup of the method
System Requirements:В· Python
Program Release Status: New Release
Program Install Support: Install and Uninstall