Over the weekend, I did a set of releases for pygtk, pyorbit and gnome-python. These releases are pretty much what I want for the 2.0 versions (which have been a long time coming). These releases should fix up the last few remaining bugs related to running with Python 2.3, and bugs related to compiling on MacOS X. If no serious bugs are found, I’ll do 2.0 releases shortly.

Once 2.0 is done and I have branched, I can start looking at moving on to the newer APIs. Some of the things I want to do include:

  • Delete the binding, or move it to the gtkglarea package. This library seems pretty much dead, and there is another OpenGL binding for GTK which is being actively developed, and even has a Python binding.
  • Add all the new GTK 2.2 APIs to PyGTK. This shouldn’t take too long, as all the infrastructure is there now.
  • Move gnome-python on to the GNOME 2.4 libraries. Given the timing of releases, its probably not worth targetting 2.2 separately.
  • Delete the gnome.zvt binding. The libzvt library is pretty much dead, and VTE includes a Python binding itself.

There are a few other things I want to look at, such as Python 2.3’s new PyGILState APIs, which could potentially simplify PyGTK’s threading support a lot, and make it interact better with other threaded Python extension modules.

22 August 2003

raph: If you upgrade to Mailman 2.1, you can run qrunner as a daemon instead of from Cron (this is in fact the preferred way to run it).

This does have some disadvantages, of course. I have experienced problems with 2.1.x qrunner running away and using all the CPU on occasions (a problem with temporary failures for local delivery being handled by queuing the message for immediate re-delivery). I found that the particular problem I ran into had been fixed on the HEAD branch though, which I am now running on my mail server. It should handle the higher loads though.

If you want to remove some of the intermediate steps you can use my to get mailman to call spamassassin directly. This means that list traffic will only go through MTA, Mailman and Spamassassin. It will also allow mailman to do some moderation decisions based on message scores (ie. discard messages above a particular score without moderation).

20 August 2003


Spent a bit of time writing a reply to kiko‘s proto-PEP about fixing Python’s handling of LC_NUMERIC.

As it stands at the moment, Python requires LC_NUMERIC to be set to C in order to function correctly (important things like parsing of floats in source code break if it is set to a locale that uses a comma as the decimal point). They then have some hacks that allow you to parse and format floats according to locale conventions. This all works great in a pure Python environment.

However if you have another library that want to display or parse floats in a locale sensitive fashion and want to use it with Python, things start to break down. If the library isn’t Python specific, it is unlikely to change (after all, it is just using standard C library functions according to the specification). One such library that falls into this category is GTK+, which is where kiko first ran into the problem.

I think most of the Python developers realise that the current code is a problem now, which is good because it is the first step to getting it fixed.

Mail Viruses

Like most people, I woke up today with about 50 or so bounce messages in my inbox. I have a set of header_checks rules in my postfix configuration that reject windows executable attachments, so I never actually received a copy of the actual worm, but I received many many rejection messages from other servers, since the Sobig.F worm forges the From: address.

I quickly modified the mail filters to discard rather than reject Sobig.F messages, to make sure we aren’t adding to the problem.

I am surprised that none of the major server side anti-virus products correctly discard these virus messages with forged senders. They all seem to identify the type of virus, so they should be able to control what action is performed based on the virus type (for mail viruses that don’t forge the sender, rejection still seems like the best option).

15 August 2003


Since upgrading to RH9, I started to experience some problems with my laptop. Every time I switched from text mode to graphics mode it would hang with the keyboard LEDs flashing for between 10 seconds and a minute. This was particularly annoying, since I usually switched to a console before suspending the machine.

After searching for any information about this problem without any luck (I was trying to find relevant changes to the kernel or XFree86, both of which had been upgraded).

In the end, a BIOS upgrade did the trick (which had been sitting on Compaq’s website for about a year). Now I can even suspend while in graphics mode. If you have a Compaq Armada M300, the BIOS upgrade is definitely worth it.


Put out new releases of PyGTK and PyORBit. Still haven’t done a new gnome-python release though. The new PyORBit release fixes a bug in the stub generation that was showing up when used together with Python 2.3. After the release, I got another 2.3 related bug report which is fixed in CVS, so the next release should be pretty solid.

The PyGTK release fixed a number of other bugs that caused errors when compiling under Mac OS X. Unfortunately, I missed a few, so it still requires some patches to build correctly. Next release should be build fine though.

Given that Apple is shipping their X server with the next version of OS X, this essentially means that PyGTK apps can run with little or no modification under Unix, Windows and Max OS X, which should make it a pretty attractive option to developers.

ChangeLogs as RSS

I wrote a short script for processing ChangeLogs into RSS format, so that they can be read using a news aggregator such as Straw (plug for a cool PyGTK using app). The script still needs a bit of work, but it can already identify references to bugzilla bugs, and provides links to the files in Gnome’s LXR. A sample of the output is available here:

I also wrote a short XSL stylesheet to make the RSS display nicely in a web browser. It ended up requiring a small javascript hack to work in Mozilla, since disable-output-escaping does not work with its XSLT engine (and is not likely to get it).