Table Of Contents

Previous topic


Next topic


This Page


System Requirements

Requires any Python 2.4.4 to 2.7.x. The following table identifies on which combination of Python and Platform the unit tests have been run. The result for each combination is number of tests passed out of total number of tests, and “n/t” means “not tested”:

Windows 7 Ubuntu 12 Other Linux
Python 2.4.4 64/64(*) n/t n/t
Python 2.5 n/t n/t n/t
Python 2.6 n/t n/t n/t
Python 2.7 64/64 n/t n/t
PyPy 2.1 56/64 n/t n/t
Python 3.3 0/64 0/64 0/64

(*) required two test harness files (nose/ and nose/ to be patched (one line each): change BaseException (introduced in Python 2.5) to Exception.

Let us know (schoenborno [at] if you have successfully used pubsub with other combinations of Python and Platform.


Several methods are available: egg distribution, Windows installer, zip file with source, or directly from source code repository.

Method 1. Using setuptools (easy_install)

This method should work on all platforms supported by Python.

If you have setuptools installed on your machine,

  1. From a console window, do easy_install -Z pypubsub
  2. If for whatever reason easy_install can’t find the pypubsub download, you could try manually downloading the egg distribution from Then do easy_install -Z <downloaded_egg>

Method 2. Using Installer (Windows only)

  1. Download the Installer (PyPubSub-xxx.win32.exe) from
  2. Run the installer

Method 3. From source distribution

  1. Download the appropriate ZIP file from
  2. Extract the contents
  3. From a console window, cd to extracted folder
  4. Then do python install

Method 4. From source code repository

  1. Using a subversion client, do an SVN checkout of svn://
  2. From a console window, cd to pubsub-code
  3. In console, do python install Logo


The forums are currently hosted on google groups:

Also, many pypubsub users are on the wxPython-users mailing list.

Release Notes

For PyPubSub v3.2.0

This is a minor release for small improvements made (see docs/CHANGELOG.txt) based on feedback from user community. In particular an XML reader for topic specification contributed by Josh English. Also cleaned up the documentation, updated the examples folder (available in source distribution as well as online).

Only 3 changes to API (function names):

  • renamed pub.getDefaultRootAllTopics to pub.getDefaultTopicTreeRoot
  • removed pub.importTopicTree: use pub.addTopicDefnProvider(source, format)
  • renamed pub.exportTopicTree to pub.exportTopicTreeSpec

Oliver Schoenborn September 2013

PyPubSub 3.1.2

This is a minor release for small improvements made (see docs/CHANGELOG.txt) based on feedback from user community. Also extended the documentation. See for installation and usage. See the examples folder for some useful examples.

Oliver Schoenborn Nov 2011

PyPubSub 3.1.1b1

Docs updated.

Oliver Schoenborn May 2010

For PyPubSub v3.1.0b1

Major cleanup of the API since 3.0 and better support for the legacy wxPython code. Defining a topic tree via a text file has been improved drastically, making it simpler to document topic messages and payload data required or optional. More examples have been added, and the messaging protocols clarified.

The included docs are not yet updated, that’s what I’m working on now and will lead to the 3.1.1b1 release. I’m also working on an add-on module that would allow two applications to communicate over the network using pubsub-type messaging (with topics, etc). The design is almost complete.

Oliver Schoenborn Jan 2010


High-level changelog. For details, consult the SVN logs.

3.2.0 (2013):
  • cleanup of docs
  • merged importTopicTree to addTopicDefnProvider
  • renamed pub.getDefaultRootAllTopics to pub.getDefaultTopicTreeRoot
  • removed pub.importTopicTree, use pub.addTopicDefnProvider(source, format)
  • renamed pub.exportTopicTree to pub.exportTopicTreeSpec
  • several minor bug fixes
  • incorporated some patches contributed by users: one for performance improvement when high-frequency of subscribers/messages; one for reading topic tree specification from XML rather than .py module
  • v1 and v2 APIs no longer supported
3.1.2 (2011):
  • added some docs
  • more configurable importTopicTree
  • using importTopicTree now allows to use the topic hierarchy as topic names instead of string, thereby enabling python editors to support pubsub-based development via code completion and sendMessage keyword arguments.
3.1.1b (2010):
  • cleanup docs
  • couple minor tweaks (for instance added pub.getMsgProtocol())
3.1.0b (2009):
  • Import/export of topic tree and its documentation using Python interpreter
  • Better support for evolving topic tree during application development, with “freezing” certain parts of tree
  • Helper functions to transition from arg1 to kwargs messaging protocol
  • Improved error messages (in exceptions raised)
  • pubsub can be installed inside other packages and will not interfere with system-wide pubsub
  • pubsubconf module moved inside pubsub package so manual install easier
  • Support !**kwargs in listeners
  • Support for more than one pubusb notification handler
  • Multiple publisher engines in one application (for instance, in separate threads, or for different “domains” in a large application)
  • Upgraded docs
  • Bug fixes, cleanup
3.0 (2008):
  • Use keyword arguments in sendMessage
  • Support any kind of listener, not just those with one unnamed argument
  • Validate listeners at subscription time
  • Support “inheritance” of keyword arguments by subtopics during message sending (prevents a common bug which was to send data using wrong argument names).
  • Topic tree can be documented (including topic message arguments)
  • Support user-defined notification handling of certain events occuring in pubsub such as “subscribe”, “sendMessage”.
  • Support user-defined exception handling of exceptions raised by listeners
  • Proto-Documentation on own website using Sphinx
  • Separate regression testing folder for nose-based automated testing
  • Configuration module for choosing which pubsub API to use in application, useful for backwards compatibility
2.0 (2007):
  • more Pythonic API (new PublisherClass API, at module level so easier to call – no need to know about singleton)
  • Support definition of topic tree via a python class, for increased rigor and documentability of topics
  • Topics are objects
1.0 (2005):
  • Given its own “home” as separate package from wxPython’s wx.lib.pubsub
  • Factored out weakmethod
  • Put on Cheese Shop
Pre 1.0:
  • Created by Rob Shecter in wxPython’s wx.lib (early 2000?)
  • Weakmethod added by Oliver Schoenborn (2004)
  • Further development transfered to Schoenborn (2004)