PyGI 0.5.1 Released


About 3 weeks have passed since the initial release of PyGI.  Since
then we have seen a significant bump in activity in #pygi and also
several new contributors.  A big thanks to John (J5) Palmieri for his
continued efforts to test PyGI with his applications and drive
development forward, as well as Tomeu Vizoso for his hard work and
John Dahlin for his continued support and patch reviews.

Major pieces of this release include the refactoring of the invoke
method (which needed it badly) as well as new overrides, a bunch of
callback support fixes and union support.  Shortlog is attached below
for more.  Python 3 support is still in the works and should land

PyGi 0.5.1 :

You can find the PyGi website/wiki:

And the public git repo at:


Bug tracking is done in project pygi on


John (J5) Palmieri (4):
make __all__ be a list of strings, fix override mechanism to use
it correctly
Add the Gtk.Builder override
override Gdk.Drawable to add cairo_create convinience method
wrap GObject module so we can go through GI when requesting attrs

Simon van der Linden (1):
Bump required GLib version to 2.22

Tomeu Vizoso (15):
Add support for enums without GType
Rename variable with a very generic name
Print any error messages raised inside _pygi_closure_handle
Refactor get_* methods in the *Info wrappers
Add basic support for unions
Dont force subclasses to implement all virtual methods of their bases
One more step at refactoring _wrap_g_function_info_invoke
Add override for Gdk.Color
Fix GAsyncReadyCallback
Move invocation code to its own file
Fix passing GDestroyNotify
Only hookup vfunc implementations for locally-defined methods
Avoid freeing garbage
Fix passing callbacks as constructor args
Fix overrides.Gdk.Color.__new__ args

Zach Goldberg (7):
Bump version during development to 0.5.1
Refactor implementation of scope call to allow for multiple
calls during lifetime of function invocation.
Change SCOPE_TYPE_INVALID handling to be a warning and not an error
Force out arguments to be initialized as NULL.  Comes with a test.
Change SCOPE_TYPE_INVALID handling to be a more verbose error.
Correct the reference counting of userdata in closure handling
Step 1 of refactoring _wrap_g_function_info_invoke

PyGi version 0.5, the ‘Watch out, theres a Volcano!’ release

(Special note for this version of the release statement on this blog — All the features Zhaan needed made it into the release, hence Zhaan is 100% compatible with PyGi 0.5)

It is my pleasure to bring to the world the first release of PyGi –
the Python GObject Introspection bindings – version 0.5. We chose the
number 0.5 to indicate that we believe PyGi to be of beta quality. We
want to encourage the brave souls of the world to try it out and help
us by reporting any bugs that are found.

PyGi is nearly feature complete. A highly condensed list of features:

– Implements in and out arguments of all types
– Implements closures, callbacks and virtual functions
– Implements wrapping of structs, objects and interfaces.

A huge thank you is due to several people for making this happen.

– Simon van der Linden, for all of his hard work on PyBank/PyGi.
– Tomeu Vizoso for all of his hard work on PyGi throughout the past
– John (J5) Palmieri, Colin Walters, Johan Dahlin and others for
assistance, contributions and help along the way,
– All of the great folks who participated in the Gnome/Python 2010
hackfest who made this release possible (including generous support
from Red Hat, Canonical and OLPC)

Version 0.6 of PyGI is likely to include:
– Python 3.1 support (already 95% working! Thanks David Malcom and
John Ehresman!)
– A major refactoring of some of the thickest parts of the code
– Much improved documentation
– Improved compatibility with older bindings

PyGi 0.5 is available for download here:

You can find the PyGi website/wiki:

And the public git repo at:


Bug tracking is done in project pygi on

-Zach Goldberg

PyGi Maintainers:
Simon van der Linden
Tomeu Vizoso
Zach Goldberg

Git Shortlog:

Alex Dedul (1):
Search for python-config-${VERSION} when python${VERSION}-config
is not found

Anderson Lizardo (1):
Depend on GLib 2.20 rather than 2.22

Colin Walters (2):
[] Clean up CFLAGS handling, don’t override all: target
Add Tomeu’s prototype script for converting pygtk to pygi

Johan Dahlin (3):
Create overridden modules in two passes
Remove trailing whitespace
Pythonify. Avoid ; and () around if statements

John (J5) Palmieri (1):
override that wasn’t checked in – fixes some test cases

Olav Vitters (1):
Fix doap file

Simon van der Linden (18):
Initial import
Add PyGObject patches
Add a doap file
Update PyGObject patches
Remove PyGObject patches since they’ve been merged to master
Fix silent rules setup
Import pygtk properly to avoid failure on some setups
Use the right variable when looking up in sys.modules
Fix members initialization in metaclasses
Remove global checks for pointers and move them in type cases
that need them
sys.path must be modified after pygtk is imported
Suppress compilation warnings
Don’t set a default constructor for structures.
Initialize struct fields to 0 when allocating
Restore the overrides support
Remove support for pointers to basic types as input-only
argument and return value
Fix and complete overrides tests
Add modelines and copyright information to overrides modules

Tomeu Vizoso (28):
Add myself to pygi.doap
Register interfaces
Add support for Any arguments
Add stuff to .gitignore
Accept 0 as a valid value for flag and enum arguments
Structs in arrays are not marshalled correctly
A few tests about interfaces
Use the limit constants from glib and interpret G_MAXUINT32 as
Revert “Use the limit constants from glib and interpret
G_MAXUINT32 as PyLong_FromLongLong”
Set a default constructor for boxed structs that don’t have one
Use the limit constants from glib and interpret G_MAXUINT32 as
The array field ‘length’ starts to count from the C arg list, so
need to decrement when it’s a method
Add Gtk.keysyms to overrides
Always create the .so link
Use GIMarshallingTests (old TestGI) in gobject-introspection
Add metadata to the .doap file
Add gdb and valgrind variants for the tests
Allow creating structs with pointers
Add support for foreign structs
Add examples/
Require PyCairo
Update to latest version of the script
Implement vfuncs.
Add missing file to tarballs
Add one more missing file to tarballs
Add more stuff to the tarballs
One more missing file…

Zach Goldberg (6):
Implementation callback support with scoping and basic argument support.
Add Zach Goldberg as a pygi maintainer
Move some tests from test_gi to test_everything
Implement nullable argument support, including tests
Fix a typo in pygi-callbacks.c header
Bump version for release 0.5.0

Gnome/Python Hackfest 2010 – Day 2, or: How to actually coordinate packages.

So it’s day two of the PyGI hackfest.  You can find some good coverage of Day 1 at Colin Walter’s Blog and John (J5) Palmieri’s Blog. The first few hours of day two include:

  • Made the decision that PyGI will depend on the GObject-Introspection 0.6.10 (to be released). This is because PyGI needs some new testing modules exported by GI as well as newer (faster!) APIs.
  • Maemo will originally get GI 0.6.7 and later be bumped to 0.6.10.
  • PyGI Callbacks patches all merged and are going through make check and patch review now
  • David Malcom got PyGI to compile and (mostly) link to Python 3.0
  • Tomeu got his hard drive to work
  • Colin Walters has been slacking
  • J5 has been compiling code all morning
  • We lack music. 🙁