[Python-modules-commits] [pydispatcher] 01/03: Import pydispatcher_2.0.5.orig.tar.gz

Neil Muller drnlmza-guest at moszumanska.debian.org
Thu Nov 5 10:30:54 UTC 2015


This is an automated email from the git hooks/post-receive script.

drnlmza-guest pushed a commit to branch master
in repository pydispatcher.

commit e2e92a7b593f19c34edf62772cd7826b53933aae
Author: Neil <Neil Muller drnlmuller+debian at gmail.com>
Date:   Wed Nov 4 15:01:10 2015 +0200

    Import pydispatcher_2.0.5.orig.tar.gz
---
 MANIFEST.in                                |  14 +
 PKG-INFO                                   |  27 ++
 PyDispatcher.egg-info/PKG-INFO             |  27 ++
 PyDispatcher.egg-info/SOURCES.txt          |  35 +++
 PyDispatcher.egg-info/dependency_links.txt |   1 +
 PyDispatcher.egg-info/top_level.txt        |   1 +
 docs/images/greypinstripe.png              | Bin 0 -> 139 bytes
 docs/index.html                            | 283 +++++++++++++++++
 docs/pydoc/__init__.py                     |   7 +
 docs/pydoc/builddocs.py                    |  26 ++
 docs/pydoc/pydispatch.__init__.html        |  33 ++
 docs/pydoc/pydispatch.dispatcher.html      | 296 ++++++++++++++++++
 docs/pydoc/pydispatch.errors.html          | 243 ++++++++++++++
 docs/pydoc/pydispatch.html                 |  41 +++
 docs/pydoc/pydispatch.robust.html          |  63 ++++
 docs/pydoc/pydispatch.robustapply.html     |  55 ++++
 docs/pydoc/pydispatch.saferef.html         | 167 ++++++++++
 docs/pydoc/pydoc2.py                       | 381 ++++++++++++++++++++++
 docs/pydoc/weakref.html                    | 306 ++++++++++++++++++
 docs/style/sitestyle.css                   |  59 ++++
 examples/__init__.py                       |   2 +
 examples/extra_args.py                     |  24 ++
 examples/hello_messages.py                 |  18 ++
 examples/simple_sample.py                  |  78 +++++
 license.txt                                |  34 ++
 pydispatch/__init__.py                     |   5 +
 pydispatch/dispatcher.py                   | 487 +++++++++++++++++++++++++++++
 pydispatch/errors.py                       |   9 +
 pydispatch/robust.py                       |  57 ++++
 pydispatch/robustapply.py                  |  55 ++++
 pydispatch/saferef.py                      | 172 ++++++++++
 setup.cfg                                  |   5 +
 setup.py                                   |  80 +++++
 tests/__init__.py                          |   2 +
 tests/test_dispatcher.py                   | 148 +++++++++
 tests/test_robustapply.py                  |  27 ++
 tests/test_saferef.py                      |  76 +++++
 37 files changed, 3344 insertions(+)

diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..558c5d2
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,14 @@
+include MANIFEST.in
+include license.txt
+include *.py
+recursive-include docs *.html
+recursive-include docs/images *.png
+recursive-include docs/style *.css
+recursive-include docs/pydoc *.html *.py
+recursive-include examples *.py
+
+recursive-include tests *.py
+
+global-exclude *.bat
+global-exclude ./CVS
+global-exclude .cvsignore
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..27c978e
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,27 @@
+Metadata-Version: 1.1
+Name: PyDispatcher
+Version: 2.0.5
+Summary: Multi-producer-multi-consumer signal dispatching mechanism
+Home-page: http://pydispatcher.sourceforge.net
+Author: Mike C. Fletcher
+Author-email: pydispatcher-devel at lists.sourceforge.net
+License: BSD
+Description: Dispatcher mechanism for creating event models
+        
+        PyDispatcher is an enhanced version of Patrick K. O'Brien's
+        original dispatcher.py module.  It provides the Python
+        programmer with a robust mechanism for event routing within
+        various application contexts.
+        
+        Included in the package are the robustapply and saferef
+        modules, which provide the ability to selectively apply
+        arguments to callable objects and to reference instance
+        methods using weak-references.
+        
+Keywords: dispatcher,dispatch,pydispatch,event,signal,sender,receiver,propagate,multi-consumer,multi-producer,saferef,robustapply,apply
+Platform: Any
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: Intended Audience :: Developers
diff --git a/PyDispatcher.egg-info/PKG-INFO b/PyDispatcher.egg-info/PKG-INFO
new file mode 100644
index 0000000..27c978e
--- /dev/null
+++ b/PyDispatcher.egg-info/PKG-INFO
@@ -0,0 +1,27 @@
+Metadata-Version: 1.1
+Name: PyDispatcher
+Version: 2.0.5
+Summary: Multi-producer-multi-consumer signal dispatching mechanism
+Home-page: http://pydispatcher.sourceforge.net
+Author: Mike C. Fletcher
+Author-email: pydispatcher-devel at lists.sourceforge.net
+License: BSD
+Description: Dispatcher mechanism for creating event models
+        
+        PyDispatcher is an enhanced version of Patrick K. O'Brien's
+        original dispatcher.py module.  It provides the Python
+        programmer with a robust mechanism for event routing within
+        various application contexts.
+        
+        Included in the package are the robustapply and saferef
+        modules, which provide the ability to selectively apply
+        arguments to callable objects and to reference instance
+        methods using weak-references.
+        
+Keywords: dispatcher,dispatch,pydispatch,event,signal,sender,receiver,propagate,multi-consumer,multi-producer,saferef,robustapply,apply
+Platform: Any
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: Intended Audience :: Developers
diff --git a/PyDispatcher.egg-info/SOURCES.txt b/PyDispatcher.egg-info/SOURCES.txt
new file mode 100644
index 0000000..c1e0d8e
--- /dev/null
+++ b/PyDispatcher.egg-info/SOURCES.txt
@@ -0,0 +1,35 @@
+MANIFEST.in
+license.txt
+setup.py
+PyDispatcher.egg-info/PKG-INFO
+PyDispatcher.egg-info/SOURCES.txt
+PyDispatcher.egg-info/dependency_links.txt
+PyDispatcher.egg-info/top_level.txt
+docs/index.html
+docs/images/greypinstripe.png
+docs/pydoc/__init__.py
+docs/pydoc/builddocs.py
+docs/pydoc/pydispatch.__init__.html
+docs/pydoc/pydispatch.dispatcher.html
+docs/pydoc/pydispatch.errors.html
+docs/pydoc/pydispatch.html
+docs/pydoc/pydispatch.robust.html
+docs/pydoc/pydispatch.robustapply.html
+docs/pydoc/pydispatch.saferef.html
+docs/pydoc/pydoc2.py
+docs/pydoc/weakref.html
+docs/style/sitestyle.css
+examples/__init__.py
+examples/extra_args.py
+examples/hello_messages.py
+examples/simple_sample.py
+pydispatch/__init__.py
+pydispatch/dispatcher.py
+pydispatch/errors.py
+pydispatch/robust.py
+pydispatch/robustapply.py
+pydispatch/saferef.py
+tests/__init__.py
+tests/test_dispatcher.py
+tests/test_robustapply.py
+tests/test_saferef.py
\ No newline at end of file
diff --git a/PyDispatcher.egg-info/dependency_links.txt b/PyDispatcher.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/PyDispatcher.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/PyDispatcher.egg-info/top_level.txt b/PyDispatcher.egg-info/top_level.txt
new file mode 100644
index 0000000..62f5b70
--- /dev/null
+++ b/PyDispatcher.egg-info/top_level.txt
@@ -0,0 +1 @@
+pydispatch
diff --git a/docs/images/greypinstripe.png b/docs/images/greypinstripe.png
new file mode 100644
index 0000000..006a3a3
Binary files /dev/null and b/docs/images/greypinstripe.png differ
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..e57ea29
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+
+
+  
+  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Python Dispatch Package</title>
+  
+
+  
+  
+  <link href="style/sitestyle.css" type="text/css" rel="stylesheet">
+
+  
+  <meta content="Patrick K. O'Brien" name="author"></head><body>
+<h1>PyDispatcher</h1>
+
+<p class="introduction">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 <a href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/87056">recipe</a>
+in the <a href="http://aspn.activestate.com/ASPN/Python/Cookbook/">Python
+Cookbook</a>.  The <a href="https://launchpad.net/pydispatcher">project</a>
+aims
+to include various enhancements to the recipe developed during use in
+various applications.  It is primarily maintained by <a href="http://www.vrplumber.com">Mike Fletcher</a>.  A derivative
+of the project provides the Django web framework's "signal" system.<br>
+</p>
+
+<p>To be more concrete about what PyDispatcher does for you:<br>
+</p>
+
+<ul>
+
+  <li>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.</li>
+  <ul>
+    <li>registration can be for all senders, particular sending
+objects, or "anonymous" messages (messages where the sender is None)<br>
+    </li>
+    <li>registration can be for any signal, or particular signals</li>
+    <li>a single signal will be delivered to all appropriate registered
+receivers, so that multiple registrations do not interfere with each
+other<br>
+    </li>
+  </ul>
+  <li>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.<br>
+  </li>
+  <li>the system uses weak references to receivers wherever possible</li>
+  <ul>
+    <li>object lifetimes are not affected by PyDispatcher registrations
+(that is, when your object goes away, the registrations related to the
+object also go away).  <br>
+    </li>
+    <li>references to common transient objects (in particular instance
+methods) are stored as compound weak references.  <br>
+    </li>
+    <li>weak references can be disabled on a
+registration-by-registration basis</li>
+  </ul>
+  <li>allows rich signal types, signals are simply hashable objects
+used to store and retrieve sub-tables, they are otherwise opaque to the
+dispatcher mechanism</li>
+  <li>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.<br>
+  </li>
+</ul>
+
+<p>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.</p>
+
+<h2>Acquisition and Installation</h2>
+
+<p>PyDispatcher is available as a standard Python distutils
+installation package from the Python Package Index (PyPI).  To
+install, run:<br>
+</p>
+
+<pre>pip install PyDispatcher<br></pre>
+
+<p>PyDispatcher does not include any binary packages, so there should
+be no issues in installation.  PyDispatcher is maintained on the
+LaunchPad project in bzr.  To help develop, check out the project
+like so:</p>
+
+<pre>bzr branch lp:~mcfletch/pydispatcher/working<br></pre>
+
+<p>You can either send a pull request via LaunchPad or email a
+patch-set via:</p>
+
+<pre>bzr send --mail-to=mcfletch at vrplumber.com<br></pre>
+
+<p class="technical">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.<br>
+</p>
+
+<p class="technical">Python 2.2.2 (and
+earlier) weak reference implementations have a subtle <a href="https://sourceforge.net/tracker/?group_id=5470&atid=105470&func=detail&aid=742911">bug</a>
+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 <strong>strongly
+recommended</strong> that you use <strong>Python 2.2.3</strong> or
+later
+when using PyDispatcher.  Note that this will not address the
+following issue.<br>
+</p>
+
+<p class="technical">Python 2.3.2 (and earlier) has a different (even
+more subtle) <a href="http://cvs.sourceforge.net/viewcvs.py/python/python/dist/src/Modules/gc_weakref.txt?rev=2.1&view=auto">bug</a>
+in the weakref destructor code which, again, can cause segfaults. 
+If you are using Python 2.3, it is <strong>strongly
+recommended</strong> that you use <strong>Python 2.3.3</strong> 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.
+</p>
+
+<h2>Documentation</h2>
+
+<p>You can find usage samples in the examples directory of the
+distribution.  The dispatcher module's <a href="pydoc/pydispatch.dispatcher.html">reference documentation</a> is
+currently the major source of information regarding usage.<br>
+</p>
+
+<p>PyDispatcher welcomes contributions, suggestions, and feedback from
+users in the pydispatcher-dev <a href="http://lists.sourceforge.net/lists/listinfo/pydispatcher-devel">mailing
+list</a>.</p>
+<h2>Usage</h2>
+<p>To set up a function to receive signals:</p>
+<pre>from pydispatch import dispatcher<br>SIGNAL = 'my-first-signal'<br><br>def handle_event( sender ):<br>    """Simple event handler"""<br>    print 'Signal was sent by', sender<br>dispatcher.connect( handle_event, signal=SIGNAL, sender=dispatcher.Any )<br></pre>
+<p>The use of the Any object allows the handler to listen for messages
+from any Sender or to listen to Any message being sent.  To send
+messages:</p>
+<pre>first_sender = object()<br>second_sender = {}<br>def main( ):<br>    dispatcher.send( signal=SIGNAL, sender=first_sender )<br>    dispatcher.send( signal=SIGNAL, sender=second_sender )<br></pre>
+<p>Which causes the following to be printed:</p>
+<pre>Signal was sent by <object object at 0x196a090><br>Signal was sent by {}<br></pre>
+<h3>Handler Functions</h3>
+<p>Handler functions in PyDispatcher are relatively loose in their
+definition.  A handler can simply declare the parameters it would
+like to receive and receive only those parameters when the signal is
+sent.  The sender can include extra parameters for those handlers
+which require them without worrying about whether a more generic
+handler can accept them:</p>
+<pre>def handle_specific_event( sender, moo ):<br>    """Handle a simple event, requiring a "moo" parameter"""<br>    print 'Specialized event for %(sender)s moo=%(moo)r'%locals()<br>dispatcher.connect( handle_specific_event, signal=SIGNAL2, sender=dispatcher.Any )<br></pre>
+<p>This connection requires that all senders of the particular signal
+send a "moo" parameter, but a handler that listens for all events and
+does not provide a "moo" parameter would silently ignore the sender
+having passed a "moo".</p>
+<p>2 parameters are always available to handler functions if they would like to use them:</p>
+<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <th>Parameter<br>
+      </th>
+      <th>Value<br>
+      </th>
+    </tr>
+    <tr>
+      <td>sender<br>
+      </td>
+      <td>Object from/for which the event was sent, can be dispatcher.Anonymous for anonymous signals<br>
+      </td>
+    </tr>
+    <tr>
+      <td>signal<br>
+      </td>
+      <td>Signal object used when sending<br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<p>Positional arguments and named arguments are passed through, but if
+positional arguments are used, they will fill in the parameters of the
+receiver in order and cause conflicts if named parameters are specified
+which match their names.  Generally it is advisable to use named
+arguments when defining sending messages.</p>
+<h3>Real World Examples</h3>
+<p>OpenGLContext uses PyDispatcher to provide a link between PyVRML97
+(model level) and OpenGLContext (the controller and view levels). 
+Changes to fields in the model <a href="http://bazaar.launchpad.net/%7Emcfletch/pyvrml97/trunk/view/head:/vrml/field.py#L81">send events</a>, as do changes to <a href="http://bazaar.launchpad.net/%7Emcfletch/pyvrml97/trunk/view/head:/vrml/olist.py">object lists</a>.  A <a href="http://bazaar.launchpad.net/%7Emcfletch/pyvrml97/trunk/view/head:/vrml/cache.py">cache</a> observes these changes and allows the view/model level to <a href="http://bazaar.launchpad.net/%7Emcfletch/openglcont [...]
+on particular fields of particular nodes.  The result is that
+rendering code can cache data extensively and have the caches
+consistently invalidated when their data-dependencies are changed.</p>
+
+
+
+<h2>Related Software</h2>
+
+<ul>
+
+  <li><a href="http://louie.berlios.de/">Louie</a></li>
+  <ul>
+    <li>Reworked pydispatcher providing plugin infrastructure including
+Twisted and PyQt specific support</li>
+  </ul>
+  <li><a href="https://code.djangoproject.com/browser/django/trunk/django/dispatch">django.dispatch (Signals)</a></li>
+  <ul>
+    <li>Rewritten with a more limited interface, but higher
+performance; requires that signals be objects of a given type, and
+eliminates Any registrations.  Registrations are on the signal
+objects.<br>
+    </li>
+  </ul>
+
+</ul>
+
+<h2>Release Notes</h2>
+
+<ul>
+  <li>Version 2.0.5</li>
+  <ul>
+    <li>Python 3.x support via shared code-base (not 2to3). Python 2.x is still the primary development target</li>
+  </ul>
+  <li>Version 2.0.3</li>
+  <ul>
+    <li>Support for Python 3.2 (via 2to3) added, Python 2.x is still
+the primary development target<br>
+    </li>
+  </ul>
+  <li>Version 2.0.2</li>
+  <ul>
+    <li>Further packaging fixes.<br>
+    </li>
+  </ul>
+  <li>Version 2.0.1 (this version and all previous versions are
+available from the old <a href="http://sourceforge.net/projects/pydispatcher/files/pydispatcher/">SourceForge
+project</a>)<br>
+  </li>
+  <ul>
+    <li>Packaging fixes to allow for easy_install based installation</li>
+  </ul>
+  <li>Version 2.0.0</li>
+  <ul>
+    <li>Renames the top-level package to "pydispatch" to avoid
+conflicts with common conflicting "dispatch" module.</li>
+  </ul>
+  <li>Version 1.0.3</li>
+  <ul>
+    <li>Add "robust" module with single function sendRobust, which
+catches errors during callbacks and returns the error instances instead
+of propagating the error</li>
+    <li>Patch bug in SafeRef deletion where traceback module has
+already been deleted by interpreter shutdown</li>
+    <li>Patch bug in _removeReceiver where sendersBack has already been
+deleted by interpreter shutdown</li>
+    <li>Make SafeRef pre-cache method name to allow for repr after
+cleanup of the method</li>
+  </ul>
+  <li>Version 1.0.2</li>
+  <ul>
+    <li>Fixes another memory leak, again wrt the back-reference table<br>
+    </li>
+  </ul>
+  <li>Version 1.0.1</li>
+  <ul>
+    <li>Fixes 2 memory leaks, one regarding the back-reference table
+for receivers, the other being a failure to register all receivers
+beyond the first for deletion</li>
+  </ul>
+  <li>Version 1.0.0</li>
+  <ul>
+    <li>Initial SourceForge release with restructured codebase<br>
+    </li>
+  </ul>
+</ul>
+
+<p class="footer">A SourceForge Open-Source project: <a href="http://sourceforge.net"><img title="" alt="SourceForge" style="border: 0px solid ; width: 88px; height: 31px;" src="http://sourceforge.net/sflogo.php?group_id=79755&type=1" align="middle" border="0" height="31" width="88"></a></p>
+
+</body></html>
diff --git a/docs/pydoc/__init__.py b/docs/pydoc/__init__.py
new file mode 100644
index 0000000..02576fc
--- /dev/null
+++ b/docs/pydoc/__init__.py
@@ -0,0 +1,7 @@
+"""pydoc documentation system with enhancements and automatic local builder
+
+This package is based on the standard pydoc package,
+with a few minor enhancements, and a slightly modified
+format.  An automatic mechanism for generating extensive
+documentation for the OpenGLContext project is provided.
+"""
\ No newline at end of file
diff --git a/docs/pydoc/builddocs.py b/docs/pydoc/builddocs.py
new file mode 100755
index 0000000..004118d
--- /dev/null
+++ b/docs/pydoc/builddocs.py
@@ -0,0 +1,26 @@
+#! /usr/bin/env python
+"""Script to automatically generate OpenGLContext documentation"""
+import pydoc2
+
+if __name__ == "__main__":
+    excludes = [
+        "math",
+        "string",
+    ]
+    stops = [
+        "OpenGL.Demo.NeHe",
+        "OpenGL.Demo.GLE",
+        "OpenGL.Demo.da",
+    ]
+
+    modules = [
+        "pydispatch",
+        "weakref",
+    ]	
+    pydoc2.PackageDocumentationGenerator(
+        baseModules = modules,
+        destinationDirectory = ".",
+        exclusions = excludes,
+        recursionStops = stops,
+    ).process ()
+    
\ No newline at end of file
diff --git a/docs/pydoc/pydispatch.__init__.html b/docs/pydoc/pydispatch.__init__.html
new file mode 100644
index 0000000..77f1598
--- /dev/null
+++ b/docs/pydoc/pydispatch.__init__.html
@@ -0,0 +1,33 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module pydispatch.__init__</title>
+<meta charset="utf-8">
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"> <br><big><big><strong><a href="pydispatch.html"><font color="#ffffff">pydispatch</font></a>.__init__</strong></big></big> (version 2.0.5)</font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/mnt/homevar/var/pylive/pydispatcher/pydispatch/__init__.py">/mnt/homevar/var/pylive/pydispatcher/pydispatch/__init__.py</a></font></td></tr></table>
+    <p><tt>Multi-consumer multi-producer dispatching mechanism</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>      </tt></td><td> </td>
+<td width="100%"><strong>__author__</strong> = "Patrick K. O'Brien"<br>
+<strong>__file__</strong> = '/mnt/homevar/var/pylive/pydispatcher/pydispatch/__init__.pyc'<br>
+<strong>__license__</strong> = 'BSD-style, see license.txt for details'<br>
+<strong>__name__</strong> = 'pydispatch.__init__'<br>
+<strong>__version__</strong> = '2.0.5'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>      </tt></td><td> </td>
+<td width="100%">Patrick K. O'Brien</td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/pydoc/pydispatch.dispatcher.html b/docs/pydoc/pydispatch.dispatcher.html
new file mode 100644
index 0000000..3bdac05
--- /dev/null
+++ b/docs/pydoc/pydispatch.dispatcher.html
@@ -0,0 +1,296 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module pydispatch.dispatcher</title>
+<meta charset="utf-8">
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"> <br><big><big><strong><a href="pydispatch.html"><font color="#ffffff">pydispatch</font></a>.dispatcher</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/mnt/homevar/var/pylive/pydispatcher/pydispatch/dispatcher.py">/mnt/homevar/var/pylive/pydispatcher/pydispatch/dispatcher.py</a></font></td></tr></table>
+    <p><tt>Multiple-producer-multiple-consumer signal-dispatching<br>
+ <br>
+dispatcher is the core of the PyDispatcher system,<br>
+providing the primary API and the core logic for the<br>
+system.<br>
+ <br>
+Module attributes of note:<br>
+ <br>
+    Any -- Singleton used to signal either "Any Sender" or<br>
+        "Any Signal".  See documentation of the <a href="#_Any">_Any</a> class.<br>
+    Anonymous -- Singleton used to signal "Anonymous Sender"<br>
+        See documentation of the <a href="#_Anonymous">_Anonymous</a> class.<br>
+ <br>
+Internal attributes:<br>
+    WEAKREF_TYPES -- tuple of types/classes which represent<br>
+        weak references to receivers, and thus must be de-<br>
+        referenced on retrieval to retrieve the callable<br>
+        object<br>
+    connections -- { senderkey (id) : { signal : [receivers...]}}<br>
+    senders -- { senderkey (id) : weakref(sender) }<br>
+        used for cleaning up sender references on sender<br>
+        deletion<br>
+    sendersBack -- { receiverkey (id) : [senderkey (id)...] }<br>
+        used for cleaning up receiver references on receiver<br>
+        deletion, (considerably speeds up the cleanup process<br>
+        vs. the original code.)</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom> <br>
+<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>      </tt></td><td> </td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="pydispatch.errors.html">pydispatch.errors</a><br>
+</td><td width="25%" valign=top><a href="pydispatch.robustapply.html">pydispatch.robustapply</a><br>
+</td><td width="25%" valign=top><a href="pydispatch.saferef.html">pydispatch.saferef</a><br>
+</td><td width="25%" valign=top><a href="weakref.html">weakref</a><br>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>      </tt></td><td> </td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="pydispatch.dispatcher.html#_Parameter">_Parameter</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="pydispatch.dispatcher.html#_Anonymous">_Anonymous</a>
+</font></dt><dt><font face="helvetica, arial"><a href="pydispatch.dispatcher.html#_Any">_Any</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom> <br>
+<font color="#000000" face="helvetica, arial"><a name="_Anonymous">class <strong>_Anonymous</strong></a>(<a href="pydispatch.dispatcher.html#_Parameter">_Parameter</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>   </tt></td>
+<td colspan=2><tt>Singleton used to signal "Anonymous Sender"<br>
+ <br>
+The Anonymous object is used to signal that the sender<br>
+of a message is not specified (as distinct from being<br>
+"any sender").  Registering callbacks for Anonymous<br>
+will only receive messages sent without senders.  Sending<br>
+with anonymous will only send messages to those receivers<br>
+registered for Any or Anonymous.<br>
+ <br>
+Note:<br>
+    The default sender for connect is Any, while the<br>
+    default sender for send is Anonymous.  This has<br>
+    the effect that if you do not specify any senders<br>
+    in either function then all messages are routed<br>
+    as though there was a single sender (Anonymous)<br>
+    being used everywhere.<br> </tt></td></tr>
+<tr><td> </td>
+<td width="100%">Methods inherited from <a href="pydispatch.dispatcher.html#_Parameter">_Parameter</a>:<br>
+<dl><dt><a name="_Anonymous-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
+
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom> <br>
+<font color="#000000" face="helvetica, arial"><a name="_Any">class <strong>_Any</strong></a>(<a href="pydispatch.dispatcher.html#_Parameter">_Parameter</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>   </tt></td>
+<td colspan=2><tt>Singleton used to signal either "Any Sender" or "Any Signal"<br>
+ <br>
+The Any object can be used with connect, disconnect,<br>
+send, or sendExact to signal that the parameter given<br>
+Any should react to all senders/signals, not just<br>
+a particular sender/signal.<br> </tt></td></tr>
+<tr><td> </td>
+<td width="100%">Methods inherited from <a href="pydispatch.dispatcher.html#_Parameter">_Parameter</a>:<br>
+<dl><dt><a name="_Any-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
+
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom> <br>
+<font color="#000000" face="helvetica, arial"><a name="_Parameter">class <strong>_Parameter</strong></a></font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>   </tt></td>
+<td colspan=2><tt>Used to represent default parameter values.<br> </tt></td></tr>
+<tr><td> </td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="_Parameter-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
+
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#eeaa77">
+<td colspan=3 valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#eeaa77"><tt>      </tt></td><td> </td>
+<td width="100%"><dl><dt><a name="-_cleanupConnections"><strong>_cleanupConnections</strong></a>(senderkey, signal)</dt><dd><tt>Delete any empty signals for senderkey. Delete senderkey if empty.</tt></dd></dl>
+ <dl><dt><a name="-_killBackref"><strong>_killBackref</strong></a>(receiver, senderkey)</dt><dd><tt>Do the actual removal of back reference from receiver to senderkey</tt></dd></dl>
+ <dl><dt><a name="-_removeBackrefs"><strong>_removeBackrefs</strong></a>(senderkey)</dt><dd><tt>Remove all back-references to this senderkey</tt></dd></dl>
+ <dl><dt><a name="-_removeOldBackRefs"><strong>_removeOldBackRefs</strong></a>(senderkey, signal, receiver, receivers)</dt><dd><tt>Kill old sendersBack references from receiver<br>
+ <br>
+This guards against multiple registration of the same<br>
+receiver for a given signal and sender leaking memory<br>
+as old back reference records build up.<br>
+ <br>
+Also removes old receiver instance from receivers</tt></dd></dl>
+ <dl><dt><a name="-_removeReceiver"><strong>_removeReceiver</strong></a>(receiver)</dt><dd><tt>Remove receiver from connections.</tt></dd></dl>
+ <dl><dt><a name="-_removeSender"><strong>_removeSender</strong></a>(senderkey)</dt><dd><tt>Remove senderkey from connections.</tt></dd></dl>
+ <dl><dt><a name="-connect"><strong>connect</strong></a>(receiver, signal<font color="#909090">=_Any</font>, sender<font color="#909090">=_Any</font>, weak<font color="#909090">=True</font>)</dt><dd><tt>Connect receiver to sender for signal<br>
+ <br>
+receiver -- a callable Python object which is to receive<br>
+    messages/signals/events.  Receivers must be hashable<br>
+    objects.<br>
+ <br>
+    if weak is True, then receiver must be weak-referencable<br>
+    (more precisely saferef.safeRef() must be able to create<br>
+    a reference to the receiver).<br>
+ <br>
+    Receivers are fairly flexible in their specification,<br>
+    as the machinery in the robustApply module takes care<br>
+    of most of the details regarding figuring out appropriate<br>
+    subsets of the sent arguments to apply to a given<br>
+    receiver.<br>
+ <br>
+    Note:<br>
+        if receiver is itself a weak reference (a callable),<br>
+        it will be de-referenced by the system's machinery,<br>
+        so *generally* weak references are not suitable as<br>
+        receivers, though some use might be found for the<br>
+        facility whereby a higher-level library passes in<br>
+        pre-weakrefed receiver references.<br>
+ <br>
+signal -- the signal to which the receiver should respond<br>
+ <br>
+    if Any, receiver will receive any signal from the<br>
+    indicated sender (which might also be Any, but is not<br>
+    necessarily Any).<br>
+    <br>
+    Otherwise must be a hashable Python object other than<br>
+    None (DispatcherError raised on None).<br>
+    <br>
+sender -- the sender to which the receiver should respond<br>
+ <br>
+    if Any, receiver will receive the indicated signals<br>
+    from any sender.<br>
+    <br>
+    if Anonymous, receiver will only receive indicated<br>
+    signals from send/sendExact which do not specify a<br>
+    sender, or specify Anonymous explicitly as the sender.<br>
+ <br>
+    Otherwise can be any python object.<br>
+    <br>
+weak -- whether to use weak references to the receiver<br>
+    By default, the module will attempt to use weak<br>
+    references to the receiver objects.  If this parameter<br>
+    is false, then strong references will be used.<br>
+ <br>
+returns None, may raise DispatcherTypeError</tt></dd></dl>
+ <dl><dt><a name="-disconnect"><strong>disconnect</strong></a>(receiver, signal<font color="#909090">=_Any</font>, sender<font color="#909090">=_Any</font>, weak<font color="#909090">=True</font>)</dt><dd><tt>Disconnect receiver from sender for signal<br>
+ <br>
+receiver -- the registered receiver to disconnect<br>
+signal -- the registered signal to disconnect<br>
+sender -- the registered sender to disconnect<br>
+weak -- the weakref state to disconnect<br>
+ <br>
+disconnect reverses the process of connect,<br>
+the semantics for the individual elements are<br>
+logically equivalent to a tuple of<br>
+(receiver, signal, sender, weak) used as a key<br>
+to be deleted from the internal routing tables.<br>
+(The actual process is slightly more complex<br>
+but the semantics are basically the same).<br>
+ <br>
+Note:<br>
+    Using disconnect is not required to cleanup<br>
+    routing when an object is deleted, the framework<br>
+    will remove routes for deleted objects<br>
+    automatically.  It's only necessary to disconnect<br>
+    if you want to stop routing to a live object.<br>
+    <br>
+returns None, may raise DispatcherTypeError or<br>
+    DispatcherKeyError</tt></dd></dl>
+ <dl><dt><a name="-getAllReceivers"><strong>getAllReceivers</strong></a>(sender<font color="#909090">=_Any</font>, signal<font color="#909090">=_Any</font>)</dt><dd><tt>Get list of all receivers from global tables<br>
+ <br>
+This gets all receivers which should receive<br>
+the given signal from sender, each receiver should<br>
+be produced only once by the resulting generator</tt></dd></dl>
+ <dl><dt><a name="-getReceivers"><strong>getReceivers</strong></a>(sender<font color="#909090">=_Any</font>, signal<font color="#909090">=_Any</font>)</dt><dd><tt>Get list of receivers from global tables<br>
+ <br>
+This utility function allows you to retrieve the<br>
+raw list of receivers from the connections table<br>
+for the given sender and signal pair.<br>
+ <br>
+Note:<br>
+    there is no guarantee that this is the actual list<br>
+    stored in the connections table, so the value<br>
+    should be treated as a simple iterable/truth value<br>
+    rather than, for instance a list to which you<br>
+    might append new records.<br>
+ <br>
+Normally you would use <a href="#-liveReceivers">liveReceivers</a>( <a href="#-getReceivers">getReceivers</a>( ...))<br>
+to retrieve the actual receiver objects as an iterable<br>
+object.</tt></dd></dl>
+ <dl><dt><a name="-liveReceivers"><strong>liveReceivers</strong></a>(receivers)</dt><dd><tt>Filter sequence of receivers to get resolved, live receivers<br>
+ <br>
+This is a generator which will iterate over<br>
+the passed sequence, checking for weak references<br>
+and resolving them, then returning all live<br>
+receivers.</tt></dd></dl>
+ <dl><dt><a name="-send"><strong>send</strong></a>(signal<font color="#909090">=_Any</font>, sender<font color="#909090">=_Anonymous</font>, *arguments, **named)</dt><dd><tt>Send signal from sender to all connected receivers.<br>
+ <br>
+signal -- (hashable) signal value, see connect for details<br>
+ <br>
+sender -- the sender of the signal<br>
+ <br>
+    if Any, only receivers registered for Any will receive<br>
+    the message.<br>
+ <br>
+    if Anonymous, only receivers registered to receive<br>
+    messages from Anonymous or Any will receive the message<br>
+ <br>
+    Otherwise can be any python object (normally one<br>
+    registered with a connect if you actually want<br>
+    something to occur).<br>
+ <br>
+arguments -- positional arguments which will be passed to<br>
+    *all* receivers. Note that this may raise TypeErrors<br>
+    if the receivers do not allow the particular arguments.<br>
+    Note also that arguments are applied before named<br>
+    arguments, so they should be used with care.<br>
+ <br>
+named -- named arguments which will be filtered according<br>
+    to the parameters of the receivers to only provide those<br>
+    acceptable to the receiver.<br>
+ <br>
+Return a list of tuple pairs [(receiver, response), ... ]<br>
+ <br>
+if any receiver raises an error, the error propagates back<br>
+through send, terminating the dispatch loop, so it is quite<br>
+possible to not have all receivers called if a raises an<br>
+error.</tt></dd></dl>
+ <dl><dt><a name="-sendExact"><strong>sendExact</strong></a>(signal<font color="#909090">=_Any</font>, sender<font color="#909090">=_Anonymous</font>, *arguments, **named)</dt><dd><tt>Send signal only to those receivers registered for exact message<br>
+ <br>
+sendExact allows for avoiding Any/Anonymous registered<br>
+handlers, sending only to those receivers explicitly<br>
+registered for a particular signal on a particular<br>
+sender.</tt></dd></dl>
+</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>      </tt></td><td> </td>
+<td width="100%"><strong>Anonymous</strong> = _Anonymous<br>
+<strong>Any</strong> = _Any<br>
+<strong>WEAKREF_TYPES</strong> = (<type 'weakref'>, <class 'pydispatch.saferef.BoundMethodWeakref'>)<br>
+<strong>__file__</strong> = '/mnt/homevar/var/pylive/pydispatcher/pydispatch/dispatcher.py'<br>
+<strong>__name__</strong> = 'pydispatch.dispatcher'<br>
+<strong>__package__</strong> = 'pydispatch'<br>
+<strong>connections</strong> = {}<br>
+<strong>senders</strong> = {}<br>
+<strong>sendersBack</strong> = {}</td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/pydoc/pydispatch.errors.html b/docs/pydoc/pydispatch.errors.html
new file mode 100644
index 0000000..cb4b68a
--- /dev/null
+++ b/docs/pydoc/pydispatch.errors.html
@@ -0,0 +1,243 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module pydispatch.errors</title>
+<meta charset="utf-8">
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"> <br><big><big><strong><a href="pydispatch.html"><font color="#ffffff">pydispatch</font></a>.errors</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/mnt/homevar/var/pylive/pydispatcher/pydispatch/errors.py">/mnt/homevar/var/pylive/pydispatcher/pydispatch/errors.py</a></font></td></tr></table>
+    <p><tt>Error types for dispatcher mechanism</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>      </tt></td><td> </td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="exceptions.html#Exception">Exception</a>(<a href="exceptions.html#BaseException">BaseException</a>)
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="pydispatch.errors.html#DispatcherError">DispatcherError</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="pydispatch.errors.html#DispatcherKeyError">DispatcherKeyError</a>(<a href="exceptions.html#KeyError">KeyError</a>, <a href="pydispatch.errors.html#DispatcherError">DispatcherError</a>)
+</font></dt><dt><font face="helvetica, arial"><a href="pydispatch.errors.html#DispatcherTypeError">DispatcherTypeError</a>(<a href="exceptions.html#TypeError">TypeError</a>, <a href="pydispatch.errors.html#DispatcherError">DispatcherError</a>)
+</font></dt></dl>
+</dd>
+</dl>
+</dd>
+<dt><font face="helvetica, arial"><a href="exceptions.html#KeyError">KeyError</a>(<a href="exceptions.html#LookupError">LookupError</a>)
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="pydispatch.errors.html#DispatcherKeyError">DispatcherKeyError</a>(<a href="exceptions.html#KeyError">KeyError</a>, <a href="pydispatch.errors.html#DispatcherError">DispatcherError</a>)
+</font></dt></dl>
+</dd>
+<dt><font face="helvetica, arial"><a href="exceptions.html#TypeError">TypeError</a>(<a href="exceptions.html#StandardError">StandardError</a>)
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="pydispatch.errors.html#DispatcherTypeError">DispatcherTypeError</a>(<a href="exceptions.html#TypeError">TypeError</a>, <a href="pydispatch.errors.html#DispatcherError">DispatcherError</a>)
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom> <br>
+<font color="#000000" face="helvetica, arial"><a name="DispatcherError">class <strong>DispatcherError</strong></a>(<a href="exceptions.html#Exception">Exception</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>   </tt></td>
+<td colspan=2><tt>Base class for all Dispatcher errors<br> </tt></td></tr>
+<tr><td> </td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="pydispatch.errors.html#DispatcherError">DispatcherError</a></dd>
+<dd><a href="exceptions.html#Exception">Exception</a></dd>
+<dd><a href="exceptions.html#BaseException">BaseException</a></dd>
+<dd><a href="__builtin__.html#object">object</a></dd>
+</dl>
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list of weak references to the object (if defined)</tt></dd>
+</dl>
+<hr>
+Methods inherited from <a href="exceptions.html#Exception">Exception</a>:<br>
+<dl><dt><a name="DispatcherError-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#DispatcherError-__init__">__init__</a>(...) initializes x; see help(type(x)) for signature</tt></dd></dl>
+
+<hr>
+Data and other attributes inherited from <a href="exceptions.html#Exception">Exception</a>:<br>
+<dl><dt><strong>__new__</strong> = <built-in method __new__ of type object><dd><tt>T.<a href="#DispatcherError-__new__">__new__</a>(S, ...) -> a new object with type S, a subtype of T</tt></dl>
+
+<hr>
+Methods inherited from <a href="exceptions.html#BaseException">BaseException</a>:<br>
+<dl><dt><a name="DispatcherError-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#DispatcherError-__delattr__">__delattr__</a>('name') <==> del x.name</tt></dd></dl>
+
+<dl><dt><a name="DispatcherError-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#DispatcherError-__getattribute__">__getattribute__</a>('name') <==> x.name</tt></dd></dl>
+
+<dl><dt><a name="DispatcherError-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#DispatcherError-__getitem__">__getitem__</a>(y) <==> x[y]</tt></dd></dl>
+
+<dl><dt><a name="DispatcherError-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#DispatcherError-__getslice__">__getslice__</a>(i, j) <==> x[i:j]<br>
+ <br>
+Use of negative indices is not supported.</tt></dd></dl>
+
+<dl><dt><a name="DispatcherError-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="DispatcherError-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#DispatcherError-__repr__">__repr__</a>() <==> repr(x)</tt></dd></dl>
+
+<dl><dt><a name="DispatcherError-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#DispatcherError-__setattr__">__setattr__</a>('name', value) <==> x.name = value</tt></dd></dl>
+
+<dl><dt><a name="DispatcherError-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="DispatcherError-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#DispatcherError-__str__">__str__</a>() <==> str(x)</tt></dd></dl>
+
+<dl><dt><a name="DispatcherError-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl>
+
+<hr>
+Data descriptors inherited from <a href="exceptions.html#BaseException">BaseException</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+</dl>
+<dl><dt><strong>args</strong></dt>
+</dl>
+<dl><dt><strong>message</strong></dt>
+</dl>
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom> <br>
+<font color="#000000" face="helvetica, arial"><a name="DispatcherKeyError">class <strong>DispatcherKeyError</strong></a>(<a href="exceptions.html#KeyError">KeyError</a>, <a href="pydispatch.errors.html#DispatcherError">DispatcherError</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>   </tt></td>
+<td colspan=2><tt>Error raised when unknown (sender,signal) set specified<br> </tt></td></tr>
+<tr><td> </td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="pydispatch.errors.html#DispatcherKeyError">DispatcherKeyError</a></dd>
+<dd><a href="exceptions.html#KeyError">KeyError</a></dd>
+<dd><a href="exceptions.html#LookupError">LookupError</a></dd>
+<dd><a href="exceptions.html#StandardError">StandardError</a></dd>
+<dd><a href="pydispatch.errors.html#DispatcherError">DispatcherError</a></dd>
+<dd><a href="exceptions.html#Exception">Exception</a></dd>
+<dd><a href="exceptions.html#BaseException">BaseException</a></dd>
+<dd><a href="__builtin__.html#object">object</a></dd>
... 2627 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/pydispatcher.git



More information about the Python-modules-commits mailing list