Differing a bit from the C API, I’ve made the cairo_matrix_t type immutable from Python. That is, all the operations that modify a cairo_matrix_t have been wrapped in such a way that they return a new matrix rather than modifying the old one.
I also set things up so that cairo_status() calls are made automatically after operations, and an exception rasied if appropriate.
The next thing to do is to set up some shim code to make the binding usable in conjunction with PyGTK. This will probably just be a bit of code in an extension that lets you create a cairo.Surface from a GdkDrawable or GdkPixbuf (in 24-bit RGB format — since GdkPixbuf uses RGBA and Cairo uses ARGB, it doesn’t look trivial to render into an RGBA pixbuf).
Talked with keithp on IRC a bit about the extension, and some changes to the Cairo API that would make the extension’s life a bit easier. Will follow it up on the list.
As predicted by the anti-virus firms, it looks like Sobig.F has stopped propagating (based on the sudden drop in virus bounce messages I have been receiving). About time.