From: Mike C. F. <mcf...@us...> - 2008-11-14 18:09:56
|
Update of /cvsroot/pydispatcher/pydispatch/docs In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv25823/docs Modified Files: index.html Log Message: Bump to version 2.0.1, packaging fixes for setuptools. Index: index.html =================================================================== RCS file: /cvsroot/pydispatcher/pydispatch/docs/index.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** index.html 7 Jul 2006 16:03:59 -0000 1.2 --- index.html 14 Nov 2008 18:09:51 -0000 1.3 *************** *** 2,42 **** <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 SourceForge <a ! href="https://sourceforge.net/projects/pydispatcher/">project</a> aims to include various enhancements to the recipe developed during use in various applications.<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 --- 2,65 ---- <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 SourceForge <a href="https://sourceforge.net/projects/pydispatcher/">project</a> aims to include various enhancements to the recipe developed during use in various applications.<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 *************** *** 44,63 **** --- 67,99 ---- 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 *************** *** 66,96 **** 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 SourceForge project <a ! href="https://sourceforge.net/project/showfiles.php?group_id=79755">file repository</a>. To install, unzip the source archive into a temporary directory and run:<br> </p> <pre>python setup.py install<br></pre> <p>PyDispatcher does not include any binary packages, so there should ! be no issues in installation. To use the <a ! href="https://sourceforge.net/cvs/?group_id=79755">CVS version</a> of PyDispatcher (useful for developers of PyDispatcher), simply check out the module to a directory on your PythonPath.<br> </p> <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, --- 102,141 ---- 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 SourceForge project <a href="https://sourceforge.net/project/showfiles.php?group_id=79755">file repository</a>. To install, unzip the source archive into a temporary directory and run:<br> + </p> + <pre>python setup.py install<br></pre> + <p>PyDispatcher does not include any binary packages, so there should ! be no issues in installation. To use the <a href="https://sourceforge.net/cvs/?group_id=79755">CVS version</a> of PyDispatcher (useful for developers of PyDispatcher), simply check out the module to a directory on your PythonPath.<br> + </p> + <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, *************** *** 100,107 **** 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 --- 145,153 ---- 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 *************** *** 112,174 **** 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>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> </ul> <h2>Release Notes</h2> <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> --- 158,271 ---- 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>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> + </ul> + <h2>Release Notes</h2> + <ul> + + <li>Version 2.0.1</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> |