PyWebPerf: a web performance tool
I'm happy to announce (at long last) that I've released version 1.0.0rc1 of my
web performance tool. Documentation is fairly thin on the ground, but then
the tool itself is pretty trivial to use.
The sourceforge project is at:
with the download at:
The bundled README explains installation and usage. It's short, but then the
tool is pretty simple to use :)
Written in 100% Python, tt does a fair job of emulating a web browser
(including threads, redirects, image/stylesheet loading, all with cookie
handling). You can control the number of threads, the number of times to
repeat the test, basic authentication parameters, and the level of verbosity
(at the most verbose, it lists times for all components of a page).
Pmw megawidgets for Tkinter
Greg McFarlane <gregm(a)iname.com>
(The Pmw Development Team has aspired to the "release early, release
often" school of free software. It has not always lived up to the
goal (the last release was over one year ago), so to try to remedy
this, we have made two releases in 24 hours! The first, 1.0, is
described below. The second, 1.1, was made 1) to fix a nasty bug just
reported by the Pmw Quality Assurance Team in the new Pmw.ScrolledText
row and column header functionality and 2) to boost the version number
to make it look like we are making progress.)
A new release of Pmw is out. Although this release is numbered 1.0,
Pmw has been in use for several years, has had many public releases
and is quite stable. The label 1.0 is given because the documentation
is finally complete.
Apart from the completed documentation, the main changes in this
- added row and column headers to Pmw.ScrolledText which can be used
to display tabular data
- added getvalue() and setvalue() methods to several megawidgets as
a consistent way to set and get the user-modifiable state
- made sub-classing simpler (when no new options or components are
- a sub-class of a Pmw megawidget does not need to have an
- if it does have an __init__() method, it does not need to call
- initialiseoptions() no longer requires an argument
- if used, defineoptions() and initialiseoptions() must always
be called in matching pairs
- made fixes to work with python 2.1 and 2.2
- many bug fixes and other improvements
To download Pmw or for more information, see the home page at
If you have any comments, enhancements or new contributions, please
contact me (gregm(a)iname.com).
What is Pmw?
Pmw is a toolkit for building high-level compound widgets, or
megawidgets, constructed using other widgets as component parts.
It promotes consistent look and feel within and between graphical
applications, is highly configurable to your needs and is easy to
use. It uses the Tkinter python library.
Pmw consists of:
- A few base classes, providing a foundation for building
- A library of flexible and extensible megawidgets built on
the base classes, such as buttonboxes, notebooks,
comboboxes, selection widgets, paned widgets, scrolled
widgets and dialog windows.
- A lazy importer/dynamic loader which is automatically
invoked when Pmw is first imported. This gives unified
access to all Pmw classes and functions through the Pmw.
prefix. It also speeds up module loading time by only
importing Pmw sub-modules when needed.
- Complete reference documentation, covering all classes and
functions including all megawidgets and their options,
methods and components. Helpful tutorial material is also
- A test framework and tests for Pmw megawidgets.
- A slick demonstration of the megawidgets.
- An interface to the BLT busy, graph and vector commands.
The interface to Pmw megawidgets is similar to basic Tk widgets,
so it is easy for developers to include both megawidgets and basic
Tk widgets in their graphical applications. In addition, Pmw
megawidgets may themselves be extended, using either inheritance
The use of the Pmw megawidgets replaces common widget combinations
with higher level abstractions. This simplifies code, making it
more readable and maintainable. The ability to extend Pmw
megawidgets enables developers to create new megawidgets based on
Greg McFarlane Really Good Software Pty Ltd Sydney Australia gregm(a)iname.com
Pyrex 0.4.3 is now available:
* A new kind of for-loop has been added to the language
for iterating over ranges of integers. Example:
for i from 0 <= i < 10:
The main advantage of using this form is that it
is translated into pure C code where possible, whereas
an equivalent Python for-loop using range() is not.
See the "Integer for-loops" section of the Language
Overview for more information.
* The sizeof() function can now be applied to types
as well as variables.
There are also some other minor improvements and bug
fixes. See the CHANGES file in the distribution for a
What is Pyrex?
Pyrex is a new language for writing Python extension modules.
It lets you freely mix operations on Python and C data, with
all Python reference counting and error checking handled
Greg Ewing, Computer Science Dept,
University of Canterbury,
Christchurch, New Zealand
We're pleased to announce the release of WingDBG, version 1.1.5!
WingDBG is a Zope product the lets you debug other Zope products and
external methods with Wing IDE. It works with the stock Zope
distribution and allows programmers to configure, start, and stop the
debugger via the Zope Management Interface.
Documentation and links to the downloadable package are at:
* Zope 2.4.0 or newer
* Wing IDE 1.1.5
* Windows, Linux, Mac OS X
* Solaris and FreeBSD available via compilation from source
* Cannot debug DTML code
* Remote debugging requires external file sharing such as Samba or NFS
Wing IDE is an integrated development environment for Python that
includes a network-capable debugger, an editor with an optional emacs
compatibility mode, a source browser, and a project manager. Wing IDE's
features include syntax highlighting, auto-completion, code folding,
and a debug probe that allows Python statements to be executed in a
paused debug process.
Please report any problems to support(a)wingide.com.
The Wing IDE Team
Wing IDE for Python Archaeopteryx Software, Inc
www.wingide.com Take Flight!
SPYCE - Server Python Pages
SPYCE is a webserver plugin that supports simple and efficient
Python-based dynamic HTML scripting. Those who like Python and are
familiar with JSP, or PHP, or ASP, should have a look at this engine. It
allows one to generate dynamic HTML content just as easily, using Python
for the dynamic parts. Its modular design makes it very flexible and
extensible. It supports FastCGI, CGI, mod_python and proxying to plugin
into Apache and most other webservers. It can also be used as a
command-line utility for HTML pre-processing.
v1.1.39 released on 25 August 2002.
Get it at:
Most important changes since last posting (v1.1.29):
- added a modular filter mechanism to the response output stream
- added compression module
- renamed filter module to transform (name conflict with Python builtin)
- implemented spyceDone exception handler for early termination
- spyce web server implemented, for use as a proxy
- response.close() deprecated
- emit Status: header for CGI HTTP return codes
- added various examples: hello2.spy, form.spy, ...
- windows installer now configures and restarts apache
- chdir in cgi mode, make sys.path absolute
- request can be accessed as dictionary
- many modules can be imported at once using names attribute
- appended current Spyce file's directory to sys.path
- external refresh redirect now uses url= in redirect string
- lots of minor bug fixes
- CVS junk removed from source tarball
- live examples online at sourceforge
- ability to invoke spyce engine programmatically
Partial change log:
modified how filter module injects itself into output stream
added response.addFilter() to allow piped functionality
on the output stream, modules can insert write, writeStatic,
writeExpr, flush and clear handlers
added compress module for dynamic compression functionality
compress module documentation
renamed filter module to transform (name conflict with Python builtin)
sys.path forced to be absolute before changing directory in CGI mode
bugfix - spyce path trimmed to just filename when directory changed for
bugfix - spyce web server closes sockets
spyce can now run as a (proxy) web server
spyce -l [-p port] <server root>
spyceDone exception to stop spyce processing
raise spyceDone, see gif.spy, fileupload.spy examples
not needed with spyceDone functionality
cPickle used in session module
improved session serialization performance
redirect.externalRefresh now has url= in string
internal redirect fixed
bug fix - consecutive compact line removal now possible
examples added: hello2.spy, form.spy
handle ISINDEX CGI queries that have extra command-line parameters
Status CGI header used for spyce redirect return codes
bug - fixed cgi chdir in case of local directory
request - invoke spyce engine programmatically with spyce string
source tarball does not contain extra CVS junk
fixed apache config bug in windows installer
appended current Spyce file's directory to sys.path
minor documentation tweaks
names attribute added to [[.module ]] tag
chdir in cgi mode
windows installer improved: apache configuration and restart
fixed - handling of initial spaces in multi-line strings in python chunks
red page marker in docs
created undefined windows lock variables
* Rimon Barr Ph.D. candidate, Computer Science, Cornell University
| barr(a)cs.cornell.edu - http://www.cs.cornell.edu/barr - Y!IM: batripler
| Understanding is a kind of ecstasy.
+---- -- Carl Sagan
Welcome to the Puffin Automation Framework Version 0.9
More Information and Setup Instructions Here:
What is the Puffin Automation Framework and how does it differ
from the earlier versions of Puffin?
The Puffin Automation Framework (Puffin) picks up where the
original Puffin web application testing tool stopped. You can
still use Puffin to do web testing (and it's even easier and
more powerful than it was before). But now, you can do a great
Changes in Version 0.9:
1) Total architectural rewrite.
2) Extendable now in Python.
3) Not backwards compatible.
4) More flexibility in plan.xml files (repeats, etc).
5) Great new reporting features (HTML/XML).
6) Better failed task alerting (email, file log, etc).
1) 0.9 is a *HUGE* change from previous versions (i.e. not backwards
2) The old Puffin docs are out of date (though still useful).
3) More docs are on their way -- I promise.
1) Brian Norman. Tirelessly helping me server the GNU/Linux and UNIX
2) Bryan Richard. HTML help. General support.
3) Ernie Hershey. For the demo app, etc.
And, as always, contact me immediately should you run into any
Announcing the latest version of HappyDoc, a Python documentation extraction
HappyDoc is a tool for extracting documentation from Python source
code. It differs from other such applications by the fact that it
uses the parse tree for a module to derive the information used in
its output, rather that importing the module directly. This allows
the user to generate documentation for modules which need special
context to be imported.
More details are available on the HappyDoc home page at
!!! NOTICE !!!
Before installing HappyDoc 2.0+, any version earlier than 2.0 must
be removed. This includes the file 'happydoc.pth' and directory
'happydoc' in site-packages, as well as the executable 'happydoc'
in the 'bin' directory.
Version 2.1 --
The primary reason for this release is to resolve the infamous *-d
- **New Features**
- #514237 - The PluginLoader no longer requires a '.py'
extension on plugins. This should allow plugins to be written
in any language for which Python can load a module, and as
long as the file is named with the right convention they will
be picked up and loaded. (The source of this change request
was the maintainers of the PLD Linux Distribution.)
- **Bug Fixes**
- Resolved defect #513850, where output was written to the wrong
place when the -d option was used.
**NOTE** *The solution to this problem resulted in changes to
the file names being used for output. It is recommended that
a new directory be used to generate documentation for existing
code, rather than trying to write over the top of existing
- Resolved defect #510447, a problem with escaping special
characters in HTML output. Text enclosed in single quotes
is now not escaped in output so that HTML text can be
passed directly to the output file.
- Fixed a problem with Windows installation using 'setup.py'.
- **Other Changes**
- Minor tweaks to the build and test tools.
Download the latest version of HappyDoc from the home page on
I'm pleased to announce a new release of xmldiff.
Since this release fixes a bunch of bugs and provides a great speed
improvments on big files, it's recommended to update older versions
to this release.
Today there is just the source distribution on the ftp but the deb, rpm
and win** packages should be available in the next week.
What's xmldiff ?
Xmldiff is a utility for extracting differences between two xml files.
It return a set of primitives to apply on source tree to obtain the
What's new in 0.6.0 ?
_ change of the internal representation
_ remove support for the EZS algorithm (no more maintened for the
_ add command line options to parse html and to control
entities/comments inclusion and output encoding
_ fixing coalescing text nodes bug
_ many other bugs fixes
_ great speed improvement
Where could I download it ?
A Python user group is forming for Toronto (Canada) and the surrounding area.
If you are interested, especially in helping to organize the group, please
visit our web site at http://web.engcorp.com/pygta and contribute to the wiki,
or ask to join the low-volume mailing list (meeting announcements and other
An organizational meeting will take place on Tuesday, September 17, from
7pm to 9pm, at the Willowdale United Church, 379 Kenneth Ave, North York
(near the Finch subway station). Some free parking is available in a lot
and on the street. More details and a map are available here:
Even if you don't have the time to help, we really want to hear from you
if you would be interested in attending this or later meetings. We want
to gauge the level of interest prior to the meeting. If you haven't got
time to visit the web page, you can also just reply by email to this message.
-PyGTA organizational committee
Hey Folks-- Here is a set of tools that will make dealing with RPMs a bit
remove command line arg for deptree.pickle -- now stored in
- merge multiple directories containing various versions of RPMs in to on
directory that has symlinks to the most up to date version of each
- install packages based on name, and have all of the depend
- update all of the RPMs on a system (do_update.py)
- great examples of using various features in the python rpm module
tar zxvf rpm_utils.tar.gz
python setup.py install
You will first need to get a directory with the latest rpms:
python merge_rpms -s <dir1, dir2> -d <destination dir>
The next step is the crucial step, as it allows us to store a file that
all of the dependencies between packages:
python dep_tree.py <destination dir>
Now if you want to upgrade your system:
python do_update.py <destination dir>
To install a package
python rpm_install.py <destination dir> <rpmname>
<rpmname>... where rpmname is python2-devel not python2-devel-2.1-1.
- fix bugs and add features
Nicholas Henke <henken(a)seas.upenn.edu>
roughneck on irc.openprojects.net