Imported Upstream version 3.4.0 upstream/3.4.0
authorAnas Nashif <anas.nashif@intel.com>
Sat, 10 Nov 2012 20:51:28 +0000 (12:51 -0800)
committerAnas Nashif <anas.nashif@intel.com>
Sat, 10 Nov 2012 20:51:28 +0000 (12:51 -0800)
362 files changed:
ChangeLog
MANIFEST.in [deleted file]
Makefile.am
Makefile.in
NEWS
PKG-INFO
PKG-INFO.in
README
README.win32 [deleted file]
aclocal.m4
codegen/Makefile.am [deleted file]
codegen/Makefile.in [deleted file]
codegen/README.defs [deleted file]
codegen/__init__.py [deleted file]
codegen/argtypes.py [deleted file]
codegen/code-coverage.py [deleted file]
codegen/codegen.py [deleted file]
codegen/createdefs.py [deleted file]
codegen/definitions.py [deleted file]
codegen/defsconvert.py [deleted file]
codegen/defsgen.py [deleted file]
codegen/defsparser.py [deleted file]
codegen/docextract.py [deleted file]
codegen/docextract_to_xml.py [deleted file]
codegen/docgen.py [deleted file]
codegen/h2def.py [deleted file]
codegen/mergedefs.py [deleted file]
codegen/missingdefs.py [deleted file]
codegen/mkskel.py [deleted file]
codegen/override.py [deleted file]
codegen/pygobject-codegen-2.0.in [deleted file]
codegen/reversewrapper.py [deleted file]
codegen/scanvirtuals.py [deleted file]
codegen/scmexpr.py [deleted file]
compile
config.guess
config.h.in
config.sub
configure
configure.ac
depcomp
docs/Makefile.am [deleted file]
docs/Makefile.in [deleted file]
docs/html/class-gioappinfo.html [deleted file]
docs/html/class-gioapplaunchcontext.html [deleted file]
docs/html/class-gioasyncresult.html [deleted file]
docs/html/class-giobufferedinputstream.html [deleted file]
docs/html/class-giobufferedoutputstream.html [deleted file]
docs/html/class-giocancellable.html [deleted file]
docs/html/class-giodatainputstream.html [deleted file]
docs/html/class-giodataoutputstream.html [deleted file]
docs/html/class-giodrive.html [deleted file]
docs/html/class-gioemblem.html [deleted file]
docs/html/class-gioemblemedicon.html [deleted file]
docs/html/class-giofile.html [deleted file]
docs/html/class-giofileattributeinfo.html [deleted file]
docs/html/class-giofileenumerator.html [deleted file]
docs/html/class-giofileicon.html [deleted file]
docs/html/class-giofileinfo.html [deleted file]
docs/html/class-giofileinputstream.html [deleted file]
docs/html/class-giofilemonitor.html [deleted file]
docs/html/class-giofileoutputstream.html [deleted file]
docs/html/class-giofilterinputstream.html [deleted file]
docs/html/class-giofilteroutputstream.html [deleted file]
docs/html/class-gioicon.html [deleted file]
docs/html/class-gioinputstream.html [deleted file]
docs/html/class-gioloadableicon.html [deleted file]
docs/html/class-giomemoryinputstream.html [deleted file]
docs/html/class-giomemoryoutputstream.html [deleted file]
docs/html/class-giomount.html [deleted file]
docs/html/class-giomountoperation.html [deleted file]
docs/html/class-giooutputstream.html [deleted file]
docs/html/class-gioseekable.html [deleted file]
docs/html/class-giosimpleasyncresult.html [deleted file]
docs/html/class-giothemedicon.html [deleted file]
docs/html/class-giounixinputstream.html [deleted file]
docs/html/class-giounixoutputstream.html [deleted file]
docs/html/class-giovolume.html [deleted file]
docs/html/class-giovolumemonitor.html [deleted file]
docs/html/class-glibmaincontext.html [deleted file]
docs/html/class-glibmainloop.html [deleted file]
docs/html/class-gobject.html [deleted file]
docs/html/class-gobjectgboxed.html [deleted file]
docs/html/class-gobjectginterface.html [deleted file]
docs/html/class-gobjectgpointer.html [deleted file]
docs/html/gio-class-reference.html [deleted file]
docs/html/gio-constants.html [deleted file]
docs/html/gio-functions.html [deleted file]
docs/html/giounix-class-reference.html [deleted file]
docs/html/glib-class-reference.html [deleted file]
docs/html/glib-constants.html [deleted file]
docs/html/glib-functions.html [deleted file]
docs/html/gobject-class-reference.html [deleted file]
docs/html/gobject-constants.html [deleted file]
docs/html/gobject-functions.html [deleted file]
docs/html/index.html [deleted file]
docs/html/index.sgml [deleted file]
docs/html/pygobject-introduction.html [deleted file]
docs/html/pygobject.devhelp [deleted file]
docs/reference/entities.docbook.in [deleted file]
docs/reference/pygio-appinfo.xml [deleted file]
docs/reference/pygio-applaunchcontext.xml [deleted file]
docs/reference/pygio-asyncresult.xml [deleted file]
docs/reference/pygio-bufferedinputstream.xml [deleted file]
docs/reference/pygio-bufferedoutputstream.xml [deleted file]
docs/reference/pygio-cancellable.xml [deleted file]
docs/reference/pygio-classes.xml [deleted file]
docs/reference/pygio-constants.xml [deleted file]
docs/reference/pygio-datainputstream.xml [deleted file]
docs/reference/pygio-dataoutputstream.xml [deleted file]
docs/reference/pygio-drive.xml [deleted file]
docs/reference/pygio-emblem.xml [deleted file]
docs/reference/pygio-emblemedicon.xml [deleted file]
docs/reference/pygio-file.xml [deleted file]
docs/reference/pygio-fileattributeinfo.xml [deleted file]
docs/reference/pygio-fileenumerator.xml [deleted file]
docs/reference/pygio-fileicon.xml [deleted file]
docs/reference/pygio-fileinfo.xml [deleted file]
docs/reference/pygio-fileinputstream.xml [deleted file]
docs/reference/pygio-filemonitor.xml [deleted file]
docs/reference/pygio-fileoutputstream.xml [deleted file]
docs/reference/pygio-filterinputstream.xml [deleted file]
docs/reference/pygio-filteroutputstream.xml [deleted file]
docs/reference/pygio-functions.xml [deleted file]
docs/reference/pygio-icon.xml [deleted file]
docs/reference/pygio-inputstream.xml [deleted file]
docs/reference/pygio-loadableicon.xml [deleted file]
docs/reference/pygio-memoryinputstream.xml [deleted file]
docs/reference/pygio-memoryoutputstream.xml [deleted file]
docs/reference/pygio-mount.xml [deleted file]
docs/reference/pygio-mountoperation.xml [deleted file]
docs/reference/pygio-outputstream.xml [deleted file]
docs/reference/pygio-seekable.xml [deleted file]
docs/reference/pygio-simpleasyncresult.xml [deleted file]
docs/reference/pygio-themedicon.xml [deleted file]
docs/reference/pygio-unixinputstream.xml [deleted file]
docs/reference/pygio-unixoutputstream.xml [deleted file]
docs/reference/pygio-volume.xml [deleted file]
docs/reference/pygio-volumemonitor.xml [deleted file]
docs/reference/pygiounix-classes.xml [deleted file]
docs/reference/pyglib-classes.xml [deleted file]
docs/reference/pyglib-constants.xml [deleted file]
docs/reference/pyglib-functions.xml [deleted file]
docs/reference/pyglib-maincontext.xml [deleted file]
docs/reference/pyglib-mainloop.xml [deleted file]
docs/reference/pygobject-classes.xml [deleted file]
docs/reference/pygobject-constants.xml [deleted file]
docs/reference/pygobject-functions.xml [deleted file]
docs/reference/pygobject-gboxed.xml [deleted file]
docs/reference/pygobject-ginterface.xml [deleted file]
docs/reference/pygobject-gpointer.xml [deleted file]
docs/reference/pygobject-introduction.xml [deleted file]
docs/reference/pygobject-ref.xml [deleted file]
docs/reference/pygobject.xml [deleted file]
docs/style.css [deleted file]
docs/xsl/common.xsl [deleted file]
docs/xsl/devhelp.xsl [deleted file]
docs/xsl/fixxref.py [deleted file]
docs/xsl/fixxref.py.in [deleted file]
docs/xsl/html.xsl [deleted file]
docs/xsl/pdf-style.xsl [deleted file]
docs/xsl/pdf.xsl [deleted file]
docs/xsl/ref-html-style.xsl [deleted file]
dsextras.py [deleted file]
examples/Makefile.am
examples/Makefile.in
examples/cairo-demo.py
examples/option.py
examples/properties.py
examples/signal.py
gi/Makefile.am
gi/Makefile.in
gi/__init__.py
gi/_glib/Makefile.am [new file with mode: 0644]
gi/_glib/Makefile.in [moved from glib/Makefile.in with 62% similarity]
gi/_glib/__init__.py [new file with mode: 0644]
gi/_glib/glibmodule.c [moved from glib/glibmodule.c with 97% similarity]
gi/_glib/option.py [moved from glib/option.py with 97% similarity]
gi/_glib/pygiochannel.c [moved from glib/pygiochannel.c with 92% similarity]
gi/_glib/pygiochannel.h [moved from glib/pygiochannel.h with 100% similarity]
gi/_glib/pyglib-private.h [moved from glib/pyglib-private.h with 100% similarity]
gi/_glib/pyglib-python-compat.h [moved from glib/pyglib-python-compat.h with 98% similarity]
gi/_glib/pyglib.c [moved from glib/pyglib.c with 91% similarity]
gi/_glib/pyglib.h [moved from glib/pyglib.h with 98% similarity]
gi/_glib/pygmaincontext.c [moved from glib/pygmaincontext.c with 97% similarity]
gi/_glib/pygmaincontext.h [moved from glib/pygmaincontext.h with 100% similarity]
gi/_glib/pygmainloop.c [moved from glib/pygmainloop.c with 94% similarity]
gi/_glib/pygmainloop.h [moved from glib/pygmainloop.h with 100% similarity]
gi/_glib/pygoptioncontext.c [moved from glib/pygoptioncontext.c with 98% similarity]
gi/_glib/pygoptioncontext.h [moved from glib/pygoptioncontext.h with 100% similarity]
gi/_glib/pygoptiongroup.c [moved from glib/pygoptiongroup.c with 98% similarity]
gi/_glib/pygoptiongroup.h [moved from glib/pygoptiongroup.h with 100% similarity]
gi/_glib/pygsource.c [moved from glib/pygsource.c with 95% similarity]
gi/_glib/pygsource.h [moved from glib/pygsource.h with 100% similarity]
gi/_glib/pygspawn.c [moved from glib/pygspawn.c with 93% similarity]
gi/_glib/pygspawn.h [moved from glib/pygspawn.h with 100% similarity]
gi/_gobject/Makefile.am [new file with mode: 0644]
gi/_gobject/Makefile.in [moved from gobject/Makefile.in with 72% similarity]
gi/_gobject/__init__.py [new file with mode: 0644]
gi/_gobject/constants.py [moved from gobject/constants.py with 94% similarity]
gi/_gobject/gobjectmodule.c [moved from gobject/gobjectmodule.c with 94% similarity]
gi/_gobject/propertyhelper.py [moved from gobject/propertyhelper.py with 54% similarity]
gi/_gobject/pygboxed.c [moved from gobject/pygboxed.c with 98% similarity]
gi/_gobject/pygboxed.h [moved from gobject/pygboxed.h with 100% similarity]
gi/_gobject/pygenum.c [moved from gobject/pygenum.c with 95% similarity]
gi/_gobject/pygenum.h [moved from gobject/pygenum.h with 100% similarity]
gi/_gobject/pygflags.c [moved from gobject/pygflags.c with 97% similarity]
gi/_gobject/pygflags.h [moved from gobject/pygflags.h with 100% similarity]
gi/_gobject/pyginterface.c [moved from gobject/pyginterface.c with 99% similarity]
gi/_gobject/pyginterface.h [moved from gobject/pyginterface.h with 100% similarity]
gi/_gobject/pygobject-private.h [moved from gobject/pygobject-private.h with 95% similarity]
gi/_gobject/pygobject.c [moved from gobject/pygobject.c with 82% similarity]
gi/_gobject/pygobject.h [moved from gobject/pygobject.h with 93% similarity]
gi/_gobject/pygparamspec.c [moved from gobject/pygparamspec.c with 99% similarity]
gi/_gobject/pygparamspec.h [moved from gobject/pygparamspec.h with 100% similarity]
gi/_gobject/pygpointer.c [moved from gobject/pygpointer.c with 100% similarity]
gi/_gobject/pygpointer.h [moved from gobject/pygpointer.h with 100% similarity]
gi/_gobject/pygtype.c [moved from gobject/pygtype.c with 96% similarity]
gi/_gobject/pygtype.h [moved from gobject/pygtype.h with 100% similarity]
gi/_gobject/signalhelper.py [new file with mode: 0644]
gi/gimodule.c
gi/importer.py
gi/module.py
gi/overrides/GIMarshallingTests.py
gi/overrides/GLib.py
gi/overrides/Gdk.py
gi/overrides/Gio.py
gi/overrides/Gtk.py
gi/overrides/Makefile.am
gi/overrides/Makefile.in
gi/overrides/Pango.py
gi/overrides/__init__.py
gi/pygi-argument.c
gi/pygi-argument.h
gi/pygi-cache.c [new file with mode: 0644]
gi/pygi-cache.h [new file with mode: 0644]
gi/pygi-ccallback.c [new file with mode: 0644]
gi/pygi-ccallback.h [new file with mode: 0644]
gi/pygi-closure.c
gi/pygi-foreign-cairo.c
gi/pygi-foreign-gvariant.c
gi/pygi-foreign-gvariant.h
gi/pygi-foreign.c
gi/pygi-foreign.h
gi/pygi-info.c
gi/pygi-invoke-state-struct.h [new file with mode: 0644]
gi/pygi-invoke.c
gi/pygi-invoke.h
gi/pygi-marshal-cleanup.c [new file with mode: 0644]
gi/pygi-marshal-cleanup.h [new file with mode: 0644]
gi/pygi-marshal-from-py.c [new file with mode: 0644]
gi/pygi-marshal-from-py.h [new file with mode: 0644]
gi/pygi-marshal-to-py.c [new file with mode: 0644]
gi/pygi-marshal-to-py.h [new file with mode: 0644]
gi/pygi-private.h
gi/pygi-property.c
gi/pygi-signal-closure.c
gi/pygi-struct.c
gi/pygi.h
gi/pygobject-external.h
gi/pygtkcompat.py [new file with mode: 0644]
gi/repository/Makefile.am
gi/repository/Makefile.in
gi/types.py
gio/Makefile.am [deleted file]
gio/Makefile.in [deleted file]
gio/__init__.py [deleted file]
gio/gappinfo.override [deleted file]
gio/gapplaunchcontext.override [deleted file]
gio/gbufferedinputstream.override [deleted file]
gio/gcancellable.override [deleted file]
gio/gdatainputstream.override [deleted file]
gio/gdrive.override [deleted file]
gio/gfile.override [deleted file]
gio/gfileattribute.override [deleted file]
gio/gfileenumerator.override [deleted file]
gio/gfileinfo.override [deleted file]
gio/gfileinputstream.override [deleted file]
gio/gfileiostream.override [deleted file]
gio/gfileoutputstream.override [deleted file]
gio/gicon.override [deleted file]
gio/ginputstream.override [deleted file]
gio/gio-types.defs [deleted file]
gio/gio.defs [deleted file]
gio/gio.override [deleted file]
gio/giomodule.c [deleted file]
gio/giostream.override [deleted file]
gio/gmemoryinputstream.override [deleted file]
gio/gmemoryoutputstream.override [deleted file]
gio/gmount.override [deleted file]
gio/goutputstream.override [deleted file]
gio/gresolver.override [deleted file]
gio/gsocket.override [deleted file]
gio/gvolume.override [deleted file]
gio/gvolumemonitor.override [deleted file]
gio/pygio-utils.c [deleted file]
gio/pygio-utils.h [deleted file]
gio/unix-types.defs [deleted file]
gio/unix.defs [deleted file]
gio/unix.override [deleted file]
gio/unixmodule.c [deleted file]
glib/Makefile.am [deleted file]
gobject/Makefile.am [deleted file]
gobject/__init__.py [deleted file]
gobject/ffi-marshaller.c [deleted file]
gobject/ffi-marshaller.h [deleted file]
install-sh
ltmain.sh [changed mode: 0755->0644]
m4/libtool.m4
m4/ltoptions.m4
m4/ltversion.m4
m4/python.m4
missing
py-compile
pygobject-2.0-uninstalled.pc.in [deleted file]
pygobject-2.0.pc.in [deleted file]
pygobject-3.0-uninstalled.pc.in [new file with mode: 0644]
pygobject-3.0.pc.in [new file with mode: 0644]
pygobject_postinstall.py [deleted file]
pygtk.py [deleted file]
setup.py [deleted file]
tests/Makefile.am
tests/Makefile.in
tests/compathelper.py
tests/gi/__init__.py [new file with mode: 0644]
tests/gi/overrides/Regress.py [moved from glib/__init__.py with 69% similarity]
tests/gi/overrides/__init__.py [new file with mode: 0644]
tests/runtests-windows.py [new file with mode: 0644]
tests/runtests.py [changed mode: 0644->0755]
tests/te_ST@nouppera [new file with mode: 0644]
tests/test-floating.c
tests/test-floating.h
tests/test-unknown.c
tests/test_atoms.py [new file with mode: 0644]
tests/test_everything.py
tests/test_gcancellable.py [deleted file]
tests/test_gdbus.py
tests/test_gi.py
tests/test_gicon.py [deleted file]
tests/test_gio.py [deleted file]
tests/test_glib.py [new file with mode: 0644]
tests/test_gobject.py
tests/test_gresolver.py [deleted file]
tests/test_gsocket.py [deleted file]
tests/test_interface.py
tests/test_mainloop.py
tests/test_option.py
tests/test_overrides.py
tests/test_overrides_gdk.py [new file with mode: 0644]
tests/test_overrides_gio.py [new file with mode: 0644]
tests/test_overrides_glib.py [new file with mode: 0644]
tests/test_overrides_gtk.py [new file with mode: 0644]
tests/test_overrides_pango.py [new file with mode: 0644]
tests/test_properties.py
tests/test_pygtkcompat.py [new file with mode: 0644]
tests/test_signal.py
tests/test_source.py
tests/test_subprocess.py
tests/test_thread.py
tests/test_uris.py
tests/testhelpermodule.c
tests/testmodule.py

index 8a72a87..3abad55 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-commit 42970db5949c615078c38a039da4745eeb194ac1
+commit 645a9d9d4712f8f0d1b63899b309bbc97eb1f216
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 24 09:27:47 2012 +0200
+
+    Bump g-i dependency to 1.33.14
+
+    To ensure we have all the Regress test APIs that we use.
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b6f4ef327fbeaa10fd74571c3df540311834d6ae
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 17 22:52:49 2012 +0200
+
+    post-release bump to 3.3.93
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7e154cf01cf0ce7a8b52c45ba4db755f73b45d1d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 17 22:48:13 2012 +0200
+
+    release 3.3.92
+
+ NEWS |   12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+commit adbe30dc72b4d88bb31055f6ee33fddf32638af9
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 17 22:32:55 2012 +0200
+
+    release-news: Generate HTML changelog
+
+    In addition to producing a NEWS paragraph from the changelog,
+    generate a
+    changelog HTML which can be put into blog announcements.
+
+    Update HACKING to point this out, too.
+
+ HACKING     |    2 +-
+ Makefile.am |   22 ++++++++++++++++------
+ 2 files changed, 17 insertions(+), 7 deletions(-)
+
+commit be4a0682bdd189ee908ab1961001f759a80e133c
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Sun Sep 16 17:27:25 2012 -0700
+
+    [API add] Add ObjectInfo.get_abstract method
+
+    Adds exposure of g_object_info_get_abstract to python for
+    helping with analysis of non-constructable objects from
+    within python.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=675581
+
+ gi/pygi-info.c   |    8 ++++++++
+ tests/test_gi.py |   12 ++++++++++++
+ 2 files changed, 20 insertions(+)
+
+commit 3ada408434860d0c8eee6c6a869b5a3d801cfbc8
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Thu Sep 13 20:53:22 2012 -0700
+
+    Add deprecation warning when setting gpointers to anything other
+    than int.
+
+    This is a first pass which does not change anything except add
+    a warning
+    when anything other than an int is set on a gpointer on a boxed type.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=683599
+
+ gi/pygi-info.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit a047f61f26d9c78b82d22948199313e5a389e918
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 17 09:41:24 2012 +0200
+
+    test_properties: Test accessing a property from a superclass
+
+    We already cover accessing the superclass' property if that was
+    defined in
+    Python. Add a corresponding test case for a property defined in C.
+
+    See https://bugzilla.gnome.org/show_bug.cgi?id=684058
+
+ tests/test_properties.py |   12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+commit 3e6a4000cbc4b0cb503fcd89b50202ed0b70d3a7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 17 09:31:05 2012 +0200
+
+    test_properties.py: Consistent test names
+
+    Use underscore style method/test case names consistently. Also rename
+    some test
+    cases to better describe what they do.
+
+ tests/test_properties.py |   78
+ +++++++++++++++++++++++-----------------------
+ 1 file changed, 39 insertions(+), 39 deletions(-)
+
+commit 4069c3d8547f35437e0cee175a5912febe25326d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Sep 12 06:51:24 2012 +0200
+
+    test_everything: Ensure TestSignals callback does get called
+
+ tests/test_everything.py |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 4e4c87e3868948743e0446abe2ba0cf5626374c4
+Author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+Date:   Fri Sep 7 17:17:09 2012 -0400
+
+    argument: Fix 64bit integer convertion from GValue
+
+    Trying to get a 64bit integer using the wrong getter was resulting
+    in an
+    assertion and 0 being returned.
+
+    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=683596
+
+ gi/pygi-argument.c       |    8 +++++--
+ tests/test_everything.py |   52
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 58 insertions(+), 2 deletions(-)
+
+commit e474ce243ea7a58358af344ccadb1418f4d2c8eb
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Sep 11 12:32:10 2012 +0200
+
+    Add Simon Feltman as a project maintainer
+
+    Signed-off-By: Martin Pitt <martinpitt@gnome.org>
+    Signed-off-By: Paolo Borelli <pborelli@gnome.org>
+
+ pygobject.doap |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit ee1fc78258f10e8a7872ee3da6c9ad6e7984706e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Sep 11 10:17:50 2012 +0200
+
+    test_signals.py: Drop global type variables
+
+    Just use the real types and flags from GObject instead of redefining
+    aliases
+    for them. They weren't used consistently, make the tests harder to
+    read, and we
+    really do not want global single-letter variables like "f" and "l".
+
+ tests/test_signal.py |   38 ++++++++++++++++----------------------
+ 1 file changed, 16 insertions(+), 22 deletions(-)
+
+commit 3688cf6efe7161585b943cfaafcfd4610b7ad768
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Sep 11 10:11:58 2012 +0200
+
+    test_signals.py: Consistent test names
+
+    Use underscore style method/test case names consistently.
+
+ tests/test_signal.py |   88
+ +++++++++++++++++++++++++-------------------------
+ 1 file changed, 44 insertions(+), 44 deletions(-)
+
+commit 4559247553b792db956f69c9674c12344d719c82
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Sep 11 09:43:14 2012 +0200
+
+    Add test cases for GValue signal arguments
+
+    These cover various types, (u)int(64) and string.
+
+    Keep the test case for implicit int64 GValues disabled, as this
+    currently does
+    not work and it is not clear whether it should:
+    https://bugzilla.gnome.org/show_bug.cgi?id=683775
+
+ tests/test_signal.py     |   41 +++++++++++++++++++++++++++++++++++++++++
+ tests/testhelpermodule.c |   17 +++++++++++++++++
+ 2 files changed, 58 insertions(+)
+
+commit fddb01b0b71b68d154d130cf40fd5f38647b1a4d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Sep 11 09:31:18 2012 +0200
+
+    Add test for GValue signal return values
+
+    Another attempt to reproduce the reported error in
+    https://bugzilla.gnome.org/show_bug.cgi?id=683596
+    but this works already.
+
+ tests/test_signal.py     |   13 +++++++++++++
+ tests/testhelpermodule.c |   36 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 49 insertions(+)
+
+commit 4f77c7798563ea436ff5b6306a987f03de50b211
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Fri Sep 7 02:32:15 2012 -0700
+
+    Improve setting pointer fields/arguments to NULL using None
+
+    Setting gi pointers will set them to the address of the python object.
+    This is good except in the case of None which should be used to NULL
+    the pointer out as a special case.
+
+    Commit 21b1d17d2a already fixed this. This improved patch
+    does that in a cleaner and safer way and adds more comments.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=683150
+
+ gi/pygi-argument.c |    8 +-------
+ gi/pygi-info.c     |   14 +++++++++++++-
+ 2 files changed, 14 insertions(+), 8 deletions(-)
+
+commit 15046b5a11f6c58a3e5a9c50cf0ce7f31f2cd55f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 10 16:46:30 2012 +0200
+
+    Test gint64 C signal arguments and return values
+
+ tests/test_signal.py     |   12 ++++++++++++
+ tests/testhelpermodule.c |   14 ++++++++++++++
+ 2 files changed, 26 insertions(+)
+
+commit 822d9e07a95f706a40f64335765293542787da90
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 10 16:29:32 2012 +0200
+
+    Test in/out int64 GValue method arguments.
+
+    See https://bugzilla.gnome.org/show_bug.cgi?id=683596
+
+ tests/test_gi.py |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 2d83e52233812618493af4b165615e8741ba41c8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Sep 5 08:54:53 2012 +0200
+
+    Bump g-i dependency to 1.33.10
+
+    To ensure we have all the Regress test APIs that we use.
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6a4f4dc9a3d21c3ac8a0aa51432fb8952b4e1ebf
+Author: Thibault Saunier <thibault.saunier@collabora.com>
+Date:   Wed Aug 8 12:57:41 2012 -0400
+
+    Fix -uninstalled.pc.in file
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=683379
+
+ pygobject-3.0-uninstalled.pc.in |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit d8f1398dbc7fa7803639c542a607f24f18614ad6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 22:16:47 2012 +0200
+
+    post-release bump to 3.3.92
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ea992324b8197b2d04ff2849b9ab46f8a04b4ed7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 22:04:01 2012 +0200
+
+    release 3.3.91
+
+ NEWS |   32 ++++++++++++++++++++++++++++++++
+ 1 file changed, 32 insertions(+)
+
+commit 1e1f5b2f2f15547c1f2cbc948d2b764bd0a37c44
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 21:57:00 2012 +0200
+
+    Fix exception test case for Python 2
+
+    Regression from commit 77844c5 which did not work with Python 2.
+
+ tests/test_everything.py |   12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+commit 41bb687c058e08b05108b4b2f081cd83d4f93da8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 21:16:01 2012 +0200
+
+    Bump g-i dependency
+
+    Require at least 1.33.9, as we got a couple of bug fixes there which
+    the tests,
+    and for some cases the code, depend on. We actually require 1.33.10
+    for all
+    tests to succeed, but that hasn't been released yet.
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 77844c571ad0badc189428b93de9f2572051b67e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 17:58:38 2012 +0200
+
+    Show proper exception when trying to allocate a disguised struct
+
+    Instead of a simple "MemoryError" with no details, raise a proper
+    TypeError with a traceback and an explanation what happened.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=639972
+
+ gi/pygi-struct.c         |    7 +++++++
+ tests/test_everything.py |   13 +++++++++++++
+ 2 files changed, 20 insertions(+)
+
+commit 0d099bdb3f4bbd962e5e60b583673d9e6f5673cc
+Author: Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+Date:   Mon Sep 3 16:47:22 2012 +0200
+
+    Support marshalling GParamSpec signal arguments
+
+    Fix marshalling GParamSpec arguments from C to Python.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=683099
+
+    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-argument.c   |   10 +++++++++-
+ tests/test_signal.py |   14 ++++++++++++++
+ 2 files changed, 23 insertions(+), 1 deletion(-)
+
+commit 69fb92c22b3f3d1d5e8c3e14134eee3242fdc5fc
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 16:06:49 2012 +0200
+
+    Add test for a signal that returns a GParamSpec
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=683265
+
+ tests/test_signal.py     |    6 ++++++
+ tests/testhelpermodule.c |   12 ++++++++++++
+ 2 files changed, 18 insertions(+)
+
+commit a7c524219987fbf37e455a91e4c78d2b9b4db12d
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Tue Mar 20 04:33:50 2012 -0700
+
+    [API add] Add Signal class for adding and connecting custom signals.
+
+    The Signal class provides easy creation of signals and removes the
+    need for __gsignals__ in client code. The Signal class can also be
+    used as a decorator for wrapping up the custom closure. As well as
+    providing a "BoundSignal" when accessed on an instance for making
+    connections without specifying a signal name string.
+    Python3 annotations can also be used to supply closure argument and
+    return types when Signal is used as a decorator. For example:
+
+    class Eggs(GObject.GObject):
+        @GObject.Signal
+        def spam(self, count:int):
+            pass
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=434924
+
+ examples/signal.py          |   34 ++++--
+ gi/_gobject/Makefile.am     |    3 +-
+ gi/_gobject/__init__.py     |    5 +
+ gi/_gobject/signalhelper.py |  251
+ +++++++++++++++++++++++++++++++++++++++++++
+ tests/test_signal.py        |  208 +++++++++++++++++++++++++++++++++--
+ 5 files changed, 482 insertions(+), 19 deletions(-)
+
+commit 96fa22369fd188465559fc904c7f76e73040e6dd
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 15:32:12 2012 +0200
+
+    Fix pygtkcompat's Gtk.TreeView.insert_column_with_attributes()
+
+    We have a proper implementation for insert_column_with_attributes()
+    now, so
+    drop pygtkcompat's empty stub for it.
+
+    Also improve test case for
+    Gtk.TreeView.insert_column_with_attributes().
+
+ gi/pygtkcompat.py           |    6 ------
+ tests/test_overrides_gtk.py |   16 ++++++++--------
+ 2 files changed, 8 insertions(+), 14 deletions(-)
+
+commit 542cf22c9de9b2094868c4e879b0f24b15c4c012
+Author: Marta Maria Casetti <mmcasetti@gmail.com>
+Date:   Mon Sep 3 13:06:22 2012 +0200
+
+    Add override for Gtk.TreeView.insert_column_with_attributes()
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=679415
+
+    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gtk.py         |    7 +++++++
+ tests/test_overrides_gtk.py |   38 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 45 insertions(+)
+
+commit 1c73e845361e471b1c3a3f17e40e6a6cfa740877
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 11:09:55 2012 +0200
+
+    .gitignore: Add missing built files
+
+ .gitignore |    9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+commit 96431f393036a688666dcf67911bf12b9824b264
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 11:07:32 2012 +0200
+
+    Ship tests/gi in tarball
+
+    Spotted by distcheck.
+
+ tests/Makefile.am |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit dc2c6e6f60d2757462cbceef6176b0b3013904d3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 10:18:45 2012 +0200
+
+    Fix separate build tree and distcheck
+
+    Fix regression from c7c95a79: We must set sys.path in runtests.py
+    properly and
+    cannot rely on setting $PYTHONPATH from Makefile.am only. Python
+    always
+    prepends the directory of the source file to sys.path, but that
+    points to the
+    source dir, not the build dir. The build dir has to take precedence,
+    otherwise
+    we fail to import the built libraries.
+
+ tests/runtests-windows.py |   10 +++++++---
+ tests/runtests.py         |   13 ++++++++-----
+ 2 files changed, 15 insertions(+), 8 deletions(-)
+
+commit 2d8f48f4ff56bb75985136452b50b75895258608
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 07:57:01 2012 +0200
+
+    Split test_overrides.py
+
+    Split the huge test_overrides.py into separate files for gdk, gtk,
+    gio, glib,
+    and pango. Further split the monolithic classes for Gtk and Gio
+    into several
+    ones.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=683188
+
+ tests/Makefile.am             |    5 +
+ tests/test_overrides.py       | 2198
+ +----------------------------------------
+ tests/test_overrides_gdk.py   |  119 +++
+ tests/test_overrides_gio.py   |  114 +++
+ tests/test_overrides_glib.py  |  445 +++++++++
+ tests/test_overrides_gtk.py   | 1517 ++++++++++++++++++++++++++++
+ tests/test_overrides_pango.py |   32 +
+ 7 files changed, 2234 insertions(+), 2196 deletions(-)
+
+commit 1223358e2c558dd7ac3300126f989054ec5a5b3f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 3 07:17:57 2012 +0200
+
+    _pygi_argument_to_object(): Clean up array unmarshalling
+
+    The NULL case is already handled at the top, so it does not need to be
+    re-checked again.
+
+    Emit a critical if we fail to allocate a Python array of the
+    requested size.
+
+ gi/pygi-argument.c |   47 ++++++++++++++++-------------------------------
+ 1 file changed, 16 insertions(+), 31 deletions(-)
+
+commit 65bfbc624bc9da6e18ff2945b14099ab8eeb7601
+Author: Alban Browaeys <prahal@yahoo.com>
+Date:   Wed Aug 29 21:24:17 2012 +0200
+
+    Fix memory leak in _pygi_argument_to_object()
+
+    Avoid leaking the item_type_info when breaking out of the
+    switch in _pygi_argument_to_object() for unmarshalling arrays.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=682979
+
+ gi/pygi-argument.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 21b1d17d2ada2edf4063a4262b3436c279da3dc2
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Sat Sep 1 03:40:31 2012 -0700
+
+    Fix setting pointer fields/arguments to NULL using None.
+
+    Setting gi pointers will set them to the address of the python object.
+    This is good except in the case of None which should be used to NULL
+    the pointer out as a special case.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=683150
+
+ gi/pygi-argument.c      |    8 +++++++-
+ tests/test_overrides.py |   41 +++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 48 insertions(+), 1 deletion(-)
+
+commit 6123e6f5001ca5eaea18123d8a53525abab31a45
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Aug 23 06:44:27 2012 +0200
+
+    Fix for python 2.6, drop support for < 2.6
+
+    Replace sys.version_info.major access to tuple access which also
+    works for
+    Python 2.6.
+
+    When building for Python 2.6, inject some missing unittest API such as
+    @unittest.skipUnless and assertGreaterEqual() into the unittest
+    module in
+    runtests.py, so that the tests have a chance to run.
+
+    As building with Python 2.5 has been broken for a long time with
+    nobody
+    complaining, and 2.5 is ancient, bump minimum Python requirement to
+    2.6. Drop
+    obsolete #ifdef paths which only apply to <= 2.5.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=682422
+
+ configure.ac                    |    2 +-
+ gi/_glib/pyglib-python-compat.h |    8 --------
+ gi/_gobject/gobjectmodule.c     |    8 --------
+ gi/module.py                    |    2 +-
+ tests/runtests.py               |   27 +++++++++++++++++++++++++++
+ tests/test_gi.py                |    2 +-
+ 6 files changed, 30 insertions(+), 19 deletions(-)
+
+commit b1a9848a7a7255e6b1ccd98712dd62b1514078b9
+Author: Thibault Saunier <thibault.saunier@collabora.com>
+Date:   Tue Aug 21 07:54:09 2012 +0200
+
+    Allow overrides in other directories than gi itself
+
+    Use pkgutil.extend_path() for the gi and gi.overrides modules, so that
+    libraries can install overrides in a path that is different from
+    the one that
+    pygobject installs itself into. These overrides need to put this
+    into their
+    __init__.py at the top:
+
+        from pkgutil import extend_path
+        __path__ = extend_path(__path__, __name__)
+
+    and put themselves somewhere into the default PYTHONPATH.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680913
+
+    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+    Co-Authored-By: Simon Feltman <s.feltman@gmail.com>
+
+ gi/__init__.py                 |    4 ++++
+ gi/overrides/__init__.py       |    4 ++++
+ tests/gi/__init__.py           |    2 ++
+ tests/gi/overrides/Regress.py  |   26 ++++++++++++++++++++++++++
+ tests/gi/overrides/__init__.py |    2 ++
+ tests/test_overrides.py        |    6 ++++++
+ 6 files changed, 44 insertions(+)
+
+commit c7c95a795eee499373499ea5b771447746317bfb
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Thu Aug 23 06:03:09 2012 +0200
+
+    Clean up sys.path handling in tests
+
+    Only set sys.path once in runtests.py, not in the individual test
+    modules. This
+    reduces hidden dependencies between tests by building up a run
+    order dependent
+    search path, and also makes it easier in the future to run the
+    tests against
+    the installed system libraries.
+
+    Side issue in https://bugzilla.gnome.org/show_bug.cgi?id=680913
+
+ tests/runtests-windows.py |    6 +++++-
+ tests/runtests.py         |    3 +++
+ tests/test_everything.py  |    1 -
+ tests/test_gdbus.py       |    3 ---
+ tests/test_overrides.py   |    3 ---
+ tests/test_pygtkcompat.py |    3 ---
+ 6 files changed, 8 insertions(+), 11 deletions(-)
+
+commit 3e3525e93d852cde0f63e835b774a9b004773c69
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Sun Aug 19 02:30:39 2012 -0700
+
+    Fix dynamic creation of enum and flag gi types for Python 3.3
+
+    Importing Gtk was crashing on instantiation of dynamic Enum and Flag
+    subclasses due to what looks to be an unsupported technique.  Change
+    tp_new() method for classes dynamically derived from PyGEnum_Type and
+    PyGFlags_Type to call PyLong_Type.tp_new() instead of attempting
+    to call
+    __new__() as a python method. This technique seems to work with all
+    versions of python so the previous python version checking also became
+    unnecessary.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=682323
+
+ gi/_gobject/pygenum.c  |   29 ++++++++++++++++-------------
+ gi/_gobject/pygflags.c |   21 +++++++++------------
+ 2 files changed, 25 insertions(+), 25 deletions(-)
+
+commit dd31b67e821f92b5f1c2ee0382cac5edd477cd11
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Wed Aug 22 10:45:39 2012 +0200
+
+    [API add] Override g_menu_item_set_attribute
+
+    This C utility API take a vararg, add a corresponding override that
+    takes a list of tuples
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=682436
+
+ gi/overrides/Gio.py     |   10 ++++++++++
+ tests/test_overrides.py |   11 +++++++++++
+ 2 files changed, 21 insertions(+)
+
+commit 836902801373e386d370c44e7487aac3432f19f6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Aug 20 23:37:40 2012 +0200
+
+    post-release bump to 3.3.91
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6a629e23ff7b0d6f532184017577c7427d577e28
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Aug 20 23:05:49 2012 +0200
+
+    release 3.3.90
+
+ NEWS         |   13 +++++++++++++
+ configure.ac |    2 +-
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+commit 5cd18c9bd59a60b930ced0b35d728c12bb3291c7
+Author: Mathieu Duponchelle <mathieu.duponchelle@epitech.eu>
+Date:   Mon Aug 20 22:54:52 2012 +0200
+
+    Implement marshalling for GParamSpec
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=681565
+
+    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-marshal-to-py.c |   16 ++++++++++++----
+ tests/test_gi.py        |   14 ++++++++++++++
+ 2 files changed, 26 insertions(+), 4 deletions(-)
+
+commit 16462de3f025f14706ec23fa9b3653feb66ad57f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Aug 20 15:24:10 2012 +0200
+
+    Fix pep8/pyflakes invocation
+
+    Fix regression from commit 1e056e4f4a: Do fail the tests if
+    pyflakes/pep8
+    exist, but fail.
+
+ tests/Makefile.am |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 1bee194274bcda9ba5f6751fa921218a92c8ac72
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Thu Aug 16 16:05:52 2012 -0700
+
+    Fix erronous import statements for Python 3.3
+
+    Update pygobject-external.h to use GType (which is what GTypeWrapper
+    is
+    exposed as) instead of GTypeWrapper when attempting import.
+
+    Catch ImportError around attempted imports of a typelibs override file
+    which don't always exist (GObject...). This is a behavioural change in
+    Python 3.3 (http://bugs.python.org/issue15715), but let's fix
+    it anyway.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=682051
+
+ gi/module.py            |    7 +++++--
+ gi/pygobject-external.h |    2 +-
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+commit 1e056e4f4a19fd1139187467677c2592c2722290
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Aug 20 11:52:08 2012 +0200
+
+    Do not fail tests if pyflakes or pep8 are not installed
+
+    These tools might not be desirable in restricted build environments or
+    backports, and e. g. Fedora patches those out. So let the tests
+    work without
+    these tools.
+
+ tests/Makefile.am |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit c219fa6da89a7d55c5c111751684aae6876a9fe3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Aug 20 11:42:47 2012 +0200
+
+    gtk-demo: Fix some PEP-8 whitespace issues
+
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    3 +--
+ demos/gtk-demo/demos/dialogs.py                  |    2 +-
+ demos/gtk-demo/demos/rotatedtext.py              |    3 +--
+ 3 files changed, 3 insertions(+), 5 deletions(-)
+
+commit 0ac2a85cae368c046839b5619a96efc9e0b91ba3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Aug 20 11:38:50 2012 +0200
+
+    test_overrides.py: Fix PEP8 whitespacing
+
+ tests/test_overrides.py |   48
+ ++++++++++++++++++++++++-----------------------
+ 1 file changed, 25 insertions(+), 23 deletions(-)
+
+commit 631a9cd05cbc7dc3d0f743a84b948ef7d93c0ed4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Aug 20 11:36:19 2012 +0200
+
+    Ignore E124 pep8 error
+
+    This is "closing bracket does not match visual indentation" which
+    is really
+    stupid. We do want the closing bracket at the same indentation level
+    as the
+    opening bracket, not the indentation level of the whole statement.
+
+ tests/Makefile.am |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 266d37719bb54e6f04d23ff21bcceb9514e20ff2
+Author: David Malcolm <dmalcolm@redhat.com>
+Date:   Mon Aug 20 11:27:52 2012 +0200
+
+    Fix unmarshalling of gssize
+
+    Do not assume that the v_int union member always corresponds to a
+    gssize. This
+    is not true on big-endian 64 bit machines like ppc64, so add a new
+    gi_argument_to_gssize() and use it properly.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680693
+    https://bugzilla.redhat.com/show_bug.cgi?id=842880
+
+ gi/pygi-argument.c       |   53
+ +++++++++++++++++++++++++++++++++++++++++++---
+ gi/pygi-argument.h       |    1 +
+ gi/pygi-closure.c        |    2 +-
+ gi/pygi-info.c           |    4 ++--
+ gi/pygi-signal-closure.c |    2 +-
+ 5 files changed, 55 insertions(+), 7 deletions(-)
+
+commit 1c5d497d3c354f4d02f1d4570df2c61d6f47300c
+Author: David Malcolm <dmalcolm@redhat.com>
+Date:   Mon Aug 20 11:19:27 2012 +0200
+
+    Fix various endianess errors
+
+    Fix code which assumed little endian behaviour when mixing different
+    types of
+    ints, putting ints into pointers, etc.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680692
+    https://bugzilla.redhat.com/show_bug.cgi?id=841596
+
+ gi/pygi-argument.c        |   64 ++++++++++++--
+ gi/pygi-argument.h        |    6 ++
+ gi/pygi-cache.c           |    2 +
+ gi/pygi-closure.c         |   57 ++++++++++++-
+ gi/pygi-marshal-from-py.c |  203
+ +++++++++++++++++++++++++++++++++++----------
+ gi/pygi-marshal-from-py.h |    3 +
+ gi/pygi-marshal-to-py.c   |  137 +++++++++++++++++++++++-------
+ 7 files changed, 391 insertions(+), 81 deletions(-)
+
+commit ee6da6f1aa2cd6e55834f9edc17f785613d00031
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Wed Aug 15 13:16:11 2012 +0200
+
+    Add unit test for the TreeModelSort override
+
+ tests/test_overrides.py |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 9f027daa5737107b5959964b699c0089aec8ab1e
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Thu Aug 9 03:33:06 2012 -0700
+
+    Gtk overrides: Add TreeModelSort.__init__(self, model)
+
+    This adds "model" as a required argument to TreeModelSort
+    instead of it being a hidden keyword argument. This is needed
+    because the model property is set to construct only and the
+    default value of None/NULL makes the object useless anyhow.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=681477
+
+ gi/overrides/Gtk.py |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit c8424c2bb19356679e250e73542682dd5f4c74a5
+Author: Manuel Quiñones <manuq@laptop.org>
+Date:   Fri Aug 10 09:38:24 2012 -0300
+
+    Convert Gtk.CellRendererState in the pygi-convert script
+
+    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=681596
+
+ pygi-convert.sh |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 54d829b34a0d32d852db370f61cc7f25c149f373
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Mon Aug 6 16:19:28 2012 +0200
+
+    More updates to the HACKING file
+
+    module-install has been replaced with 'ftpadmin install' and other
+    minor
+    changes
+
+ HACKING |   26 ++++++++++----------------
+ 1 file changed, 10 insertions(+), 16 deletions(-)
+
+commit 0788880c6cf4070d3db09896c165fe470d2ec186
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Mon Aug 6 16:00:39 2012 +0200
+
+    Post-release version bump to 3.3.6
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 664403d953c3e07077d0db90bfae3b51c7f1767c
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Mon Aug 6 15:52:22 2012 +0200
+
+    release 3.3.5
+
+ NEWS |   29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+commit b748753a2a9af018001213e2e58c48d6c8bfadbd
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Mon Aug 6 15:44:32 2012 +0200
+
+    Update HACKING file to mention "make release-news"
+
+ HACKING |    7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+commit 587a0c33901383b891f8eb77351c17f06af20b4f
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Mon Aug 6 15:38:23 2012 +0200
+
+    pygi-closure: remove unused variables
+
+    These variables are assigned but never actually used
+
+ gi/pygi-closure.c |    8 --------
+ 1 file changed, 8 deletions(-)
+
+commit dbc6df6aad7197fcf8721ade429baadd749f7069
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Aug 3 07:13:55 2012 +0200
+
+    tests: Do not break on Pango warnings
+
+    In some restricted environments (like chroots) we sometimes get
+    warnings from
+    Pango when it cannot find an appropriate font. Do not make the tests
+    fail on
+    those.
+
+ tests/test_overrides.py   |    4 ++++
+ tests/test_pygtkcompat.py |    6 ++++++
+ 2 files changed, 10 insertions(+)
+
+commit 770e6abfd5bc5dad7d5f56a18f1ef63f9754ada9
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Aug 3 06:45:48 2012 +0200
+
+    Fix list marshalling on big-endian machines
+
+    On big endian machines we cannot simply set e. g. GIArgument.v_int8
+    and expect
+    GIArgument.v_pointer to be a correct representation. This needs to use
+    GINT_TO_POINTER/GPOINTER_TO_INT properly, so use the already existing
+    _pygi_hash_pointer_to_arg()/_pygi_arg_to_hash_pointer() methods
+    in marshalling
+    to and from GList and GSList, and handle int8 and int16 as well.
+
+    Part of porting pygobject to ppc64:
+    https://bugzilla.redhat.com/show_bug.cgi?id=842880
+    https://bugzilla.gnome.org/show_bug.cgi?id=680693
+
+ gi/pygi-marshal-from-py.c |   48 ++++++++++++++++++++++++----------------
+ gi/pygi-marshal-to-py.c   |   54
+ ++++++++++++++++++++++++++-------------------
+ 2 files changed, 60 insertions(+), 42 deletions(-)
+
+commit b5cd13f47309ec26727b7574e33595a357602468
+Author: Colin Walters <walters@verbum.org>
+Date:   Tue Jul 31 11:47:02 2012 -0400
+
+    pygi-marshal: One more 32-bit -Werror=format fix
+
+ gi/pygi-marshal-from-py.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 526bf43691cb6ed908589312b1693a6389eba00c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Jul 31 17:14:37 2012 +0200
+
+    Beautify class/interface type mismatch error messages
+
+    Avoid saying "<unknown module>.int", just skip the module name
+    completely if we do not have one.
+
+ gi/pygi-marshal-from-py.c |   20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+commit 8fb18c62d9c7faff38df3886cb4289b618c81b85
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Jul 31 13:13:21 2012 +0200
+
+    Skip instead of fail tests which need Pango, Atk, Gdk, Gtk
+
+    On initial jhbuild bootstrap or restricted environments, the Pango,
+    Atk, Gdk,
+    and Gtk typelibs might not be available. Skip tests which need these
+    instead of
+    failing the testsuite.
+
+ tests/test_atoms.py       |    7 ++++++-
+ tests/test_everything.py  |    9 ++++++++-
+ tests/test_overrides.py   |   32 ++++++++++++++++++++++++++------
+ tests/test_pygtkcompat.py |   30 ++++++++++++++++++++----------
+ 4 files changed, 60 insertions(+), 18 deletions(-)
+
+commit a2e73c109f3ed6080eabc85810e624b9f984317e
+Author: Colin Walters <walters@verbum.org>
+Date:   Tue Jul 31 09:02:24 2012 -0400
+
+    pygi-argument: Fix -Wformat warning on 32 bit builds
+
+ gi/pygi-argument.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 7563bb9f8ed5740f52ddf0ca59daf7839853505b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Jul 31 11:14:36 2012 +0200
+
+    Fix tests for Python 2
+
+    In Python 2 we get different error messages for a mismatching self
+    type. Fixes
+    check after commit 121b14028.
+
+ tests/test_gi.py |   32 ++++++++++++++++++++------------
+ 1 file changed, 20 insertions(+), 12 deletions(-)
+
+commit 5c5b066854cc0b3b7702f31d212aa3f511c62127
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Jul 31 10:30:22 2012 +0200
+
+    Build with -Werror=format
+
+    This catches format string problems on particular architectures like
+    in commit
+    dea24f8e12 much more insistently.
+
+ configure.ac |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 6e84a3052667fdc88c2081e20cc6dc3257ec9d6c
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Mon Jul 30 02:00:16 2012 -0700
+
+    [API add] pygtkcompat: Add more pixbuf creation functions
+
+    Add the following functions:
+    pixbuf_new_from_data
+    pixbuf_new_from_file_at_scale
+    pixbuf_new_from_file_at_size
+    pixbuf_new_from_inline
+    pixbuf_new_from_stream
+    pixbuf_new_from_stream_at_scale
+    pixbuf_new_from_xpm_data
+    pixbuf_get_file_info
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680814
+
+ gi/pygtkcompat.py |   10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+commit dea24f8e1221516b2d8ea578e55124b0409d6a76
+Author: Colin Walters <walters@verbum.org>
+Date:   Mon Jul 30 22:17:44 2012 -0400
+
+    marshal: Fix a lot of format string warnings on 32 bit
+
+    G_GUINT64_FORMAT and friends handle "%lld" portably.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680878
+
+ gi/pygi-marshal-from-py.c |   18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+commit b630038d9a1c8cb7e5914c77fbacbed646c154d1
+Author: Colin Walters <walters@verbum.org>
+Date:   Mon Jul 30 22:30:07 2012 -0400
+
+    marshal: Fix build break on Python 2
+
+    I *think* using this wrapper function instead is right.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680879
+
+ gi/pygi-marshal-from-py.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit a8338a991bbe919f0e2d9b92f7b71f89ccd2c875
+Author: Manuel Quiñones <manuq@laptop.org>
+Date:   Mon Jul 30 12:53:36 2012 -0300
+
+    Improve testcase for tree_view_column_set_attributes
+
+    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680320
+
+ tests/test_overrides.py |   20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+commit 121b1402860407fe46f7501e42447bf3607872ec
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Jul 31 00:37:55 2012 +0200
+
+    Fix error messages on interface/class type mismatches
+
+    Previously, when you called a function with an argument which was not
+    compatible with the expected class/interface type, you got an
+    error message
+    like
+
+      TypeError: Expected Gtk.TreeViewColumn, but got GObjectMeta
+
+    which had the wrong (and useless) class name for the actual type,
+    and did not
+    tell you which argument caused the problem. With this it says e. g.
+
+      TypeError: argument column: Expected Gtk.TreeViewColumn, but
+      got Gtk.Button
+
+    instead.
+
+ gi/pygi-marshal-from-py.c |   41 +++++++++++++++++++++++++-------
+ tests/test_gi.py          |   57
+ ++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 88 insertions(+), 10 deletions(-)
+
+commit 8f31e85db1392eb7222593fc0d05144c2bca06a3
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Sun Jul 29 23:36:25 2012 -0700
+
+    Fix crash when returning (False, None) from
+    Gtk.TreeModel.do_get_iter()
+
+    Add a Py_None check before attempting memcpy().
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680812
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-closure.c       |   10 +++++++---
+ tests/test_overrides.py |    9 +++++++++
+ 2 files changed, 16 insertions(+), 3 deletions(-)
+
+commit 94e5d58e7794de91d3291e0e51c42070da4fc92b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jul 30 11:58:24 2012 +0200
+
+    Add test case for Gtk.TextIter.forward_search()
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=679415
+
+ tests/test_overrides.py |   19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+commit aae4e77482c02e21154ab02b159f380f5f0f74be
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jul 27 23:06:39 2012 +0200
+
+    Add missing static declarations
+
+    This fixes a lot of -Wmissing-prototype warnings.
+
+    Also remove _pygi_marshal_cleanup_closure_unref() which is not
+    used anywhere.
+
+ gi/_gobject/gobjectmodule.c |    4 ++--
+ gi/_gobject/pygobject.c     |    2 +-
+ gi/pygi-cache.c             |    2 +-
+ gi/pygi-foreign-cairo.c     |   24 ++++++++++++------------
+ gi/pygi-foreign.c           |    2 +-
+ gi/pygi-marshal-cleanup.c   |    9 ---------
+ tests/test-unknown.c        |    2 +-
+ tests/testhelpermodule.c    |    4 ++--
+ 8 files changed, 20 insertions(+), 29 deletions(-)
+
+commit 5f88d3017f853c4ff5e9fd89ef39e4569a9b9c16
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jul 27 23:01:08 2012 +0200
+
+    Fix more missing #includes
+
+    Add missing includes which caused -Wmissing-prototypes warnings.
+
+ gi/_gobject/pygenum.c      |    2 ++
+ gi/_gobject/pyginterface.c |    2 ++
+ 2 files changed, 4 insertions(+)
+
+commit 97b5184c6650964ae8a7616353f5ce8e3ca19af3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jul 27 22:59:21 2012 +0200
+
+    Make some warnings fatal
+
+    Add -Werror for some warnings which are real errors in the source
+    which we
+    really want to avoid. This includes -Wmissing-prototypes, but that
+    currently
+    breaks on building g-i's regress.c.
+
+ configure.ac |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit c2ee8c550199de59dd220561ed028ec6fb8e1daf
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jul 27 22:08:47 2012 +0200
+
+    Fix missing #includes
+
+    Add missing includes which caused -Wmissing-prototypes warnings.
+
+ gi/_glib/pygiochannel.c |    2 ++
+ gi/_glib/pygspawn.c     |    2 ++
+ 2 files changed, 4 insertions(+)
+
+commit 8bc98fc6665ebab763ee92361929139a0ebe66b5
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jul 27 20:52:00 2012 +0200
+
+    pygi-info.c: Robustify pointer arithmetic
+
+    In _wrap_g_field_info_{get,set}_value(), use explicit char* casts
+    to point out
+    that we are using byte offsets. Fixes warnings:
+
+    pygi-info.c:1277:43: warning: pointer of type 'void *' used in
+    arithmetic [-Werror=pointer-arith]
+
+ gi/pygi-info.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit d0a561057b727ebcc1fd06fa6a3b48f2a1f8338e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jul 27 20:50:30 2012 +0200
+
+    pyglib.c: Remove some dead code
+
+    Drop unused pyglib_gil_state_ensure_py23() and
+    pyglib_gil_state_release_py23().
+
+ gi/_glib/pyglib.c |   18 ------------------
+ 1 file changed, 18 deletions(-)
+
+commit a46d165d906d0ac7613f4d946542423e979f39d5
+Author: Manuel Quiñones <manuq@laptop.org>
+Date:   Fri Jul 20 10:37:04 2012 -0300
+
+    Add set_attributes() override to Gtk.TreeViewColumn
+
+    Looking at the C code, gtk_tree_view_column_set_attributesv just calls
+    gtk_cell_layout_clear_attributes and then
+    gtk_cell_layout_add_attribute for each (name, value) passed.  This
+    patch makes the same in the overrides.
+
+    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gtk.py     |    7 +++++++
+ tests/test_overrides.py |    6 ++++++
+ 2 files changed, 13 insertions(+)
+
+commit 4df676e10a5ea595a0d491af10268f557dd722d7
+Author: Daniel Narvaez <dwnarvaez@gmail.com>
+Date:   Tue Jul 24 13:49:15 2012 +0200
+
+    Drop git.mk
+
+    The autogenerated gitignores was missing several files. So we
+    was using a manual .gitignore at the root. But since it's
+    enough to add a couple of entries to it to cover the whole
+    tree, there is no much point in using git.mk at all.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=678192
+
+ Makefile.am               |    3 -
+ docs/Makefile.am          |    2 -
+ examples/Makefile.am      |    3 -
+ gi/Makefile.am            |    3 -
+ gi/_glib/Makefile.am      |    3 -
+ gi/_gobject/Makefile.am   |    2 -
+ gi/overrides/Makefile.am  |    2 -
+ gi/repository/Makefile.am |    2 -
+ git.mk                    |  200
+ ---------------------------------------------
+ tests/Makefile.am         |    2 -
+ 10 files changed, 222 deletions(-)
+
+commit 0d729c1534c7f3226b492f549d8f6ad3bb3ac8b7
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Fri Jul 20 19:55:46 2012 -0700
+
+    Gtk overrides: Add TreePath.__getitem__()
+
+    Use pythons sub-script operator for indexing into TreePaths
+    as was the case in PyGtk. Also changed __iter__ to use
+    TreePath.get_indices as opposed to formatting and re-parsing
+    a string for getting an index list.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680353
+
+ gi/overrides/Gtk.py     |    5 ++++-
+ tests/test_overrides.py |    4 ++++
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+commit affc7faa3fa7250e2e8c2c65e6860906f6fbc4fb
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Fri Jul 20 21:34:33 2012 -0700
+
+    Fix property type mapping from int to TYPE_INT for python3.
+
+    Python3 does not have a long type, however, propertyhelper.py was
+    using long_ = int; to get things working. Type mapping code
+    was then checking for long_ first and always returning TYPE_LONG.
+    Additional refactoring was done to move large if/elif statements
+    into dictionary lookups and usage of tuples instead of lists
+    for simple 'in' list of items tests.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=679939
+
+ gi/_gobject/propertyhelper.py |  117
+ +++++++++++++++++++----------------------
+ tests/test_properties.py      |   55 ++++++++++++++-----
+ 2 files changed, 96 insertions(+), 76 deletions(-)
+
+commit 6fddba5bc5ea02938677a89ffeb0cfc53229b894
+Author: Manuel Quiñones <manuq@laptop.org>
+Date:   Thu Jul 19 12:11:34 2012 -0300
+
+    Convert Gtk.DestDefaults constants in pygi-convert.sh script
+
+    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680259
+
+ pygi-convert.sh |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit d58c3553062fd8704a81a8233b4a1563a6611718
+Author: Manuel Quiñones <manuq@laptop.org>
+Date:   Thu Jul 19 12:04:03 2012 -0300
+
+    Convert all Gdk.WindowState constants in pygi-convert.sh
+
+    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680257
+
+ pygi-convert.sh |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit a3aae2e152c0b955037b7b85e16d14d00881d870
+Author: Joe R. Nassimian <placidrage@gmail.com>
+Date:   Thu Jul 19 15:48:20 2012 +0200
+
+    [API add] Add API for checking pygobject's version
+
+    Add a gi.__version__ attribute for the textual version, and
+    gi.version_info for
+    a version triple similar to sys.version_info.
+
+    Also add a gi.require_version(<minimum_version>) which raises an
+    exception if
+    the pygobject version is older.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680176
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/__init__.py   |   16 ++++++++++++++++
+ tests/test_gi.py |   16 ++++++++++++++++
+ 2 files changed, 32 insertions(+)
+
+commit a2d9b71d84f0fcb7aaf5ce483ffee3b3a1ccaca1
+Author: Manuel Quiñones <manuq@laptop.org>
+Date:   Mon Jul 16 17:14:46 2012 -0300
+
+    pygi-convert.sh: Add some missing Gdk.CursorTypes
+
+    This patch adds WATCH, ARROW and CLOCK.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680050
+
+    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ pygi-convert.sh |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 0b08c01414ac73a4604acd9a846e7af09574929f
+Author: Manuel Kaufmann <humitos@gmail.com>
+Date:   Tue Jul 17 09:05:27 2012 -0300
+
+    pygi-convert.sh: convert rsvg.Handle(data=...)
+
+    Replace rsvg.Handle(data=data) with Rsvg.Handle.new_from_data(data)
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680092
+
+    Signed-off-by: Manuel Kaufmann <humitos@gmail.com>
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ pygi-convert.sh |    2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 975855d0fff7f2042fe1f0e843f96b9a37cc6b79
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jul 16 17:35:38 2012 +0200
+
+    configure.ac: post-release bump to 3.3.5
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 126842b7227fcc1381dc158acdc5a96d0a465515
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jul 16 17:33:08 2012 +0200
+
+    release 3.3.4
+
+ NEWS |   28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+commit 079b73b3eb9083bd53e06d095f9dccc02acf2a6e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jul 16 17:29:22 2012 +0200
+
+    test_gi: Fix for Python 2
+
+ tests/test_gi.py |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 30935fe31bfe201bbfdb7734f09fdd2bbaf80e08
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jul 16 16:35:33 2012 +0200
+
+    pygi-convert.sh: Drop bogus filter_new() conversion
+
+    my_tree_model.filter_new() is still a method on GtkTreeModel, not a
+    constructor, so do not try to convert it to a constructor call.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=679999
+
+ pygi-convert.sh |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit c0607d970fc59528ca27d518282cf2871b92e909
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jul 16 16:00:40 2012 +0200
+
+    Fix help() for GI modules
+
+    Derive DynamicModule from types.ModuleType, so that the inspect
+    modules'
+    ismodule() actually succeeds on those and generates useful help on
+    a GI
+    repository module.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=679804
+
+ gi/module.py     |    3 ++-
+ tests/test_gi.py |   15 +++++++++++++++
+ 2 files changed, 17 insertions(+), 1 deletion(-)
+
+commit 3235f1a397c334de5a7570f5ceed4da709fe1714
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jul 16 15:53:31 2012 +0200
+
+    Skip gi.CallbackInfo objects from a module's dir()
+
+    Skip gi.CallbackInfo items from IntrospectionModule's __dir__(),
+    as we do not
+    implement __getattr__ for those.
+
+    Add a test case that dir() works on GI modules, contain expected
+    identifiers,
+    and that all identifiers in dir() can actually be retrieved.
+
+    Prerequisite for https://bugzilla.gnome.org/show_bug.cgi?id=679804
+
+ gi/module.py     |    7 +++++--
+ tests/test_gi.py |   14 ++++++++++++++
+ 2 files changed, 19 insertions(+), 2 deletions(-)
+
+commit f6cc039e014448a553d626aac4020ee69717edab
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jul 16 15:38:05 2012 +0200
+
+    Fix __path__ module attribute
+
+    get_typelib_path() returns bytes, not strings, so in Python 3 we
+    need to decode
+    it to get a proper __path__ attribute.
+
+ gi/module.py     |   17 +++++++++++++++++
+ tests/test_gi.py |   10 ++++++++++
+ 2 files changed, 27 insertions(+)
+
+commit 858048f7cec78129aa914e2341ab80aac0e95cc5
+Author: Joe R. Nassimian <placidrage@gmail.com>
+Date:   Mon Jul 16 15:02:10 2012 +0200
+
+    pygi-convert.sh: Fix some child â†’ getChild() false positives
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680004
+
+ pygi-convert.sh |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a31fabdc12f1da301c8df0af319ca3f4181671ee
+Author: Mikkel Kamstrup Erlandsen <mikkel.kamstrup@canonical.com>
+Date:   Thu Jul 12 09:19:42 2012 +0200
+
+    Fix array handling for interfaces, properties, and signals
+
+    Fix lots of corner cases where arrays are not handled properly.
+    _pygi_argument_to_object() now has the documented expectation of
+    getting arrays
+    packed in GArrays. This was implicit before and not correctly done
+    on most call
+    sites.
+
+    The helper _pygi_argument_to_array() has been improved to work on
+    any kind of
+    array. Fix all call sites of _pygi_argument_to_object() to do the
+    array conversion appropriately before calling
+    _pygi_argument_to_object().
+
+    Adds a test case that implements a GInterface with a method that
+    takes an array
+    of variants as input.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=667244
+
+ gi/pygi-argument.c       |  156
+ ++++++++++++++++++++++++++++++++--------------
+ gi/pygi-argument.h       |    4 +-
+ gi/pygi-closure.c        |   11 ++++
+ gi/pygi-info.c           |   20 ++++--
+ gi/pygi-property.c       |    1 +
+ gi/pygi-signal-closure.c |   14 ++++-
+ tests/test_gi.py         |   18 ++++++
+ 7 files changed, 167 insertions(+), 57 deletions(-)
+
+commit bb80d124269ee2389c04d03a478475868fd9ff7b
+Author: Manuel Quiñones <manuq@laptop.org>
+Date:   Wed Jul 11 22:05:41 2012 -0300
+
+    Add conversion of the Gdk.PropMode constants to pygi-convert.sh script
+
+    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=679775
+
+ pygi-convert.sh |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit e3a63eefa5fb2abeabd210790e12642e577363c8
+Author: Manuel Quiñones <manuq@laptop.org>
+Date:   Wed Jul 11 13:18:16 2012 -0300
+
+    Add the same rules for pack_start to convert pack_end
+
+    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=679760
+
+ pygi-convert.sh |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit b4bef457c2d0ca6899e06a021f1f06252a37e326
+Author: Dave Malcolm <dmalcolm@redhat.com>
+Date:   Wed Jul 11 08:21:27 2012 +0200
+
+    Add error-checking for the case where _arg_cache_new() fails
+
+    This can happen when a typelib and its underlying library are
+    out-of-sync. This
+    converts the segfault into a more helpful traceback.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=678914
+
+ gi/pygi-cache.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 41287d8a439c656e4ac60361fddec643c713234c
+Author: Manuel Quiñones <manuq@laptop.org>
+Date:   Wed Jul 11 11:13:38 2012 -0300
+
+    Add conversion of the Gdk.NotifyType constants to pygi-convert.sh
+    script
+
+    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=679754
+
+ pygi-convert.sh |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit 5403149b900d1b73cbc78767dc43be2eb344c836
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Tue Jul 10 19:07:32 2012 -0700
+
+    Fix PyObject_Repr and PyObject_Str reference leaks
+
+    Fix all calls to PyObject_Repr() and PyObject_Str() to be properly
+    DECREF'd.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=675857
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_glib/glibmodule.c       |   10 ++++++--
+ gi/_gobject/gobjectmodule.c |   17 ++++++++++----
+ gi/_gobject/pygobject.c     |   53
+ +++++++++++++++++++++++++++++--------------
+ gi/pygi-marshal-from-py.c   |    9 +++++---
+ 4 files changed, 62 insertions(+), 27 deletions(-)
+
+commit 0ddfecf3bf0a5d7893cd02cff41503d810ef6ce8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Jul 4 08:46:30 2012 +0200
+
+    [API add] Gtk overrides: Add TreePath.__len__()
+
+    Use the path depth as length of a Gtk.TreePath object.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=679199
+
+ gi/overrides/Gtk.py     |    3 +++
+ tests/test_overrides.py |    4 ++++
+ 2 files changed, 7 insertions(+)
+
+commit e1e849d1a9af77c29ee35971db8d439bac60d573
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Jul 4 08:35:16 2012 +0200
+
+    GLib.Variant: Fix repr(), add proper str()
+
+    Fix the GLib.Variant override's repr() after commit 16280d6985. Also
+    add a
+    proper __str__() method, and tests for both.
+
+    Thanks to Rul Matos for spotting this!
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=679336
+
+ gi/overrides/GLib.py    |    6 +++++-
+ tests/test_overrides.py |    5 +++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+commit af20d7c929b9c1888454b52932a308d346e1c12b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Jun 28 06:51:22 2012 +0200
+
+    m4/python.m4: Update Python version list
+
+    Thanks to Dieter Verfaillie for pointing  this out.
+
+ m4/python.m4 |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit a96a26234e2aaa157837d26094864e3ad9b63edf
+Author: Micah Carrick <micah@quixotix.com>
+Date:   Mon Jun 25 09:05:59 2012 -0700
+
+    Remove "label" property from Gtk.MenuItem if it is not set
+
+    The Gtk.MenuItem will not render as a separator if the "label" or
+    "user-underline" properties have been accessed. The constructor
+    for Gtk.MenuItem override should not pass the "label" property
+    as an argument if it is None since that will still result in an
+    empty label widget which breaks Gtk.SeparatorMenuItem.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=670575
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gtk.py |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit afa12faf339efb4f7780168e884ecf49b630644a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jun 25 16:36:31 2012 +0200
+
+    configure.ac: Post-release bump to 3.3.4.
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 198066effc0ca44ccb897e9f0738ab627e8b3275
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jun 25 16:35:49 2012 +0200
+
+    release 3.3.3.1
+
+ NEWS         |    3 +++
+ configure.ac |    2 +-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+commit cb70ae0aa52ab7624b2b8c30297d8a52a7db7f44
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jun 25 16:32:45 2012 +0200
+
+    Do not escape enum and flag names that are Python keywords
+
+    These are translated to upper case, and thus can never be
+    keywords. This broke
+    existing API such as Gtk.ShadowType.IN.
+
+ gi/module.py     |    2 +-
+ gi/pygi-info.c   |    7 +++++++
+ tests/test_gi.py |    3 +++
+ 3 files changed, 11 insertions(+), 1 deletion(-)
+
+commit f2524a982b0b8ba7cdbb77003372416af0b7a978
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jun 25 15:39:50 2012 +0200
+
+    configure.ac: Post-release version bump to 3.3.4
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit fe56faa346c8e8f9fd5915602424778d458a776d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jun 25 15:36:37 2012 +0200
+
+    release 3.3.3
+
+ NEWS |   15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 299a2fd726f0aceaf67b1cec7a0ef8b21ff7bcbc
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jun 25 15:35:19 2012 +0200
+
+    Bring back ChangeLog make target
+
+    This is being used by "make dist".
+
+ Makefile.am |   15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 760118e4ed73de2f022706ef897fcc848e90c005
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jun 25 15:31:14 2012 +0200
+
+    Remove obsolete ChangeLog and release-tag make targets
+
+ Makefile.am |   23 -----------------------
+ 1 file changed, 23 deletions(-)
+
+commit e92278692bb51679d6e957c2ac36db64498a7c73
+Author: Simon Schampijer <simon@schampijer.de>
+Date:   Fri Jun 15 16:11:21 2012 +0200
+
+    Do not do any python calls when GObjects are destroyed after the
+    python interpreter has been finalized
+
+    This happens when pygobject_data_free () function is called after
+    the python
+    interpreter shuts down, we can't do python calls after that.
+
+    Benzea did the findings because of a bug in Sugar, and commented
+    in this
+    SugarLabs ticket: http://bugs.sugarlabs.org/ticket/3670
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=678046
+
+    Signed-off-by: Benjamin Berg <benzea@sugarlabs.org>
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c |   27 ++++++++++++++++++++++-----
+ 1 file changed, 22 insertions(+), 5 deletions(-)
+
+commit de4aa426002eeb09a060f8fd70bd6cb25a17766a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jun 25 15:06:47 2012 +0200
+
+    Do not change constructor-only "type" Window property
+
+    When reading a Gtk.Window subclass from a GtkBuilder object,
+    the object's
+    properties are already set at __init__ time. Do not try to set it
+    again, to
+    avoid a warning.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=678510
+
+ gi/overrides/Gtk.py     |    8 +++++++-
+ tests/test_overrides.py |   36 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 43 insertions(+), 1 deletion(-)
+
+commit 16280d6985f2cf4db9cf062e857650e620fd9da8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Jun 25 09:40:38 2012 +0200
+
+    Escape identifiers which are Python keywords
+
+    Add a trailing underscore to identifiers which are Python keywords.
+
+    We use a per-major-version static identifier list derived from
+    keyword.kwlist
+    instead of calling out to Python's keyword.iskeyword(). This is
+    much faster,
+    and also allows us to tweak the result. For example, Python 3 dropped
+    "print"
+    as a keyword, but we still want to escape that to avoid breaking
+    the API
+    between different Python versions.
+
+    Error out when building with a major Python version not covered yet,
+    so that we
+    do not forget to update the list in the future.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=676746
+
+ gi/pygi-info.c   |   38 +++++++++++++++++++++++++++++++++++++-
+ tests/test_gi.py |   17 +++++++++++++++++
+ 2 files changed, 54 insertions(+), 1 deletion(-)
+
+commit 3864d7a3b7def035ee2daf22ba717371c8d261de
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jun 22 13:13:37 2012 +0200
+
+    Ignore E123 in pep8 tests
+
+    This is "closing bracket does not match indentation of opening
+    bracket's line",
+    but it really looks better to have the closing bracket on the
+    indentation level
+    of the opening bracket instead of the indentation level of the
+    line that
+    contains the opening bracket.
+
+ tests/Makefile.am |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit fb436dd6d3b40b3f2a8ba6f402e2987752ad1902
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jun 22 13:08:34 2012 +0200
+
+    PEP8: Fix indentation
+
+    Spotted by current pep8 checker.
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py     |    6 +--
+ demos/gtk-demo/demos/Entry/entry_completion.py |    6 +--
+ demos/gtk-demo/demos/Entry/search_entry.py     |    4 +-
+ demos/gtk-demo/demos/appwindow.py              |    2 +-
+ demos/gtk-demo/demos/clipboard.py              |    8 +--
+ demos/gtk-demo/demos/colorselector.py          |    6 +--
+ demos/gtk-demo/demos/rotatedtext.py            |    8 +--
+ demos/gtk-demo/gtk-demo.py                     |    6 +--
+ examples/option.py                             |   29 +++++-----
+ examples/signal.py                             |    3 +-
+ gi/_glib/option.py                             |    6 +--
+ gi/_gobject/propertyhelper.py                  |   18 +++----
+ gi/module.py                                   |   14 ++---
+ gi/overrides/GLib.py                           |    2 +-
+ gi/overrides/Gio.py                            |   11 ++--
+ gi/overrides/Gtk.py                            |   16 +++---
+ gi/pygtkcompat.py                              |    7 ++-
+ gi/types.py                                    |   17 +++---
+ tests/runtests.py                              |    2 +-
+ tests/test_gdbus.py                            |   55 ++++++++++---------
+ tests/test_gi.py                               |   15 +++---
+ tests/test_gobject.py                          |   18 +++----
+ tests/test_option.py                           |   26 ++++-----
+ tests/test_overrides.py                        |   67
+ ++++++++++++------------
+ tests/test_properties.py                       |   30 +++++------
+ tests/test_signal.py                           |    2 +-
+ tests/test_uris.py                             |    9 ++--
+ 27 files changed, 200 insertions(+), 193 deletions(-)
+
+commit 129462ccc4a2191ecbb42247030c91bd0f1454f6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jun 22 12:36:54 2012 +0200
+
+    PEP8: Use isinstance() instead of direct type comparisons
+
+    Spotted by current pep8 checker.
+
+ gi/overrides/GLib.py     |    2 +-
+ gi/overrides/__init__.py |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 50e45a624e6301e65c150e137aad6d092f203f3f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jun 22 12:30:10 2012 +0200
+
+    PEP8: Fix continuation lines
+
+    Spotted by current pep8 checker.
+
+ demos/gtk-demo/demos/Entry/search_entry.py |    6 +++---
+ gi/__init__.py                             |    6 +++---
+ gi/_gobject/__init__.py                    |    6 ++----
+ gi/module.py                               |    6 +++---
+ tests/test_overrides.py                    |   11 +++--------
+ 5 files changed, 14 insertions(+), 21 deletions(-)
+
+commit ef06548b0dc6aee0e8ab208a78966dc1d5d917ee
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jun 22 12:24:32 2012 +0200
+
+    PEP8: Consistent comparisons against True, False, and None
+
+    Spotted by current pep8 checker.
+
+ demos/gtk-demo/demos/clipboard.py   |    4 ++--
+ demos/gtk-demo/demos/drawingarea.py |    4 ++--
+ demos/gtk-demo/gtk-demo.py          |    8 ++++----
+ gi/overrides/Gdk.py                 |    2 +-
+ gi/overrides/Gtk.py                 |    2 +-
+ tests/test_gi.py                    |    4 ++--
+ tests/test_overrides.py             |    3 +--
+ 7 files changed, 13 insertions(+), 14 deletions(-)
+
+commit 379c1474a071292a1e8da413af2f5438cff09fc8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Jun 20 12:23:12 2012 +0200
+
+    Fix crash in GLib.find_program_in_path()
+
+    We need to handle a NULL return value properly.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=678119
+
+ gi/_glib/glibmodule.c |   10 ++++++++--
+ tests/Makefile.am     |    1 +
+ tests/test_glib.py    |   15 +++++++++++++++
+ 3 files changed, 24 insertions(+), 2 deletions(-)
+
+commit 73531fd7820bd1922347bd856298d68205a27877
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Jun 20 11:16:39 2012 +0200
+
+    Revert "Do not bind gobject_get_data() and gobject_set_data()"
+
+    We should have some deprecation period for this, so bring back
+    these two
+    methods and add deprecation warnings.
+
+    This reverts commit 24cc09a7105299805fcc5bc151f53ac69958d728.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=641944
+
+ gi/_gobject/pygobject.c |   44
+ ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 44 insertions(+)
+
+commit a0daa843801658929ffee5bcb9eb67d955dc7921
+Author: David Keijser <keijser@gmail.com>
+Date:   Mon Jun 18 15:09:34 2012 +0200
+
+    GVariant: Raise proper TypeError on invalid tuple input
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=678317
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/GLib.py    |    4 ++--
+ tests/test_overrides.py |    1 +
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+commit fb39ba934180e1e48fd15774e69d1cecf47a4c84
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Jun 5 19:11:38 2012 +0200
+
+    configure.ac: Post-release bump to 3.3.3
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7f0995e7fa865ebde7490d0570a7135a2f962cdf
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Jun 5 19:09:12 2012 +0200
+
+    Release 3.3.2
+
+ NEWS |   44 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 44 insertions(+)
+
+commit 8209c1ae1632c77768699481e574d5d378956e71
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Jun 5 19:04:49 2012 +0200
+
+    Fix "release-news" make target
+
+    Actually list changes since the previous release, not since 3.1.92.
+
+ Makefile.am |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b21f66d2a399b8c9a36a1758107b7bdff0ec8eaa
+Author: Bastian Winkler <buz@netbuz.org>
+Date:   Wed May 9 19:04:01 2012 +0200
+
+    foreign: Register cairo.Path and cairo.FontOptions foreign structs
+
+    They are rarely used, but they are used at least by Gdk, PangoCairo
+    and
+    Clutter.
+
+    clutter.Path is not used by any API that the test suite uses, so
+    leave that
+    without a test for now.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=677388
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-foreign-cairo.c  |   85
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_everything.py |    8 +++++
+ 2 files changed, 93 insertions(+)
+
+commit 635a7d1b48d99ddd1ea123797c493b18b0cdfd45
+Author: Marien Zwart <marien.zwart@gmail.com>
+Date:   Wed May 23 01:51:46 2012 +0200
+
+    Check types in GBoxed assignments
+
+    Check if the Python value is GBoxed instead of assuming it is.
+    Without this, the following segfaults:
+
+    from gi.repository import Soup
+
+    msg = Soup.Message()
+    msg.props.uri = 'http://www.gnome.org'
+
+    as we assume the new property is a GBoxed while it is actually a
+    string.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=676603
+
+    Co-authored-by: Martin Pitt <martinpitt@gnome.org>
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-argument.c |   10 +++++++---
+ tests/test_gi.py   |   19 +++++++++++++++++++
+ 2 files changed, 26 insertions(+), 3 deletions(-)
+
+commit 2305dcd7e8841f87dc2fc683390df78453a5dc2a
+Author: Bastian Winkler <buz@netbuz.org>
+Date:   Sat May 12 14:08:51 2012 +0200
+
+    [API add] Gtk overrides: Add TreeModelRow.get_previous()
+
+    TreeModelRow has get_next() and a next property, it should also have
+    get_previous() and previous.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=677389
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gtk.py |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 5501fba534696974899f2591929bff9e1b6ecd65
+Author: Bastian Winkler <buz@netbuz.org>
+Date:   Sat May 12 13:50:02 2012 +0200
+
+    [API add] Add missing GObject.TYPE_VARIANT
+
+    Add TYPE_VARIANT to constants to make it accessible as
+    GObject.TYPE_VARIANT.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=677387
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/__init__.py  |    1 +
+ gi/_gobject/constants.py |    1 +
+ 2 files changed, 2 insertions(+)
+
+commit 4c51a5411092f8ab6f8f6e9692a9b49692f621a7
+Author: Jasper St. Pierre <jstpierre@mecheye.net>
+Date:   Fri Jun 1 02:53:13 2012 -0400
+
+    Fix boxed type equality
+
+    Each boxed type has its own Python type, not PyGBoxed_Type. Use
+    PyObject_IsInstance instead of comparing against PyGBoxed_Type
+    directly.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=677249
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygboxed.c   |    3 ++-
+ tests/test_everything.py |    8 ++++++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+commit dc8eef26906753fcb3ce057b23ca110137897fa5
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date:   Fri Jun 1 13:43:38 2012 +0200
+
+    Fix TestProperties.testBoxed test
+
+    A typo was preventing the test from being run.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=676644
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ tests/test_properties.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 853e6a71234ebd66af5a64dfb296e323c2c905a6
+Author: Carlos Garnacho <carlos@lanedo.com>
+Date:   Thu May 17 17:09:15 2012 +0200
+
+    Fix handling of by-reference structs as out parameters
+
+    When marshalling back from python, copy the result of by-reference
+    structs into the memory expected by the native caller, instead of
+    attempting to handle it as a pointer.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=653151
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-closure.c |   17 +++++++++++++++++
+ tests/test_gi.py  |    5 +++++
+ 2 files changed, 22 insertions(+)
+
+commit bac9d526f6a9774821d1c9c0e7b35cc6db942975
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jun 1 12:28:53 2012 +0200
+
+    tests: Add more vfunc checks for GIMarshallingTestsObject
+
+ tests/test_gi.py |   25 +++++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
+
+commit e1aaf4a48453be0e69e7f3a70a2e7a790871a4d2
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jun 1 12:02:55 2012 +0200
+
+    Test caller-allocated GValue out parameter
+
+    This came up as a side issue in
+    https://bugzilla.gnome.org/show_bug.cgi?id=653151
+
+ tests/test_gi.py |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit edc17e703e1a05e20545d3df9167ceb076450443
+Author: Bastian Winkler <buz@netbuz.org>
+Date:   Wed May 16 11:13:05 2012 +0200
+
+    GObject.bind_property: Support transform functions
+
+    Add support for optional transformation functions to
+    pygobject_bind_property(). It uses a custom PyGClosure to marshal the
+    return value correctly.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=676169
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c |  130
+ ++++++++++++++++++++++++++++++++++++++++++++---
+ tests/test_gobject.py   |   59 +++++++++++++++++++++
+ 2 files changed, 181 insertions(+), 8 deletions(-)
+
+commit 07a08b49aae83a297e2f91240448314e4663f724
+Author: Carlos Garnacho <carlos@lanedo.com>
+Date:   Mon May 14 15:31:14 2012 +0200
+
+    Fix lookup of vfuncs in parent classes
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672864.
+
+    As subclasses implemented in python override the attribute for the
+    vfunc, __mro__ has to be used so subclasses of the subclass overriding
+    methods may find the corresponding VFuncInfo.
+
+    Co-Authored-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/types.py      |    6 +++---
+ tests/test_gi.py |   27 +++++++++++++++++++++++++++
+ 2 files changed, 30 insertions(+), 3 deletions(-)
+
+commit b965ee15bac6cd28d16d32205d96d2b1bdd3f0e1
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Jun 1 08:18:40 2012 +0200
+
+    tests/test_properties.py: Fix whitespace
+
+    The pep8 check failed on this.
+
+ tests/test_properties.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 274d60a7c08d74a299f4b83d8054c00eadb4bdbd
+Author: Jasper St. Pierre <jstpierre@mecheye.net>
+Date:   Wed May 30 16:45:53 2012 -0400
+
+    gi: Support zero-terminated arrays with length arguments
+
+    Sometimes, you may see (array zero-terminated=1 length=length)
+    annotations.
+    Don't expose the length argument to the user in this case.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=677124
+
+ gi/pygi-cache.c  |   13 ++++---------
+ tests/test_gi.py |    3 +++
+ 2 files changed, 7 insertions(+), 9 deletions(-)
+
+commit 62c2e962a225ec2527aa3d7406aa0dae232a0886
+Author: Jasper St. Pierre <jstpierre@mecheye.net>
+Date:   Fri May 25 17:09:55 2012 -0400
+
+    Fix build
+
+    libregress now needs cairo-gobject
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 9477f0f2f17a6d9b97e5ee08378bc009b8d4c30a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon May 14 15:48:34 2012 +0200
+
+    Fix comment in previous commit
+
+ tests/test_gobject.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6610428394d0c65987de5021bf2c38641cdb7116
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Tue May 8 20:04:09 2012 -0700
+
+    [API add] Add GObject.bind_property method
+
+    This adds the "bind_property" method for binding two gobject
+    properties
+    together. The method returns a weak reference to a GBinding object.
+    The BindingWeakRef object is used to manage GBinding objects within
+    python
+    created through GObject.bind_property. It is a sub-class
+    PyGObjectWeakRef so
+    that we can maintain the same reference counting semantics between
+    Python
+    and GObject Binding objects. This gives explicit direct control of the
+    binding lifetime by using the "unbind" method on the BindingWeakRef
+    object
+    along with implicit management based on the lifetime of the source or
+    target objects.
+
+    Note this does not yet include support for converter closures. This
+    can come
+    later after the initial implementation is accepted.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=675582
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c |  104
+ ++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gobject.py   |   90 ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 193 insertions(+), 1 deletion(-)
+
+commit 88babe7377402f6e6f912a8b83615aab848eae81
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date:   Fri May 11 19:08:47 2012 -0300
+
+    pygtkcompat: Correctly set flags
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=675911
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygtkcompat.py         |    5 ++---
+ tests/test_pygtkcompat.py |    1 +
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 3f712b56397296bca2f5358cd52977b1a2011964
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date:   Fri May 11 12:39:05 2012 -0300
+
+    Gtk overrides: Implement __delitem__ on TreeModel
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=675892
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gtk.py     |   16 ++++++++++++----
+ tests/test_overrides.py |    9 +++++++++
+ 2 files changed, 21 insertions(+), 4 deletions(-)
+
+commit 9a1a07742ec0b1821d469603f9996a2b7d832f40
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Sun May 6 18:10:39 2012 -0700
+
+    Gdk Color override should support red/green/blue_float properties
+
+    Added red_float, green_float, and blue_float properties to Color.
+    Also added Color.from_floats, RGBA.to_color, and RGBA.from_color.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=675579
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gdk.py     |   44
+ ++++++++++++++++++++++++++++++++++++++++++++
+ tests/Makefile.am       |    2 +-
+ tests/test_overrides.py |   17 +++++++++++++++++
+ 3 files changed, 62 insertions(+), 1 deletion(-)
+
+commit d9608c332d9592f03545b110cfac8105453ea035
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat May 5 12:42:42 2012 -0700
+
+    Support marshalling of GVariants for closures
+
+    Add GVariant handling to pyg_value_{as,from}_pyobject(), so that
+    closures can
+    be called with GVariant arguments and return GVariant.
+
+    Unmark the corresponding test case as "expected failure", and also
+    add cases
+    for None values and type mismatches.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=656554
+
+ gi/_gobject/pygtype.c    |   47
+ ++++++++++++++++++++++++++++++++++++++++++++--
+ tests/test_everything.py |   16 ++++++++++++----
+ 2 files changed, 57 insertions(+), 6 deletions(-)
+
+commit e7a909c16dc1c625ab11e270f23d540f15c71767
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Mon May 7 10:33:40 2012 -0300
+
+    Require gobject-introspection 1.33.0
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 9e8239684433631e0d1650d25416e4d7bf92a058
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun May 6 18:28:23 2012 -0700
+
+    NEWS: Add API additions since 3.2.0
+
+ NEWS |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+commit d1a2bf51eb25b54028fbf496d20dfad9546bcb5e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun May 6 18:25:23 2012 -0700
+
+    NEWS: Mark API changes since 3.2.0
+
+ NEWS |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit a3329539291bd8ea9aa6cb184a05ea7c21f8885a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun May 6 18:19:35 2012 -0700
+
+    Fix commit 168a087 for Python 3
+
+    Simplify the type check and use the already existing one. Fix the
+    string check
+    to work with both Python 2 and 3.
+
+ gi/pygi-argument.c |   42 +++++++++---------------------------------
+ 1 file changed, 9 insertions(+), 33 deletions(-)
+
+commit 42c717ed77613e02f3c8ef2685bc071462b87d73
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun May 6 18:08:57 2012 -0700
+
+    pygtkcompat.py: Typo fix
+
+    Was missing a space around operator, causing the PEP8 check to fail.
+
+ gi/pygtkcompat.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 168a08753cec1ff77ccca5d81b9a5fd2af5d3720
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun May 6 18:02:04 2012 -0700
+
+    _pygi_argument_from_object(): Check for compatible data type
+
+    Verify that the passed PyObject actually matches the expected type
+    of the
+    argument. With this, trying to assign a wrong type to a property
+    will now raise
+    a proper TypeError.
+
+ gi/pygi-argument.c |   39 +++++++++++++++++++++++++++++++++++++++
+ gi/pygi-property.c |    3 +++
+ tests/test_gi.py   |   40 ++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 82 insertions(+)
+
+commit 5948b62ba3e08ea943e6965ee38c94c363186226
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun May 6 17:59:57 2012 -0700
+
+    pygtkcompat: Fix color conversion
+
+    gtk_style_context_get_background_color() returns a GdkRGBA value,
+    which has
+    float values between 0 and 1. However, we construct a GdkColor
+    object from
+    that, so we need to scale to 0..65535 and round to int.
+
+ gi/pygtkcompat.py |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 6af74c501bc604559f8b5b4e0d856d022ed882bb
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun May 6 06:02:31 2012 -0700
+
+    test_gi: Check setting properties in constructor
+
+ tests/test_gi.py |   33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+commit 9f50fd214e4214f83959b2883a0c667f7f157c97
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun May 6 05:50:00 2012 -0700
+
+    Support getting and setting GStrv properties
+
+ gi/pygi-property.c |   36 ++++++++++++++++++++++++++++++++++++
+ tests/test_gi.py   |   11 +++++++++++
+ 2 files changed, 47 insertions(+)
+
+commit 8321af2c7df499291e664c676376f149a0c3dcac
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat May 5 13:58:29 2012 -0700
+
+    Support defining GStrv properties from Python
+
+ gi/_gobject/propertyhelper.py |   10 +++++--
+ tests/test_properties.py      |   58
+ +++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 64 insertions(+), 4 deletions(-)
+
+commit f2494526e1c579c41babfe7ff67deef0f6966adf
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat May 5 13:21:20 2012 -0700
+
+    Add GObject.TYPE_STRV constant
+
+ gi/_gobject/__init__.py  |    1 +
+ gi/_gobject/constants.py |    1 +
+ tests/test_everything.py |    2 +-
+ tests/test_signal.py     |    2 +-
+ 4 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 8c7306e4d6355ca45f8f1b4adf7d0595b4e8bcf8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat May 5 09:28:36 2012 +0200
+
+    Unref GVariants when destroying the wrapper
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=675472
+
+ gi/overrides/GLib.py |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit d6c091d87c86c8ccc7cb54347fbceccedac61633
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat May 5 09:23:55 2012 +0200
+
+    Fix TestArrayGVariant test cases
+
+    test_array_gvariant_container_in() and test_array_gvariant_full_in()
+    called
+    GIMarshallingTests.array_gvariant_none_in(), presumably a copy&paste
+    error.
+    Actually do what they mean to do now and call the corresponding
+    GIMarshallingTests methods.
+
+ tests/test_gi.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit fda8a069d503e63c76a6b1ba285a181822549059
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date:   Sat May 5 08:52:41 2012 +0200
+
+    pygtkcompat: Add gdk.pixbuf_get_formats compat code
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=675489
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygtkcompat.py         |   20 ++++++++++++++++++++
+ tests/test_pygtkcompat.py |    8 ++++++++
+ 2 files changed, 28 insertions(+)
+
+commit 2b49c5f58bb841de7a9077eeeaf996eb9851dab3
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date:   Mon Apr 30 13:44:19 2012 -0300
+
+    pygtkcompat: Add some more compat functions
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=675489
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygtkcompat.py |   14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+commit 16fbb17a9fd17eeb9f886af99e89a214d328dae1
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu May 3 12:25:04 2012 +0200
+
+    Fix tests for Python 3
+
+    cmp() does not exist any more in Python 3, replace with comparison
+    operators.
+
+    GIMarshallingTests.array_in_nonzero_nonlen() expects a guint8 array,
+    so we
+    can't pass a str (which is an Unicode object in Python 3). Pass a
+    byte array
+    instead.
+
+ tests/test_gi.py        |    2 +-
+ tests/test_overrides.py |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit fd7f8eefbe8aba0b29d80e3eb9d985d33a268c8a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu May 3 09:38:56 2012 +0200
+
+    Fix building with --disable-cairo
+
+    Build gobject-introspection's regress.c against cairo, not
+    pycairo/py3cairo. We
+    always need cairo to build, so unconditionally check for this in
+    configure.ac.
+
+    In test_everything.py, gracefully handle the absence of the "cairo"
+    Python
+    module, which we do not have when building without cairo support.
+
+ configure.ac             |    3 +++
+ tests/Makefile.am        |    4 ++--
+ tests/test_everything.py |    8 +++++++-
+ 3 files changed, 12 insertions(+), 3 deletions(-)
+
+commit 1c5634e6d98c8b67b37a2747951c66f5d8f1907d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu May 3 09:28:51 2012 +0200
+
+    tests: Fix deprecated assertions
+
+    assertAlmostEquals â†’ assertAlmostEqual
+    assertNotEquals â†’ assertNotEqual
+
+ tests/test_everything.py |    4 ++--
+ tests/test_gi.py         |   12 ++++++------
+ tests/test_overrides.py  |   10 +++++-----
+ 3 files changed, 13 insertions(+), 13 deletions(-)
+
+commit 07f312e66c07357168098d3f96813d2c997e8dc7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed May 2 12:08:19 2012 +0200
+
+    Run tests with MALLOC_PERTURB_
+
+    We mostly use the glib allocation functions, but this might
+    help to uncover access to already freed or uninitialized memory in
+    a few edge
+    cases.
+
+ tests/Makefile.am |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit b0740d386c2cbbd153878209b584b568968e4d98
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Apr 30 16:26:57 2012 +0200
+
+    configure.ac: Post-release bump to 3.3.2
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d3977266faadacd3d05705497c1cf51a01a6606f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Apr 30 16:08:09 2012 +0200
+
+    Release 3.3.1
+
+ NEWS |   66
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 66 insertions(+)
+
+commit a8e222f04aac3bcf7e4421c4da8d080eeb8b5f56
+Author: Giovanni Campagna <gcampagna@src.gnome.org>
+Date:   Sun Apr 29 23:55:15 2012 +0200
+
+    GSettings: allow extra keyword arguments
+
+    All GObject constructors are expected to accept any construct
+    property as keyword argument, and overrides should respect that.
+    In particular, not doing this for GSettings prevents using a custom
+    GSettingsSchema.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=675105
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gio.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 592c67482c254f65817c1a1b5c5de5dfcaab31b4
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date:   Sun Apr 29 12:56:50 2012 -0300
+
+    pygtkcompat: Correct Userlist module use
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=675084
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygtkcompat.py         |    2 +-
+ tests/test_pygtkcompat.py |    4 ++++
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+commit 3551462a429ef30274fa01fc8111da5025f9c342
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun Apr 29 20:17:47 2012 +0200
+
+    Add release-news make rule
+
+    This produces a commit log since the previous release in our
+    current NEWS
+    format. This does not currently wrap long lines automatically, though.
+
+    Do include bug numbers from now on, as they are very useful.
+
+ Makefile.am |   12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+commit fe79ef612a7853f024b73c7997b8ec89015ae94c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Apr 25 13:07:59 2012 +0200
+
+    Add "make check.nemiver" target
+
+    Similar to "check.gdb", but invokes nemiver.
+
+ Makefile.am       |    3 +++
+ tests/Makefile.am |    3 +++
+ 2 files changed, 6 insertions(+)
+
+commit 3090cc70a7ce8df38dd6cf6c17350417a7367c0b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Apr 24 13:24:00 2012 +0200
+
+    Test flags and enums in GHash values
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=637466
+
+ tests/test_everything.py |   18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+commit 88d189ec3e3d900a96496a50c1d6e76615b19558
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Apr 24 13:03:36 2012 +0200
+
+    tests: Activate test_hash_in and apply workaround
+
+    Work around pygobject's current inability to produce a GStrv object
+    from a
+    string array by explicitly producing a GStrV object, and reactivate
+    test case.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=666636
+
+ tests/test_everything.py |   24 +++++++++++++-----------
+ 1 file changed, 13 insertions(+), 11 deletions(-)
+
+commit 8ee21619b3cfc179cf114813478470d9aa3f6fb8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Apr 23 12:33:09 2012 +0200
+
+    Add special case for Gdk.Atom array entries from Python
+
+    Gdk.Atom pretends to be a struct pointer, but is really just an
+    int wrapped
+    into a pointer. So we must not dereference it directly, nor free
+    it, but
+    instead just copy the pointer value.
+
+    Also add a few other test cases for "single Atom return", "single
+    Atom argument
+    in", and Atom GList return", which already work fine.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=661709
+
+ gi/pygi-marshal-from-py.c |   18 ++++++++++++++----
+ tests/Makefile.am         |    1 +
+ tests/test_atoms.py       |   41
+ +++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 56 insertions(+), 4 deletions(-)
+
+commit b9f24b4fbc2ca9f9b94b86f029c59b2fc3e8590f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Apr 23 20:09:43 2012 +0200
+
+    test_gdbus: Call GetConnectionUnixProcessID() with correct signature
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=667954
+
+ tests/test_gdbus.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3ae38d7519524288a57e5d522954b9d6725f0185
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Apr 23 18:47:34 2012 +0200
+
+    Add test case for Gtk.ListStore custom sort
+
+    This works in Python 2, but crashes in Python 3, another case of
+    the segfaults
+    we get when C calls a Python callback in Python 3.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=674475
+
+ tests/test_overrides.py |   31 +++++++++++++++++++++++++++++++
+ 1 file changed, 31 insertions(+)
+
+commit c12b10ca0feaaf61f23354c7b6631a9ef3635c36
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Apr 23 17:40:23 2012 +0200
+
+    GTK overrides: Add missing keyword arguments
+
+    Add missing **kwargs to overridden __init__() constructors, to
+    allow specifying
+    arbitrary widget properties.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=660018
+
+ gi/overrides/Gtk.py     |   34 ++++++++++++++++++----------------
+ tests/test_overrides.py |    6 ++++++
+ 2 files changed, 24 insertions(+), 16 deletions(-)
+
+commit d37680bb9390426f7f58ea3d352c3e5e2106e978
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Apr 23 15:24:04 2012 +0200
+
+    Add missing override for TreeModel.iter_previous()
+
+    This should behave like the override for TreeModel.iter_next().
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=660018
+
+ gi/overrides/Gtk.py     |    6 ++++++
+ tests/test_overrides.py |    4 ++++
+ 2 files changed, 10 insertions(+)
+
+commit e03284f852f0e404cc91374f3e2e42b0ac1977b4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun Apr 22 16:45:06 2012 +0200
+
+    pygi-convert.py: Drop obsolete drag method conversions
+
+    Drop conversion of drag_source_unset() and drag_dest_{,un}set(). These
+    were
+    fixed a while ago to be proper Widget methods again.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=652860
+
+ pygi-convert.sh |    3 ---
+ 1 file changed, 3 deletions(-)
+
+commit f82eca6006dec21624796074af8ffe9b2256f7a4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat Apr 21 14:00:50 2012 +0200
+
+    tests: Replace deprecated assertEquals() with assertEqual()
+
+ tests/test_everything.py  |  144 ++++++-------
+ tests/test_gi.py          |  502
+ ++++++++++++++++++++++-----------------------
+ tests/test_gobject.py     |   58 +++---
+ tests/test_option.py      |    6 +-
+ tests/test_overrides.py   |  352 +++++++++++++++----------------
+ tests/test_properties.py  |   18 +-
+ tests/test_pygtkcompat.py |   42 ++--
+ 7 files changed, 561 insertions(+), 561 deletions(-)
+
+commit ddb0bf01e694585d58af52673a21796e7c9578ea
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Sat Apr 21 12:02:54 2012 +0200
+
+    Plug tiny leak in constant_info_get_value
+
+    Fixes https://bugzilla.gnome.org/show_bug.cgi?id=642754
+
+ gi/pygi-info.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 9c48a561c5ee010410df7d6e430353b41d5fbd88
+Author: Bastian Winkler <buz@netbuz.org>
+Date:   Thu Apr 12 20:30:05 2012 +0200
+
+    Fix len_arg_index for array arguments
+
+    Don't set len_arg_index for arrays without the length annotation
+    given.
+    This fixes methods like Clutter.Texture.set_from_rgb_data() and
+    Clutter.Image.set_data()
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=674271
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-cache.c           |    4 +++-
+ gi/pygi-marshal-cleanup.c |    4 ++--
+ tests/test_gi.py          |    3 +++
+ 3 files changed, 8 insertions(+), 3 deletions(-)
+
+commit 71246ca0568bf3e9b81e88dd13b6d29e9417e313
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Apr 19 13:11:56 2012 +0200
+
+    Support defining GType properties from Python
+
+    Commit 84e3471 fixed the handling of GType properties for properties
+    that are
+    defined in the C library already. Add the missing support for
+    defining such
+    properties in Python as well.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=674351
+
+ gi/_gobject/gobjectmodule.c   |    5 ++++-
+ gi/_gobject/propertyhelper.py |    9 ++++++---
+ tests/test_properties.py      |   42
+ ++++++++++++++++++++++++++++++++++++++---
+ 3 files changed, 49 insertions(+), 7 deletions(-)
+
+commit 2158ecd05a2770d6538bae67d01d1f718855a7d4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Apr 19 16:12:29 2012 +0200
+
+    Fix typo in previous commit
+
+    In the test case, actually assign the newly created object, so that
+    we test the
+    properties of the right object.
+
+ tests/test_everything.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 84e3471ba4595534cbe6875f1c8b77776e1d1814
+Author: Bastian Winkler <buz@netbuz.org>
+Date:   Wed Apr 18 21:44:08 2012 +0200
+
+    Handle GType properties correctly
+
+    Fix conversion from/to properties of type G_TYPE_GTYPE
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=674351
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygtype.c    |    9 +++++++--
+ tests/test_everything.py |   15 +++++++++++++++
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+commit d1362451e070e156d2f49c9cde930cc38befb12b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Apr 19 07:27:10 2012 +0200
+
+    Add missing GObject.TYPE_GTYPE
+
+ gi/_gobject/__init__.py  |    1 +
+ gi/_gobject/constants.py |    1 +
+ 2 files changed, 2 insertions(+)
+
+commit d3225f1540e09719caa73e52d402e946da3add24
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Apr 10 12:44:00 2012 +0200
+
+    Fix test_mainloop.py for Python 3
+
+ tests/test_mainloop.py |    9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+commit 903283119896f3e054694484da4147788b02ce60
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Apr 9 15:20:39 2012 +0200
+
+    Make callback exception propagation test stricter
+
+    Propagating Python exceptions from callbacks through the C context
+    back to the
+    original caller does not currently happen, is nontrivial/unsafe
+    to implement,
+    and not desirable at this point any more as by now we have established
+    the
+    current behaviour. So remove the catching of ZeroDivisionError in
+    the tests.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=616279
+
+ tests/test_everything.py |   16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+commit 0fd900d351c8d7d57dc6a1b049ee05f342f6ab1d
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Sun Mar 18 15:59:58 2012 -0700
+
+    Add context management to freeze_notify() and handler_block().
+
+    These methods now return a context manager object. Within the
+    __exit__ method
+    thaw_notify() and handler_unblock() are called respectively. This
+    allows
+    statements like the following:
+
+    with obj.freeze_notify():
+        obj.props.width = 100
+        obj.props.height = 100
+        obj.props.opacity = 0.5
+
+    This does not affect standard usage of these methods.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672324
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c |  138 ++++++++++++++++++++++++++++++++++++++---
+ tests/test_gobject.py   |  158
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 288 insertions(+), 8 deletions(-)
+
+commit c0922589964c1d8bffe5a56d2f56df96eedfac10
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Apr 4 19:08:54 2012 +0200
+
+    Add support for GFlags properties
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=620943
+
+ gi/_gobject/propertyhelper.py |    9 +++++++--
+ tests/test_properties.py      |   28 +++++++++++++++++++++++++++-
+ 2 files changed, 34 insertions(+), 3 deletions(-)
+
+commit d4054be9de3b7e4ed64c8172ebbde0a697462c79
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Apr 4 17:54:52 2012 +0200
+
+    Wrap GLib.Source.is_destroyed() method
+
+    Based on original patch from Bryan Silverthorn.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=524719
+
+ gi/_glib/pygsource.c |   15 +++++++++++++++
+ tests/test_source.py |   24 ++++++++++++++++++++++++
+ 2 files changed, 39 insertions(+)
+
+commit 05030a95a4d3090162ed5f510a26d69bbb152942
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Apr 4 15:59:24 2012 +0200
+
+    Fix error message when trying to override a non-GI class
+
+    Based on original patch by Juanje Ojeda <jojeda@emergya.es>.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=646667
+
+ gi/overrides/__init__.py |    7 ++++---
+ tests/test_overrides.py  |   13 +++++++++++++
+ 2 files changed, 17 insertions(+), 3 deletions(-)
+
+commit 96f14989baea76fe8692f10c1a37e2dfc45fecbf
+Author: Steve Frécinaux <code@istique.net>
+Date:   Wed Apr 4 15:30:55 2012 +0200
+
+    Fix segfault when accessing __grefcount__ before creating the GObject
+
+    When creating a new instance using Type() and trying to access
+    __grefcount__ before calling the subclass's __init__ function, there
+    used to be a segmentation fault because we were trying to access the
+    not yet created object. Now raise a proper exception instead.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=640434
+
+    Co-authored-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c |    4 ++++
+ tests/test_gobject.py   |   11 +++++++++++
+ 2 files changed, 15 insertions(+)
+
+commit 24cc09a7105299805fcc5bc151f53ac69958d728
+Author: Steve Frécinaux <code@istique.net>
+Date:   Wed Feb 9 18:37:33 2011 +0100
+
+    Do not bind gobject_get_data() and gobject_set_data()
+
+    They will basically cause a crash if misused, and you can always use a
+    python member attribute instead.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=641944
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c |   40 ----------------------------------------
+ 1 file changed, 40 deletions(-)
+
+commit 2a5a33a9c9c170830c98c2e32fa8dcea3c35f2e6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Apr 3 22:26:34 2012 +0200
+
+    Add test case for multiple GLib.MainLoop instances
+
+    Commit 832f16f9 fixed a lockup with multiple GLib.MainLoops. Add
+    corresponding
+    test case.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=663068
+
+ tests/test_mainloop.py |   25 ++++++++++++++++++++++++-
+ 1 file changed, 24 insertions(+), 1 deletion(-)
+
+commit d03696c1aaa7e66f8f16554cf4a4b97addb5aea1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Tue Feb 21 15:13:42 2012 +0100
+
+    Add a ccallback type which is used to invoke callbacks passed to
+    a vfunc
+
+    Used when overriding methods like gtk_container_forall wich pass in a
+    callback that needs to be executed on internal children:
+        def do_forall(self, callback, userdata):
+            callback(self.custom_child, userdata)
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=644926
+
+    Co-authored-by: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+    Co-authored-by: Simon Schampijer <simon@laptop.org>
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/Makefile.am                |    2 +
+ gi/gimodule.c                 |    1 +
+ gi/module.py                  |    5 +++
+ gi/pygi-argument.c            |   12 +----
+ gi/pygi-cache.c               |   28 ++++++++++--
+ gi/pygi-cache.h               |    9 ++--
+ gi/pygi-ccallback.c           |  100
+ +++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-ccallback.h           |   41 +++++++++++++++++
+ gi/pygi-closure.c             |   50 ++++++++++++++++++++-
+ gi/pygi-invoke-state-struct.h |    2 +
+ gi/pygi-invoke.c              |   73 +++++++++++++++++++++---------
+ gi/pygi-invoke.h              |    3 ++
+ gi/pygi-private.h             |    1 +
+ gi/pygi.h                     |   10 +++++
+ tests/test_gi.py              |   16 +++++++
+ 15 files changed, 312 insertions(+), 41 deletions(-)
+
+commit db7e1d078db16b6f11dee51aa97525c451346632
+Author: Alberto Mardegan <alberto.mardegan@canonical.com>
+Date:   Tue Mar 27 17:34:48 2012 +0200
+
+    Regression test: marshalling GValues in GHashTable
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=668903
+
+    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ tests/test_everything.py |   19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+commit 7c0017c30129a8db391f902ed592782200d69c64
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Mon Mar 26 17:55:41 2012 +0200
+
+    Bump version to 3.3.1
+
+    3.2.x is built from the pygobject-3-2 branch now, and 3.2.0 is
+    released. So
+    continue with 3.3.x on master.
+
+ configure.ac |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 8309f305e5ce508fc5f6411c8153bea2cee5f741
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Mon Mar 26 17:51:37 2012 +0200
+
+    Update .gitignore
+
+    - Ignore *.o, backup files, and generated Makefiles in all
+    subdirectories
+    - Ignore *.pyc files.
+    - Do not ignore .gitignore, we actually want to track this.
+
+ .gitignore |   61
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 61 insertions(+)
+
+commit 81de788a72b40acd2f857718d78bdeea01d12eb1
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Mon Mar 26 17:45:08 2012 +0200
+
+    Fix "distcheck" and tests with out-of-tree builds
+
+    - Symlink *.py files from srcdir into builddir during build, as
+    Python does not
+      accept the extensions and modules in different paths.
+    - "make clean" should remove *.pyc files
+    - tests/runtests.py: Look for tests in srcdir, not in builddir
+
+ Makefile.am               |    6 ++++--
+ gi/Makefile.am            |   13 +++++++++++--
+ gi/_glib/Makefile.am      |   12 ++++++++++--
+ gi/_gobject/Makefile.am   |   12 ++++++++++--
+ gi/overrides/Makefile.am  |   10 ++++++++++
+ gi/repository/Makefile.am |   11 +++++++++++
+ tests/runtests.py         |    6 ++++--
+ 7 files changed, 60 insertions(+), 10 deletions(-)
+
+commit f83d95e6fff572bda659a48e309b4524dafa4e83
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 11:14:03 2012 -0300
+
+    Add a pep8 check to the makefile
+
+    Also reorganize the pyflakes check, since target dependencies do not
+    take the exit status of the shell command into account.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ tests/Makefile.am |    9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+commit d1f5474c6c50163aefe660e0689dc7f30e6cd48b
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:56:59 2012 -0300
+
+    PEP8: Remaining whitespace fixes
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/Icon View/iconviewedit.py |    7 +++---
+ demos/gtk-demo/demos/Tree View/liststore.py    |   28
+ ++++++++++++------------
+ demos/gtk-demo/demos/appwindow.py              |   10 ++++-----
+ demos/gtk-demo/demos/rotatedtext.py            |    2 +-
+ examples/cairo-demo.py                         |    4 ++--
+ tests/test_gi.py                               |   12 +++++-----
+ tests/test_overrides.py                        |    2 +-
+ 7 files changed, 32 insertions(+), 33 deletions(-)
+
+commit 032fcce2bf6070a9001cbb780e90403051e303b1
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:56:03 2012 -0300
+
+    PEP8: Add spaces before #
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/drawingarea.py |    6 +++---
+ demos/gtk-demo/demos/images.py      |   10 +++++-----
+ demos/gtk-demo/demos/rotatedtext.py |    2 +-
+ gi/__init__.py                      |    2 +-
+ gi/_glib/option.py                  |    2 +-
+ gi/_gobject/__init__.py             |    2 +-
+ gi/overrides/GLib.py                |   12 ++++++------
+ gi/types.py                         |    4 ++--
+ tests/runtests.py                   |    2 +-
+ tests/test_gdbus.py                 |    4 ++--
+ 10 files changed, 23 insertions(+), 23 deletions(-)
+
+commit 6a58edbf11c612e9a14347b1556d1e0dd2ec1823
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:52:05 2012 -0300
+
+    PEP8: Add missing whitespace after : and ,
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/Tree View/liststore.py |    2 +-
+ demos/gtk-demo/demos/appwindow.py           |    2 +-
+ tests/test_everything.py                    |   23
+ +++++++++--------------
+ tests/test_gi.py                            |    2 +-
+ tests/test_overrides.py                     |    2 +-
+ 5 files changed, 13 insertions(+), 18 deletions(-)
+
+commit a8d361e66b2a0e09cfa5dbade4725074b0cc2fd1
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:49:52 2012 -0300
+
+    PEP8: Remove too whitespace before }
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ tests/test_overrides.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2b8eb9fa5b9ca454d7130b3eec15a982fee1bdc9
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:49:27 2012 -0300
+
+    PEP8: Remove too many blank lines
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/rotatedtext.py |    1 -
+ tests/test_overrides.py             |    1 -
+ 2 files changed, 2 deletions(-)
+
+commit 03e597cb8f3b075efae556ee51a598695a883ad3
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:48:59 2012 -0300
+
+    PEP8: Fix whitespace around operators
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/images.py |    2 +-
+ examples/cairo-demo.py         |    8 ++++----
+ tests/test_gi.py               |    4 ++--
+ tests/test_overrides.py        |    8 ++++----
+ tests/test_properties.py       |   14 +++++++-------
+ tests/test_signal.py           |    2 +-
+ 6 files changed, 19 insertions(+), 19 deletions(-)
+
+commit 21aeb19107b718293116e51ecd6479d4d7198b8f
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:46:17 2012 -0300
+
+    PEP8: Remove whitespace before (
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py     |    2 +-
+ demos/gtk-demo/demos/Entry/entry_completion.py |    2 +-
+ demos/gtk-demo/demos/Entry/search_entry.py     |   12 ++---
+ demos/gtk-demo/demos/Icon View/iconviewedit.py |    4 +-
+ demos/gtk-demo/demos/Tree View/liststore.py    |    2 +-
+ demos/gtk-demo/demos/dialogs.py                |   12 ++---
+ demos/gtk-demo/demos/pickers.py                |    8 +--
+ demos/gtk-demo/demos/pixbuf.py                 |    4 +-
+ demos/gtk-demo/demos/printing.py               |    8 +--
+ demos/gtk-demo/demos/rotatedtext.py            |    2 +-
+ demos/gtk-demo/gtk-demo.py                     |    4 +-
+ gi/module.py                                   |    4 +-
+ gi/overrides/Pango.py                          |    2 +-
+ gi/pygtkcompat.py                              |    4 +-
+ tests/test_everything.py                       |    4 +-
+ tests/test_overrides.py                        |   62
+ ++++++++++++------------
+ 16 files changed, 68 insertions(+), 68 deletions(-)
+
+commit b04d209930ab01bae6563b0d714aec829739bdc6
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:40:46 2012 -0300
+
+    PEP8: Remove whitespace around {}
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ tests/test_signal.py |   20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+commit 725483a5dc36739dc7836716b5d6d48091564bf8
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:38:59 2012 -0300
+
+    PEP8: run via --fix from craigds fork
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py       |    1 +
+ demos/gtk-demo/demos/Entry/entry_completion.py   |    1 +
+ demos/gtk-demo/demos/Entry/search_entry.py       |    3 +-
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    1 +
+ demos/gtk-demo/demos/Icon View/iconviewedit.py   |    2 +
+ demos/gtk-demo/demos/Tree View/liststore.py      |    3 ++
+ demos/gtk-demo/demos/appwindow.py                |   13 ++++-
+ demos/gtk-demo/demos/assistant.py                |    1 +
+ demos/gtk-demo/demos/builder.py                  |    1 +
+ demos/gtk-demo/demos/button_box.py               |    1 +
+ demos/gtk-demo/demos/clipboard.py                |    2 +-
+ demos/gtk-demo/demos/colorselector.py            |    1 +
+ demos/gtk-demo/demos/combobox.py                 |    4 +-
+ demos/gtk-demo/demos/dialogs.py                  |    2 +
+ demos/gtk-demo/demos/drawingarea.py              |    1 +
+ demos/gtk-demo/demos/expander.py                 |    4 +-
+ demos/gtk-demo/demos/images.py                   |   10 ++--
+ demos/gtk-demo/demos/infobars.py                 |    2 +
+ demos/gtk-demo/demos/links.py                    |    2 +
+ demos/gtk-demo/demos/menus.py                    |    2 +
+ demos/gtk-demo/demos/pickers.py                  |    2 +
+ demos/gtk-demo/demos/pixbuf.py                   |    2 +
+ demos/gtk-demo/demos/printing.py                 |    5 +-
+ demos/gtk-demo/demos/rotatedtext.py              |    4 +-
+ demos/gtk-demo/demos/test.py                     |    1 +
+ demos/gtk-demo/gtk-demo.py                       |    9 ++--
+ examples/cairo-demo.py                           |   57
+ +++++++++++++---------
+ examples/option.py                               |    1 -
+ examples/properties.py                           |    1 +
+ examples/signal.py                               |    4 ++
+ gi/__init__.py                                   |    2 +
+ gi/_glib/option.py                               |    4 +-
+ gi/_gobject/__init__.py                          |    1 +
+ gi/_gobject/propertyhelper.py                    |    5 +-
+ gi/module.py                                     |    3 ++
+ gi/overrides/GIMarshallingTests.py               |    2 +
+ gi/overrides/GLib.py                             |   12 +++--
+ gi/overrides/Gdk.py                              |    9 ++++
+ gi/overrides/Gio.py                              |    4 ++
+ gi/overrides/Gtk.py                              |   56
+ +++++++++++++++++++--
+ gi/overrides/Pango.py                            |    2 +
+ gi/overrides/__init__.py                         |    5 +-
+ gi/pygtkcompat.py                                |   16 ++++--
+ gi/types.py                                      |    4 ++
+ tests/test_everything.py                         |   30 ++++++++----
+ tests/test_gdbus.py                              |    1 +
+ tests/test_gi.py                                 |   30 ++++++------
+ tests/test_gobject.py                            |    3 +-
+ tests/test_mainloop.py                           |    1 +
+ tests/test_option.py                             |    1 +
+ tests/test_overrides.py                          |   55
+ +++++++++++----------
+ tests/test_properties.py                         |   11 ++++-
+ tests/test_signal.py                             |   32 +++++++++++-
+ tests/test_source.py                             |    1 +
+ tests/test_subprocess.py                         |    1 +
+ tests/test_thread.py                             |    1 +
+ tests/test_uris.py                               |    1 +
+ tests/testmodule.py                              |    1 +
+ 58 files changed, 326 insertions(+), 111 deletions(-)
+
+commit 917275d4aa81db39ccaca34fa514032fb80a3187
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:33:29 2012 -0300
+
+    PEP8: Remove spaces around = for keyword arguments
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/appwindow.py     |    8 ++++----
+ demos/gtk-demo/demos/colorselector.py |    4 ++--
+ demos/gtk-demo/gtk-demo.py            |   24 ++++++++++++------------
+ examples/option.py                    |    4 ++--
+ gi/_glib/option.py                    |    2 +-
+ gi/overrides/Gtk.py                   |    2 +-
+ tests/test_gi.py                      |   26 +++++++++++++-------------
+ tests/test_option.py                  |    2 +-
+ tests/test_overrides.py               |    8 ++++----
+ 9 files changed, 40 insertions(+), 40 deletions(-)
+
+commit 0c85656f95d3cb31becff10bbee7faae7b0b875b
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:28:28 2012 -0300
+
+    PEP8: Remove trailing ;
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/appwindow.py |    4 ++--
+ demos/gtk-demo/demos/dialogs.py   |   30 +++++++++++++++---------------
+ demos/gtk-demo/demos/links.py     |    2 +-
+ demos/gtk-demo/demos/pixbuf.py    |    2 +-
+ demos/gtk-demo/demos/printing.py  |    8 ++++----
+ gi/overrides/Gtk.py               |    4 ++--
+ tests/test_everything.py          |   22 +++++++++++-----------
+ tests/test_gi.py                  |    2 +-
+ tests/test_overrides.py           |    8 ++++----
+ 9 files changed, 41 insertions(+), 41 deletions(-)
+
+commit 32cc594ab6dfbd4843f3db5ec8338d31ad5df6c6
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 22 10:24:40 2012 -0300
+
+    Remove all tabs and fix indentation
+
+    By running the whole source tree via the indent.py script found
+    in the Python distribution.
+
+ demos/gtk-demo/demos/Entry/search_entry.py     |    4 +-
+ demos/gtk-demo/demos/Icon View/iconviewedit.py |   41 +++----
+ demos/gtk-demo/demos/Tree View/liststore.py    |    8 +-
+ demos/gtk-demo/demos/appwindow.py              |   18 +--
+ demos/gtk-demo/demos/dialogs.py                |   26 ++--
+ demos/gtk-demo/demos/expander.py               |    6 +-
+ demos/gtk-demo/demos/images.py                 |    2 +-
+ demos/gtk-demo/demos/links.py                  |    2 +-
+ demos/gtk-demo/demos/rotatedtext.py            |   20 ++--
+ gi/_glib/option.py                             |    2 +-
+ gi/_gobject/constants.py                       |    1 -
+ gi/importer.py                                 |    1 -
+ gi/module.py                                   |   10 +-
+ gi/overrides/GLib.py                           |   11 +-
+ gi/overrides/Gdk.py                            |   30 ++---
+ gi/overrides/Gio.py                            |    4 +-
+ gi/overrides/Gtk.py                            |  150
+ ++++++++++++------------
+ gi/overrides/Pango.py                          |    1 -
+ gi/overrides/__init__.py                       |   10 +-
+ gi/pygtkcompat.py                              |    2 +-
+ tests/compathelper.py                          |    2 +-
+ tests/runtests.py                              |   19 ++-
+ tests/test_everything.py                       |   22 ++--
+ tests/test_gdbus.py                            |   11 +-
+ tests/test_gi.py                               |   38 +++---
+ tests/test_gobject.py                          |    2 +-
+ tests/test_interface.py                        |    1 -
+ tests/test_option.py                           |    1 -
+ tests/test_overrides.py                        |   78 ++++++------
+ tests/test_properties.py                       |    2 +-
+ tests/test_uris.py                             |    1 -
+ 31 files changed, 255 insertions(+), 271 deletions(-)
+
+commit c375e3136f0f48eb8a6717c0053155db088b329d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Thu Mar 22 10:32:43 2012 +0100
+
+    tests: Replace deprecated Python API
+
+    failIf â†’ assertFalse, failUnless â†’ assertTrue
+
+    Caught by the previous commit of making deprecations fatal.
+
+ tests/test_option.py      |   10 +++----
+ tests/test_overrides.py   |   66
+ ++++++++++++++++++++++-----------------------
+ tests/test_properties.py  |   14 +++++-----
+ tests/test_pygtkcompat.py |   18 ++++++-------
+ tests/test_signal.py      |    4 +--
+ 5 files changed, 56 insertions(+), 56 deletions(-)
+
+commit 32525e565cc48454cdacbc44ad3fd751b81cb7e3
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Thu Mar 22 10:31:22 2012 +0100
+
+    Fail tests if they use or encounter deprecations
+
+ tests/Makefile.am |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 65762243a34af014950527c323a51a29d40fb3e1
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Thu Mar 22 10:15:16 2012 +0100
+
+    Do not run tests in two phases any more
+
+    As we dropped the static bindings a while ago, there is no need any
+    more to run
+    the tests in two phases (static/GI). Now just run them all in one go,
+    simplifying tests/Makefile.am.
+
+    As this changes the order of the tests, defining $GSETTINGS_SCHEMA_DIR
+    now
+    needs to happen even further, so move it from tests/test_overrides.py
+    to
+    tests/runtests.py.
+
+ tests/Makefile.am       |   33 ++++++++++++---------------------
+ tests/runtests.py       |    7 +++++++
+ tests/test_overrides.py |    6 ------
+ 3 files changed, 19 insertions(+), 27 deletions(-)
+
+commit 3b4ae83a0ece8e3aed1de5452e2acd32841e629a
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Thu Mar 22 09:58:21 2012 +0100
+
+    test_overrides: Find local gsettings schema with current glib
+
+    With current glib, gsettings now fails to find the gschemas.compiled
+    during the
+    tests. Move the setting of $GSETTINGS_SCHEMA_DIR before the module
+    import,
+    which makes this work again.
+
+ tests/test_overrides.py |    9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+commit 927f7877ffa5e16c4cabcecbc05656ee0ec6a167
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Wed Mar 21 21:09:24 2012 +0100
+
+    Add GtkComboBoxEntry compatibility
+
+    This widget has been removed in Gtk+ 3, add a small wrapper to the
+    compat module to make at least basic pygtk programs that use it work.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672589
+
+ gi/pygtkcompat.py         |   19 +++++++++++++++++++
+ tests/test_pygtkcompat.py |   22 ++++++++++++++++++++++
+ 2 files changed, 41 insertions(+)
+
+commit b322d6a1f6d44bace4eefb98558cfe94a73a727c
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Wed Mar 21 16:01:35 2012 -0300
+
+    Correct review comments from Martin
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672578
+
+ tests/test_everything.py  |    4 ++--
+ tests/test_pygtkcompat.py |   18 ++++++++++++++++++
+ 2 files changed, 20 insertions(+), 2 deletions(-)
+
+commit c8bc6ae10cfe8b2eff4204ec2175907a6eb0585a
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Wed Mar 21 14:45:53 2012 -0300
+
+    Correct pyflakes warnings/errors
+
+    And add a target to make check that runs pyflakes.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672578
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py       |    2 +-
+ demos/gtk-demo/demos/Entry/entry_completion.py   |    2 +-
+ demos/gtk-demo/demos/Entry/search_entry.py       |   12 +-
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    2 +-
+ demos/gtk-demo/demos/Icon View/iconviewedit.py   |    2 +-
+ demos/gtk-demo/demos/Tree View/liststore.py      |    3 +-
+ demos/gtk-demo/demos/appwindow.py                |   13 +-
+ demos/gtk-demo/demos/assistant.py                |    4 +-
+ demos/gtk-demo/demos/builder.py                  |    4 +-
+ demos/gtk-demo/demos/button_box.py               |    2 +-
+ demos/gtk-demo/demos/clipboard.py                |    2 +-
+ demos/gtk-demo/demos/colorselector.py            |    2 +-
+ demos/gtk-demo/demos/combobox.py                 |    4 +-
+ demos/gtk-demo/demos/dialogs.py                  |    4 +-
+ demos/gtk-demo/demos/drawingarea.py              |    2 +-
+ demos/gtk-demo/demos/expander.py                 |    4 +-
+ demos/gtk-demo/demos/images.py                   |    8 +-
+ demos/gtk-demo/demos/infobars.py                 |    2 +-
+ demos/gtk-demo/demos/links.py                    |    2 +-
+ demos/gtk-demo/demos/menus.py                    |    5 +-
+ demos/gtk-demo/demos/pickers.py                  |    2 +-
+ demos/gtk-demo/demos/pixbuf.py                   |    2 +-
+ demos/gtk-demo/demos/printing.py                 |    3 +-
+ demos/gtk-demo/demos/rotatedtext.py              |    6 +-
+ demos/gtk-demo/gtk-demo.py                       |    9 +-
+ examples/cairo-demo.py                           |    2 +-
+ gi/__init__.py                                   |    4 +
+ gi/_glib/__init__.py                             |  101 ++++++++++-
+ gi/_glib/option.py                               |    1 +
+ gi/_gobject/__init__.py                          |  203
+ +++++++++++++++++++---
+ gi/_gobject/constants.py                         |    2 -
+ gi/_gobject/propertyhelper.py                    |    4 +-
+ gi/importer.py                                   |    2 +-
+ gi/module.py                                     |    1 -
+ gi/overrides/Gtk.py                              |    1 -
+ gi/overrides/__init__.py                         |    1 -
+ gi/pygtkcompat.py                                |    2 +
+ gi/types.py                                      |    3 +
+ tests/Makefile.am                                |    5 +
+ tests/test_everything.py                         |    6 +-
+ tests/test_gi.py                                 |    8 +-
+ tests/test_option.py                             |   10 +-
+ tests/test_overrides.py                          |   30 ++--
+ tests/test_properties.py                         |   12 +-
+ tests/test_pygtkcompat.py                        |    4 -
+ tests/test_signal.py                             |    4 +-
+ tests/test_source.py                             |    6 +-
+ 47 files changed, 377 insertions(+), 138 deletions(-)
+
+commit 39650906559fcc39b4be406fa7e25c4788d349a3
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Mar 21 16:59:33 2012 +0100
+
+    Make tests fail on CRITICAL logs, too, and apply to all tests
+
+    Instead of setting warnings/criticals to fatal in individual test
+    modules, do
+    it in runtests.py, so that it applies to all tests.
+
+    We currently have some tests which are known to generate CRITICALs
+    (now marked
+    with FIXME), and some WARNINGs (as they test behaviour with known-bad
+    values).
+    For these, warnings/criticals are now explicitly permitted.
+
+ tests/runtests.py        |    1 +
+ tests/test_gi.py         |    7 ++++++-
+ tests/test_overrides.py  |   14 +++++++-------
+ tests/test_properties.py |   36 +++++++++++++++++++++---------------
+ 4 files changed, 35 insertions(+), 23 deletions(-)
+
+commit efcb4b0b32c4dda06c3eeec83802fc0f302f0d27
+Author: Alberto Mardegan <alberto.mardegan@canonical.com>
+Date:   Tue Mar 20 14:55:07 2012 +0400
+
+    Support marshalling GI_TYPE_TAG_INTERFACE
+
+    Marshalling of interfaces got broken with commit
+    7746d2188ac4933c2c9011d84525d1e62fc18953.
+
+    Also, do not abort on unsupported types, but log a critical failure
+    and
+    continue.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=668903
+
+ gi/pygi-marshal-from-py.c |    3 ++-
+ gi/pygi-marshal-to-py.c   |    3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 8d85d6639778ec6364235071d272d67e7aae49ae
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Mar 21 14:34:36 2012 +0100
+
+    Fix warnings on None values in added tree/list store rows
+
+    Commit bf8c95836e1c changed the List/TreeStore overrides to use
+    insert_with_valuesv(), but supplied all columns instead of just
+    those which are
+    not None. With this, None values cause warnings like
+
+    (runtests.py:12375): Gtk-WARNING **:
+    /build/buildd/gtk+3.0-3.3.20/./gtk/gtkliststore.c:851: Unable to
+    convert from (null) to gboolean
+
+    Update the tests to make warnings fatal, to catch this better.
+
+    Change _convert_row() to skip the None entries and return the list
+    of not-None
+    columns, and use the latter instead of a simple range(n_columns). This
+    matches
+    the behaviour before bf8c95836e1c, where columns with None values
+    were skipped
+    as well.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672463
+
+ gi/overrides/Gtk.py     |   26 ++++++++++++++------------
+ tests/test_overrides.py |    5 +++++
+ 2 files changed, 19 insertions(+), 12 deletions(-)
+
+commit 38aecc481741fd3a319a76a0ec8bf5329a483876
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Mar 21 15:21:02 2012 +0100
+
+    pygtkcompat test: Properly clean up PixbufLoader
+
+    Tests currently give
+
+    (runtests.py:15072): GdkPixbuf-WARNING **: GdkPixbufLoader finalized
+    without calling gdk_pixbuf_loader_close() - this is not allowed. You
+    must explicitly end the data stream to the loader before dropping
+    the last reference.
+
+    Fix this by calling close().
+
+ tests/test_pygtkcompat.py |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 5e0e5e72a4436badd09f0aa07f62960afcdca8c6
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Mon Mar 19 16:58:22 2012 +0100
+
+    post-release bump
+
+    Use 3.1.93 for now, this will most likely become 3.2.0 as it is.
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 88924e399d7ccf7af2e9a78720e0c508cd6080d8
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Mon Mar 19 16:41:17 2012 +0100
+
+    Release 3.1.92
+
+ NEWS |   46 ++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 46 insertions(+)
+
+commit b41e6139befb984c0b78bcefe2630ab1393b4b40
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Mon Mar 19 16:14:54 2012 +0100
+
+    README: Update current maintainers
+
+    Also update Martin's email address.
+
+ README         |   10 ++++++----
+ pygobject.doap |    2 +-
+ 2 files changed, 7 insertions(+), 5 deletions(-)
+
+commit 45e27ba7e447552057a2950fc768c63ff2e6612e
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Mon Mar 19 16:11:22 2012 +0100
+
+    Bump version to 3.1.92, in sync with GNOME
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 77d358f8c5f524259249ea686899e3a4da05562e
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Mon Mar 19 11:54:07 2012 -0300
+
+    Correct Gtk.TreePath.__iter__ to work with Python 3
+
+ gi/overrides/Gtk.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 1f18bcb37bdc42368ad9a07c7f348f736c2f665d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Mon Mar 19 15:54:13 2012 +0100
+
+    Fix pygtkcompat.py to work with Python 3
+
+ gi/pygtkcompat.py |   20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+commit 96a9f92da801989464fbcedf6d849819f6dbea64
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Mon Mar 19 15:32:22 2012 +0100
+
+    Fix test_everything.TestSignals.test_object_param_signal test case
+
+    The callback gets two arguments, not one. This short-circuited
+    the actual
+    assertions. Fix the arguments and update the refcount check, as it
+    is not
+    exactly two at the moment.
+
+ tests/test_everything.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit ba00afb1e50759b2b321f16e05a15946053cdafa
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Mon Mar 19 10:58:09 2012 -0300
+
+    pygtkcompat: Remove first argument for get_origin()
+
+ gi/pygtkcompat.py         |    5 +++++
+ tests/test_pygtkcompat.py |    5 +++++
+ 2 files changed, 10 insertions(+)
+
+commit 65499246a862ce6a82bc3b0cc74fe8ff82dde687
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Fri Mar 16 16:08:44 2012 -0300
+
+    GtkViewport: Add a default values for the adjustment constructor
+    parameters
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py     |   10 ++++++++++
+ tests/test_overrides.py |   11 +++++++++++
+ 2 files changed, 21 insertions(+)
+
+commit 43c761d9f35252dcb58b9cf2278016d841eea4ec
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Fri Mar 16 16:08:23 2012 -0300
+
+    GtkIconSet: Add a default value for the pixbuf constructor parameter
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py     |   11 +++++++++++
+ tests/test_overrides.py |    6 ++++++
+ 2 files changed, 17 insertions(+)
+
+commit 116d3712251b1b8aa2d4f4a9e40e22f5b9fcbe4f
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Fri Mar 16 16:07:30 2012 -0300
+
+    PangoLayout: Add a default value for set_markup()
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Pango.py   |    3 +++
+ tests/test_overrides.py |    4 ++++
+ 2 files changed, 7 insertions(+)
+
+commit a3ca47b086b7fcf084282be788c5d737dde847ac
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Fri Mar 16 16:06:37 2012 -0300
+
+    Gtk[HV]Scrollbar: Add a default value for the adjustment constructor
+    parameter
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py     |   15 +++++++++++++++
+ tests/test_overrides.py |   14 ++++++++++++++
+ 2 files changed, 29 insertions(+)
+
+commit 458dab08c78cb730dd95bcd67af20a0d73a3af2f
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Fri Mar 16 16:06:12 2012 -0300
+
+    GtkToolButton: Add a default value for the stock_id constructor
+    parameter
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py     |   10 ++++++++++
+ tests/test_overrides.py |    9 ++++++++-
+ 2 files changed, 18 insertions(+), 1 deletion(-)
+
+commit 2f7789a5a1f55ec38c5ff0f96bc5c9023679a333
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Fri Mar 16 16:05:55 2012 -0300
+
+    GtkIconView: Add a default value for the model constructor parameter
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py     |    3 +++
+ tests/test_overrides.py |   11 +++++++++++
+ 2 files changed, 14 insertions(+)
+
+commit 2dd9dadd1bd92c3324e9de209ba8205a9d4106d6
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 15 15:22:46 2012 -0300
+
+    Add a default value for column in Gtk.TreeView.get_cell_area()
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py     |    5 +++++
+ tests/test_overrides.py |    3 +++
+ 2 files changed, 8 insertions(+)
+
+commit bf8c95836e1cc1e1629937cbc69ea3027fb82746
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Thu Mar 15 09:48:10 2012 +0100
+
+    Atomic inserts in Gtk.{List,Tree}Store overrides
+
+    Gtk.{List,Tree}Store's overrides provide append(), insert()
+    etc. methods which
+    take an optional data row array. If this is given, use
+    insert_with_valuesv()
+    instead of creating a new iter and then filling it with data. The
+    latter sent a
+    row-added signal, at which time the row was still empty, and a
+    subsequent
+    row-changed signal. With this we only get a single row-added
+    signal with
+    complete row data.
+
+    Note that this does not change insert_{before,after}(), as there is no
+    counterpart of insert_with_valuesv() which takes a TreeIter instead
+    of a
+    position. For those you will still get two signals, and have to deal
+    with None
+    values.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=671610
+
+ gi/overrides/Gtk.py     |   81
+ +++++++++++++++++++++++++++++------------------
+ tests/test_overrides.py |   74
+ +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 124 insertions(+), 31 deletions(-)
+
+commit f7db4eaf8148f2dd8bf1718152a1dcae509470c7
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Sun Mar 18 16:07:26 2012 +0100
+
+    Fix Gtk.Button constructor to accept use_stock parameter
+
+    Thanks to kalanzun@googlemail.com!
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672318
+
+    Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/overrides/Gtk.py     |    4 +---
+ tests/test_overrides.py |    6 ++++++
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+commit 466337cf2fd091738eeab12c10d250a9d0827284
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Fri Mar 16 16:55:47 2012 -0300
+
+    Correct bad rebase, remove duplicate Window
+
+ gi/overrides/Gtk.py |    7 -------
+ 1 file changed, 7 deletions(-)
+
+commit c60d5ee3c88bd8e1c68ea97f079947cf79d5bb7d
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Mar 15 15:42:28 2012 -0300
+
+    Add a PyGTK compatibility layer
+
+    This module tries quite a bit harder to maintain compatibility
+    with PyGTK, module names, enums, flags and some API.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/Makefile.am            |    3 +-
+ gi/pygtkcompat.py         |  421
+ +++++++++++++++++++++++++++++++++++++++++++++
+ tests/Makefile.am         |    3 +-
+ tests/test_pygtkcompat.py |   77 +++++++++
+ 4 files changed, 502 insertions(+), 2 deletions(-)
+
+commit 680a2e04ac4f80ad16e820d3f753519477c988aa
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Wed Mar 14 15:20:53 2012 -0300
+
+    Add bw-compatible arguments to Gtk.Adjustment
+
+    The argument used to be called page/step_incr, if they
+    are found map them to the existing properties for extra
+    compatibility.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672087
+
+ gi/overrides/Gtk.py |    8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit fbd21ee7176bc1b70547ea464b512c8ffd674187
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Wed Mar 14 17:13:04 2012 -0300
+
+    GtkTreePath: make it iterable
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672093
+
+ gi/overrides/Gtk.py     |    3 +++
+ tests/test_overrides.py |    2 ++
+ 2 files changed, 5 insertions(+)
+
+commit a7b08cb75541612c78d123b1d968be7874e3c481
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Wed Mar 14 13:32:31 2012 -0300
+
+    Add a default argument to TreeModelFilter.set_visible_func()
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672081
+
+ gi/overrides/Gtk.py |   14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+commit 02950cabb38b1b3c9378c42c069eefdbccbce17d
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Wed Mar 14 13:31:41 2012 -0300
+
+    Add a default argument to Gtk.TreeView.set_cursor
+
+    And also make sure that the path is a Gtk.TreePath.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672081
+
+ gi/overrides/Gtk.py     |    4 ++++
+ tests/test_overrides.py |   10 ++++++++++
+ 2 files changed, 14 insertions(+)
+
+commit 7245bd0ae3f6243c79fa8543a0ed1e50e5015844
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Wed Mar 14 13:31:06 2012 -0300
+
+    Add a default argument to Pango.Context.get_metrics()
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672081
+
+ gi/overrides/Pango.py |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit bc1fd8814df6c1e85b586d0fb943c89f7e2b78b5
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Fri Mar 16 13:27:56 2012 +0100
+
+    Fix double-freeing GValues in arrays
+
+    When marshalling a GValue array to C, the GValue items are copied
+    into a C
+    GValue array, not a C GValue pointer
+    array. _pygi_marshal_from_py_array()
+    already calls the cleanup_func for the original item;
+    _pygi_marshal_cleanup_from_py_array() must not do it again, as this
+    would try
+    to g_slice_free the array item.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672224
+
+ gi/pygi-marshal-from-py.c |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit a906b7d1947ba905f959d3f738eb6c29b02f96e7
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Fri Mar 16 00:29:31 2012 -0700
+
+    Renamed "property" class to "Property"
+
+    Renamed to match the rest of the class names in GObject and also
+    not clobber the builtin python property.
+
+    Keep the old "property" identifier for backwards compatibility
+    for now.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672168
+
+    Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ examples/properties.py        |    6 +--
+ gi/_gobject/__init__.py       |    7 +--
+ gi/_gobject/propertyhelper.py |   12 +++---
+ tests/test_interface.py       |    4 +-
+ tests/test_properties.py      |   94
+ ++++++++++++++++++++---------------------
+ 5 files changed, 62 insertions(+), 61 deletions(-)
+
+commit d7d28d717e38c0546529b09b8b571a5cc631c5b5
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Mar 14 22:52:47 2012 +0100
+
+    Fix Python to C marshalling of GValue arrays
+
+    For GValues we cannot just copy the GValue memory in
+    _pygi_marshal_from_py_array(), as the from_py_cleanup() function
+    clears and
+    releases the GValue and with it its v_pointer. Use g_value_copy()
+    to copy by
+    value instead.
+
+    This uncovered another bug in _pygi_marshal_cleanup_from_py_array():
+    It always
+    assumed that C arrays contained pointers, but this is not the case
+    for GValue
+    arrays: these are actual struct arrays, not struct pointer arrays
+    (cf. their
+    construction in _pygi_marshal_from_py_array()). Check if an array
+    contains
+    pointers or values and compute the correct array item pointer for
+    both cases.
+
+    Also add a corresponding test case for marshalling GValue arrays
+    from C back to
+    Python, which works fine.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672065
+
+ gi/pygi-marshal-cleanup.c |   19 ++++++++++++++-----
+ gi/pygi-marshal-from-py.c |   13 ++++++++++++-
+ tests/test_gi.py          |    8 ++++++++
+ 3 files changed, 34 insertions(+), 6 deletions(-)
+
+commit 27ac9c1de6487035b18ef4511c155d251cb6d39d
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Fri Mar 16 09:59:57 2012 +0100
+
+    Correct the Gtk.Window hierarchy
+
+    We need to make sure that all Gtk.Dialog subclasses inherit from
+    the overridden Window class. For that to be done automaticly we need
+    to create the Window class before the Dialog class.
+
+    Now when it's inherited properly we need to avoid calling the Window
+    constructor twice as it passes in a construct-only parameter. So add
+    **kwargs to the Window constructor to allow us to pass in any kind
+    of GObject property to it and refactor the Dialog subclasses to pass
+    in all properties to the same constructor.
+
+    Also adds a bunch of tests to make sure that the hiearchy is correct.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672158
+
+    Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/overrides/Gtk.py     |   56
+ +++++++++++++++++++++++------------------------
+ tests/test_overrides.py |   35 +++++++++++++++++++++++++++--
+ 2 files changed, 61 insertions(+), 30 deletions(-)
+
+commit 77ab27ab8a580d98f76730f075e083e1e870f55e
+Author: simon <simon@gerty>
+Date:   Tue Mar 13 01:41:53 2012 -0700
+
+    Renamed getter/setter instance attributes to fget/fset respectively.
+
+    The python 'property' class allows for decoration of methods using
+    .getter and .setter. These were added as methods to the
+    GObject.property
+    class to match that of the python property class and allow for
+    decoratored
+    setter methods.
+
+    In addition, __call__ was added to allow an instantiated decorator
+    with
+    args to also decorate a method:
+
+    class C(GObject.GObject):
+        _value = 0
+        @GObject.property(type=int, default=0)
+        def propInt(self):
+            return self._value
+        @propInt.setter
+        def propInt(self, value):
+            self._value = value
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=586181
+
+    Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/_gobject/__init__.py       |   10 +++----
+ gi/_gobject/propertyhelper.py |   59
+ ++++++++++++++++++++++++++++++-----------
+ tests/test_properties.py      |   41 ++++++++++++++++++++++++++++
+ 3 files changed, 89 insertions(+), 21 deletions(-)
+
+commit 174a61fb3149c07dab5cc35e64825922cdefcb95
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Tue Mar 13 17:10:13 2012 -0300
+
+    Add Gtk.Arrow/Gtk.Window constructor override
+
+    Adds argument that makes them compatible with PyGTK.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672045
+
+ gi/overrides/Gtk.py |   17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+commit 7746d2188ac4933c2c9011d84525d1e62fc18953
+Author: Michel Dänzer <michel@daenzer.net>
+Date:   Fri Mar 9 12:26:53 2012 +0100
+
+    Fix marshalling to/from Python to work on big endian machines.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=668903
+
+    Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/pygi-argument.c        |   25 ++++++++++++++++---------
+ gi/pygi-marshal-from-py.c |   32 +++++++++++++++++++++++++-------
+ gi/pygi-marshal-to-py.c   |   19 +++++++++++++++++++
+ 3 files changed, 60 insertions(+), 16 deletions(-)
+
+commit 0591cc6f160ae6e9d8c3970934ae105ef340d7d3
+Author: Michel Dänzer <michel@daenzer.net>
+Date:   Thu Mar 8 12:21:28 2012 +0100
+
+    Use gi_cclosure_marshal_generic instead of duplicating it.
+
+    Bump gobject-introspection dependency to ensure that we have the
+    corresponding
+    changes in g-i.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=668903
+
+    Signed-off-by: Michel Dänzer <michel@daenzer.net>
+    Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ configure.ac                 |    3 +-
+ gi/_gobject/Makefile.am      |    7 +-
+ gi/_gobject/ffi-marshaller.c |  194
+ ------------------------------------------
+ gi/_gobject/ffi-marshaller.h |   31 -------
+ gi/_gobject/gobjectmodule.c  |   12 +--
+ 5 files changed, 4 insertions(+), 243 deletions(-)
+
+commit 8ca828825a2c47080055c5f986979aac8da9a93f
+Author: René Stadler <rene.stadler@collabora.co.uk>
+Date:   Mon Mar 5 21:10:55 2012 +0100
+
+    Override Gtk.TreeView.get_visible_range to fix return
+
+    Just like IconView.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=671409
+
+ gi/overrides/Gtk.py |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 4824ceaa77b59788325a2c1ee0f994d4e74d7a1c
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Sun Mar 4 16:41:18 2012 +0100
+
+    Plug memory leak in _is_union_member
+
+    When we found the member, unref the objects before breaking out of the
+    loop.
+
+ gi/pygi-marshal-from-py.c |    9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+commit c6ae29ac157978a61b11cc2de9e8485d8a175105
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Tue Feb 21 15:37:18 2012 +0100
+
+    tests: Split TestInterfaces into separate tests
+
+ tests/test_gi.py |   36 +++++++++++++++++++-----------------
+ 1 file changed, 19 insertions(+), 17 deletions(-)
+
+commit de3299818ae5fdf1c7abbe05a36bfd5cdface7b8
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Mon Feb 20 19:37:32 2012 +0100
+
+    Post release version bump to 3.1.2
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit fd020e783c0dacea3320225b4ddd57d6a0fce7ea
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Mon Feb 20 19:33:56 2012 +0100
+
+    Prepare 3.1.1 release
+
+ NEWS |   18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+commit 99485d96811667ef7a7a393b68b7361733157d61
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Sat Feb 18 00:38:05 2012 +0100
+
+    Don't use C99 style
+
+ gi/pygi-cache.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 0739c39f6282d95fc17ee406fa1151d074b0450d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Thu Feb 16 16:42:53 2012 +0100
+
+    Add test for GPtrArray with transfer full
+
+    This complements the already existing test for a "transfer container"
+    return
+    array. We can't verify the internal refcount as these arrays get
+    marshalled
+    internally, but at least we can verify that it does not crash due to
+    double-free.
+
+ tests/test_everything.py |   10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+commit 087a104f66793a981a0c02f1c7ab9cc1cf659da3
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Feb 15 13:36:39 2012 +0100
+
+    Drop obsolete g_thread_init()
+
+    Not necessary any more since glib 2.24, and we depend on 2.31.
+
+ gi/_glib/pyglib.c |    3 ---
+ 1 file changed, 3 deletions(-)
+
+commit 66fb610e45912a7def29e5848577d280ef55643a
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Feb 15 13:35:33 2012 +0100
+
+    Fix deprecated g_source_get_current_time()
+
+    Use g_get_real_time() instead as recommended by the
+    documentation. This also
+    simplifies the code.
+
+ gi/_glib/pygsource.c |    4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+commit 18342edded05d3d9cccf648ed92bc1cac95c51eb
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Feb 15 13:31:23 2012 +0100
+
+    Fix deprecated g_value_[gs]et_char()
+
+    Replace with _schar(). We depend on glib >= 2.31 already.
+
+ gi/_gobject/ffi-marshaller.c |    2 +-
+ gi/_gobject/pygtype.c        |    6 +++---
+ gi/pygi-argument.c           |    2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 3dfb8dcbe7cf09dc170433fc48d3273c6ea9448e
+Author: Simon Schampijer <simon@schampijer.de>
+Date:   Thu Feb 2 19:06:01 2012 +0100
+
+    Make pygiconvert.sh correctly convert gtk.gdk.x11_*
+
+    Looking at the gir file gtk.gdk.x11_* should get converted to
+    GdkX11.x11_*. Fixing pygiconvert.sh to do so.
+
+ pygi-convert.sh |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3af5016978df598d5fd1c225cc49bb2c04dc4e35
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Fri Feb 10 13:29:41 2012 +0100
+
+    Raise required glib version to 2.31 because of g_value_(get|set)_schar
+
+    Commit ee62df4d2fc0cc63c2f29d3ad9b47b875dbd5f89 introduced both calls
+
+ configure.ac |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 50c3b1bad3ea79750649f4b48fce0adbfaba5268
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Feb 10 09:28:36 2012 +0100
+
+    Fix cset_first typo
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=649267
+
+ gi/_gobject/pygparamspec.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6ab542fb3ec1031922ba65664d77bbaac0df453e
+Author: Bastian Winkler <buz@netbuz.org>
+Date:   Mon Nov 14 14:41:08 2011 +0100
+
+    pygi-convert: Handle Clutter and Cogl
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=664496
+
+ pygi-convert.sh |   76
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 76 insertions(+)
+
+commit 4aeb27efc43e131de5d0bc0f60dca7c1d34c3d45
+Author: Cédric Krier <cedric.krier@b2ck.com>
+Date:   Fri Feb 10 09:04:18 2012 +0100
+
+    Provide access to gpointer struct values
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=668356
+
+    Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/pygi-argument.c       |    3 ++-
+ gi/pygi-info.c           |   13 +++++++++++++
+ tests/test_everything.py |   21 +++++++++++++++++++++
+ 3 files changed, 36 insertions(+), 1 deletion(-)
+
+commit 5c0b20cc1a261cb7430a5251dffe60da698033b5
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Thu Feb 9 18:15:42 2012 +0100
+
+    Add some GType tests
+
+    Use what was recently added in g-i
+
+ tests/test_gi.py |   17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+commit ea7778f6f37a6fc38f88d89d4b6cae8be0ed9753
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Thu Feb 9 18:14:52 2012 +0100
+
+    Split GStrv and array variant tests in their own classes
+
+    Also tidy up the spacing a bit
+
+ tests/test_gi.py |   29 +++++++++++++++++++++++------
+ 1 file changed, 23 insertions(+), 6 deletions(-)
+
+commit db7f9be319d3cf52aef300fbac60cabb7ff57276
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Wed Feb 8 22:23:30 2012 +0100
+
+    Add unit test for builder's connect_after
+
+ tests/test_overrides.py |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 671f9b0dd73ac41a84caf9d1f04cec351bc01b47
+Author: Ryan Lortie <desrt@desrt.ca>
+Date:   Wed Feb 8 16:06:22 2012 -0500
+
+    fix GtkBuilder signal connection 'after' logic
+
+    All GtkBuilder signals are presently being connected 'after', ignoring
+    what is specified in the builder XML.  This is due to an obvious logic
+    error.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=669705
+
+ gi/overrides/Gtk.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 1d23d8006be98b77a0134fddd23b76df05e489fa
+Author: Patrick Welche <prlw1@cam.ac.uk>
+Date:   Tue Feb 7 11:49:58 2012 +0000
+
+    test(1) uses '=' to test if strings are identical
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=669598
+
+ m4/python.m4 |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 945fd18e531c2131440af93dcd89f6c63abbfd7c
+Author: Ryan Lortie <desrt@desrt.ca>
+Date:   Tue Feb 7 13:42:19 2012 -0500
+
+    pygspawn: improve error checking
+
+    gspawn 'argv' and 'envp' parameters expect sequences of strings.  This
+    is enforced by checking that the passed argument is a sequence
+    and that
+    each item returned from it is a string.
+
+    We do now, however, verify that each item can be successfully
+    taken from
+    the sequence.  'os.environ' is an example of an object that passes
+    PySequence_Check() but fails to return objects from PySequence_ITEM().
+
+    Add a simple NULL check to avoid the crash.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=669594
+
+ gi/_glib/pygspawn.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 8fc969c45d6d720400dc6c9ef391d0ca93f14b5a
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Mon Feb 6 19:15:53 2012 +0100
+
+    Post release version bump to 3.1.1
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit f76b2fe6d37be76bf129ee2adee90b2cc0eee56e
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Mon Feb 6 19:11:52 2012 +0100
+
+    Prepare 3.1.0 release
+
+ NEWS |   34 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 34 insertions(+)
+
+commit c09d0dffc5a570d5ae4df1ae07b2e5594c3ca1bf
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Mon Feb 6 19:04:41 2012 +0100
+
+    Updated DOAP file to only include people currently actively working
+    on the project
+
+    Removed obsolete MAINTAINERS file
+
+ MAINTAINERS    |   19 -------------------
+ pygobject.doap |   44 +++++++++++++++-----------------------------
+ 2 files changed, 15 insertions(+), 48 deletions(-)
+
+commit 0285e107be581c4d594127dc06cd05df1f02fb3f
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Mon Feb 6 18:57:01 2012 +0100
+
+    Revert "Convert all strings to utf-8 encoding when retrieving from
+    TreeModel"
+
+    This reverts commit 654711d0f940d7480d0f1cdb25a3dc9996f7a706.
+
+    Due to this commit breaking backwards compatability, we decided to
+    revert this change
+
+ gi/overrides/Gtk.py     |   15 ---------------
+ tests/compathelper.py   |    2 --
+ tests/test_overrides.py |   31 +------------------------------
+ 3 files changed, 1 insertion(+), 47 deletions(-)
+
+commit 0e921cd26ed5a6e3bc6ef5f553e8b22b862d72a6
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Sun Feb 5 13:47:10 2012 +0100
+
+    tests: Fixed issues with python3
+
+ tests/test_gi.py |    9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+commit ee62df4d2fc0cc63c2f29d3ad9b47b875dbd5f89
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Sun Feb 5 11:59:51 2012 +0100
+
+    Properly distinguish between different integer types for properties
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=664150
+
+ gi/pygi-property.c |   48 ++++++++++++++++++++++++++++++++++++----
+ tests/test_gi.py   |   62
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 106 insertions(+), 4 deletions(-)
+
+commit c329bf2aee8d75ce452638db75e09197ff2b9b65
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Sun Feb 5 11:46:21 2012 +0100
+
+    Distinguish between GArray and GPtrArray when cleaning up
+
+    This fixes a crash in test_gi.TestGPtrArray and makes sure
+    memory is free'd correctly
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=669393
+
+ gi/pygi-marshal-cleanup.c |   32 +++++++++++++++++++++++---------
+ 1 file changed, 23 insertions(+), 9 deletions(-)
+
+commit 4ea37c606f67df843788261b2c8acd6bac4c1e0c
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Sun Feb 5 18:51:53 2012 +0100
+
+    Add null_gerror_callback unit test
+
+    This models the case where the callback is successful and does not set
+    an error.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=669415
+
+ tests/test_everything.py |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit a41984780ee49dcf02c718ca1be87bba747472e5
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Mon Feb 6 09:34:28 2012 +0100
+
+    pyglib_error_check: Re-add missing NULL check
+
+    Commit adcfe96d49b09bc accidentally dropped the check if *error is
+    NULL, i. e.
+    any error is actually set. Due to that, pyglib_error_check()
+    always returned
+    TRUE. Reintroduce the check.
+
+    Thanks to Alberto Mardegan for spotting this!
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=669415
+
+ gi/_glib/pyglib.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 2c797c17913999379e277788d5e4cce8d68cebb0
+Author: Michael Culbertson <michael.culbertson@gmail.com>
+Date:   Sat Feb 4 16:11:34 2012 +0100
+
+    Add tests/runtests-windows.py to source tarball
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=663288
+
+ tests/Makefile.am |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit d6a899cdf70e978534326155e3fad75a705f4b20
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Sat Feb 4 15:55:55 2012 +0100
+
+    Don't issue a depreciation warning for GtkDialog's NO_SEPARATOR flag,
+    even when unused
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=665553
+
+ gi/overrides/Gtk.py |    6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+commit 534ec71c575a279ff1c05da20a8858bb1145b4d0
+Author: Nirbheek Chauhan <nirbheek@gentoo.org>
+Date:   Sat Feb 4 15:42:36 2012 +0100
+
+    Fix bool() operations on GLib.Variant objects
+
+    Defines __nonzero__ (python2) and __bool__ (python3) for GLib.Variant
+
+    Also adds some tests for boolean comparisons.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=647723
+
+ gi/overrides/GLib.py    |   18 ++++++++++++++++++
+ tests/test_overrides.py |   45
+ +++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 63 insertions(+)
+
+commit 8d6a127df5dd1e5f26faeba8f977074b4496b24f
+Author: Nirbheek Chauhan <nirbheek@gentoo.org>
+Date:   Sat Feb 4 15:41:08 2012 +0100
+
+    Fix hash() and __eq__() for GLib.Variant objects
+
+    Define __hash__, __eq__, __ne__ for GLib.Variant so that objects can
+    be used in sets, dicts, and can be compared using == and != easily.
+
+    Also adds some tests for this.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=647725
+
+ gi/overrides/GLib.py    |   23 +++++++++++++++++++
+ tests/test_overrides.py |   56
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 79 insertions(+)
+
+commit f82404034be042bf2026bbb7f1e33b11d6e17a6f
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Jan 25 07:01:06 2012 +0100
+
+    Fix method names of callback tests
+
+    Change test_everything.TestCallbacks.* test names from camelCase
+    to the
+    standard PEP-8 underscore_style. This is now consistent with all
+    other test
+    case names.
+
+ tests/test_everything.py |   30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+commit e37ee78fbf0aa72159a40da4165a26bea065faf1
+Author: Will Thompson <will.thompson@collabora.co.uk>
+Date:   Mon Jan 23 13:10:30 2012 +0000
+
+    Cairo: add missing braces around array-of-struct definition
+
+    This triggered a -Wmissing-braces warning.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=668497
+
+ gi/pygi-foreign-cairo.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit db24865d6b60351d72f5b8f47103d6d0a6c63b2e
+Author: Will Thompson <will.thompson@collabora.co.uk>
+Date:   Mon Jan 23 13:06:41 2012 +0000
+
+    g_instance_init: cast to PyGObject * as needed
+
+    This squashes a compiler warning.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=668497
+
+ gi/_gobject/gobjectmodule.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a8408cfd68cd5e7cdb0b8a83e107d9a0d828e4bd
+Author: Will Thompson <will.thompson@collabora.co.uk>
+Date:   Mon Jan 23 13:01:27 2012 +0000
+
+    Fix a few set-but-not-used warnings.
+
+    In a couple of cases, the variable in question was set to a value
+    spelled out again later in the function.
+
+    The 'sequence_cache' variable is re-declared five lines below.
+
+    The return value of 'read' was previously completely ignored. The
+    'gssize ret' variable was in fact added to squash an unused-result
+    warning.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=668497
+
+ gi/_glib/pygiochannel.c   |    2 +-
+ gi/_glib/pygmainloop.c    |    3 +--
+ gi/_gobject/pygobject.c   |    2 +-
+ gi/pygi-marshal-cleanup.c |    2 --
+ 4 files changed, 3 insertions(+), 6 deletions(-)
+
+commit 29a30490ed51e347e8f57d2bf9af69400734eee8
+Author: Stefano Facchini <stefano.facchini@gmail.com>
+Date:   Thu Jan 19 18:09:07 2012 +0100
+
+    pygmainloop: allow for extra arguments in 'quit' method
+
+    To allow for the common syntax:
+
+        object.connect('signal-name', main_loop.quit)
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=668288
+
+ gi/_glib/pygmainloop.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 557a61c12c01137a0d7c679c4b053973df09d445
+Author: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date:   Mon Dec 26 00:44:56 2011 -0500
+
+    Fix bytearray test compatibility with python3
+
+    https://bugs.gentoo.org/show_bug.cgi?id=321879
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=666852
+
+ tests/test_gi.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit d69e5b3c7bdb9113382fd125c256b12bff4c24d2
+Author: Alberto Mardegan <mardy@users.sourceforge.net>
+Date:   Mon Jan 23 12:37:26 2012 +0200
+
+    Respect transfer-type when demarshalling GErrors
+
+    The marshaller previously ignored "transfer full" on GError*
+    arguments, causing
+    crashes due to double-freeing them. This causes the
+    testCallbackUserdata() test
+    case to crash after the previous GError/GHashTable marshalling fix.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=666270
+
+ gi/pygi-argument.c |   12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+commit 77f32d9110bfeb6dad8457f565b4c70b5998fef6
+Author: Alberto Mardegan <mardy@users.sourceforge.net>
+Date:   Thu Dec 15 16:12:01 2011 +0200
+
+    Support GHashTable and GError as callback/closure arguments
+
+    Marshalling of these types from C is already implemented, let's
+    take it
+    into use for calbacks and closures too.
+
+    Add corresponding test cases.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=666270
+
+    Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/pygi-closure.c        |    2 ++
+ tests/test_everything.py |   35 +++++++++++++++++++++++++++++++++++
+ 2 files changed, 37 insertions(+)
+
+commit 4b9dc03d0e49e9a1f4bf0f2df503bdff00d13a2b
+Author: Will Thompson <will.thompson@collabora.co.uk>
+Date:   Mon Jan 23 13:56:02 2012 +0000
+
+    Don't leak when marshalling GErrors to C
+
+    Python-land GLib.GErrors are supposed to have three attributes:
+    "message", "domain" and "code". If those attributes are missing,
+    or they
+    have the wrong types, the C GError is filled in with a message
+    describing the error. The present-but-ill-typed code paths did not
+    DECREF the ill-typed values.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=666098
+
+ gi/_glib/pyglib.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit adcfe96d49b09bcc550653d73de196610fd5144d
+Author: Will Thompson <will.thompson@collabora.co.uk>
+Date:   Fri Jan 20 16:20:10 2012 +0000
+
+    Support functions which return GError
+
+    GStreamer has the following method:
+
+      void gst_message_parse_error (
+          GstMessage *message,
+          GError **error,
+          gchar **debug_message);
+
+    With this patch, we marshal the GError out parameter as a
+    GObject.GError
+    exception, but return it rather than throwing it. The test cases cover
+    two variations on the theme of the function above (one with (transfer
+    full), as in GStreamer, and another with (transfer none)) as well as a
+    function with return type GError *.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=666098
+
+ gi/_glib/pyglib.c       |   46
+ +++++++++++++++++++++++++++++++++++-----------
+ gi/_glib/pyglib.h       |    1 +
+ gi/pygi-marshal-to-py.c |   16 +++++++++++++---
+ tests/test_gi.py        |   32 ++++++++++++++++++++++++++++++++
+ 4 files changed, 81 insertions(+), 14 deletions(-)
+
+commit 09f003729eac9d553a208c343c2a14d253b77d9a
+Author: Alberto Mardegan <mardy@users.sourceforge.net>
+Date:   Mon Jan 23 12:42:21 2012 +0200
+
+    Fix indentation of _pygi_argument_to_object()
+
+    Side issue in https://bugzilla.gnome.org/show_bug.cgi?id=666270
+
+    Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/pygi-argument.c |   26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+commit c71c010be01d706f90bc200194325fd82f4071b2
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Sat Jan 14 14:24:23 2012 +0100
+
+    Avoid C99 syntax.
+
+ gi/gimodule.c |   10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+commit c299d058c22385ececaec64c872d1dd1bc1ae17a
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Fri Jan 6 13:39:31 2012 +0100
+
+    Connect to first action of a radio group.
+
+ gi/overrides/Gtk.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit dee2f179037902a3883bd0e61ff1c350e1fd8a4f
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Wed Jan 4 16:40:51 2012 +0100
+
+    Use g_slist_free_full in pygi-closure.
+
+ gi/pygi-closure.c |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit 2bee4207ab6f07dc9c0952affe72f0e304cfb624
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Wed Jan 4 15:24:13 2012 +0100
+
+    Avoid O(n^2) behavior when marshalling lists
+
+    Appending requires walking the list every time: just prepend and
+    reverse
+    the list at the end.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=667261
+
+ gi/pygi-marshal-from-py.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit d68455e99b1a9ebba31209b17a11317b1958678b
+Author: Paolo Borelli <pborelli@gnome.org>
+Date:   Tue Jan 3 16:57:40 2012 +0100
+
+    Handle NULL as a valid case of a char** array
+
+    Treat NULL as an empty array and add the corresponding testcase
+
+ gi/pygi-marshal-to-py.c |    9 +++++----
+ tests/test_gi.py        |    3 +++
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+commit e3451b8e6018bb76e9992fb6af24a71725de5cfd
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date:   Fri Dec 23 12:01:43 2011 +0100
+
+    Branching, bump version to 3.1.0
+
+ configure.ac |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 8d1a36cc73f5f4df091ecb289c8a7b38ec2ab605
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date:   Mon Dec 12 18:35:30 2011 +0100
+
+    Add notes about branching to HACKING
+
+ HACKING |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 00030bc6f0fb961c716ed692144cd8e4bb9be7d0
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Sat Dec 10 12:51:45 2011 +0100
+
+    Fixed bug where GObject.property did not respect minimum and maximum
+    values
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=664864
+
+ gi/_gobject/propertyhelper.py |    2 +-
+ tests/test_properties.py      |   31 +++++++++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+), 1 deletion(-)
+
+commit 7b78abc6c399abd0daa4c11c644d107e1bb7b452
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date:   Mon Dec 12 17:00:24 2011 +0100
+
+    Remove mention of removed option --enable-docs
+
+ HACKING |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 4cba52f5b5e79b7b6212cb0795e8976a9da9f21d
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date:   Mon Dec 12 17:00:03 2011 +0100
+
+    Fix sebp's name in NEWS
+
+ NEWS |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 8c95981d0ba224a577f87998030c384b3dae3d80
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date:   Mon Dec 12 16:20:09 2011 +0100
+
+    Release 3.0.3
+
+ NEWS |   15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 58e47fd28c5d75bb78042c8f9eb5aae84de9c64d
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date:   Mon Dec 12 16:16:44 2011 +0100
+
+    Pre-release version bump
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 884468d4816fc976c0c0c72651e7f81d13f3f78b
+Author: Manuel Quiñones <manuq@laptop.org>
+Date:   Thu Dec 1 11:50:38 2011 -0300
+
+    Convert all modifier constants to Gdk.ModifierType
+
+    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+ pygi-convert.sh |   14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+commit 654711d0f940d7480d0f1cdb25a3dc9996f7a706
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Tue Nov 8 12:38:12 2011 +0100
+
+    Convert all strings to utf-8 encoding when retrieving from TreeModel
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=663610
+
+ gi/overrides/Gtk.py     |   15 +++++++++++++++
+ tests/compathelper.py   |    2 ++
+ tests/test_overrides.py |   31 ++++++++++++++++++++++++++++++-
+ 3 files changed, 47 insertions(+), 1 deletion(-)
+
+commit 4f637212f13b197a95c824967a58496b9e3b877c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Wed Nov 2 14:51:24 2011 -0400
+
+    add test for bytearray variants
+
+ tests/test_gi.py |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 20ca3f129d6cc662285cce8c732b55596016aefa
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Wed Nov 2 14:50:42 2011 -0400
+
+    handle NULL arrays correctly for each array type
+
+ gi/pygi-marshal-to-py.c |   11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+commit ce2f780bffe44b1d4de617dcbce4b90c58b03c18
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Wed Nov 2 14:17:21 2011 -0400
+
+    Revert "Revert "Fix array termination and size calculation""
+
+    This reverts commit cfda820e8d9604c5ef2ad1161c22b20080d5daf4.
+
+ gi/pygi-marshal-from-py.c |    6 +++++-
+ gi/pygi-marshal-to-py.c   |    8 +++++++-
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit 832f16f96815adc22cc3acbeb3fa969631795a29
+Author: Owen W. Taylor <otaylor@fishsoup.net>
+Date:   Sun Oct 30 18:08:57 2011 -0400
+
+    pygmainloop: avoid lockups if multiple glib.MainLoop exist
+
+    If multiple glib.MainLoop() sources exist, then we will add multiple
+    watches, and when python writes a byte to the wakeup pipe, all of the
+    sources will try to read it; only one will succeed and the others
+    will block. Set both ends of the pipe nonblocking to avoid this.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=663068
+
+ gi/_glib/pygmainloop.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit 2fd3aa9d4ca0906a5e609845ee500ba72e358f94
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date:   Sat Oct 29 15:08:03 2011 +0200
+
+    Properly chain up to the class that implements a given vfunc.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=662994
+
+ gi/types.py      |   22 +++++++++++++---------
+ tests/test_gi.py |   20 ++++++++++----------
+ 2 files changed, 23 insertions(+), 19 deletions(-)
+
+commit cfda820e8d9604c5ef2ad1161c22b20080d5daf4
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date:   Wed Nov 2 14:54:21 2011 +0100
+
+    Revert "Fix array termination and size calculation"
+
+    This reverts commit eef35b2df8023ffff2d195ee16c084f5cfcb6ba3.
+
+ gi/pygi-marshal-from-py.c |    6 +-----
+ gi/pygi-marshal-to-py.c   |    8 +-------
+ 2 files changed, 2 insertions(+), 12 deletions(-)
+
+commit eef35b2df8023ffff2d195ee16c084f5cfcb6ba3
+Author: Holger Berndt <hb@gnome.org>
+Date:   Sun Oct 30 16:36:32 2011 +0100
+
+    Fix array termination and size calculation
+
+    When creating an array of element type uint8 and setting it directly
+    with
+    memcpy(), make sure that zero-termination is respected.
+
+    When calculating the length of a zero-terminated array of type uint8,
+    fall back to strlen() instead of g_strv_length().
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=662550
+
+ gi/pygi-marshal-from-py.c |    6 +++++-
+ gi/pygi-marshal-to-py.c   |    8 +++++++-
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit 4c1d9f01b8fa6702f73b290180f934250e179caa
+Author: Daniel Drake <dsd@laptop.org>
+Date:   Sun Oct 30 09:20:45 2011 +0000
+
+    pygi-convert: fix for Pango.Alignment
+
+ pygi-convert.sh |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit e3abd76096cc9f335681c7225f452c286b9c59e2
+Author: Daniel Drake <dsd@laptop.org>
+Date:   Sun Oct 30 07:06:57 2011 +0000
+
+    pygi-convert: fix for Gtk.Orientation
+
+ pygi-convert.sh |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 52b82c5f78ef3755388457fa9440c36ccd2dfbbf
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Thu Oct 27 07:16:24 2011 +0200
+
+    Add tests for calling closures
+
+    Add checks for correct handling of closure calls.
+    Regress.test_closure_one_arg() is working fine and should continue
+    to do so.
+    Regress.test_closure_variant() is known to not work yet, so mark
+    this as EXFAIL
+    for now. (See https://bugzilla.gnome.org/show_bug.cgi?id=656554)
+
+ tests/test_everything.py |   24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+commit c7aa0e79dfb4c1092c51ae1464b8414083b4f3fc
+Author: Mikkel Kamstrup Erlandsen <mikkel.kamstrup@canonical.com>
+Date:   Tue Oct 4 12:28:26 2011 +0200
+
+    fix marshaling of arrays of GVariants
+
+    Add unit tests for marshaling of arrays of variants with all
+    transfer modes. Requires latest gobject-introspection.
+
+    Plug potential leaks of GArray data members
+
+    Fix calling of wrong cleanup_from_py for arrays
+
+    Simplify and fix logic for cleaning up arrays both in from_py()
+    and to_py() code paths.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=638915
+
+    Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/pygi-cache.c           |    2 +-
+ gi/pygi-marshal-cleanup.c |   81
+ +++++++++++++++++++++++++++++----------------
+ gi/pygi-marshal-from-py.c |   10 ++++--
+ gi/pygi-marshal-to-py.c   |   13 ++++++--
+ tests/test_gi.py          |   14 +++++++-
+ 5 files changed, 85 insertions(+), 35 deletions(-)
+
+commit c2ec4d8eb46ae2e6ee4372b2a4f9d5df0e5d82f3
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date:   Sat Oct 22 00:20:57 2011 +0200
+
+    Release 3.0.2
+
+ NEWS |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 5c24760b797e985721f7fe51d52252e4dd54a417
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Fri Oct 21 17:31:41 2011 +0200
+
+    Fix "Returns: (skip)" method calls without (out) arguments
+
+    When we have a method call with a skipped return value, but no
+    other out
+    arguments, we previously returned NULL to Python, which causes
+    "SystemError:
+    error return without exception set". Return None instead.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=662383
+
+ gi/pygi-invoke.c         |   10 ++++++++++
+ tests/test_everything.py |    8 ++++++++
+ 2 files changed, 18 insertions(+)
+
+commit 585222915dc98b0e375de3db4771466278a32e81
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Tue Oct 18 00:39:16 2011 -0400
+
+    Do union member checks for unions that are parameters
+
+    * before we were only doing checks if the union was an instance
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=661673
+
+ gi/pygi-marshal-from-py.c |  121
+ +++++++++++++++++++++++++--------------------
+ 1 file changed, 68 insertions(+), 53 deletions(-)
+
+commit 8deaec6b9abd87f02060c9feec773d4693e89028
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Oct 19 14:35:11 2011 +0200
+
+    Gdk overrides: Unbreak for Gdk-2.0
+
+    Fix regression from commit 31db3ed: Gdk 2.0 did not yet have
+    atom_intern(), so
+    only do this for Gdk >= 3.0.
+
+    https://launchpad.net/bugs/875399
+
+ gi/overrides/Gdk.py |   95
+ ++++++++++++++++++++++++++-------------------------
+ 1 file changed, 48 insertions(+), 47 deletions(-)
+
+commit f395fb131caf7ca550acd17138d8061926ef4f92
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Oct 14 17:19:45 2011 -0400
+
+    unit test for checking ref count of object param in signals
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=661359
+
+ tests/test_everything.py |   11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+commit 611f58b99851328653af4930f188c33eccaa9f6f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Oct 14 16:42:32 2011 -0400
+
+    when converting an object with transfer none, make sure the wrapper
+    owns a ref
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=661359
+
+ gi/pygi-argument.c |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 0f1eb9fa0e7aa5e7c22dabc709c0dfb469e404f1
+Author: Timo Vanwynsberghe <timovwb@gmail.com>
+Date:   Tue Oct 4 11:13:43 2011 +0200
+
+    Allow GBoxed types as property
+
+    Add the GBoxed type as valid type to the gobject property helper
+    https://bugzilla.gnome.org/show_bug.cgi?id=660798
+
+ gi/_gobject/propertyhelper.py |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit bef8d385117dd0295c9ba7567710d76fc2bb729a
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date:   Mon Oct 10 11:24:42 2011 +0200
+
+    Add tests for boxed properties.
+
+ tests/test_properties.py |   20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+commit 77123ffeb1585837033848f4d5a90cfa63fdaee0
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date:   Fri Sep 30 20:21:07 2011 +0200
+
+    Post release bump version
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit f5ccfec0a1bc4c999bfa49d75383ea06d3a068c4
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date:   Fri Sep 30 20:19:46 2011 +0200
+
+    Release 3.0.1
+
+ NEWS         |    5 +++++
+ configure.ac |    2 +-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+commit 56ac9339eb1d6950623dc4d8c3b9972874e7fa86
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Sep 22 19:03:20 2011 -0400
+
+    when checking instances union members are same type as parent
+
+    * this is so we can support sending Gdk.Event members in place of
+      the Event union into methods
+    * we only support this if the union member has a type of GI_INTERFACE
+    for now
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=659879
+
+ gi/pygi-marshal-from-py.c |   60
+ ++++++++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 56 insertions(+), 4 deletions(-)
+
+commit 311a4f8035a95b41bc3c0a836c32b7a5bf2d9959
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Wed Sep 21 21:50:48 2011 -0400
+
+    add a floating flag to pygobjects
+
+    * this allows us to correctly refcount when custom gobjects are
+    instantiated
+      via g_object_new
+
+ gi/_gobject/gobjectmodule.c     |    5 +++++
+ gi/_gobject/pygobject-private.h |    3 +++
+ gi/_gobject/pygobject.c         |   27 ++++++++++++++++++++++++++-
+ gi/_gobject/pygobject.h         |    3 ++-
+ 4 files changed, 36 insertions(+), 2 deletions(-)
+
+commit d2d29ae5845217254b9336fd8629f369cb119b25
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Wed Sep 21 21:13:22 2011 -0400
+
+    Revert "Fix refcount bug by not creating python wrapper during
+    gobject init stage"
+
+    This reverts commit f6fa5dd8f39af1b8a52d7600d257400b0983e8c5.
+
+ gi/_gobject/gobjectmodule.c |   32 +++++++++++++++++---------------
+ 1 file changed, 17 insertions(+), 15 deletions(-)
+
+commit a24c10b779f2a1b0425d56d03d59c393389cad98
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Wed Sep 21 21:10:00 2011 -0400
+
+    make sure to commit the NEWS file
+
+ NEWS |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 2eed2940c9be099fb6305288d895265e6b35d3d2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Mon Sep 19 13:19:57 2011 -0400
+
+    prep for 3.0 release
+
+ configure.ac |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit fbd58b70c2c3c1128f95a87eb4cc8313b6a401b8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Sep 16 14:19:15 2011 -0400
+
+    up version required of gobject-introspection to 1.29.0
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 225f21117b6b3546989abe22538c784291e86b2a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Sep 16 12:26:10 2011 -0400
+
+    fix most warnings
+
+    * remove some unused vars
+    * correctly cast vars
+    * handle deprecated enums in switch statments by using default:
+    * unused wanrings still remain in some places
+
+ gi/pygi-argument.c        |    2 +-
+ gi/pygi-cache.c           |    7 ++-----
+ gi/pygi-info.c            |    6 ++++++
+ gi/pygi-invoke.c          |    2 +-
+ gi/pygi-marshal-from-py.c |   17 +++++++++--------
+ gi/pygi-marshal-to-py.c   |    3 +--
+ 6 files changed, 20 insertions(+), 17 deletions(-)
+
+commit 9a70f01288e1b049206d25d67938907f1b38a490
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Sep 16 12:24:38 2011 -0400
+
+    post release bump
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3ec4020205e909ee4400650434f9ae7b89c2bde8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Sep 15 18:12:01 2011 -0400
+
+    edit HACKING file to show correct tag format
+
+ HACKING |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2e864fd05bc0adf48df9f65ab72785ebb1d0d3f0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Sep 15 18:10:33 2011 -0400
+
+    update NEWS file to prep for release
+
+ NEWS |   35 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 35 insertions(+)
+
+commit 0da687fa699aba4f42c42a924d6754e2bd47df50
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Sep 15 17:59:31 2011 -0400
+
+    fix typo s/lenth/length
+
+ gi/overrides/Gtk.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 0e4861abaff64d8e7e8d1aeedf9dd1e80de8aab2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Sep 15 17:48:58 2011 -0400
+
+    fix typo in docstring
+
+ gi/_gobject/propertyhelper.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e7fcc326d64def610e5a1003cf6c7ca97023814d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Sep 15 17:46:46 2011 -0400
+
+    do not pass in len(str) to the length argument of
+    gtk_test_buffer_insert* apis
+
+    * in python 3 len(str) returns the number of characters while
+    the length
+      parameter is expecting the number of bytes.  It also excepts -1
+      for null
+      terminated string.  Since all of our strings are null terminated,
+      just
+      set length to that.
+
+ gi/overrides/Gtk.py |    6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+commit 6f380153afb3390f7da9f4b8befb1c4ee224da17
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Sep 12 21:07:20 2011 +0200
+
+    Switch tarball compression format to tar.xz only.
+
+    See
+    http://mail.gnome.org/archives/gnome-announce-list/2011-September/msg00031.html
+    for more information.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=659140
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 11c45ac6dcb6ffad766d03bfc77f45a6d703a90d
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Thu Sep 15 14:18:57 2011 +0200
+
+    Remove pygtk_version attribute from internal gi._gobject module.
+
+    This used to be provided for backwards compatibility with older PyGTK
+    versions. As PyGObject3 no longer provides support for static bindings
+    like PyGTK, the pygtk_version attribute has become obsolete.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=659142
+
+ gi/_gobject/gobjectmodule.c |    4 ----
+ gi/_gobject/pygobject.h     |    2 --
+ 2 files changed, 6 deletions(-)
+
+commit 7e48fd6dfd86b7082c3fd35d25d9693c56c9665a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Sep 15 15:52:18 2011 -0400
+
+    remove overridesdir from the .pc file and add it to the gi module
+
+    * having the variable in the .pc file caused issues parallel
+    installing
+      for different versions of python
+    * putting it into the module allows us to give the correct directory
+      based on which version of python you run the script from
+    * access the var as such:
+        import gi
+        installdir = gi._overridesdir
+
+ gi/__init__.py      |    2 ++
+ pygobject-3.0.pc.in |   10 +++++++++-
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+commit beea7072a5a989be47a755ac46647380d4dbd6b4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Sep 15 00:11:09 2011 -0400
+
+    fix tests to correctly construct a dummy Gtk.TargetEntry
+
+    * structs are sometimes a pain in gi.  Simply constructing them
+    using the
+       the standard constructor (e.g. Gtk.TargetEntry()) will malloc
+       the struct
+       but not correctly initialize the fields which can cause a crash.
+     * tests didn't crash before because they were sending in bogus
+     data that
+       somehow did not trigger the issue
+     * now with the C struct array marshallers doing the right thing,
+     the incorrect
+       use of TargetEntry was causing a crash
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=627236
+
+ tests/test_overrides.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 46ba7f04ef3df08e07ddda5c10f0c98bec5fa183
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Sep 15 00:08:31 2011 -0400
+
+    we now assume that C arrays of structs are flat so memcpy them
+    when marshalling
+
+    * there is no way in GI to tell if a C array is flat or an array
+    of pointers
+      so we assume that all arrays of simple structs and gvalues are
+      flat and
+      all arrays of objects and boxed structs are pointer arrays.
+    * this will be removed once GI gets the ability to annotate level
+    of indirection
+      for arrays
+    https://bugzilla.gnome.org/show_bug.cgi?id=627236
+
+ gi/pygi-marshal-from-py.c |   35 ++++++++++++++++++++++++++++++++---
+ tests/test_gi.py          |   29 +++++++++++++++++++++++++++++
+ 2 files changed, 61 insertions(+), 3 deletions(-)
+
+commit e30a41592baa942188574e5c9f99572963e2e387
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Sep 15 00:02:34 2011 -0400
+
+    only update the arg counts once if child arg comes before parent arg
+
+    * if the child arg comes before the parent arg we need to update the
+       argument counts and take the child arg out of the marshalling lists
+       since it is handled by the parent
+     * when two parents reference the same child arg as is the case with
+       two arrays which have a single length argument we only want
+       to update
+       the count once
+     * to do this we introduce the PYGI_META_ARG_CHILD_NEEDS_UPDATE
+     meta type
+       and only do the count update if this is set
+     * APIs should keep in mind that this take extra processing so
+     child args
+       should really come after their parents
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=627236
+
+ gi/pygi-cache.c |   30 ++++++++++++++++++++----------
+ gi/pygi-cache.h |    9 +++++++--
+ 2 files changed, 27 insertions(+), 12 deletions(-)
+
+commit f6fa5dd8f39af1b8a52d7600d257400b0983e8c5
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Wed Sep 14 20:26:15 2011 -0400
+
+    Fix refcount bug by not creating python wrapper during gobject
+    init stage
+
+    * This only applys to python subclasses of GObject which are
+    instantiated
+       using GObject.new
+     * Because we were creating the wrapper when the gobject is
+     initialized
+       and then again calling pygobject_new_full the wrapper would get
+       ref'ed twice.
+     * we could not simply Py_DECREF the wrapper due to the fact that
+       non-subclassed objects (e.g. GObject.Object) instantiated via
+       new do not run the same initialization code and would not have the
+       extra ref
+     * solution was to simply not create the wrapper during initialization
+       because if it doesn't exist when pygobject_new_full is called
+       it gets created and registered there
+     * move the call to __init__ into pyg_object_new
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=657403
+
+ gi/_gobject/gobjectmodule.c |   32 +++++++++++++++-----------------
+ 1 file changed, 15 insertions(+), 17 deletions(-)
+
+commit 61b64a65beee9011f8e4ed20f0a83e6630ba154f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Tue Sep 13 18:08:04 2011 -0400
+
+    don't destroy just created wrapper when object is created via
+    g_object_new
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=657403
+
+ gi/_gobject/gobjectmodule.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 93e12cc2eb7e7f2c18971da86e9c9452d3f566b7
+Author: Steve Frécinaux <code@istique.net>
+Date:   Fri Aug 26 11:22:09 2011 +0200
+
+    Remove deprecated API from pygobject.h
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=657416
+
+ gi/_gobject/pygobject.h |   19 +------------------
+ 1 file changed, 1 insertion(+), 18 deletions(-)
+
+commit e1c71092af6e2cffa36248519adfceac1874051d
+Author: Marcin Owsiany <marcin@owsiany.pl>
+Date:   Wed Aug 31 09:43:28 2011 +0100
+
+    Convert gtk.TRUE/FALSE to Python True/False.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=657785
+
+ pygi-convert.sh |    2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 3ace5c2e2268285a5dcb39889fcb2a71bc1063bd
+Author: Steve Frécinaux <code@istique.net>
+Date:   Fri Sep 2 08:37:15 2011 +0200
+
+    Drop legacy __gobject_init__ method of GObject.Object.
+
+    This method was used in gobject initialization at some point, but now
+    using GObject.__init__() is sufficient, so let's not keep this old
+    method around and let people misuse it.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658032
+
+ examples/signal.py      |    2 --
+ gi/_gobject/pygobject.c |   11 -----------
+ 2 files changed, 13 deletions(-)
+
+commit fcd457d1d1d8a813acb2ebfe5ee0e9aab2c9c88c
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Tue Sep 13 12:05:30 2011 +0200
+
+    AM_CHECK_PYTHON_LIBS does not work for lib64
+
+    But on Windows, Python extension modules need to be explicitly
+    linked to libpython.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658856
+
+ configure.ac            |    4 +++-
+ gi/Makefile.am          |    9 ++++++---
+ gi/_glib/Makefile.am    |   10 ++++++++--
+ gi/_gobject/Makefile.am |    8 +++++++-
+ 4 files changed, 24 insertions(+), 7 deletions(-)
+
+commit 863c087911203a8f3ebaa8e77622a3437a7cd320
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Sep 12 23:03:05 2011 +0200
+
+    Remove common_ldflags from Makefile.am as it is no longer used.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658856
+
+ Makefile.am |    6 ------
+ 1 file changed, 6 deletions(-)
+
+commit 24b920f9922e367bdb8b3e56c2f61e0c8f5cdb66
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Tue Sep 13 16:20:48 2011 -0400
+
+    cast params for PyObject_IsInstance to suppress warnings
+
+ gi/_gobject/pygobject-private.h |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 861369ec59b17f67151813dc2e87c6e86126b954
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Tue Sep 13 16:04:31 2011 -0400
+
+    check if object is actually a PyGFlag before trying to access g_type
+
+     * we are lucky this bit of code worked for as long as it did but when
+       checking if an object is a PyGFlag we can't just rely on looking
+       at the g_type field because if a regular gobject is passed in
+       as is the case when you compare a long to a gflag, the gobject
+       will not have a g_type field.  Accessing a non-existant field
+       could at best give you a false positive and at worse read
+       memory beyond the bounds of the actual structure passed in
+
+ gi/_gobject/pygobject-private.h |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit eea93e89fb064253bd8903c8b453daf4b3c87c2c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Tue Sep 13 16:03:02 2011 -0400
+
+    fix regression - add instance type checks since Py3 no longer does
+    this for us
+
+ gi/pygi-marshal-from-py.c |   21 +++++++++++++++++++--
+ 1 file changed, 19 insertions(+), 2 deletions(-)
+
+commit a4e4318b50a24a688e32579273fbcfa51d1b422a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Sep 2 18:39:51 2011 -0400
+
+    refactor in/out marshalling to be to_py/from_py
+
+    * in/out make sense from a C perspective but when you get to the
+       python layers it makes more sense to label them as to_py and
+       from_py to denote which way we are marshalling
+     * this helps clear up the difference between callbacks which
+       call into python and invoked functions which call into C
+     * in the callback case we marshal in values to Python objects
+       and out values to C types but in the invoke case we do the
+       reverse.  Dealing with to_py/from_py makes the code much more
+       resuable and consistant
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658362
+
+ gi/Makefile.am            |    8 +-
+ gi/pygi-cache.c           |  673 ++++++++++-----------
+ gi/pygi-cache.h           |   62 +-
+ gi/pygi-invoke.c          |  144 ++---
+ gi/pygi-marshal-cleanup.c |  168 +++---
+ gi/pygi-marshal-cleanup.h |  128 ++--
+ gi/pygi-marshal-from-py.c | 1412
+ +++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-from-py.h |  186 ++++++
+ gi/pygi-marshal-in.c      | 1412
+ ---------------------------------------------
+ gi/pygi-marshal-in.h      |  186 ------
+ gi/pygi-marshal-out.c     |  768 ------------------------
+ gi/pygi-marshal-out.h     |  144 -----
+ gi/pygi-marshal-to-py.c   |  768 ++++++++++++++++++++++++
+ gi/pygi-marshal-to-py.h   |  144 +++++
+ 14 files changed, 3122 insertions(+), 3081 deletions(-)
+
+commit 45b0fcff9e948c65a3903c32a3957802034c5e47
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Sep 9 16:50:25 2011 +0200
+
+    Examples: fix cairo-demo.py imports
+
+ examples/cairo-demo.py |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 3ca19fc13e6024fd04851e6f269020a92b09fa17
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Sep 9 15:08:27 2011 +0200
+
+    Fix paths and add missing overridesdir variable used in uninstalled
+    pkgconfig file
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658654
+
+ pygobject-3.0-uninstalled.pc.in |   14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+commit 6e773175b9d2f46b3df5075ec952a8c5aff3c607
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Sep 9 15:08:04 2011 +0200
+
+    Remove no longer used variables from pkgconfig files
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658654
+
+ pygobject-3.0-uninstalled.pc.in |    6 ------
+ pygobject-3.0.pc.in             |    5 +----
+ 2 files changed, 1 insertion(+), 10 deletions(-)
+
+commit 81d388780311311d8dc4a027a59d114edf9a00fc
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Sep 9 14:57:58 2011 +0200
+
+    docs/Makefile.am and m4/python.m4: Python3 portability fixes
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ docs/Makefile.am |    2 +-
+ m4/python.m4     |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 7e692ee061406e48e4862b98a0829650b1d6d585
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Sep 9 14:57:46 2011 +0200
+
+    Refactor and clean Makefile.am files
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ Makefile.am               |    2 -
+ gi/Makefile.am            |   81 ++++++++++++++++++++++--------------
+ gi/_glib/Makefile.am      |  100
+ +++++++++++++++++++++++++++++----------------
+ gi/_gobject/Makefile.am   |   85 ++++++++++++++++++++------------------
+ gi/overrides/Makefile.am  |    4 +-
+ gi/repository/Makefile.am |    4 +-
+ 6 files changed, 162 insertions(+), 114 deletions(-)
+
+commit 3dd59b07d1f4a93ee1f65d6a64e1afb6f5e84232
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Sep 9 14:57:36 2011 +0200
+
+    Remove all PLATFORM_VERSION = 2.0 traces
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ gi/Makefile.am            |    2 --
+ gi/overrides/Makefile.am  |    1 -
+ gi/repository/Makefile.am |    1 -
+ 3 files changed, 4 deletions(-)
+
+commit db1e484bfa157967de55ee2e0e18a82b8e388b61
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Sep 9 14:57:25 2011 +0200
+
+    Remove gi/tests/ directory as all the tests now live in tests/
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ gi/tests/Makefile.am |   24 ------------------------
+ gi/tests/runtests.py |   21 ---------------------
+ 2 files changed, 45 deletions(-)
+
+commit b0ecbf00138ef1147e478ebf3c66f0e9b3f85dfc
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Sep 9 14:55:25 2011 +0200
+
+    autogen.sh: Use autoreconf instead of a custom script and honor
+    ACLOCAL_FLAGS
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ Makefile.am |    2 +-
+ autogen.sh  |   95
+ +++++++----------------------------------------------------
+ 2 files changed, 12 insertions(+), 85 deletions(-)
+
+commit 4671f5397003f376f00830e3fd1c214de594619f
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Sep 9 14:55:01 2011 +0200
+
+    use improved python.m4 macros to search for Python headers and libs
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ configure.ac |    3 ++-
+ m4/python.m4 |   47 +++++++++++++++++++++++++++++++++++++----------
+ 2 files changed, 39 insertions(+), 11 deletions(-)
+
+commit 2c9fd09da196d35db968bff4ae63fcce2d891e69
+Author: Javier Jardón <jjardon@gnome.org>
+Date:   Fri Sep 9 15:38:22 2011 +0100
+
+    Make maintiner mode enabled by default
+
+    See
+    http://blogs.gnome.org/desrt/2011/09/08/am_maintainer_mode-is-not-cool/
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b24dcb415406668931e02a1f669ef9861bb3a660
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Wed Aug 24 09:58:10 2011 +0200
+
+    Disable documentation for now since they are completely wrong for GI.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=657054
+
+ Makefile.am  |    2 +-
+ configure.ac |   25 -------------------------
+ 2 files changed, 1 insertion(+), 26 deletions(-)
+
+commit ecea2358a379c8ff44dff2f8f9c30a9092af1681
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Wed Sep 7 10:38:28 2011 +0200
+
+    Fix documentation installation directory
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=657054
+
+ docs/Makefile.am |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit 8d3125c8ce9890c70400dd8a3ac273b590fe6a31
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Tue Sep 6 22:22:11 2011 +0200
+
+    Remove distutils based build system.
+
+    The only reason this might be brought back to life again is when
+    the whole stack can be built with Visual Studio (including
+    gobject-introspection) again. Building with MinGW/MSYS can now
+    be done with the usual autogen.sh/configure/make/make install dance.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=657054
+
+ MANIFEST.in              |    7 -
+ Makefile.am              |   25 +--
+ README.win32             |   21 --
+ dsextras.py              |  509
+ ----------------------------------------------
+ pygobject_postinstall.py |    9 -
+ setup.py                 |  351 --------------------------------
+ 6 files changed, 7 insertions(+), 915 deletions(-)
+
+commit b82d916635aa0b732840548088a3fcfcb2e41bc4
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Wed Sep 7 10:40:36 2011 +0200
+
+    [gtk-demo] Fix syntax highlighter encoding issue
+
+    With Python 3, Gtk.TextBuffer.get_text returns a str (not bytes), with
+    Python 2 however we get a str (not unicode). So with Python 2 the
+    tokenizer returned bogus data when ran over a demo that contains real
+    UTF-8 codepoints (like rotatedtext.py for example).
+
+    This patch thus fixes the "Gtk-CRITICAL **:
+    gtk_text_iter_set_line_offset:
+    assertion `char_on_line <= chars_in_line` failed" assertions when
+    selecting
+    the rotated text demo in the treeview.
+
+ demos/gtk-demo/gtk-demo.py |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 31db3ed3d233bd495c3a2f99b3fa51031bfa30c6
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date:   Tue Sep 6 22:13:54 2011 +0200
+
+    overrides: add constants for atoms
+
+ gi/overrides/Gdk.py |   49
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 49 insertions(+)
+
+commit 81861bc2d664eb38d46e5c38ff755d436f040f63
+Author: Steve Frécinaux <code@istique.net>
+Date:   Wed Aug 31 14:18:56 2011 +0200
+
+    Drop pygobject_construct() from public API.
+
+    These functions were introduced in 2005 because python objects
+    could not
+    "just" be instantiated using g_object_new(), but this is not true
+    anymore since the introduction of new-style constructors. Hence
+    this API
+    has no reason to be there anymore.
+
+    Nowadays, people who want to construct GObjects defined in python
+    should
+    just use g_object_new().
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=657814
+
+ gi/_gobject/gobjectmodule.c     |  118
+ +++++++++------------------------------
+ gi/_gobject/pygobject-private.h |    3 -
+ gi/_gobject/pygobject.h         |    8 ---
+ 3 files changed, 26 insertions(+), 103 deletions(-)
+
+commit c4c55a98ccf9e39ed0d10ed49b66a76dc7d7c509
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date:   Wed Aug 31 18:00:44 2011 +0200
+
+    post release version bump
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ac5a0f46242abdd3cd98ec5f9f2bf8e5b05f3845
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date:   Wed Aug 31 17:58:37 2011 +0200
+
+    Release 2.90.3
+
+ NEWS |   12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+commit 429569abddada5a3bad554de707ddf35b349936e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Aug 25 13:57:53 2011 -0400
+
+    support skip annotation for return values
+
+    * this is used for things like skiping gboolean returns that are
+      useful is C but useless in python
+
+    * cleans up after skipped returns that are also marked transfer
+      full
+    https://bugzilla.gnome.org/show_bug.cgi?id=650135
+
+ gi/pygi-cache.c          |    1 +
+ gi/pygi-cache.h          |    1 +
+ gi/pygi-invoke.c         |   48
+ +++++++++++++++++++++++++++++-----------------
+ tests/test_everything.py |    8 ++++++++
+ 4 files changed, 40 insertions(+), 18 deletions(-)
+
+commit 7a234b185b131f3eb6a6e8a8c717ddf4d508b15e
+Author: Xavier Claessens <xclaesse@gmail.com>
+Date:   Tue Aug 2 12:05:12 2011 +0200
+
+    Test GPtrArray regression
+
+ tests/test_everything.py |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 42fc9fa437102c882844a0e70a081ab08de92658
+Author: Steve Frécinaux <code@istique.net>
+Date:   Fri Aug 26 10:53:43 2011 +0200
+
+    Drop support for old constructor style.
+
+    Bindings don't write their own constructors anymore, and the old style
+    has been deprecated for ages, so let's just drop them now and make
+    pygobject simpler.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=657413
+
+ gi/_gobject/gobjectmodule.c     |   20 --------------------
+ gi/_gobject/pygobject-private.h |    1 -
+ gi/_gobject/pygobject.c         |    1 -
+ gi/_gobject/pygobject.h         |    2 --
+ gi/gimodule.c                   |   28 ----------------------------
+ gi/types.py                     |    2 --
+ tests/testhelpermodule.c        |    5 -----
+ 7 files changed, 59 deletions(-)
+
+commit 3961a405e1bddef22e1a5a0c7aa3ae55e4ec09ad
+Author: Steve Frécinaux <code@istique.net>
+Date:   Fri Aug 26 10:45:59 2011 +0200
+
+    Drop support for sink functions.
+
+    Sink functions were meant to deal with floating references in a custom
+    way. They are not useful anymore with the dynamic bindings.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642233
+
+ gi/_gobject/gobjectmodule.c |    1 -
+ gi/_gobject/pygobject.c     |   53 --------------------------------------
+ gi/_gobject/pygobject.h     |    4 ---
+ tests/test-floating.c       |   59
+ +++++++------------------------------------
+ tests/test-floating.h       |   42 ++++++++----------------------
+ tests/test_gobject.py       |   13 +++-------
+ tests/testhelpermodule.c    |   32 +++++++----------------
+ 7 files changed, 32 insertions(+), 172 deletions(-)
+
+commit 631d8ef879a13492945a3e30b3df9863a4ba2f44
+Author: Mike Gorse <mgorse@novell.com>
+Date:   Wed Aug 24 17:30:09 2011 -0500
+
+    Reinstate copying of in-line structs in arrays
+
+    For arrays of in-line, non-boxed structures with (transfer full),
+    _pygi_marshal_free_out_array eventually gets called and frees
+    the array
+    data, so we should copy it (IE, BGO#653588).
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=657120
+
+ gi/pygi-marshal-out.c |    8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit f38511f251602e18551c04617cc2e2d42e812e1e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Tue Aug 23 14:18:43 2011 -0400
+
+    fix inline struct array handling
+
+    * we now assume any non-boxed structs are inline in an array since
+    there is
+       no way to check in GI and this is the most common use for an
+       array of
+       non-boxed structs
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=657120
+
+ gi/pygi-marshal-out.c |   23 +++++++++--------------
+ tests/test_gi.py      |    8 ++++++++
+ 2 files changed, 17 insertions(+), 14 deletions(-)
+
+commit d92846a5446b0dd2e69c813f56224a1966ab1a33
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Tue Aug 23 11:30:41 2011 +0200
+
+    [gtk-demo] printing.py: set print and error dialog transient parent
+
+ demos/gtk-demo/demos/printing.py |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 1aebc1565752840075027b9452fe2a67217bf53b
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Tue Aug 23 11:28:05 2011 +0200
+
+    [gtk-demo] printing.py: exit Gtk mainloop when done and correctly
+    handle printing errors
+
+ demos/gtk-demo/demos/printing.py |   14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+commit 1f9e4486c5b84209ce0038887738fc16a4ef7da3
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Tue Aug 23 08:05:43 2011 +0200
+
+    [gtk-demo] show "activated" demo's in italic font in the TreeView
+
+ demos/gtk-demo/gtk-demo.py |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 971d063f7a36e13ef6621db7002b00af52f6292a
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Aug 22 14:52:28 2011 +0200
+
+    [gtk-demo] source colorizer: Python3 does not have the BACKQUOTE
+    token, so simply remove it
+
+ demos/gtk-demo/gtk-demo.py |    5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+commit c2979a37d6d505095b6e55789150a6498d95819d
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Aug 22 14:22:18 2011 +0200
+
+    [gtk-demo] In Python3, GLib.file_get_contents returns a bytes object
+    but Gtk.TextBuffer.insert expects a string.
+
+    Fixed by using codes.open() as hinted in
+    http://docs.python.org/dev/howto/pyporting.html#text-files
+    section "If pre-2.6 compatibility is needed" (because configure.ac
+    is still happy with Python 2.5.2).
+
+ demos/gtk-demo/gtk-demo.py |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit 9ea56535f35abbea4cd977dea4c89247e4b01694
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Aug 22 12:30:24 2011 +0200
+
+    [gtk-demo] images.py: fix 'Insensitive 'button mnenomic
+
+ demos/gtk-demo/demos/images.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7829dae1cdb8697a19c2b5e158ef0e08f6c2558b
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Aug 22 10:38:04 2011 +0200
+
+    [gtk-demo] printing.py: fix Pango.EllipsizeType > Pango.EllipsizeMode
+    & get_pixel_size
+
+ demos/gtk-demo/demos/printing.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 07f0274301d77d9bf62b49a14b059d9a52afb445
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Aug 22 10:37:08 2011 +0200
+
+    [gtk-demo] printing.py: fix text file loading
+
+ demos/gtk-demo/demos/printing.py |   32 ++++++++++++++++----------------
+ 1 file changed, 16 insertions(+), 16 deletions(-)
+
+commit 135148a4c35aac1d132b0b8fa3adbf1fdcdb3a24
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Aug 22 10:20:35 2011 +0200
+
+    [gtk-demo] pixbuf.py: fix image loading
+
+ demos/gtk-demo/demos/pixbuf.py |   25 +++++++++++--------------
+ 1 file changed, 11 insertions(+), 14 deletions(-)
+
+commit a93cae2c80e30a408f86e7e6c4d15a538011a189
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Aug 22 10:10:02 2011 +0200
+
+    [gtk-demo] images.py: fix logo loading
+
+ demos/gtk-demo/demos/images.py |   70
+ +++++++++++++++++-----------------------
+ 1 file changed, 29 insertions(+), 41 deletions(-)
+
+commit eddc0824e0e4c156fca5de05bdeb600c534d4b24
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Wed Aug 24 12:19:21 2011 +0200
+
+    [gtk-demo] appwindow.py: set AboutDialog parent
+
+ demos/gtk-demo/demos/appwindow.py |    7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+commit 7fe10a5b33148b1f029f3d34f76b7f880c1c2e7a
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Aug 22 07:58:25 2011 +0200
+
+    [gtk-demo] appwindow.py: fix logo loading
+
+ demos/gtk-demo/demos/appwindow.py |   10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+commit 62fda288c1c37167c589e8e9d49ed625f770a98a
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Aug 22 07:57:31 2011 +0200
+
+    [gtk-demo] appwindow.py: fix callback signatures
+
+ demos/gtk-demo/demos/appwindow.py |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 87e9ab4d3a0aac4f4710aa0f8af0a1736f781ad9
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Aug 22 07:48:28 2011 +0200
+
+    [gtk-demo] fix glib vs GLib usage
+
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    2 +-
+ demos/gtk-demo/demos/appwindow.py                |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit d29cad6976a80862e1fc590d3e7d190e8a234866
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Wed Aug 24 12:19:02 2011 +0200
+
+    [gtk-demo] iconviewedit.py: fix for Gdk.color_parse API breakage
+    caused by improved GDK overrides
+
+ demos/gtk-demo/demos/Icon View/iconviewedit.py |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit f29d3a85a275a39e8481484779264b0dea1160ab
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Mon Aug 22 07:25:32 2011 +0200
+
+    [gtk-demo] optimize source colorizer by only preparing iters for
+    known colorized tokens
+
+ demos/gtk-demo/gtk-demo.py |   20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+commit ecd1eb00b19733da3f2e3d7935792378f34cab19
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Aug 19 18:31:20 2011 +0200
+
+    [gtk-demo] small formatting fixes
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py       |    1 +
+ demos/gtk-demo/demos/Entry/entry_completion.py   |    1 +
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    8 ++++----
+ demos/gtk-demo/demos/assistant.py                |    1 +
+ demos/gtk-demo/demos/builder.py                  |    4 +++-
+ demos/gtk-demo/demos/button_box.py               |    1 +
+ demos/gtk-demo/demos/clipboard.py                |    1 +
+ demos/gtk-demo/demos/colorselector.py            |    1 +
+ demos/gtk-demo/demos/combobox.py                 |    1 +
+ demos/gtk-demo/demos/drawingarea.py              |    4 +++-
+ demos/gtk-demo/demos/test.py                     |    2 ++
+ 11 files changed, 19 insertions(+), 6 deletions(-)
+
+commit c42cb4da399ff5732f4ca732b85134de796a60fa
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Aug 19 18:30:50 2011 +0200
+
+    [gtk-demo] remove "is_fully_bound" from demos
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py     |    2 --
+ demos/gtk-demo/demos/Entry/entry_completion.py |    2 --
+ demos/gtk-demo/demos/appwindow.py              |    3 ---
+ demos/gtk-demo/demos/assistant.py              |    2 --
+ demos/gtk-demo/demos/builder.py                |    2 --
+ demos/gtk-demo/demos/button_box.py             |    2 --
+ demos/gtk-demo/demos/clipboard.py              |    2 --
+ demos/gtk-demo/demos/colorselector.py          |    2 --
+ demos/gtk-demo/demos/combobox.py               |    2 --
+ demos/gtk-demo/demos/drawingarea.py            |    2 --
+ demos/gtk-demo/demos/test.py                   |    1 -
+ 11 files changed, 22 deletions(-)
+
+commit cad6a62c63f455f0b1315465a9cd71c0f02b12a5
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Aug 19 18:26:31 2011 +0200
+
+    [gtk-demo] add source colorizer loosely based on PyGTK's pygtk-demo
+    and GTK+'s gtk-demo code
+
+ demos/gtk-demo/gtk-demo.py |  116
+ ++++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 101 insertions(+), 15 deletions(-)
+
+commit 250c36f4a8352ff1b31c1c85b156d3e803d4b8ef
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Aug 19 15:08:15 2011 +0200
+
+    [gtk-demo] remove C-isms
+
+ demos/gtk-demo/gtk-demo.py |   28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+commit cf35fe8e259e786d0fa21b08b1f5c64c9bb0a84e
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Aug 19 14:54:39 2011 +0200
+
+    [gtk-demo] fix text on info tab to be more like GTK+'s gtk-demo
+
+ demos/gtk-demo/gtk-demo.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 241827208e25c72a990d8edd95a3b879470d6409
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Aug 19 14:40:56 2011 +0200
+
+    [gtk-demo] remove duplicate storage of demos by only storing them
+    in a TreeStore subclass
+
+    This also moves demos loading code into the TreeStore subclass and
+    demo loading code into the Demo class
+
+ demos/gtk-demo/gtk-demo.py |  151
+ ++++++++++++++++++++------------------------
+ 1 file changed, 70 insertions(+), 81 deletions(-)
+
+commit 58797c355a08a35375988881a17958bb42ad54bb
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Aug 19 14:40:00 2011 +0200
+
+    [gtk-demo] make GtkDemoApp a Gtk.Window subclass and adapt main()
+    to demonstrate the GLib.MainLoop
+
+ demos/gtk-demo/gtk-demo.py |   43
+ ++++++++++++++++++++++++++-----------------
+ 1 file changed, 26 insertions(+), 17 deletions(-)
+
+commit 1e4fc1ea54527cff78f6c633db39e9a0bd3c64d2
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Aug 19 11:46:17 2011 +0200
+
+    [gtk-demo] correctly load demo code when cwd != demos/gtk-demo/
+
+ demos/gtk-demo/gtk-demo.py |   39 +++++++++++++++++++++++----------------
+ 1 file changed, 23 insertions(+), 16 deletions(-)
+
+commit 6ffc999fbd4c9990fb5bde53ddd46d139b53245e
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Aug 19 11:02:35 2011 +0200
+
+    [gtk-demo] drawingarea: fix labels
+
+ demos/gtk-demo/demos/drawingarea.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 9fd3986affe11cbc5a816adcccdc56d0592f3618
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Aug 19 09:57:31 2011 +0200
+
+    [gtk-demo] fix imports
+
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    6 ++++--
+ demos/gtk-demo/demos/appwindow.py                |    9 ++++++---
+ demos/gtk-demo/gtk-demo.py                       |    8 ++++----
+ 3 files changed, 14 insertions(+), 9 deletions(-)
+
+commit 9f314babfdee3b82799e00ea003972b0bbe6a8d5
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:   Fri Aug 19 10:07:14 2011 +0200
+
+    [gtk-demo] fix shebang
+
+ demos/gtk-demo/gtk-demo.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 01142060ae7d71a8a1f7d3e9bbc6f52e65f01c8d
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:   Fri Aug 19 12:27:04 2011 +0200
+
+    Added support for __setitem__ to TreeModel and support for slices
+    to TreeModelRow
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=656891
+
+ gi/overrides/Gtk.py     |   26 +++++++++++++++++++--
+ tests/test_overrides.py |   57
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 81 insertions(+), 2 deletions(-)
+
+commit d6da96c65b2ed3cda238886990a624fbc31f6987
+Author: Olav Vitters <olav@vitters.nl>
+Date:   Wed Aug 24 16:31:12 2011 +0200
+
+    Convert ACCEL_* constants into Gtk.AccelFlags.
+
+ pygi-convert.sh |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 0841d41698302abb5d987849a5874252564ed428
+Author: Olav Vitters <olav@vitters.nl>
+Date:   Wed Aug 24 16:22:17 2011 +0200
+
+    Convert TREE_VIEW_DROP_* constants into Gtk.TreeViewDropPosition
+
+ pygi-convert.sh |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 37b0d0f9dc3d485829cae6e50da369fdea91a2d1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Aug 18 14:06:32 2011 -0400
+
+    post commit version bump
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e51efc50835a14e0418cc27cc928c52d1aa6a3cf
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Aug 18 14:02:30 2011 -0400
+
+    release 2.90.2
+
+ NEWS |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 74c727b53fcf64f465ee77b5a1ea04a69ca90968
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Aug 18 13:50:51 2011 -0400
+
+    remove tests that were removed from gi
+
+ tests/test_gi.py |   11 -----------
+ 1 file changed, 11 deletions(-)
+
+commit 11ea24dd30d8eeca11c8433c6bd75b06e52ae1ef
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Aug 18 13:48:57 2011 -0400
+
+    don't calculate item_size using is_pointer
+
+     * is_pointer is poorly defined and cacluating item_size for
+       arrays causes a crash in the tests because of this
+     * disregaurd is_pointer when cacluating item sizes
+
+ gi/pygi-info.c |    8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+commit 493b4a21dd162d78cf572b548b58ba6a9ff22971
+Author: Timo Vanwynsberghe <timovwb@gmail.com>
+Date:   Wed Jul 6 01:50:31 2011 +0200
+
+    Updated signal example to use GObject introspection
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=654162
+
+ examples/signal.py |    9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+commit 0332010e704e253380e993874eab9dd122e59a7e
+Author: Timo Vanwynsberghe <timovwb@gmail.com>
+Date:   Wed Jul 6 01:54:50 2011 +0200
+
+    Updated properties example to use GObject introspection
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=654162
+
+ examples/properties.py |   14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+commit c39f4555ebd703651eca6f978ed9870655b737f0
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Fri Aug 12 22:55:02 2011 +0200
+
+    Add override for GLib.Variant.split_signature()
+
+    This is useful for e. g. iterating over method parameters which are
+    passed as a
+    single Variant. In particular we will need it for automatically
+    generating
+    introspection XML for exported DBus server objects.
+
+ gi/overrides/GLib.py    |   50
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py |   22 +++++++++++++++++++++
+ 2 files changed, 72 insertions(+)
+
+commit 735f98d83c1c19df7457aa32a378e8c80cf2831f
+Author: Timo Vanwynsberghe <timovwb@gmail.com>
+Date:   Mon Aug 15 18:58:31 2011 +0200
+
+    [pygi-convert.sh] Handle the import of pygtk and require Gtk 3.0
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=654001
+
+ pygi-convert.sh |    2 ++
+ 1 file changed, 2 insertions(+)
+
+commit d0a96a0a75f2bc969522abce2d326ef440cf143a
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date:   Mon Aug 15 13:12:49 2011 +0200
+
+    Install pygobject.h again.
+
+    This is needed by libpeas.
+
+ gi/_gobject/Makefile.am         |    5 ++++-
+ pygobject-3.0-uninstalled.pc.in |    4 ++--
+ pygobject-3.0.pc.in             |    6 +++---
+ 3 files changed, 9 insertions(+), 6 deletions(-)
+
+commit 081dc2eb03b677eac9f08d3ad05deecc7c51554c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Sun Aug 14 11:20:15 2011 -0400
+
+    update the doap file
+
+ pygobject.doap |   26 ++++++++++++++------------
+ 1 file changed, 14 insertions(+), 12 deletions(-)
+
+commit 762a36d2343bc39a502507d600fd1b9db9649dae
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Sun Aug 14 11:13:25 2011 -0400
+
+    prerelease bump
+
+ configure.ac |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d3f85a61ec4b1a1d04838f73dc8d862258150048
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Sun Aug 14 10:13:37 2011 -0400
+
+    get things ready for release
+
+ NEWS |  194
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 194 insertions(+)
+
+commit ffd057649380d4249c1c52e1225e3646f3994bc6
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Sun Aug 14 05:26:18 2011 -0400
+
+    pass exta keywords to the Box constructor
+
+ gi/overrides/Gtk.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit cadbd4142bd0045368b5123d4b0a1876bdd5d798
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Sat Aug 13 11:03:07 2011 -0400
+
+    add (Tree|List)Store set method override
+
+ gi/overrides/Gtk.py     |   50 +++++++++++++++++++++++
+ tests/test_overrides.py |  102
+ +++++++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 149 insertions(+), 3 deletions(-)
+
+commit 9ee9b22bd95e44bd2eca26e7bf3b0a9a988700c5
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Sat Aug 13 09:19:29 2011 -0400
+
+    add test for object arrays
+
+ tests/test_everything.py |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit c9d9ffd0380878792cbdb13dec4e53be897e5fbc
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Sat Aug 13 08:46:18 2011 -0400
+
+    only support C pointer arrays for structs and objects
+
+    * There is no way to know if an array of structs or objects are
+    pointer arrays
+      or flat arrays.  Since pointer arrays are the most useful and
+      prevelant
+      it has been decided to only support those arrays
+
+ gi/pygi-marshal-out.c |    2 +-
+ tests/test_gi.py      |    8 --------
+ 2 files changed, 1 insertion(+), 9 deletions(-)
+
+commit b12379de1790b72d51883bf7b63c892639a892e7
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Sat Aug 13 06:31:52 2011 -0400
+
+    revert Gtk.Window override because it causes issues with subclasses
+
+ gi/overrides/Gtk.py |    9 ---------
+ 1 file changed, 9 deletions(-)
+
+commit 3e64a62d6d7f9e9d2820aad54187ef9c34710a1f
+Author: Jonathan Matthew <jonathan@d14n.org>
+Date:   Thu Apr 7 21:05:32 2011 +1000
+
+    take GIL in _pygi_invoke_closure_free (bug #647016)
+
+ gi/pygi-closure.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit f8de9b8615f5dc30f492781d792aef5fc1e9ab73
+Author: Johan Dahlin <jdahlin@litl.com>
+Date:   Mon Jun 27 00:41:24 2011 -0300
+
+    Add a default parameter to GtkTreeModel.filter_new
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gtk.py |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 583d0b3c6b53712128d7c2d5f075000a2a76ae5f
+Author: Johan Dahlin <jdahlin@litl.com>
+Date:   Mon Jun 27 00:40:12 2011 -0300
+
+    Add vbox/action_area properties
+
+    Accessing vbox/action_area directly creates segmentation fault,
+    avoid that by mapping the fields to their getters for PyGTK
+    API compatibility
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gtk.py |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 017fdfc1dd06259006719e02ffa48883cee01ffd
+Author: Johan Dahlin <jdahlin@litl.com>
+Date:   Mon Jun 27 00:39:41 2011 -0300
+
+    Add a couple of constructors
+
+    This is for PyGTK compatibility, so that gtk.HBox(True, 2) etc
+    works.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gtk.py |   40 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+
+commit af8bc9d5cdba48a7ee728ccb7ea9039df3ecceba
+Author: Johan Dahlin <jdahlin@litl.com>
+Date:   Mon Jun 27 00:38:30 2011 -0300
+
+    Do not always pass in user_data to callbacks.
+
+    This keeps API compatibility with PyGTK and avoids sending
+    in user_data if it's None.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gtk.py |   15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+commit 7914d814350af1a18bdeda64f049c8e9a68d1d18
+Author: Johan Dahlin <jdahlin@litl.com>
+Date:   Mon Jun 27 00:38:20 2011 -0300
+
+    Add a default detail value for Widget.render_icon
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gtk.py |    3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 5b1c875269b7979caae97e84919a690a34d92f29
+Author: Johan Dahlin <jdahlin@litl.com>
+Date:   Mon Jun 27 00:36:20 2011 -0300
+
+    Add an override for Gdk.color_parse()
+
+    Change Gdk.color_parse() to not return a tuple, instead just
+    return the created color or None if it wasn't possible to parse
+    the name into a color.
+
+    This keeps compatibility with PyGTK but breaks the current API.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gdk.py |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 187a2932bbf1e724f759ff3ed3392fc7341c6aa8
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date:   Mon Aug 8 12:06:18 2011 +0200
+
+    Support function calling with keyword arguments in invoke.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=625596
+
+ gi/pygi-cache.c          |   39 +++++++++++
+ gi/pygi-cache.h          |    4 ++
+ gi/pygi-invoke.c         |  162
+ ++++++++++++++++++++++++++++++++++++++++++++--
+ gi/types.py              |   12 ++--
+ tests/test_everything.py |    2 +-
+ tests/test_gi.py         |   58 +++++++++++++++++
+ 6 files changed, 265 insertions(+), 12 deletions(-)
+
+commit e5df32ffbf37481dbb6a70c4d4e7b7b9778c5549
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Sat Aug 13 04:13:28 2011 -0400
+
+    remove references to deprecated GI_INFO_TYPE_ERROR_DOMAIN
+
+ gi/pygi-info.c |    5 -----
+ 1 file changed, 5 deletions(-)
+
+commit 745001178fc72be5626c7211366d694f41162987
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Thu Aug 11 15:11:42 2011 +0200
+
+    Fix gobject vs. gi.repository warning
+
+    Check the warning earlier and fix the operator, so that it actually
+    works. Also
+    update the warning to explain how to fix the problem.
+
+ gi/_gobject/__init__.py |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 25d2d05cba05414cd4551e0e06f6286a9b97a509
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 22 15:46:31 2011 -0400
+
+    make GObject and GLib able to take overrides
+
+    * derive directly from DynamicModule instead of InterfaceModule
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/importer.py |   11 +++---
+ gi/module.py   |  118
+ ++++++++++++++++++++++++++++----------------------------
+ 2 files changed, 64 insertions(+), 65 deletions(-)
+
+commit 698b2284e29c0f699198cf6a22eeb0e399daba6e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 22 15:45:09 2011 -0400
+
+    avoid dependency issue by importing the internal gobject
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/__init__.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7b068ebe59884ebd9aeb4425dc80cdff73a66fb1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 22 14:13:02 2011 -0400
+
+    fix tests to use the new GLib module
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ tests/test_mainloop.py   |    7 +++----
+ tests/test_option.py     |    3 ++-
+ tests/test_source.py     |   24 +++++++++++-------------
+ tests/test_subprocess.py |   12 +++++-------
+ tests/test_thread.py     |   10 ++++------
+ tests/test_uris.py       |    4 ++--
+ 6 files changed, 27 insertions(+), 33 deletions(-)
+
+commit 191ef79315f8a5641699536fde58da18e23ef904
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 22 14:11:53 2011 -0400
+
+    add DynamicGLibModule which works like DynamicGObjectModule
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/importer.py |    7 +++++--
+ gi/module.py   |   32 +++++++++++++++++++++++++++++---
+ 2 files changed, 34 insertions(+), 5 deletions(-)
+
+commit fbd4a8263260c187211799454c08b1e55e2cb998
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 22 12:27:41 2011 -0400
+
+    refactor, add objects and types to the correct internal module
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/_glib/pygiochannel.c     |   38 +++++++++++++++++++-------------------
+ gi/_glib/pygmaincontext.c   |    2 +-
+ gi/_glib/pygmainloop.c      |    4 ++--
+ gi/_glib/pygoptioncontext.c |    4 ++--
+ gi/_glib/pygoptiongroup.c   |    4 ++--
+ gi/_glib/pygsource.c        |   14 +++++++-------
+ gi/_glib/pygspawn.c         |   14 +++++++-------
+ 7 files changed, 40 insertions(+), 40 deletions(-)
+
+commit 7431b49a161df9178c55b814d3adff992ac2d722
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 22 12:26:32 2011 -0400
+
+    rename the pyglib shared library so we don't load the old one
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/Makefile.am          |    2 +-
+ gi/_glib/Makefile.am    |   10 +++++-----
+ gi/_gobject/Makefile.am |    2 +-
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
+commit b8700451acd4a19b59b64fc8641fca748d2189e2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 22 11:20:09 2011 -0400
+
+    refactor tests to only use PyGObject 3 syntax
+
+    * for PyGObject 3 we want to discourage the use of legacy
+       interfaces
+     * Using interfaces like from gi.repository import GObject makes
+       sure that the internal _gobject module is loaded and not
+       PyGObject 2's gobject module which would cause the application
+       to not work correctly
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ tests/runtests-windows.py |    4 +-
+ tests/test_gdbus.py       |   12 ++---
+ tests/test_gi.py          |    4 +-
+ tests/test_gobject.py     |   31 ++++++------
+ tests/test_interface.py   |   16 +++---
+ tests/test_mainloop.py    |    3 +-
+ tests/test_overrides.py   |    8 +--
+ tests/test_properties.py  |  124
+ ++++++++++++++++++++++-----------------------
+ tests/test_signal.py      |   98 +++++++++++++++++------------------
+ tests/test_source.py      |    5 +-
+ tests/test_subprocess.py  |    3 +-
+ tests/test_thread.py      |    5 +-
+ tests/test_unknown.py     |    8 +--
+ tests/testhelpermodule.c  |    2 +-
+ tests/testmodule.py       |   10 ++--
+ 15 files changed, 169 insertions(+), 164 deletions(-)
+
+commit c980dae21468fe073cc8782608148c346bb90ad7
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 22 11:16:00 2011 -0400
+
+    refactor the internal _glib module to import correct modules
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/_glib/__init__.py  |    3 ++-
+ gi/_glib/glibmodule.c |   10 +++++-----
+ gi/_glib/option.py    |    4 ++--
+ gi/_glib/pyglib.c     |   18 +++++++++---------
+ 4 files changed, 18 insertions(+), 17 deletions(-)
+
+commit 65ac35cca8d24f4c133991e1c6ac02f49416a9a4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 22 11:10:46 2011 -0400
+
+    refactor to use the new internal _glib and _gobject modules
+
+    * use relative imports instead of aboslute
+     * fix the C imports to import the internal _gobject libs
+     * add a check to see if the PyGObject 2 gobject module
+       was already imported
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/_gobject/__init__.py       |   20 +++++++++++++-------
+ gi/_gobject/constants.py      |    3 +--
+ gi/_gobject/gobjectmodule.c   |    2 +-
+ gi/_gobject/propertyhelper.py |   11 +++++------
+ gi/_gobject/pygobject.c       |   16 ++++++++--------
+ gi/_gobject/pygobject.h       |    2 +-
+ 6 files changed, 29 insertions(+), 25 deletions(-)
+
+commit 59ed1289f76bc287443b3974710ea0da3e2cc8cc
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 22 11:07:10 2011 -0400
+
+    refactor gi module to import and use internal _gobject module
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/importer.py           |    2 --
+ gi/module.py             |   31 ++++++++++++++++---------------
+ gi/overrides/Gtk.py      |    2 +-
+ gi/overrides/__init__.py |    6 +++---
+ gi/pygobject-external.h  |    2 +-
+ gi/types.py              |   12 ++++++------
+ 6 files changed, 27 insertions(+), 28 deletions(-)
+
+commit 6b9d738d78c6ac45d49f00402c89356887555069
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 22 11:02:49 2011 -0400
+
+    move the static bits internal to gi and refactor build files
+
+    * the glib module now becomes the gi._glib module
+    * the gobject module now becomes the gi._gobject module
+    * we do this so we can install in parallel with PyGObject 2
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ Makefile.am                     |    2 +-
+ configure.ac                    |    6 +-
+ gi/Makefile.am                  |    8 +-
+ gi/_glib/Makefile.am            |   58 +
+ gi/_glib/__init__.py            |   25 +
+ gi/_glib/glibmodule.c           |  969 ++++++++++++++
+ gi/_glib/option.py              |  358 ++++++
+ gi/_glib/pygiochannel.c         |  764 ++++++++++++
+ gi/_glib/pygiochannel.h         |   29 +
+ gi/_glib/pyglib-private.h       |   49 +
+ gi/_glib/pyglib-python-compat.h |  245 ++++
+ gi/_glib/pyglib.c               |  633 ++++++++++
+ gi/_glib/pyglib.h               |   83 ++
+ gi/_glib/pygmaincontext.c       |  126 ++
+ gi/_glib/pygmaincontext.h       |   40 +
+ gi/_glib/pygmainloop.c          |  360 ++++++
+ gi/_glib/pygmainloop.h          |   36 +
+ gi/_glib/pygoptioncontext.c     |  337 +++++
+ gi/_glib/pygoptioncontext.h     |   39 +
+ gi/_glib/pygoptiongroup.c       |  298 +++++
+ gi/_glib/pygoptiongroup.h       |   42 +
+ gi/_glib/pygsource.c            |  725 +++++++++++
+ gi/_glib/pygsource.h            |   39 +
+ gi/_glib/pygspawn.c             |  264 ++++
+ gi/_glib/pygspawn.h             |   32 +
+ gi/_gobject/Makefile.am         |   71 ++
+ gi/_gobject/__init__.py         |  117 ++
+ gi/_gobject/constants.py        |   83 ++
+ gi/_gobject/ffi-marshaller.c    |  194 +++
+ gi/_gobject/ffi-marshaller.h    |   31 +
+ gi/_gobject/gobjectmodule.c     | 2638
+ +++++++++++++++++++++++++++++++++++++++
+ gi/_gobject/propertyhelper.py   |  312 +++++
+ gi/_gobject/pygboxed.c          |  234 ++++
+ gi/_gobject/pygboxed.h          |   27 +
+ gi/_gobject/pygenum.c           |  366 ++++++
+ gi/_gobject/pygenum.h           |   27 +
+ gi/_gobject/pygflags.c          |  485 +++++++
+ gi/_gobject/pygflags.h          |   27 +
+ gi/_gobject/pyginterface.c      |  122 ++
+ gi/_gobject/pyginterface.h      |   40 +
+ gi/_gobject/pygobject-private.h |  241 ++++
+ gi/_gobject/pygobject.c         | 2397
+ +++++++++++++++++++++++++++++++++++
+ gi/_gobject/pygobject.h         |  667 ++++++++++
+ gi/_gobject/pygparamspec.c      |  404 ++++++
+ gi/_gobject/pygparamspec.h      |   31 +
+ gi/_gobject/pygpointer.c        |  198 +++
+ gi/_gobject/pygpointer.h        |   27 +
+ gi/_gobject/pygtype.c           | 1844 +++++++++++++++++++++++++++
+ gi/_gobject/pygtype.h           |   28 +
+ glib/Makefile.am                |   61 -
+ glib/__init__.py                |   25 -
+ glib/glibmodule.c               |  969 --------------
+ glib/option.py                  |  358 ------
+ glib/pygiochannel.c             |  764 ------------
+ glib/pygiochannel.h             |   29 -
+ glib/pyglib-private.h           |   49 -
+ glib/pyglib-python-compat.h     |  245 ----
+ glib/pyglib.c                   |  633 ----------
+ glib/pyglib.h                   |   83 --
+ glib/pygmaincontext.c           |  126 --
+ glib/pygmaincontext.h           |   40 -
+ glib/pygmainloop.c              |  360 ------
+ glib/pygmainloop.h              |   36 -
+ glib/pygoptioncontext.c         |  337 -----
+ glib/pygoptioncontext.h         |   39 -
+ glib/pygoptiongroup.c           |  298 -----
+ glib/pygoptiongroup.h           |   42 -
+ glib/pygsource.c                |  725 -----------
+ glib/pygsource.h                |   39 -
+ glib/pygspawn.c                 |  264 ----
+ glib/pygspawn.h                 |   32 -
+ gobject/Makefile.am             |   73 --
+ gobject/__init__.py             |  117 --
+ gobject/constants.py            |   83 --
+ gobject/ffi-marshaller.c        |  194 ---
+ gobject/ffi-marshaller.h        |   31 -
+ gobject/gobjectmodule.c         | 2638
+ ---------------------------------------
+ gobject/propertyhelper.py       |  312 -----
+ gobject/pygboxed.c              |  234 ----
+ gobject/pygboxed.h              |   27 -
+ gobject/pygenum.c               |  366 ------
+ gobject/pygenum.h               |   27 -
+ gobject/pygflags.c              |  485 -------
+ gobject/pygflags.h              |   27 -
+ gobject/pyginterface.c          |  122 --
+ gobject/pyginterface.h          |   40 -
+ gobject/pygobject-private.h     |  241 ----
+ gobject/pygobject.c             | 2397
+ -----------------------------------
+ gobject/pygobject.h             |  667 ----------
+ gobject/pygparamspec.c          |  404 ------
+ gobject/pygparamspec.h          |   31 -
+ gobject/pygpointer.c            |  198 ---
+ gobject/pygpointer.h            |   27 -
+ gobject/pygtype.c               | 1844 ---------------------------
+ gobject/pygtype.h               |   28 -
+ tests/Makefile.am               |    2 +-
+ 96 files changed, 16172 insertions(+), 16175 deletions(-)
+
+commit f0d2ddcf7e61c36f79a9adf8ccc53bf3db9349d3
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Mon Jul 18 18:46:31 2011 -0400
+
+    remove pygtk.py
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ Makefile.am |    5 ----
+ pygtk.py    |   95
+ -----------------------------------------------------------
+ 2 files changed, 100 deletions(-)
+
+commit 75e9f7d80d9224c05e6063b88479f1baee48c489
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Mon Jul 18 18:41:41 2011 -0400
+
+    introspection is no longer optional
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ Makefile.am         |    8 +-------
+ configure.ac        |   43 +++++++++++++++++--------------------------
+ gi/pygi.h           |   37 -------------------------------------
+ gobject/Makefile.am |    5 +----
+ tests/Makefile.am   |    7 +------
+ 5 files changed, 20 insertions(+), 80 deletions(-)
+
+commit d862168d6a82edd59547d39f5b0ab8279b1e511c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Mon Jul 18 18:28:50 2011 -0400
+
+    up platform version to 3.0
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ Makefile.am                     |    2 +-
+ configure.ac                    |    4 ++--
+ pygobject-2.0-uninstalled.pc.in |   18 ------------------
+ pygobject-2.0.pc.in             |   22 ----------------------
+ pygobject-3.0-uninstalled.pc.in |   18 ++++++++++++++++++
+ pygobject-3.0.pc.in             |   22 ++++++++++++++++++++++
+ 6 files changed, 43 insertions(+), 43 deletions(-)
+
+commit 5189b360ccddbbaee267ce857968fbf1aafdd07a
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Thu Aug 11 09:53:15 2011 +0200
+
+    [gi] Handle GVariants from callback return values
+
+    Callbacks still use GIArgument, add missing GVariant support for
+    return types.
+
+ gi/pygi-argument.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 18a240cc492d2e5ebe2709a0d7155e27c8ff9e63
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Aug 10 14:11:10 2011 +0200
+
+    Handle GVariants for callback arguments
+
+    Callbacks still use GIArgument, add missing GVariant support. This
+    is the
+    equivalent of what commit 9d5604220bd56 did for pygi_marshall_*().
+
+ gi/pygi-argument.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit aa820d6ce2fee83e61e3e9de7c6b7d2452e2847d
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date:   Mon Aug 8 01:58:10 2011 +0200
+
+    [gi] Fix crash: check return value of
+    _invoke_state_init_from_callable_cache() before continuing.
+
+ gi/pygi-invoke.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit eaad9f3c71cedfe28ff2d2bb05ea6c64e323715f
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date:   Fri Aug 5 21:03:33 2011 +0200
+
+    [gi] Pass gtype as first parameter to vfuncs (instead of using
+    kwargs).
+
+ gi/pygi-invoke.c |   32 ++++++++++++++++++--------------
+ gi/types.py      |    2 +-
+ 2 files changed, 19 insertions(+), 15 deletions(-)
+
+commit 76edfd0d5776f61c92c84fd9fb8dcc246c580e93
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Mon Jul 18 18:21:51 2011 -0400
+
+    remove codegen
+
+ Makefile.am                      |    2 +-
+ codegen/Makefile.am              |   33 -
+ codegen/README.defs              |  351 --------
+ codegen/__init__.py              |   16 -
+ codegen/argtypes.py              | 1043 -----------------------
+ codegen/code-coverage.py         |   44 -
+ codegen/codegen.py               | 1722
+ --------------------------------------
+ codegen/createdefs.py            |   17 -
+ codegen/definitions.py           |  575 -------------
+ codegen/defsconvert.py           |  132 ---
+ codegen/defsgen.py               |  737 ----------------
+ codegen/defsparser.py            |  153 ----
+ codegen/docextract.py            |  461 ----------
+ codegen/docextract_to_xml.py     |  142 ----
+ codegen/docgen.py                |  766 -----------------
+ codegen/h2def.py                 |  631 --------------
+ codegen/mergedefs.py             |   26 -
+ codegen/missingdefs.py           |   17 -
+ codegen/mkskel.py                |   89 --
+ codegen/override.py              |  285 -------
+ codegen/pygobject-codegen-2.0.in |   11 -
+ codegen/reversewrapper.py        |  912 --------------------
+ codegen/scanvirtuals.py          |   54 --
+ codegen/scmexpr.py               |  143 ----
+ configure.ac                     |    5 -
+ pygobject-2.0-uninstalled.pc.in  |    1 -
+ pygobject-2.0.pc.in              |    1 -
+ 27 files changed, 1 insertion(+), 8368 deletions(-)
+
+commit bf284c7c47c3e52ab4d8700327a170903e9ebad2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Mon Jul 18 11:04:58 2011 -0400
+
+    remove some left over ifdefs to complete merge of the invoke-rewrite
+    branch
+
+ gi/pygi-cache.h   |    2 --
+ gi/pygi-info.c    |    2 --
+ gi/pygi-private.h |    5 +----
+ gi/pygi.h         |    2 --
+ 4 files changed, 1 insertion(+), 10 deletions(-)
+
+commit 8c653ec3033fab47c4bb4071b5732a349357141f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Mon Jul 18 10:59:45 2011 -0400
+
+    rename pygi-invoke-ng to pygi-invoke
+
+ gi/Makefile.am      |    3 +-
+ gi/pygi-invoke-ng.c |  464
+ ---------------------------------------------------
+ gi/pygi-invoke.c    |  464
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 466 insertions(+), 465 deletions(-)
+
+commit 62d59fa2c2b31d7a3cac8996d58234d4b13bb19f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Mon Jul 18 10:56:36 2011 -0400
+
+    make invoke-ng the only invoker
+
+ configure.ac     |   11 -
+ gi/Makefile.am   |   10 +-
+ gi/pygi-invoke.c | 1030
+ ------------------------------------------------------
+ 3 files changed, 1 insertion(+), 1050 deletions(-)
+
+commit 2937cfe5bb7122dd3783c7919294d6a34a3dfc05
+Merge: 519e556 917ea2d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Mon Jul 18 10:45:18 2011 -0400
+
+    Merge branch 'master' into invoke-rewrite
+
+commit 519e556dc1e5874e1668bad93043fb9258c7ee79
+Merge: bab7e88 38cca3c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Mon Jul 18 10:37:20 2011 -0400
+
+    Merge branch 'master' into invoke-rewrite
+
+commit bab7e88251bffcd360186c6dedc26be8eb077084
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Mon Jul 18 10:35:10 2011 -0400
+
+    split the marshalling routines into two source files
+
+    * update copy and paste copyright info to list the correct owner
+
+ gi/Makefile.am        |    6 +-
+ gi/pygi-cache.c       |    3 +-
+ gi/pygi-marshal-in.c  | 1412 ++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-in.h  |  186 +++++
+ gi/pygi-marshal-out.c |  767 ++++++++++++++++++
+ gi/pygi-marshal-out.h |  144 ++++
+ gi/pygi-marshal.c     | 2145
+ -------------------------------------------------
+ gi/pygi-marshal.h     |  303 -------
+ 8 files changed, 2515 insertions(+), 2451 deletions(-)
+
+commit 917ea2dfa2d097e563233145003a66b3e4423287
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Thu Jul 14 11:21:10 2011 +0200
+
+    Ship tests/te_ST@nouppera in release tarballs for tests to succeed
+
+ tests/Makefile.am |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit e024e832ab9c82d3e299cc6e1cb427de44f2d16e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Wed Jul 13 15:43:02 2011 -0400
+
+    [invoke] break out caller_allocates allocating into its own function
+
+ gi/pygi-invoke-ng.c |   78
+ ++++++++++++++++++++++++++++++++-------------------
+ 1 file changed, 49 insertions(+), 29 deletions(-)
+
+commit fc8b8ce768ac780f7ed9edc63b70dd35194153c0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Wed Jul 13 15:42:26 2011 -0400
+
+    [invoke] missed a bit when removing constructor_class usage
+
+ gi/pygi-invoke-ng.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c94bcf4ae7e36f90c356c89712b00609f9f849bd
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Wed Jul 13 15:16:17 2011 -0400
+
+    [invoke] don't hold on to the constructor class, just add a TODO
+
+ gi/pygi-invoke-ng.c           |   11 +++++------
+ gi/pygi-invoke-state-struct.h |    1 -
+ 2 files changed, 5 insertions(+), 7 deletions(-)
+
+commit c11d3195f324ea41e86e3da7ff99b55425c2faec
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Jul 13 10:40:25 2011 +0200
+
+    [gi] Port test_properties from static gio to GI Gio
+
+    As we ripped out the static gio bindings a while ago, this test case
+    was using
+    the system installed gio bindings with Python 2, and now fails
+    completely with
+    Python 3. Rewrite it to use gi.repository.Gio.
+
+ tests/test_properties.py |   38 +++++++++++++++++++-------------------
+ 1 file changed, 19 insertions(+), 19 deletions(-)
+
+commit 8f89ff24fcac627ce15ca93038711fded1a7c5ed
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Wed Jul 13 08:42:22 2011 +0200
+
+    [python3] Fix maketrans import
+
+    Python3 moved the maketrans() function from the string module to a
+    str method.
+    This unbreaks gi/module.py for Python 3 again.
+
+ gi/module.py |    8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+commit 20aea4b052126fa0bface3e6e0dccfd77f9505b1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 8 14:39:22 2011 -0400
+
+    [caching] remove all inline compiler flags
+
+ gi/pygi-cache.c |   96
+ +++++++++++++++++++++++++++----------------------------
+ 1 file changed, 48 insertions(+), 48 deletions(-)
+
+commit bf7bb79b66ad406063fb443e7452d830c55986ef
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 8 14:35:20 2011 -0400
+
+    [caching] refactor function names to be less confusing
+
+ gi/pygi-cache.c |  307
+ +++++++++++++++++++++++++++----------------------------
+ 1 file changed, 150 insertions(+), 157 deletions(-)
+
+commit c167a9345b01c070bd5a84b4a4b3a53baf9e217d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Fri Jul 8 11:24:09 2011 -0400
+
+    [overrides] deprecate the use of type keyword MessageDialog
+    constructor
+
+    * pygtk used type to determine the "type" of message dialog to
+    display but we
+      use the proper property name "message_type" since we should not be
+      overriding a reserved word
+    * to keep compat with pygtk we check the kwds hash for the key
+    'type' and
+      assign it to message_type while throwing a deprecation warning
+    * also add a deprication warning when trying to use the depricated
+    NO_SEPARATOR
+      flag
+
+ gi/overrides/Gtk.py |   13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+commit 367e4ededd4a45125157050bcc9e4e685fd4a82d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Fri Jul 8 10:15:53 2011 +0200
+
+    gdbus tests: Fix hang if test case fails
+
+    In the TestGDBusClient.test_native_calls_async() test case, the main
+    loop was
+    never quit when the call failed.
+
+ tests/test_gdbus.py |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 11b578400cbf9f7c270b662a5e8953ccd466e5ef
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Jul 7 19:30:11 2011 -0400
+
+    use an enum instead of booleans to denote function type
+
+ gi/pygi-cache.c     |   85
+ +++++++++++++++++++++++++++++----------------------
+ gi/pygi-cache.h     |   18 ++++++++---
+ gi/pygi-invoke-ng.c |    8 ++---
+ 3 files changed, 67 insertions(+), 44 deletions(-)
+
+commit 10e31005baec26f61c0f8fca2b5c0337b0be6c70
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:   Thu Jul 7 15:18:03 2011 -0400
+
+    rename aux arguments to child arguments to make their purpose clearer
+
+ gi/pygi-cache.c     |   64
+ +++++++++++++++++++++++++--------------------------
+ gi/pygi-cache.h     |   29 +++++++++++++++--------
+ gi/pygi-invoke-ng.c |   10 ++++----
+ gi/pygi-marshal.c   |   12 +++++-----
+ 4 files changed, 63 insertions(+), 52 deletions(-)
+
+commit b4ad91c40f713ebdc278ce40b011e4adf9ddbbd7
+Author: Timo Vanwynsberghe <timovwb@gmail.com>
+Date:   Thu Jul 7 10:59:08 2011 +0200
+
+    Fixed the cairo example
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=653844
+
+ examples/cairo-demo.py |    6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+commit a606bab1ddc605167f2e9dc7c46c8f929fdce23b
+Author: Adam Dingle <adam@yorba.org>
+Date:   Tue Jul 5 14:28:20 2011 -0700
+
+    Add override binding for Gtk.ListStore.prepend().
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=654056
+
+ gi/overrides/Gtk.py     |    8 ++++++++
+ tests/test_overrides.py |   13 ++++++++++++-
+ 2 files changed, 20 insertions(+), 1 deletion(-)
+
+commit fc5c869486c7f6929e285ea7a86623ec41ecd9bd
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:   Thu Jul 7 13:39:19 2011 +0200
+
+    Fix crash in Gtk.TextIter overrides
+
+    With commit 17cd0fb3 Gtk.TextIter.{forward,backward}_search()
+    returns undefined
+    pointers when the search was unsuccessful. Actually check the
+    "success" return
+    value; if it is False return None, just like PyGTK used to.
+
+    Thanks to Michael Vogt for discovering this and writing the test case!
+
+    Test case:
+
+    -------------- 8< -----------------
+    from gi.repository import Gtk
+
+    win = Gtk.Window.new(Gtk.WindowType.TOPLEVEL)
+    textview = Gtk.TextView()
+    buffer = textview.get_buffer()
+    buffer.set_text("hello world")
+    win.add(textview)
+
+    win.show_all()
+
+    iter = buffer.get_start_iter()
+    end = buffer.get_end_iter()
+    ret = iter.forward_search("foo",
+                             Gtk.TextSearchFlags.VISIBLE_ONLY,
+                                                   end)
+    print "this is my return value"
+    print ret
+    print "now I crash"
+    print ret[0].get_offset()
+
+    Gtk.main()
+    -------------- 8< -----------------
+
+ gi/overrides/Gtk.py |  10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+commit 5c04fc5b2ca7e262c052426d5863d69d0c4a24da
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jul 5 15:57:23 2011 -0400
+
+    use gssize instead of int for arg indexes
+
+ gi/pygi-cache.c          |   24 ++++++++++++------------
+ gi/pygi-cache.h          |    6 +++---
+ gi/pygi-invoke-ng.c      |    6 +++---
+ gi/pygi-marshal-cleanup.c |   6 +++---
+ 4 files changed, 21 insertions(+), 21 deletions(-)
+
+commit ecc09749c34cd4eabf47cc722d768b042dc0be9f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jul 5 14:17:30 2011 -0400
+
+    [cache] remove refrence to default value as it is not implemented yet
+
+ gi/pygi-cache.h |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit 433e0fb259047d8c81e5949a31abb5e0feefd27b
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:  Thu May 12 18:53:06 2011 +0200
+
+    Handle arguments that are flags correctly
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=647581
+
+ gi/pygi-argument.c |   2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 38cca3c14e79fbc383e3fc65a120bee03714b99f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jul 1 05:19:15 2011 -0400
+
+    correctly initialize the _gi_cairo_functions array to be zero filled
+
+ gi/pygi-foreign-cairo.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 9ae43fdbcc547eb1e3c61bf9545da40555b2e2c6
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jul 1 05:19:15 2011 -0400
+
+    correctly initialize the _gi_cairo_functions array to be zero filled
+
+ gi/pygi-foreign-cairo.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d3ee40b36b1718e6fb4544dbe07e291138ea1eb9
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jun 29 18:14:40 2011 -0400
+
+    pass in the address of the gerror, not the gerror itself
+
+ gi/pygi-argument.c |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 49dc98eb9339ea64355cd752ca000c79da56f3a2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jun 29 18:01:44 2011 -0400
+
+    [gi] handle marshalling gerrors arguments for signals
+
+ gi/pygi-argument.c |  18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 deletions(-)
+
+commit db9419fcef628e9ffee10591156007ea9c0bc1f0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jun 29 12:12:29 2011 -0400
+
+    [gi-invoke-ng] fix NULL check to check before we access the cache
+    struct
+
+ gi/pygi-cache.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 9027e1a20fd06df5c26edcec1893ef0814ec938a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jun 28 18:21:55 2011 -0400
+
+    [gi-tests] add test for PyGObject->PyObject TreeModel storage
+
+      * make sure we can store a custom GObject as a PyObject inside of
+      a TreeModel
+
+ tests/test_overrides.py |   26 +++++++++++++++-----------
+ 1 file changed, 15 insertions(+), 11 deletions(-)
+
+commit b6842e4b2a28733e143d4022864041ca82e91f7a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jun 28 18:13:38 2011 -0400
+
+    [gtk-overrides] special case TreeModel columns of PYGOBJECT types
+
+     * box the PYGOBJECT in a GValue so we can store PyGObjects in a
+     TreeModel row
+
+ gi/overrides/Gtk.py |   7 ++++---
+ gobject/pygtype.c   |   7 ++++---
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+commit 7fc9d45860210fd9d333fd3769c6cf93a6a20eb6
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jun 28 17:32:29 2011 -0400
+
+    [gi-invoke-ng] copy structs when transfer is full for array
+
+ gi/pygi-marshal.c |   21 ++++++++++++++++++---
+ 1 file changed, 18 insertions(+), 3 deletions(-)
+
+commit 8d60c0bc7b327aa757a8727f1146f02cc0b78af8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jun 28 13:54:48 2011 -0400
+
+    [gtk-override] print warning if user imports Gtk 2.0
+
+     * this is needed because people file bugs not realizing they are
+     importing 2.0
+       which is not supported
+
+ gi/overrides/Gtk.py |  12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+commit 7c589c0c1de1a786e00685afd5292b6fb1f93ed3
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jun 28 13:08:49 2011 -0400
+
+    [gtk-overrides] allow the message_type keyword to be used for
+    MessageDialogs
+
+     * for pygtk compat we use the type keyword for message type but
+     we prefer
+       the use of message_type because it is more descriptive and does
+       not clash
+       with a python reserved word
+     * if you passed message_type into a MessageDialog constructor you
+     would get
+       an error because we also convert type to message_type when
+       calling the
+       parent constructor
+     * this patch looks to see if message_type was passed in as a
+     keyword and
+       assigns it to type while removing message_type from the keywords
+       dict
+       to avoid name clashing
+
+ gi/overrides/Gtk.py |   5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 2aa12267bee91aa696633a0cea2a0accae09250a
+Author: Johan Dahlin <jdahlin@litl.com>
+Date:  Mon Jun 27 10:56:20 2011 -0300
+
+    Add support for enums in gobject.property
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=653488
+
+ gobject/propertyhelper.py |   23 ++++++++++++++++-------
+ tests/test_properties.py  |   40 ++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 52 insertions(+), 11 deletions(-)
+
+commit dc62e67b447ef526a6f2d1aa8648ad101d95024b
+Author: Johan Dahlin <jdahlin@litl.com>
+Date:  Mon Jun 27 10:56:20 2011 -0300
+
+    Add support for enums in gobject.property
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=653488
+
+ gobject/propertyhelper.py |   23 ++++++++++++++++-------
+ tests/test_properties.py  |   40 ++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 52 insertions(+), 11 deletions(-)
+
+commit 50cfccb5801c1b9a0a42ffe2826cd245f21fd88d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jun 24 14:17:24 2011 -0400
+
+    [gi-invoke-ng] use g_slice for allocating GValues that are caller
+    allocated
+
+ gi/pygi-invoke-ng.c      |    2 ++
+ gi/pygi-marshal-cleanup.c |   2 ++
+ 2 files changed, 4 insertions(+)
+
+commit eff65cd2ce490296865441c3c78b7846f380459c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jun 24 11:49:05 2011 -0400
+
+    [gi-invoke-ng] Convert Overflow errors to ValueErrors when marshalling
+    integers
+
+ gi/pygi-marshal.c |   56
+ +++++++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 44 insertions(+), 12 deletions(-)
+
+commit 05ed688d54e3ff04e961b60d0b5d3ed0b97c771d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jun 22 12:26:39 2011 -0400
+
+    [gi-invoke-ng] only cache caller allocates for interfaces as some
+    API are broken
+
+ gi/pygi-cache.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 4fd957a5de364c0588168dee15e1e61d4f12e173
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jun 17 17:07:56 2011 -0400
+
+    [gi-invoke-ng] handle in pointer array marshalling
+
+ gi/pygi-marshal.c |   28 ++++++++++++++++++++++------
+ 1 file changed, 22 insertions(+), 6 deletions(-)
+
+commit df3911ad2ce83af9bf9679ed1b221847b23ba2de
+Author: Alex Eftimie <alex@eftimie.ro>
+Date:  Fri Jun 10 08:44:04 2011 +0300
+
+    Adding GPtrArray tests
+
+ tests/test_gi.py |   43 ++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 42 insertions(+), 1 deletion(-)
+
+commit e32c2be53175014399d89e1e85c9afc6e53c94be
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jun 17 11:32:28 2011 -0400
+
+    [gi-invoke-ng] fix array element offset calculations
+
+    * use pointer arithmetic to calculate based on element size instead of
+      relying on the size of GIArgument
+    * special case GPtrArrays
+
+ gi/pygi-marshal.c |   27 +++++++++------------------
+ 1 file changed, 9 insertions(+), 18 deletions(-)
+
+commit 6e8dc28cb261cafbfed40fc0797a0dd5f91f497b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jun 15 12:46:03 2011 -0400
+
+    [gi] don't clean up arguments that weren't yet processed during in
+    arg failure
+
+ gi/pygi-marshal-cleanup.c |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit af7c93ea98b7f492eef265e58c8b3c878805524f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jun 15 12:06:47 2011 -0400
+
+    [gi-overrides] use new instead of init when constructing a
+    GLib.VariantBuilder
+
+    * init is now skipped in the gir
+
+ gi/overrides/GLib.py   |   18 ++++++++----------
+ tests/test_overrides.py |    6 ++----
+ 2 files changed, 10 insertions(+), 14 deletions(-)
+
+commit c6112307f29f9a850e6e9efa5f55d5d4a363c6b0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jun 15 11:42:45 2011 -0400
+
+    [gi-invoke-ng] actual code to import overrides
+
+ gi/pygi-cache.c |    7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+commit 902575d857beffb14e56821ea8a52f705385f6bb
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jun 15 11:25:10 2011 -0400
+
+    [gi-invoke-ng] import pytypes so we get overrides
+
+ gi/pygi-marshal.c |   4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 9d5604220bd56ae2708e9b74122c14208e0a30b4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jun 14 16:13:37 2011 -0400
+
+    [gi-invoke-ng] handle gvariants now that they are not foreign
+
+ gi/pygi-marshal.c |   7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit c1f5651062687e800a52b5d8d16c88c0acde2934
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jun 14 16:12:43 2011 -0400
+
+    [gi-invoke-ng] do not try to clean up NULL arguments
+
+ gi/pygi-marshal-cleanup.c |   24 ++++++++++++++++--------
+ 1 file changed, 16 insertions(+), 8 deletions(-)
+
+commit fbf5382fbc1aed49ed491d2255d616a1643a45fc
+Merge: 499b68d 1491f62
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Jun 13 17:28:23 2011 -0400
+
+    Merge branch 'master' into invoke-rewrite
+
+commit 499b68d6c9040cffc6e43dc87789d68446564a92
+Merge: 4c9bced 426c710
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Jun 13 17:26:37 2011 -0400
+
+    Merge branch 'master' into invoke-rewrite
+
+commit 1491f6225b9906bd369b5a42e6369ab6884736b7
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date:  Fri Jun 10 14:01:32 2011 +0200
+
+    closure: avoid double free crash
+
+ gi/pygi-closure.c |   12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
+
+commit 929f4236f2b8601e7960a4a7b0a860d976ad83c6
+Author: Jason Siefken <siefkenj@gmail.com>
+Date:  Fri Jun 3 23:11:17 2011 -0700
+
+    Added __eq__ method for Gdk.Color and Gdk.RGBA
+
+    Call Gdk.Color.equal and Gdk.RGBA.equal when
+    == equality testing is used.
+
+ gi/overrides/Gdk.py    |    6 ++++++
+ tests/test_overrides.py |    4 ++++
+ 2 files changed, 10 insertions(+)
+
+commit dff5961ba229c7c34bd7b0a18a446b56bbe39e3a
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Fri Jun 10 14:01:32 2011 +0200
+Date:  Wed Jun 8 19:13:48 2011 +0200
+
+    closure: Check the out arg is not null. Fixes bug #651812
+
+ gi/pygi-closure.c |   3 +++
+ 1 file changed, 3 insertions(+)
+
+commit d7d178206bfbb0858556fcfd6c9ca8eefda3fdf5
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date:  Wed Jun 8 09:47:20 2011 +0200
+
+    Use constants instead of literals
+
+ tests/test_overrides.py |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit fe386a0ad548a23e30e9cb947bfa2198fb48ef29
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date:  Mon Jun 6 19:07:22 2011 +0200
+
+    GVariant has now a GType, take that into account
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=647509
+
+ gi/pygi-argument.c |   8 ++++----
+ gi/pygi-invoke.c   |  20 +++++++++++++-------
+ 2 files changed, 17 insertions(+), 11 deletions(-)
+
+commit bd7b8d96a7420522c1fdc127ef8cfb7d6e8a1b31
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date:  Mon Jun 6 19:05:07 2011 +0200
+
+    GVariantType is a boxed struct
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=647509
+
+ gi/gimodule.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2d73012e5dbcc45a5782a6c119dfb272c14b5a61
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date:  Mon Jun 6 17:38:21 2011 +0200
+
+    Use _gi.Struct to wrap fundamentals
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=647509
+
+ gi/module.py |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit d82e6c8d1d9f2fc48fdcc15b7d2a97e4f24cf3bf
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date:  Mon Jun 6 17:24:28 2011 +0200
+
+    Merge gi/HACKING into /HACKING
+
+ HACKING    |  16 ++++++++++++++++
+ gi/HACKING |  26 --------------------------
+ 2 files changed, 16 insertions(+), 26 deletions(-)
+
+commit 92aca4416a7930e5870b8d1a4016bae8140462ee
+Author: Daniel Drake <dsd@laptop.org>
+Date:  Fri Jun 3 16:59:15 2011 +0100
+
+    Fix GC-related crash during PyGObject deallocation
+
+    Python-2.7.1's GC source has the following comment:
+
+           /* Python's cyclic gc should never see an incoming refcount
+            * of 0:  if something decref'ed to 0, it should have been
+            * deallocated immediately at that time.
+            * Possible cause (if the assert triggers):  a tp_dealloc
+            * routine left a gc-aware object tracked during its teardown
+            * phase, and did something-- or allowed something to
+            happen --
+            * that called back into Python.  gc can trigger then, and may
+            * see the still-tracked dying object.  Before this assert
+            * was added, such mistakes went on to allow gc to try to
+            * delete the object again.  In a debug build, that caused
+            * a mysterious segfault, when _Py_ForgetReference tried
+            * to remove the object from the doubly-linked list of all
+            * objects a second time.  In a release build, an actual
+            * double deallocation occurred, which leads to corruption
+            * of the allocator's internal bookkeeping pointers.  That's
+            * so serious that maybe this should be a release-build
+            * check instead of an assert?
+            */
+
+    As shown in a backtrace at
+    https://bugzilla.redhat.com/show_bug.cgi?id=640972 , pygobject
+    is making
+    this exact mistake. Before untracking its object, pygobject_dealloc
+    calls PyObject_ClearWeakRefs() which can call back into python, create
+    new allocations, and trigger the GC.
+
+    This is causing Sugar (based on pygobject2 + pygtk2 static bindings)
+    to
+    crash on a regular basis while interacting with widgets or launching
+    applications.
+
+    Fix this by untracking the object early. Also fix the same issue
+    spotted
+    in the GSource wrapper.
+
+    Thanks to Bernie Innocenti for initial diagnosis.
+
+ glib/pygsource.c    |   6 ++++--
+ gobject/pygobject.c |   8 +++++++-
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+commit 4c9bcedb4e11ad66a4b86174e2425c7afcafc473
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue May 31 16:59:41 2011 -0400
 
-    closure: avoid double free crash
+    [gi-invoke-ng] enable invoke-ng by default
 
gi/pygi-closure.c |   12 ++++--------
- 1 files changed, 4 insertions(+), 8 deletions(-)
configure.ac |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
-commit 78366697d8f7fc53f20d9f52f9f39552c5e99bd1
+commit 2e4cfb85a55ff205e263591d573ee5ecf0ffff3e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jun 10 16:48:28 2011 -0400
+Date:  Tue May 31 16:37:21 2011 -0400
+
+    [gi-invoke-ng] add code to clean up when input values fail to marshal
+
+ gi/pygi-marshal-cleanup.c |   30 +++++++++++++++++++++++++-----
+ 1 file changed, 25 insertions(+), 5 deletions(-)
 
-    [gi] backport of "GVariant has a GType" fe386a
+commit 508b1b6ca1b143f1e123a3ddb83e8ce146758dfc
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue May 31 16:01:03 2011 -0400
 
-    * backport the switch to using GIInterfaceInfo instead of GITypeInfo
-      for foreign types to support this patch - 01596a
+    [gi-invoke-ng] add hash cleanup routines
 
- gi/pygi-argument.c         |   10 +++++-----
- gi/pygi-foreign-cairo.c    |   18 ++++++++++--------
- gi/pygi-foreign-gvariant.c |   15 +++++++--------
- gi/pygi-foreign-gvariant.h |   14 ++++++--------
- gi/pygi-foreign.c          |   21 +++++++++------------
- gi/pygi-foreign.h          |   16 ++++++++--------
- gi/pygi-invoke.c           |   26 ++++++++++++++++----------
- 7 files changed, 61 insertions(+), 59 deletions(-)
+ gi/pygi-cache.c          |    2 ++
+ gi/pygi-marshal-cleanup.c |   64
+ +++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-cleanup.h |   10 +++++--
+ 3 files changed, 74 insertions(+), 2 deletions(-)
 
-commit 0c348da3d974f63629c44e75067b8056dacc60d3
+commit 1954c75b94a74259b4e5d28f5ff8d76aa4610832
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jun 10 16:46:20 2011 -0400
+Date:  Tue May 31 14:47:30 2011 -0400
 
-    [gi] fixes to backport commit 6b5a65 - in older glib GVariants are
-    still structs
+    [gi-invoke-ng] handle arrays with transfers of GI_TRANSFER_CONTAINER
 
- gi/gimodule.c |    6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
+ gi/pygi-marshal-cleanup.c |   3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
-commit 6b5a656a3b77438c9bbb897c65343634b981c0e5
-Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 6 19:05:07 2011 +0200
+commit b626c46b4a95602c7bf1278c2a39aacb7f5027d9
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue May 31 14:40:49 2011 -0400
 
-    GVariantType is a boxed struct
+    [gi-invoke-ng] add list cleanup routines
 
-    https://bugzilla.gnome.org/show_bug.cgi?id=647509
+ gi/pygi-cache.c          |    8 ++---
+ gi/pygi-marshal-cleanup.c |   84
+ +++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-cleanup.h |   8 +++++
+ 3 files changed, 96 insertions(+), 4 deletions(-)
 
- gi/gimodule.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+commit 2e542c327cd52c1f77af28905557dd25c64175d8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu May 26 16:10:13 2011 -0400
 
-commit 3f6bba909486d0ad1a27592fcf09c7ac8744fded
-Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 6 17:38:21 2011 +0200
+    indentation fix
 
-    Use _gi.Struct to wrap fundamentals
+ gi/pygi-marshal.c |   8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
-    https://bugzilla.gnome.org/show_bug.cgi?id=647509
+commit 601aec11c49e821fe97dd30a2187fe3c75844712
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu May 26 16:09:38 2011 -0400
 
- gi/module.py |    4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
+    [gi-invoke-ng] add out array cleanup
 
-commit b7f5ce021bf16a422dc410b3ff44303e0757dc6e
-Author: Jason Siefken <siefkenj@gmail.com>
-Date:   Fri Jun 3 23:11:17 2011 -0700
+ gi/pygi-cache.c          |    2 +-
+ gi/pygi-marshal-cleanup.c |   24 ++++++++++++++++++++++++
+ gi/pygi-marshal.c        |   37 +++++++++++++++++++++++++++++++------
+ 3 files changed, 56 insertions(+), 7 deletions(-)
 
-    Added __eq__ method for Gdk.Color and Gdk.RGBA
+commit e9ad4428b769f8c9ace1cdc973c684de84fb1a5e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu May 26 13:22:38 2011 -0400
 
-    Call Gdk.Color.equal and Gdk.RGBA.equal when
-    == equality testing is used.
+    [gi-invoke-ng] do not allocate null terminator for garray
 
- gi/overrides/Gdk.py     |    6 ++++++
- tests/test_overrides.py |    4 ++++
- 2 files changed, 10 insertions(+), 0 deletions(-)
+    * We are simply setting our own array so we don't want any allocate
+    null byte
 
-commit c016c27f545f398f1b57cf31f37392c97d2b5e50
-Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Jun 8 19:21:23 2011 +0200
+ gi/pygi-marshal.c |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-    Remove useless import
+commit a986b2b8e5ee37f2a330f5aabc85c73ebb0de508
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu May 26 13:21:55 2011 -0400
 
- tests/test_everything.py |    1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
+    [gi-invoke-ng] add array cleanup for in arrays
 
-commit 1598047c0ddd6a1d04d41e59dd182f3c0524f3c4
-Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Jun 8 19:18:23 2011 +0200
+ gi/pygi-cache.c          |    2 +-
+ gi/pygi-marshal-cleanup.c |   72
+ ++++++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-marshal-cleanup.h |   9 ++++++
+ gi/pygi-marshal.c        |   13 ++++++--
+ 4 files changed, 91 insertions(+), 5 deletions(-)
 
-    Revert "[gi] Removed hack to avoid using GLib.Variant.new_variant."
+commit 990c60805c8ef718eb29e2e1b24f057552c6159e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon May 23 17:06:30 2011 -0400
 
-    This reverts commit dfe95b9ec598b57deaabd98ab488ab054a44ec09.
+    [gi-invoke-ng] remove remaining bits of the invoke stage state machine
 
- gi/overrides/GLib.py |   14 +++++++++++++-
- 1 files changed, 13 insertions(+), 1 deletions(-)
+ gi/pygi-invoke-ng.c          |    7 +------
+ gi/pygi-invoke-state-struct.h |   14 --------------
+ 2 files changed, 1 insertion(+), 20 deletions(-)
 
-commit ae9e098c14de3d2364c8b16c862aa77570c06a4a
-Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Jun 8 19:13:48 2011 +0200
+commit dbbcf4a0e76fb572d85843ee31c3798df5cd5cc5
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon May 23 16:59:57 2011 -0400
+
+    [gi-invoke-ng] revamp cleanup framework to be orthogonal to cache
+    setup
+
+    * cleanup now has symmetry with setup so there are now in and out
+    cleanups
+      for each type that needs to be cleaned up
+    * no longer use state machine but instead call different cleanup
+    functions at
+      different stages of invoke, making it easier to understand what
+      happens at
+      each stage
+
+ gi/pygi-cache.c              |   19 ++-
+ gi/pygi-cache.h              |    7 +-
+ gi/pygi-invoke-ng.c          |   10 +-
+ gi/pygi-invoke-state-struct.h |    2 +
+ gi/pygi-marshal-cleanup.c     |  301
+ ++++++++++++++++-------------------------
+ gi/pygi-marshal-cleanup.h     |   45 +++---
+ gi/pygi-marshal.c            |   15 +-
+ 7 files changed, 174 insertions(+), 225 deletions(-)
+
+commit 198714dc4585f7463f38929f1ca4e4b60a27dadb
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu May 12 17:29:20 2011 -0400
 
-    closure: Check the out arg is not null. Fixes bug #651812
+    [gi-invoke-ng] stub out a cleaner way of cleaning up after ourselves
 
- gi/pygi-closure.c |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+    * The state machine concept of cleaning up was getting a bit messy.
+      It was like we took a big bowl of spaghetti code and dumped it.
+    * Now we call specific cleanup functions at the point of failure (or
+      successful completion of a marshalling stage)
 
-commit eca590a3ff6bbfb78eef7b88d36cee59eb51b1d0
-Author: Daniel Drake <dsd@laptop.org>
-Date:   Fri Jun 3 16:59:15 2011 +0100
+ gi/pygi-invoke-ng.c      |   59 ++++++++++++++++++++++++++++++-------
+ gi/pygi-marshal-cleanup.c |   72
+ +++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-cleanup.h |   14 +++++++++
+ 3 files changed, 135 insertions(+), 10 deletions(-)
 
-    Fix GC-related crash during PyGObject deallocation
+commit c1389dadbf35afee3f28d90ef637efd8c1f071a5
+Author: José Alburquerque <jaalburqu@svn.gnome.org>
+Date:  Thu May 12 11:53:40 2011 -0400
 
-    Python-2.7.1's GC source has the following comment:
+    Doc Extractor: Correct the logic of the --no-since option.
 
-            /* Python's cyclic gc should never see an incoming refcount
-             * of 0:  if something decref'ed to 0, it should have been
-             * deallocated immediately at that time.
-             * Possible cause (if the assert triggers):  a tp_dealloc
-             * routine left a gc-aware object tracked during its teardown
-             * phase, and did something-- or allowed something to
-             happen --
-             * that called back into Python.  gc can trigger then, and may
-             * see the still-tracked dying object.  Before this assert
-             * was added, such mistakes went on to allow gc to try to
-             * delete the object again.  In a debug build, that caused
-             * a mysterious segfault, when _Py_ForgetReference tried
-             * to remove the object from the doubly-linked list of all
-             * objects a second time.  In a release build, an actual
-             * double deallocation occurred, which leads to corruption
-             * of the allocator's internal bookkeeping pointers.  That's
-             * so serious that maybe this should be a release-build
-             * check instead of an assert?
-             */
+       * codegen/docextract.py (process_final_sections): If the
+       --no-since
+       option has been specified and a "Since:" is encountered during the
+       processing of the final sections, simply don't append the
+       "Since: ..."
+       instead of reading the next line.  This preserves the logical
+       flow of
+       processing.
 
-    As shown in a backtrace at
-    https://bugzilla.redhat.com/show_bug.cgi?id=640972 , pygobject
-    is making
-    this exact mistake. Before untracking its object, pygobject_dealloc
-    calls PyObject_ClearWeakRefs() which can call back into python, create
-    new allocations, and trigger the GC.
+ codegen/docextract.py |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
-    This is causing Sugar (based on pygobject2 + pygtk2 static bindings)
-    to
-    crash on a regular basis while interacting with widgets or launching
-    applications.
+commit 303d8e8ab9e60cb554de7fc0e8592cd9b2c50843
+Author: José Alburquerque <jaalburqu@svn.gnome.org>
+Date:  Mon May 9 17:32:09 2011 -0400
 
-    Fix this by untracking the object early. Also fix the same issue
-    spotted
-    in the GSource wrapper.
+    Doc Extractor: Add a --no-since option.
 
-    Thanks to Bernie Innocenti for initial diagnosis.
+       * codegen/docextract.py:
+       * codegen/docextract_to_xml.py: Modified so that if a --no-since
+       option is specified at the command line, the "Since: ..." portion
+       of
+       the gtkdoc function block is omitted.  This is useful for C++
+       modules
+       such as gstreamermm where this information would not be useful
+       as long
+       as the C API is still unstable.
 
- glib/pygsource.c    |    6 ++++--
- gobject/pygobject.c |    8 +++++++-
- 2 files changed, 11 insertions(+), 3 deletions(-)
+ codegen/docextract.py       |   15 ++++++++++++++-
+ codegen/docextract_to_xml.py |    9 ++++++---
+ 2 files changed, 20 insertions(+), 4 deletions(-)
+
+commit 4f615c6e300d6f2d7551b640efa301060206ab58
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu May 5 14:04:34 2011 -0400
+
+    [gi-invoke-ng] tweek cleanup routines
 
-commit ad96a3f1d187a640ec0a463b766fd5e027f3c16a
+ gi/pygi-cache.c          |    5 +++
+ gi/pygi-marshal-cleanup.c |   87
+ ++++++++++++++++++++++++++++++++++-----------
+ gi/pygi-marshal-cleanup.h |   6 ++--
+ gi/pygi-marshal.c        |   11 ++----
+ 4 files changed, 76 insertions(+), 33 deletions(-)
+
+commit 63c7f17c224821cb7136d06e8ef87eab7291848d
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon May 2 15:49:52 2011 +0200
+Date:  Mon May 2 15:49:52 2011 +0200
 
     Fix symbol names to be locale independent
 
@@ -172,52 +7968,227 @@ Date:   Mon May 2 15:49:52 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=649165
 
- gi/module.py         |    9 ++++++++-
+ gi/module.py        |    9 ++++++++-
  tests/te_ST@nouppera |   50
  ++++++++++++++++++++++++++++++++++++++++++++++++++
  tests/test_gi.py     |   30 ++++++++++++++++++++++++++++++
- 3 files changed, 88 insertions(+), 1 deletions(-)
+ 3 files changed, 88 insertions(+), 1 deletion(-)
+
+commit b5e150da76c3d4de1a75f58d03c3a761e9005a63
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date:  Wed May 4 08:35:27 2011 +0200
+
+    [gi] pygi-convert.sh: Convert gtk.gdk.CROSSHAIR
+
+ pygi-convert.sh |    1 +
+ 1 file changed, 1 insertion(+)
 
-commit 90530b52f6eaa30bb704e413c01bb94ee511a0bb
+commit fcc5ea201ab25da6db94ea8a37364a1d3c4d7c65
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Apr 29 17:41:08 2011 -0400
+
+    [gi-invoke-ng] handle filename cleanup with the utf8 cleanup function
+
+ gi/pygi-cache.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+commit dbe8c4fabc8ac19415a3be0e854d3a54c2317e0b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Apr 29 17:40:13 2011 -0400
+
+    [gi-invoke-ng] handle caller allocates cleanup
+
+ gi/pygi-invoke-ng.c      |    5 ++-
+ gi/pygi-marshal-cleanup.c |  104
+ ++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-marshal-cleanup.h |   7 +--
+ 3 files changed, 90 insertions(+), 26 deletions(-)
+
+commit cdbf57f3b1f041a06cf545a5557424f701ed1ec7
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu Apr 28 19:16:02 2011 -0400
+
+    [gi-invoke-ng] refactor the cleanup code and add utf8 cleanup as
+    initial test
+
+ gi/pygi-cache.c              |   15 ++----------
+ gi/pygi-invoke-ng.c          |    8 +++----
+ gi/pygi-invoke-state-struct.h |    2 ++
+ gi/pygi-marshal-cleanup.c     |   51
+ ++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-marshal-cleanup.h     |    3 +++
+ 5 files changed, 60 insertions(+), 19 deletions(-)
+
+commit d1f1f4ccc55f9ecab73b7c0ee78762c4039b2c79
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Apr 27 15:47:19 2011 -0400
+
+    use PyCapsule when importing pycairo/require pycairo 1.10.0 for
+    python3 builds
+
+    * PyCObject is deprecated and pycairo 1.10.0 is first release to
+    fix this issue
+
+ configure.ac           |   15 +++++++++++----
+ gi/pygi-foreign-cairo.c |    2 +-
+ 2 files changed, 12 insertions(+), 5 deletions(-)
+
+commit 83b7823a510b0b391560c6deaf9d15d8303c7b14
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date:  Thu Apr 21 16:52:20 2011 +0200
+
+    [python3] fix build. PYcairo_IMPORT doesn't exists anymore
+
+ gi/pygi-foreign-cairo.c |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit 3e933784df423757e591d703614cb700adb0bbe0
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Apr 18 18:36:25 2011 +0200
+Date:  Mon Apr 18 18:36:25 2011 +0200
 
     Updated DOAP file
 
  pygobject.doap |   15 +++++++++++++++
- 1 files changed, 15 insertions(+), 0 deletions(-)
+ 1 file changed, 15 insertions(+)
 
-commit 996e5676a00e8d8fc55ef7400d15ccf5a4d904eb
+commit 399d06b4b20685eb38acfd7e43226e06737ab7d2
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Apr 18 18:16:42 2011 +0200
+Date:  Sat Apr 16 16:02:05 2011 +0200
 
-    Post release version bump to 2.28.5
+    [gi] Don't create variant twice
 
configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
gi/overrides/GLib.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit afbcc71b71343b5a16dc8873c2ac7b9ca7dd801a
+commit 8d8a84ea23d28d25851c5870f261c020d762cef4
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Apr 18 18:06:56 2011 +0200
+Date:  Fri Apr 15 16:14:43 2011 +0200
 
-    Release 2.28.4
+    pygi-convert.sh: Make sure the uppercase GObject module is imported
+    instead of the lowercase
 
- NEWS         |   11 +++++++++++
- configure.ac |    2 +-
- 2 files changed, 12 insertions(+), 1 deletions(-)
+    https://bugzilla.gnome.org/show_bug.cgi?id=647736
+
+ pygi-convert.sh |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 3b51d6426d0f59b2dd7e0dcdcded4bed43d6b9d8
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:  Fri Apr 15 15:58:53 2011 +0200
+
+    [gi] Removed hack to avoid using GLib.Variant.new_variant.
+
+    The bug in the annotations of GLib is fixed now.
+    https://bugzilla.gnome.org/show_bug.cgi?id=639952
+    https://bugzilla.gnome.org/show_bug.cgi?id=647796
+
+ gi/overrides/GLib.py |   14 +-------------
+ 1 file changed, 1 insertion(+), 13 deletions(-)
+
+commit bb4dce14ba666969815d4e56adbc38f0ac4f7ff7
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:  Fri Apr 15 15:58:31 2011 +0200
+
+    [gi] Added additional test case for GVariant handling
+
+ tests/test_overrides.py |   15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 138df2778543409752e229a09828a805f68a420d
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:  Mon Apr 11 18:34:31 2011 +0200
+
+    [gi] Added support for GVariant arguments
+
+    This is required in order for the "g-signal" signal of GDBusProxy
+    to work properly and thus to properly receive DBus signals with any
+    type of argument.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=647477
+
+ gi/pygi-argument.c |   2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 985f239d891c7697d76ccecb797b189669ae6ee1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Mar 22 18:46:28 2011 -0400
+
+    fix static ABI for setting string gvalues from python objects
+
+     * the static bindings used to be able to set a string gvalue to
+     any python
+       object that implemented __str__, for instance when setting a
+       treemodel column
+     * this restores that code while still keeping unicode and python 3
+       compatability
+
+ gobject/pygtype.c       |   28 +++++++++++++++++++---------
+ tests/test_properties.py |    8 ++++++++
+ 2 files changed, 27 insertions(+), 9 deletions(-)
+
+commit 58cfc3cd1152b4448b56a6ff597f954d8450b83e
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:  Tue Mar 22 20:47:51 2011 +0100
+
+    dsextras.py: ensure eol characters are preserved when writing template
+    files (so \n does not become \r\n)
+
+ dsextras.py |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 629d267478982c426ba61a639d5c9603fed856e6
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:  Tue Mar 22 11:35:44 2011 +0100
+
+    dsextras.py: remove \r as wel as \n character
+
+ dsextras.py |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 426c7109d4c0dbf0d56cc075f97f33b3451f79a8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Apr 27 15:47:19 2011 -0400
+
+    use PyCapsule when importing pycairo/require pycairo 1.10.0 for
+    python3 builds
+
+    * PyCObject is deprecated and pycairo 1.10.0 is first release to
+    fix this issue
+
+ configure.ac           |   15 +++++++++++----
+ gi/pygi-foreign-cairo.c |    2 +-
+ 2 files changed, 12 insertions(+), 5 deletions(-)
+
+commit 4e5833d0c2fe548617e5ea510f05920fd0caf73b
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date:  Thu Apr 21 16:52:20 2011 +0200
+
+    [python3] fix build. PYcairo_IMPORT doesn't exists anymore
+
+ gi/pygi-foreign-cairo.c |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit 91ec337359720839862d3f5a8a0ea98f760a0752
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date:  Mon Apr 18 18:36:25 2011 +0200
+
+    Updated DOAP file
 
-commit 4643bcad5845f5ec3dd9961616e3ed3b0946001f
+ pygobject.doap |   15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 05c766044c83340c44564d0097514bfc1d1d9df7
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Apr 16 16:02:05 2011 +0200
+Date:  Sat Apr 16 16:02:05 2011 +0200
 
     [gi] Don't create variant twice
 
  gi/overrides/GLib.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 0e9e4ec7c28ac4564e15283636adc8b7bc1a83be
+commit eb8f212e3687af30407cf01fcdfbf530257bcddb
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Fri Apr 15 16:14:43 2011 +0200
+Date:  Fri Apr 15 16:14:43 2011 +0200
 
     pygi-convert.sh: Make sure the uppercase GObject module is imported
     instead of the lowercase
@@ -225,11 +8196,11 @@ Date:   Fri Apr 15 16:14:43 2011 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=647736
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
-commit dfe95b9ec598b57deaabd98ab488ab054a44ec09
+commit af31729573de24161ee90563e5738187c749783c
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Fri Apr 15 15:58:53 2011 +0200
+Date:  Fri Apr 15 15:58:53 2011 +0200
 
     [gi] Removed hack to avoid using GLib.Variant.new_variant.
 
@@ -238,20 +8209,53 @@ Date:   Fri Apr 15 15:58:53 2011 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=647796
 
  gi/overrides/GLib.py |   14 +-------------
- 1 files changed, 1 insertions(+), 13 deletions(-)
+ 1 file changed, 1 insertion(+), 13 deletions(-)
 
-commit cfccd55128377864e3a42a64785637bd453621b2
+commit 070f6688be4afb926656038dcceac4c8b8ed97c7
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Fri Apr 15 15:58:31 2011 +0200
+Date:  Fri Apr 15 15:58:31 2011 +0200
 
     [gi] Added additional test case for GVariant handling
 
  tests/test_overrides.py |   15 +++++++++++++++
- 1 files changed, 15 insertions(+), 0 deletions(-)
+ 1 file changed, 15 insertions(+)
+
+commit 65aa040e86d94ee6bb227a2bce09668b60208027
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Apr 12 14:51:35 2011 -0400
+
+    [gi-invoke-ng] fix prototype
+
+ gi/pygi-cache.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 12aa4e6376366ca9d758434f6544c9c70a1e5df8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Apr 12 14:48:16 2011 -0400
+
+    [gi-invoke-ng] create new framework for cleaning up args
+
+    * we now have a state machine so we know what point in the marshalling
+    process
+      we are and which args need to be cleaned up
+    * call the cleanup functions after invoking the gi callable, after
+    marshalling
+      the out parameters and at any time an error occures
+
+ gi/Makefile.am                       |    4 +-
+ gi/pygi-cache.c              |   25 +++++++------
+ gi/pygi-cache.h              |    5 ++-
+ gi/pygi-invoke-ng.c          |   34 ++++++++++++++---
+ gi/pygi-invoke-state-struct.h |   13 +++++++
+ gi/pygi-marshal-cleanup.c     |   81
+ +++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-cleanup.h     |   43 ++++++++++++++++++++++
+ gi/pygi-marshal.c            |    1 +
+ 8 files changed, 187 insertions(+), 19 deletions(-)
 
-commit 666ec192a4369e2fae508261a7a81b34326fc227
+commit 0463295cd046bd6382ad9dc71ea1518858d63c5f
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Apr 11 18:34:31 2011 +0200
+Date:  Mon Apr 11 18:34:31 2011 +0200
 
     [gi] Added support for GVariant arguments
 
@@ -261,122 +8265,163 @@ Date:   Mon Apr 11 18:34:31 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647477
 
- gi/pygi-argument.c |    2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ gi/pygi-argument.c |   2 ++
+ 1 file changed, 2 insertions(+)
 
-commit cc0e8423f36486d15f751bd3c14351edda28538d
-Author: Steve Frécinaux <code@istique.net>
-Date:   Mon Apr 4 21:12:18 2011 +0200
+commit 1d64c3d3db2ec17b9a48df55271f712db6c07060
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Mar 30 16:40:31 2011 -0400
+
+    [gi-invoke-ng] fix marshal header that is no longer part of
+    pygi-arguments.h
 
-    Fix ABI break in old static bindings.
+ gi/pygi-marshal.h |   8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
-    Commit 84d6142c14a7ebfb7284d3db52e14d3393f93905 (Always register a new
-    GType when a GObject class is subclassed) breaks the more advanced
-    usage
-    of PyGObject with regards to "metaclass hackery" as used in for
-    example
-    the kiwi and sqlkit projects. But the users of the gi-based bindings
-    now rely on the new behaviour.
+commit 3580cd1c7222022ebeef3476f9e609c8045f12a3
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Mar 30 15:53:13 2011 -0400
 
-    We fix this by restraining the systematical registering of new
-    types to
-    the new gi-based bindings, leaving the old pygtk ones untouched.
+    [gi-invoke-ng] code style space fixes
 
-    https://bugzilla.gnome.org/show_bug.cgi?id=646437
+ gi/pygi-cache.c     | 420 +++++++++++++++++++-------------------
+ gi/pygi-invoke-ng.c | 145 +++++++------
+ gi/pygi-marshal.c   | 565
+ ++++++++++++++++++++++++++-------------------------
+ 3 files changed, 566 insertions(+), 564 deletions(-)
 
- gi/types.py         |    9 +++++++++
- gobject/__init__.py |   16 +++++++++-------
- 2 files changed, 18 insertions(+), 7 deletions(-)
+commit 81662fcd09f112bfffcdc5b7f01a5537b84cd9d4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Mar 29 16:54:44 2011 -0400
 
-commit b0e499744d337adc608e2aa8996469bca2df044a
-Author: Mike Gorse <mgorse@novell.com>
-Date:   Sat Apr 2 18:45:40 2011 -0500
+    [gi-invoke-ng] don't decref value taken from a dict as it is borrowed
 
-    fetch size from an enum type
+ gi/pygi-invoke-ng.c |   1 -
+ 1 file changed, 1 deletion(-)
 
-    Do not assume that an enum is returned as a long; treat it as an
-    int if
-    the type indicates that its size is that of an int.
+commit a456fc0adc1f8a0754bf59cde8924f905bfc7dc1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Mar 29 15:23:06 2011 -0400
 
-    http://bugzilla.gnome.org/show_bug.cgi?id=646581
+    [gi-invoke-ng] return None when appropriate so we don't crash
 
- gi/pygi-argument.c |   25 ++++++++++++++++++++++---
- 1 files changed, 22 insertions(+), 3 deletions(-)
+ gi/pygi-marshal.c |   18 +++++++++++++++++-
+ 1 file changed, 17 insertions(+), 1 deletion(-)
 
-commit 4f59bee3a875eb71b8c9adce855b9addc965fe3b
-Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Mar 22 20:47:51 2011 +0100
+commit e8c8c37e5587dc7ff62519df336988a12e6f5d0a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Mar 29 15:21:41 2011 -0400
 
-    dsextras.py: ensure eol characters are preserved when writing template
-    files (so \n does not become \r\n)
+    [gi-invoke-ng] fix aux value caching
 
dsextras.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
gi/pygi-cache.c |   15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
 
-commit b7a6f884e9ea5946691dd661b79e3094b6e1b34c
+commit 4e4c1847c713a4eb4ab34d04488e94dac24d9167
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 24 12:10:47 2011 -0400
+Date:  Mon Mar 28 20:25:46 2011 -0400
 
-    release 2.28.3
+    [gi-invoke-ng] backport handling flags with no gtype
 
- NEWS         |    3 +++
- configure.ac |    2 +-
- 2 files changed, 4 insertions(+), 1 deletions(-)
+ gi/pygi-marshal.c |   25 ++++++++++++++++++++++++-
+ 1 file changed, 24 insertions(+), 1 deletion(-)
 
-commit 99689e2849a9df78980c9d25d9ddabc1e95f1252
+commit fd76423e655b3711e1ffbf9b61ea4e2c94040234
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 24 12:08:10 2011 -0400
+Date:  Mon Mar 28 18:32:00 2011 -0400
 
-    Revert "dsextras.py: ensure eol characters are preserved when writing
-    template files (so \n does not become \r\n)"
+    [gi-invoke-ng] backport raw gvalue handling
 
-    This reverts commit 27496e0e86e7d8798caf019fd09af5c6a30ec633.
+ gi/pygi-marshal.c |   23 ++++++++++++++++++-----
+ 1 file changed, 18 insertions(+), 5 deletions(-)
 
- dsextras.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+commit 507b5051c83f70ceae79e0fa693c86e5cbb9f442
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Mar 28 18:30:31 2011 -0400
 
-commit 27496e0e86e7d8798caf019fd09af5c6a30ec633
-Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Mar 22 20:47:51 2011 +0100
+    [gi-invoke-ng] marshal instances seperately since they differ slightly
+    from other args
 
-    dsextras.py: ensure eol characters are preserved when writing template
-    files (so \n does not become \r\n)
+ gi/pygi-cache.c   |   2 +-
+ gi/pygi-marshal.c |   38 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 39 insertions(+), 1 deletion(-)
 
- dsextras.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+commit 726a27c0e74ace3ff23d9cc4d393ae53e57f1fac
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Mar 28 18:26:09 2011 -0400
 
-commit b7449d63e0c1bdfb5acbd8c5ec073711441301b9
-Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Mar 22 11:35:44 2011 +0100
+    [gi-invoke-ng] refactor FunctionCache to be more generic CallableCache
 
-    dsextras.py: remove \r as wel as \n character
+ gi/pygi-cache.c     | 392
+ ++++++++++++++++++++++++++-------------------------
+ gi/pygi-cache.h     |  12 +-
+ gi/pygi-info.c      |   2 +-
+ gi/pygi-invoke-ng.c |  40 +++---
+ gi/pygi-marshal.c   | 140 +++++++++---------
+ gi/pygi-marshal.h   | 159 +++++++++------------
+ gi/pygi.h          |    2 +-
+ 7 files changed, 362 insertions(+), 385 deletions(-)
+
+commit 3d5d9ff5c18a850650992bdd52e8e4c722b23396
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Mar 28 15:01:12 2011 -0400
 
- dsextras.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+    [gi-invoke-rewrite] backport glib error handling
 
-commit 075ead0533ba311120b3ca9ac9ae75ca84ace8fb
+ gi/pygi-invoke-ng.c |  14 ++++++--------
+ 1 file changed, 6 insertions(+), 8 deletions(-)
+
+commit 37b14b28a5f2aec16ac7f321efbf07e1403e9531
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 23 10:39:19 2011 -0400
+Date:  Fri Mar 25 18:48:42 2011 -0400
 
-    fix a typo when converting objects to strings gvalues
+    [gi-invoke-ng] backport closure passing from invoke
 
- gobject/pygtype.c        |    4 ++--
- tests/test_properties.py |    8 ++++++++
- 2 files changed, 10 insertions(+), 2 deletions(-)
+ gi/pygi-marshal.c |   13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
 
-commit a904f0dea4b7f04aac7c9ddd3b01ffbbd808375e
+commit cf7f97eabc9c49773c2916929b8c43ef453d0652
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 22 21:56:14 2011 -0400
+Date:  Fri Mar 25 18:47:36 2011 -0400
 
-    prep 2.28.2 release
+    [gi-invoke-ng] handle vfuncs and fix cosntrutors
 
- NEWS         |    6 ++++++
- configure.ac |    2 +-
- 2 files changed, 7 insertions(+), 1 deletions(-)
+ gi/pygi-cache.c              |    9 +++++++
+ gi/pygi-cache.h              |    2 ++
+ gi/pygi-invoke-ng.c          |   56
+ ++++++++++++++++++++++++++++++-----------
+ gi/pygi-invoke-state-struct.h |    2 ++
+ 4 files changed, 55 insertions(+), 14 deletions(-)
+
+commit af2ce400fcf771ee6c9bc01aecfb59467be5a0ce
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Mar 25 18:39:06 2011 -0400
+
+    [gi-invoke-ng] handle foreign types correctly
+
+ gi/pygi-cache.c   |   22 ++++++----------------
+ gi/pygi-marshal.c |   3 +++
+ 2 files changed, 9 insertions(+), 16 deletions(-)
+
+commit 482553ae5d863ca523be3bd1eededa5d02a4f87e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Mar 25 13:14:01 2011 -0400
+
+    [gi] remove the class parameter from the argument list of constructors
+
+     * constructors pass in their class to be constructed.  Since we
+     use GI
+       and g_object_new to do the construction we ignore this for now but
+       keep it around in the state for future use.
+
+ gi/pygi-invoke-ng.c          |   46
+ +++++++++++++++++++++++++++++++++++------
+ gi/pygi-invoke-state-struct.h |    1 +
+ 2 files changed, 41 insertions(+), 6 deletions(-)
 
-commit c1ee6642d4b69a8c417cf92534ba091f89c7f68c
+commit 0534eb0e843cdf09611143da184052f7e549e4dc
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 22 18:46:28 2011 -0400
+Date:  Tue Mar 22 18:46:28 2011 -0400
 
     fix static ABI for setting string gvalues from python objects
 
@@ -387,12 +8432,123 @@ Date:   Tue Mar 22 18:46:28 2011 -0400
      * this restores that code while still keeping unicode and python 3
        compatability
 
- gobject/pygtype.c |   28 +++++++++++++++++++---------
- 1 files changed, 19 insertions(+), 9 deletions(-)
+ gobject/pygtype.c       |   28 +++++++++++++++++++---------
+ tests/test_properties.py |    8 ++++++++
+ 2 files changed, 27 insertions(+), 9 deletions(-)
+
+commit 5f0e130026a663a57ed1317e0fa0e1f78f9e6e0a
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:  Tue Mar 22 20:47:51 2011 +0100
+
+    dsextras.py: ensure eol characters are preserved when writing template
+    files (so \n does not become \r\n)
+
+ dsextras.py |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 62a6274105003ef386ddfe9ef38e8afa8c43d124
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date:  Tue Mar 22 11:35:44 2011 +0100
+
+    dsextras.py: remove \r as wel as \n character
+
+ dsextras.py |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 86c436978c933f6ebe17627abe98325ce66f6baa
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Mar 22 16:13:58 2011 -0400
+
+    [gi] make new invoke-ng codepath compile correctly
+
+ configure.ac       |    4 +
+ gi/Makefile.am      |   5 +-
+ gi/pygi-cache.c     |   2 +-
+ gi/pygi-invoke-ng.c | 841 ----------------------
+ gi/pygi-marshal.c   | 1962
+ +--------------------------------------------------
+ gi/pygi-private.h   |   4 +-
+ 6 files changed, 9 insertions(+), 2809 deletions(-)
+
+commit 35619fec43f4df85edf5456f3fc9733b16f2ba90
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Mar 22 15:40:02 2011 -0400
+
+    [gi] conditionalize invoke code paths
+
+ configure.ac     |    7 +++++++
+ gi/Makefile.am    |   20 +++++++++++++++-----
+ gi/pygi-cache.h   |   2 ++
+ gi/pygi-info.c    |   4 +++-
+ gi/pygi-private.h |   9 +++++++--
+ gi/pygi.h        |    4 +++-
+ 6 files changed, 37 insertions(+), 9 deletions(-)
+
+commit 83c51bd2bb6ca24ce610c04cff1527bcd2689d90
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Mar 22 15:37:24 2011 -0400
+
+    [gi] revert back to the type.py from master
+
+ gi/types.py |  21 +++++++++++++++------
+ 1 file changed, 15 insertions(+), 6 deletions(-)
+
+commit cb30d00d1c92e73d9bfb08cc7b600a5aa70f2fc0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Mar 22 14:46:29 2011 -0400
+
+    [gi] revert pygi-argument.h and move the invoke-ng code to
+    pygi-marshal.h
+
+ gi/pygi-argument.h |  268 +----------------------------------------
+ gi/pygi-marshal.h  |  336
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 337 insertions(+), 267 deletions(-)
+
+commit 17cb714cfdaf45b6d7dd627b0189bd24e6578f74
+Merge: 7332a1b 01596a9
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Mar 22 13:34:36 2011 -0400
+
+    Merge branch 'master' into invoke-rewrite
 
-commit cd38572b9781502d3228e74c017cb7cc39a07b3d
+    Conflicts:
+       gi/Makefile.am
+       gi/pygi-argument.c
+       gi/pygi-foreign-cairo.c
+       gi/pygi-foreign-gvariant.c
+       gi/pygi-foreign-gvariant.h
+       gi/pygi-foreign.c
+       gi/pygi-foreign.h
+       gi/pygi-private.h
+       gi/pygi.h
+
+commit 01596a9b7cc0ceef3904da5b96939140ee0732fd
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Mar 22 13:20:54 2011 -0400
+
+    [gi] foreign types now take interface infos instead of type infos
+
+     * this is a prep for the invoke-rewrite branch
+     * when marshalling foreign structs we may not have the type info but
+       we will always have the interface info to pass
+     * this simplifies the code because we were simply converting the
+       type info back to an interface info anyway so there is less
+       refcounting to keep track of
+     * also fixes a bug where we were leaking PyNone ref counts
+
+ gi/pygi-argument.c        |    4 ++--
+ gi/pygi-foreign-cairo.c    |  16 ++++++++--------
+ gi/pygi-foreign-gvariant.c |  12 ++++++------
+ gi/pygi-foreign.c         |   32 +++++++++++++-------------------
+ gi/pygi-foreign.h         |    8 ++++----
+ gi/pygi-invoke.c          |    6 +++---
+ gi/pygi.h                 |   12 ++++++------
+ 7 files changed, 42 insertions(+), 48 deletions(-)
+
+commit fbabc1fdafa1dcbd1f6aaea7b821bd1c64a546ab
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Mar 22 15:04:01 2011 +0100
+Date:  Tue Mar 22 15:04:01 2011 +0100
 
     Fix GSchema tests for separate build tree
 
@@ -404,84 +8560,99 @@ Date:   Tue Mar 22 15:04:01 2011 +0100
     prefer it
     over test_overrides.py's directory.
 
- tests/Makefile.am       |    3 ++-
+ tests/Makefile.am      |    3 ++-
  tests/test_overrides.py |    4 +++-
  2 files changed, 5 insertions(+), 2 deletions(-)
 
-commit be81ea00d6cd92a5ae77c5bb301b6f6baeb6d89a
-Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Mar 22 14:02:46 2011 +0100
+commit 7332a1b99775519fdc5500cab6628b713e946a8c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Mar 21 19:03:29 2011 -0400
 
-    GIO tests: Fix remaining test case for separate build tree
+    [gi] start of merge from master
 
- tests/test_gio.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+    * move some of the modified files that will cause merge conflicts
+    to their
+      own, nonconflicting files
+    * copy the old files out of master
 
-commit 178df3e438835bec9b40dea243867784dee35815
-Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Mar 22 13:21:27 2011 +0100
+ gi/pygi-argument.c  | 2101 +++------------------------
+ gi/pygi-invoke-ng.c | 1179 ++++++++++++++++
+ gi/pygi-invoke.c    | 421 ++----
+ gi/pygi-marshal.c   | 3916
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 5389 insertions(+), 2228 deletions(-)
 
-    GIO tests: Fix for separate build tree
+commit 62b49dae97441953452d097cb1751df14302547a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Mar 16 17:34:18 2011 -0400
 
-    When using a separate build tree, "test_gio.py" is not in the
-    current working
-    dir (which is the build tree), but in the srcdir. Use __file__
-    instead.
+    [gi] marshal raw closures
+
+    * before we were able to marshal python callables into methods
+    that took
+      GClosures but we had no way to take a GClosure returned from one
+      method and pass it to another - this enables that usecase
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=644757
+
+ gi/pygi-argument.c |  17 ++++++++++-------
+ tests/test_gi.py   |   4 ++++
+ 2 files changed, 14 insertions(+), 7 deletions(-)
 
- tests/test_gio.py |   14 +++++++-------
- 1 files changed, 7 insertions(+), 7 deletions(-)
+commit 1e70957c5470a0f4bceba38ca66a4e4274fdc8d8
+Author: John Stowers <john.stowers@gmail.com>
+Date:  Sun Mar 6 23:41:01 2011 +1300
 
-commit 27dcb9b1963be0c0d18e19a0b108a4a64d5e048b
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 21 12:42:36 2011 -0400
+    pygi-convert.sh add GObject.xxx and webkit
 
-    prep for 2.28.1 release
+    https://bugzilla.gnome.org/show_bug.cgi?id=644347
 
NEWS |   15 +++++++++++++++
- 1 files changed, 15 insertions(+), 0 deletions(-)
pygi-convert.sh |    7 +++++++
+ 1 file changed, 7 insertions(+)
 
-commit 072d45cbfa7b360a0e616c4c56ba75d4dc08e7df
+commit 2292673c96e7973a0732ca15bbd5b0bf7a9c7dcf
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sun Mar 6 23:41:30 2011 +1300
+Date:  Sun Mar 6 23:41:30 2011 +1300
 
     pygi-convert.sh remove gobject tests, GObject works now
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644347
 
  pygi-convert.sh |   28 ----------------------------
- 1 files changed, 0 insertions(+), 28 deletions(-)
-
-commit 205fee1622e461c0bcbe50e8befe30f01aac81eb
-Author: John Stowers <john.stowers@gmail.com>
-Date:   Sun Mar 6 23:41:01 2011 +1300
+ 1 file changed, 28 deletions(-)
 
-    pygi-convert.sh add GObject.xxx and webkit
+commit d26e5cc45f277f6b7edb32aa416520bb53bff9c2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Mar 11 14:09:02 2011 -0500
 
-    https://bugzilla.gnome.org/show_bug.cgi?id=644347
+    [gi-demos] add pickers demo
 
- pygi-convert.sh |    7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
+ demos/gtk-demo/demos/pickers.py |   74
+ +++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 74 insertions(+)
 
-commit f5ee2924af489c17b64e56be5d2bd1c39d1293d1
+commit b8d926a458ed7d7e92719e41b5bc1c36f68882b3
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 16 17:34:18 2011 -0400
+Date:  Thu Mar 10 18:12:50 2011 -0500
 
-    [gi] marshal raw closures
+    [gi-demos] add menu demo
 
-    * before we were able to marshal python callables into methods
-    that took
-      GClosures but we had no way to take a GClosure returned from one
-      method and pass it to another - this enables that usecase
+ demos/gtk-demo/demos/menus.py |  122
+ +++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 122 insertions(+)
 
-    https://bugzilla.gnome.org/show_bug.cgi?id=644757
+commit 9baec8ed1c5d99c1677a75eaa1d38912f41f0b2d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Mar 9 13:02:50 2011 -0500
 
- gi/pygi-argument.c |   15 ++++++++++-----
- tests/test_gi.py   |    4 ++++
- 2 files changed, 14 insertions(+), 5 deletions(-)
+    [gi-overrides] fix exception block so it works in Python 2.5
+
+ gi/overrides/Gio.py |   5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
 
-commit ac11dc70b34fe077be18f7e605c9f3cce03ad3fa
+commit 5ac534ac3ceee3cc19fe2297e3cd009817ed726f
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon Mar 21 13:25:12 2011 +0100
+Date:  Mon Mar 21 13:19:58 2011 +0100
 
     Revert "Deduce PYTHON_LIBS in addition to PYTHON_INCLUDES"
 
@@ -495,42 +8666,24 @@ Date:   Mon Mar 21 13:25:12 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620215
 
- gi/Makefile.am    |    4 +---
- gio/Makefile.am   |    2 +-
- glib/Makefile.am  |    2 +-
- m4/python.m4      |    7 ++-----
- tests/Makefile.am |    2 +-
- 5 files changed, 6 insertions(+), 11 deletions(-)
+ gi/Makefile.am    |   4 +---
+ glib/Makefile.am  |   2 +-
+ m4/python.m4     |    7 ++-----
+ tests/Makefile.am |   2 +-
+ 4 files changed, 5 insertions(+), 10 deletions(-)
 
-commit aed7582de1c0623042601c8038a7631fa41d087d
+commit cd01f8ce1373f28b1427dd847bef44f747f1e6b3
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Fri Mar 18 17:06:08 2011 +0100
+Date:  Fri Mar 18 17:06:08 2011 +0100
 
     setup.py: fix user_access_control option
 
  setup.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 6f0d33101a2451854f216291813951349d5ac471
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 16 15:20:43 2011 -0400
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-    [gi-overrides] fix marshalling pygobjects in treemodels
-
-     * PyGObjects wern't being marshalled correctly as python objects
-     when a
-       treemodel column was set to take pyobjects
-     * Fix this by explicetly marshalling all PyObjects as boxed gvalue
-     types
-       in the overrides
-
- gi/overrides/Gtk.py     |    9 +++++----
- tests/test_overrides.py |   34 ++++++++++++++++++++++++++--------
- 2 files changed, 31 insertions(+), 12 deletions(-)
-
-commit adb6f0320bed9a00a96c99424d4982199dc85af2
+commit 2da60baec4f43c41f43527cbfde4e21e0eea728c
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Mar 16 10:22:35 2011 +0100
+Date:  Wed Mar 16 10:22:35 2011 +0100
 
     [gi] Respect the MessageType for Gtk.MessageDialog
 
@@ -538,12 +8691,12 @@ Date:   Wed Mar 16 10:22:35 2011 +0100
     to Tualatrix
     Chou for spotting this!
 
- gi/overrides/Gtk.py |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ gi/overrides/Gtk.py |   1 +
+ 1 file changed, 1 insertion(+)
 
-commit 115c4750f071270b648218c9678931a65a4b3e3d
+commit 029a79d1af1e0998aa6bc88ce1c1f48ce0ccd2a0
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Mar 15 10:22:39 2011 +0100
+Date:  Tue Mar 15 10:22:39 2011 +0100
 
     [gi] Do not require signature for D-BUS methods without arguments
 
@@ -562,124 +8715,64 @@ Date:   Tue Mar 15 10:22:39 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644260
 
- gi/overrides/Gio.py |   16 +++++++++++++++-
- tests/test_gdbus.py |   13 +++++++++++++
- 2 files changed, 28 insertions(+), 1 deletions(-)
-
-commit 0df9e153812e1e5077bb906449e211ecb0af8736
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 11 14:09:02 2011 -0500
-
-    [gi-demos] add pickers demo
-
- demos/gtk-demo/demos/pickers.py |   74
- +++++++++++++++++++++++++++++++++++++++
- 1 files changed, 74 insertions(+), 0 deletions(-)
-
-commit 419bfdd44b566ffb88f71165c00728872987dc5e
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 10 18:12:50 2011 -0500
-
-    [gi-demos] add menu demo
-
- demos/gtk-demo/demos/menus.py |  122
- +++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 122 insertions(+), 0 deletions(-)
+ gi/overrides/Gio.py |  16 +++++++++++++++-
+ tests/test_gdbus.py |  13 +++++++++++++
+ 2 files changed, 28 insertions(+), 1 deletion(-)
 
-commit 0877670e184a591866cbf3ab14284fcb217b540b
+commit 5bf66ce79267b25bcc80251f9170498fa1d765f6
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sun Mar 6 23:05:33 2011 +1300
+Date:  Sun Mar 6 23:05:33 2011 +1300
 
     [gi-overrides] TreeViewColumn.set_cell_data_func func_data can be None
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644343
 
- gi/overrides/Gtk.py |    2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ gi/overrides/Gtk.py |   2 ++
+ 1 file changed, 2 insertions(+)
 
-commit 1f69c520d95fec30094fac47cb0efa31c79da81c
+commit 8e4f86e17a1de533a93b0748fd8de3cbfa70ba62
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sun Mar 6 17:48:04 2011 +1300
+Date:  Sun Mar 6 17:48:04 2011 +1300
 
     [gi-demos] dont try and run demos that represent directories
 
- demos/gtk-demo/gtk-demo.py |    3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-commit f06ad511725b28d821532acae45a25d0a186fc9f
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 9 13:02:50 2011 -0500
-
-    [gi-overrides] fix exception block so it works in Python 2.5
-
- gi/overrides/Gio.py |    5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
-
-commit a784350b6e76c6c66fb2856dd597238f4ac992e9
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 8 13:25:57 2011 -0500
-
-    post release version bump
-
- configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit aa745352bb99862c360dc56e2fececc4b2968cbc
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 8 13:20:31 2011 -0500
-
-    prep 2.28.0 release
+ demos/gtk-demo/gtk-demo.py |   3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
- NEWS         |   25 +++++++++++++++++++++++++
- configure.ac |    4 ++--
- 2 files changed, 27 insertions(+), 2 deletions(-)
-
-commit d3bafc0a8bacf99e22b18c978012ab719e70954e
+commit 097e5efab29d3d2d91d0b9fc75bf00219e9b7810
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 7 18:09:18 2011 -0500
+Date:  Mon Mar 7 18:09:18 2011 -0500
 
     [gi-demos] some python 3 compat fixes
 
  demos/gtk-demo/demos/Icon View/iconviewbasics.py |    6 ++++++
- demos/gtk-demo/demos/Tree View/liststore.py      |    2 +-
- demos/gtk-demo/demos/rotatedtext.py              |    4 ++--
- demos/gtk-demo/gtk-demo.py                       |    4 ++--
+ demos/gtk-demo/demos/Tree View/liststore.py     |    2 +-
+ demos/gtk-demo/demos/rotatedtext.py             |    4 ++--
+ demos/gtk-demo/gtk-demo.py                      |    4 ++--
  4 files changed, 11 insertions(+), 5 deletions(-)
 
-commit eaafff23d397852b08384b4e15d68e3888e99b48
+commit fd5d5ef3abc947d3c6066eea6378514f87b7f0ce
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 7 18:08:40 2011 -0500
-
-    [gi-demos] catch the correct error class
+Date:  Tue Feb 22 15:07:40 2011 -0500
 
- demos/gtk-demo/demos/images.py |   11 ++++++-----
- 1 files changed, 6 insertions(+), 5 deletions(-)
-
-commit b113540b452638601945f63297e68b7564c3d4df
-Author: Steve Frécinaux <code@istique.net>
-Date:   Mon Mar 7 01:58:36 2011 +0100
+    [gi-demos] add liststore demo
 
-    Try not to sink objects returned by C functions.
+ demos/gtk-demo/demos/Tree View/liststore.py | 205
+ +++++++++++++++++++++++++++
+ 1 file changed, 205 insertions(+)
 
-    When creating a wrapper around an object to call a python function, we
-    try to avoid calling pygobject_sink() when the object was not
-    created by
-    pygobject or the static bindings because otherwise we can end
-    up leaking
-    one reference for GInitiallyUnowned subclasses if the object was
-    already
-    owned by someone else.
+commit 09de5cf99474fc8a34b5f4a61cede1fb47353ebb
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Mar 7 18:08:40 2011 -0500
 
-    https://bugzilla.gnome.org/show_bug.cgi?id=644067
+    [gi-demos] catch the correct error class
 
- gobject/pygobject-private.h |    1 +
- gobject/pygobject.c         |    7 +++++++
- gobject/pygtype.c           |    6 +++---
- 3 files changed, 11 insertions(+), 3 deletions(-)
+ demos/gtk-demo/demos/images.py |   11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
 
-commit 7bece91e83e3c72a7bd04d2096dcf9b31aa9d366
+commit 7284d2d4622978fc9ddfd00f2714b3a572b7ab56
 Author: Steve Frécinaux <code@istique.net>
-Date:   Sun Mar 6 21:18:36 2011 +0100
+Date:  Sun Mar 6 21:18:36 2011 +0100
 
     Do not leak python references when using the gobject.property()
     helper.
@@ -691,25 +8784,13 @@ Date:   Sun Mar 6 21:18:36 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644039
 
- gobject/propertyhelper.py |    5 ++---
+ gobject/propertyhelper.py |   5 ++---
  tests/test_properties.py  |   23 +++++++++++++++++++++++
  2 files changed, 25 insertions(+), 3 deletions(-)
 
-commit 030695cb4306d915044aea4fae7c7122ccde31b4
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 7 11:13:12 2011 -0500
-
-    [gi] fix try except blocks so they work in Python 2.5
-
-    * use etype, e = sys.exc_info[:2] to extract error details instead of
-      except Exception as e or except Exception, e
-
- tests/test_gdbus.py |   27 ++++++++++++++++++++-------
- 1 files changed, 20 insertions(+), 7 deletions(-)
-
-commit 7e6d833c7f74031b010b45b635214cde5d85f7ae
+commit 618dbb0ee15b47e5e7cb16a34ffce0937d7fa26d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 4 12:25:49 2011 -0500
+Date:  Fri Mar 4 12:25:49 2011 -0500
 
     handle uchar as bytes, not strings in python 3
 
@@ -721,51 +8802,51 @@ Date:   Fri Mar 4 12:25:49 2011 -0500
     * PYGLIB_PyBytes_FromStringAndSize evaluates to a PyString in Python 2
       and a PyBytes object in Python 3
 
- gobject/pygtype.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ gobject/pygtype.c |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit aae4ce5d9e9b7747bf5847071a72a6cdd1371a3e
+commit 7e9483ff75b7a63ddda0fa9a9847f9f22ad71240
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 4 12:24:35 2011 -0500
+Date:  Fri Mar 4 12:24:35 2011 -0500
 
     [gi-overrides] handle unichar gvalues when setting treemodels
 
- gi/overrides/Gtk.py |   10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
+ gi/overrides/Gtk.py |  10 ++++++++++
+ 1 file changed, 10 insertions(+)
 
-commit 0d65223992abec46eee7b2b3c76f68da67de4905
+commit 6367bffa006e94dc667d7008fccad8d47d8d3646
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 4 11:43:51 2011 -0500
+Date:  Fri Mar 4 11:43:51 2011 -0500
 
     [gi-overrides] special case python 2 keywords that crept in
 
- gi/overrides/Gtk.py     |    6 +++++-
+ gi/overrides/Gtk.py    |    6 +++++-
  tests/test_overrides.py |    8 ++++----
  2 files changed, 9 insertions(+), 5 deletions(-)
 
-commit 094b355a785fbe7ebc776cbbd059e6a3d9241ce2
+commit 83b0f8a37d5f3236780d87a1ca466c5e44ae2bc0
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 4 11:10:16 2011 -0500
+Date:  Fri Mar 4 11:10:16 2011 -0500
 
     check for the py3 _thread module in configure.ac if thread is
     not found
 
  configure.ac |    6 +++++-
- 1 files changed, 5 insertions(+), 1 deletions(-)
+ 1 file changed, 5 insertions(+), 1 deletion(-)
 
-commit b0d537c58e6997b546a9a367860abb3b93ce3440
+commit 4645af87d3c587f535404867dab56608719e5c7b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 4 00:39:23 2011 -0500
+Date:  Fri Mar 4 00:39:23 2011 -0500
 
     [gi-demos] add iconview demo
 
  demos/gtk-demo/demos/Icon View/iconviewbasics.py |  212
  ++++++++++++++++++++++
- 1 files changed, 212 insertions(+), 0 deletions(-)
+ 1 file changed, 212 insertions(+)
 
-commit e5aa7268c2a0fc285d60b30e135fd79d039b9ae5
+commit 761dcb516a04f7a89b3c7d68e88fff23055e2a80
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 3 18:39:16 2011 -0500
+Date:  Thu Mar 3 18:39:16 2011 -0500
 
     [gi] wrap the keyword argument in a dict so we don't break Python 2.5
 
@@ -773,119 +8854,97 @@ Date:   Thu Mar 3 18:39:16 2011 -0500
     sending in
       *args.  You can only send in **kwds.
 
- gi/types.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ gi/types.py |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 79d03b40b2395874556860e7e39e0c607b6a676a
+commit f9604e90af12a1b9dbe7d7f311308e87cd0ed7dd
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 3 18:30:40 2011 -0500
+Date:  Thu Mar 3 18:30:40 2011 -0500
 
     [gi-demos] add the combobox with string ids section to the demos
 
  demos/gtk-demo/demos/combobox.py |   49
  +++++++++++++++++++++++++++++++++++++-
- 1 files changed, 48 insertions(+), 1 deletions(-)
+ 1 file changed, 48 insertions(+), 1 deletion(-)
 
-commit 1b4ac8bef90ed1d3d51d45dafa61bfd70c6f9eb7
+commit b70f4daf071cf77a4561b57f5521eb928f66d1ce
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 3 16:47:51 2011 -0500
+Date:  Thu Mar 3 16:47:51 2011 -0500
 
     [gi-overrides] add an override for Gdk.RGBA
 
- gi/overrides/Gdk.py     |   18 ++++++++++++++++++
+ gi/overrides/Gdk.py    |   18 ++++++++++++++++++
  tests/test_overrides.py |   10 ++++++++++
- 2 files changed, 28 insertions(+), 0 deletions(-)
+ 2 files changed, 28 insertions(+)
 
-commit c1c491c8cb4684a10404fee59b2706bec6b8606b
+commit ee2b63f60f350332ed21927721ed9ddff3a8034e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 3 16:10:17 2011 -0500
+Date:  Thu Mar 3 16:10:17 2011 -0500
 
     [gi-demos] fix up search-entry to reflect annotations fixed in Gtk+
     master
 
- demos/gtk-demo/demos/Entry/search_entry.py |   23 +++++++++--------------
- 1 files changed, 9 insertions(+), 14 deletions(-)
+ demos/gtk-demo/demos/Entry/search_entry.py |  23 +++++++++--------------
+ 1 file changed, 9 insertions(+), 14 deletions(-)
 
-commit 9687fbcf75582986e95188c5b2a24d0fe6b855db
+commit cd046e4c355706ead5f512b810a2a48317f8c32e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 2 18:13:43 2011 -0500
+Date:  Wed Mar 2 18:13:43 2011 -0500
 
     [gi-demos] add search entry demo
 
  demos/gtk-demo/demos/Entry/search_entry.py |  257
  ++++++++++++++++++++++++++++
- 1 files changed, 257 insertions(+), 0 deletions(-)
+ 1 file changed, 257 insertions(+)
 
-commit 28fbd6a11bda726fecfd7322f4acf41d06c54ec3
+commit d5ddaa92e6349c2f52b67317326060973cb69661
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 2 15:37:27 2011 -0500
+Date:  Wed Mar 2 15:37:27 2011 -0500
 
     [gi] wrap map in a list for Python 3 compat
 
- gi/types.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ gi/types.py |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit d71224aa5b329cbb7116d35b8f98027fc27e630d
+commit 3e5ab72a2e1fa2d8c4c2864137c6251f264ff4af
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 1 14:52:00 2011 -0500
+Date:  Tue Mar 1 14:52:00 2011 -0500
 
     [gi-demos] fix up the validation combobox
 
  demos/gtk-demo/demos/combobox.py |   21 +++++++++++++++------
- 1 files changed, 15 insertions(+), 6 deletions(-)
+ 1 file changed, 15 insertions(+), 6 deletions(-)
 
-commit d7d2f9c185773b35a6b89379be9bd96d04be79fb
+commit 08af5f99f0838b3584f6a3b210d0a0304811e8ff
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 1 12:31:35 2011 -0500
+Date:  Tue Mar 1 12:31:35 2011 -0500
 
     add overridesdir variable in the .pc file for 3rd party overrides
 
- pygobject-2.0.pc.in |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit c2cfdfa6c08b9da6bff9fc9d479e441a83cbf60a
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 1 12:19:28 2011 -0500
-
-    [gi] remove unref for closures since they are floating objects that
-    get sunk
-
-    * right now we trust that the containers we send the closures into
-    will sink
-      them
-    * we should research this a bit more to see if there is a better
-    way to handle
-      floating closures once we are free to break static binding ABI
-    * for now this is the least invasive of all the options
-    * don't assert on transfer != GI_TRANSFER_NONE since the behavior for
-      closures is always the same (and should actually be
-      GI_TRANSFER_FULL)
+ pygobject-2.0.pc.in |   1 +
+ 1 file changed, 1 insertion(+)
 
- gi/pygi-argument.c      |    6 ------
- tests/test_overrides.py |    8 ++++++++
- 2 files changed, 8 insertions(+), 6 deletions(-)
-
-commit e016486cbb24f696ebfc0cf1f457ec4e37a123cb
+commit 4a6b14a92a687a2311516b2c16c355216b5270a7
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Fri Feb 11 17:14:11 2011 +0100
+Date:  Fri Feb 11 17:14:11 2011 +0100
 
     setup.py: Set bdist_wininst user-access-control property
 
  setup.py |    3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
-commit 2923f26c7850d12ece67b3ef96054721d38f888f
+commit ad3ab659b83cb985730e19a83651da319d4bcb9c
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Mar 2 16:29:00 2011 +0100
+Date:  Wed Mar 2 16:29:00 2011 +0100
 
     Fix uninitialized variable in gi.require_version()
 
  gi/__init__.py |    3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
-commit aaaa00bb4027432503efee88622d9289319b1983
+commit 6e7606ee8830f6f51b777f41f6df2f6ea1784e89
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Mar 1 23:26:07 2011 +0100
+Date:  Tue Mar 1 23:26:07 2011 +0100
 
     Run tests with LC_MESSAGES="C"
 
@@ -894,40 +8953,32 @@ Date:   Tue Mar 1 23:26:07 2011 +0100
     visible strings. Ensure that these do not get translated in the
     test suite.
 
- tests/runtests.py |    2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ tests/runtests.py |   2 ++
+ 1 file changed, 2 insertions(+)
 
-commit 3aa089668f9ff3de86d2ca28e72c206c16c3403a
+commit 0461e05174637ae02f34029b85ba217d5ae48c53
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 28 18:21:43 2011 -0500
+Date:  Mon Feb 28 18:21:43 2011 -0500
 
     [gi-overrides] override Gtk.stock_lookup to not return success
 
  demos/gtk-demo/demos/combobox.py |    2 +-
- gi/overrides/Gtk.py              |    9 +++++++++
- 2 files changed, 10 insertions(+), 1 deletions(-)
-
-commit 9614680269a267f8cf32a2d5534c50fb76ec48ec
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 28 14:23:04 2011 -0500
-
-    post release bump
-
- configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ gi/overrides/Gtk.py             |    9 +++++++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
 
-commit 093334ee29b5846ff57b4e9f74380efc9ed591e7
+commit 40decf3501823004a6e4d3acbbf204c4d4d0a7ec
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 28 14:16:00 2011 -0500
+Date:  Mon Feb 28 14:16:00 2011 -0500
 
-    prep for 2.27.91 release
+    update NEWS to reflect changes in the 2.27.91 release (PYGOBJECT_2_28
+    branch)
 
  NEWS |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 50 insertions(+), 0 deletions(-)
+ 1 file changed, 50 insertions(+)
 
-commit 4b49a4f6123f0bbd5a36eba65b00142e3df7e595
+commit c2d5122b8e3cf51ec52418f90f1788895b842b6a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 28 14:08:05 2011 -0500
+Date:  Mon Feb 28 14:08:05 2011 -0500
 
     [gi-tests] use Gdk.test_simulate_button instead of emitting event
     ourselves
@@ -937,11 +8988,11 @@ Date:   Mon Feb 28 14:08:05 2011 -0500
        instead of creating our own button press event
 
  tests/test_overrides.py |    9 +++++----
- 1 files changed, 5 insertions(+), 4 deletions(-)
+ 1 file changed, 5 insertions(+), 4 deletions(-)
 
-commit baa9865e6ff8b4eee4b16235b8dcc5dc48d2634d
+commit 1be1a2ea2787dffeb71ab4a38233fb71e761bd21
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Thu Feb 24 19:30:32 2011 +0100
+Date:  Thu Feb 24 19:30:32 2011 +0100
 
     [gi-tests] tests for EventButton override.
 
@@ -951,36 +9002,23 @@ Date:   Thu Feb 24 19:30:32 2011 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=642554
 
  tests/test_overrides.py |   21 +++++++++++++++++++++
- 1 files changed, 21 insertions(+), 0 deletions(-)
-
-commit 6366307ba020a40f6dfa22e64fd6345b118fd2e5
-Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Feb 16 09:44:12 2011 +0100
-
-    Skip interfaces when checking for conflicts in the MRO
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=642437
-
- gi/types.py             |   40 ++++++++++++++++++++++++++++++++++++++++
- gobject/gobjectmodule.c |    9 +++++++--
- tests/test_gi.py        |   16 ++++++++++++++++
- 3 files changed, 63 insertions(+), 2 deletions(-)
+ 1 file changed, 21 insertions(+)
 
-commit 14c787541966be8f497905d33d554343dabf8b73
+commit 99044a4860dd65c97f52b41b7cd3f216f4a97cd4
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 23 18:43:27 2011 -0500
+Date:  Wed Feb 23 18:43:27 2011 -0500
 
     [gi-overrides] Add event methods to all event union members
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642554
 
- gi/overrides/Gdk.py |   70
+ gi/overrides/Gdk.py |  70
  +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 70 insertions(+), 0 deletions(-)
+ 1 file changed, 70 insertions(+)
 
-commit 7f013383063c1d1e5a95cf4c056ff152d4aa2645
+commit 6e30c69d38fd382414eb820097c297a80be547ac
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 23 14:14:16 2011 -0500
+Date:  Wed Feb 23 14:14:16 2011 -0500
 
     [gi] check to see if object is a member of a union when validating
     paramaters
@@ -1000,23 +9038,36 @@ Date:   Wed Feb 23 14:14:16 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642554
 
- gi/pygi-argument.c |   38 ++++++++++++++++++++++++++++++++++++++
- 1 files changed, 38 insertions(+), 0 deletions(-)
+ gi/pygi-argument.c |  38 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+
+commit 525f21d1365c24488b768955362085bf82512dee
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date:  Wed Feb 16 09:44:12 2011 +0100
+
+    Skip interfaces when checking for conflicts in the MRO
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642437
+
+ gi/types.py            |   40 ++++++++++++++++++++++++++++++++++++++++
+ gobject/gobjectmodule.c |    9 +++++++--
+ tests/test_gi.py       |   16 ++++++++++++++++
+ 3 files changed, 63 insertions(+), 2 deletions(-)
 
-commit 284e775b6caa86ef6465d17c87ec77376e66931c
+commit da212024772a7a0c32f04f3589bfb24d2eb5706f
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Thu Feb 24 18:46:15 2011 +0100
+Date:  Thu Feb 24 18:46:15 2011 +0100
 
     [gi] Remove DyanmicModule.load() to _load() to prevent overriding
     GI attrs.
 
  gi/importer.py |    2 +-
- gi/module.py   |    2 +-
+ gi/module.py  |    2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
-commit 6d6d4fcf4678b512558c2c0e44c0c2e235c810f4
+commit 2ce6b58c7427cf67ba4f55731ba0a4c04703e495
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Feb 23 12:05:03 2011 +0100
+Date:  Wed Feb 23 12:05:03 2011 +0100
 
     Test case with John's fix for crash with C arrays and a GError is set.
 
@@ -1028,35 +9079,35 @@ Date:   Wed Feb 23 12:05:03 2011 +0100
 
      * This is a hack and there is really no way around it without
      ripping out
-        the current array handling code which spans between pygi-invoke.c
-        and
-        pygi-argument.c and completely rewriting it.
+       the current array handling code which spans between pygi-invoke.c
+       and
+       pygi-argument.c and completely rewriting it.
       * The is no time before our stable release
       * This patch trades a segfault for a leak in the very unusual
       case where
-        an error occures inside an interface that takes one or more C
-        arrays. Since
-        we wrap C arrays in GArrays internally but have to unwrap them
-        to send them
-        to the introspected C function, there is a period of time where
-        an error
-        can occure with the C array in an unknown state (some being true
-        C arrays
-        and others still wrapped in a GArray)
+       an error occures inside an interface that takes one or more C
+       arrays. Since
+       we wrap C arrays in GArrays internally but have to unwrap them
+       to send them
+       to the introspected C function, there is a period of time where
+       an error
+       can occure with the C array in an unknown state (some being true
+       C arrays
+       and others still wrapped in a GArray)
       * This patch adds a c_arrays_are_wrapped state to signal that it
       is safe to
-        free them.  However since c_arrays_are_wrapped can only track
-        arrays
-        as a group, not individually, if it is set to FALSE we can
-        not assume
-        that every array is a pure C array, so instead we will simply
-        leak them
-        to avoid incorrectly freeing one and causing a segfault.
+       free them.  However since c_arrays_are_wrapped can only track
+       arrays
+       as a group, not individually, if it is set to FALSE we can
+       not assume
+       that every array is a pure C array, so instead we will simply
+       leak them
+       to avoid incorrectly freeing one and causing a segfault.
       * This issue is fixed in the invoke rewrite branch as it treats
       C arrays and
-        GArrays separately, however that branch is not yet ready to be
-        merged and
-        won't be until the next release.
+       GArrays separately, however that branch is not yet ready to be
+       merged and
+       won't be until the next release.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642708
 
@@ -1065,47 +9116,32 @@ Date:   Wed Feb 23 12:05:03 2011 +0100
  tests/test_gi.py |    9 +++++++++
  2 files changed, 59 insertions(+), 4 deletions(-)
 
-commit 3534c1d4babefd4ee63e46119b279126058b7a71
+commit 702a89beca92cab6b0142829b20281b9245f28b8
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 23 15:11:59 2011 -0500
+Date:  Wed Feb 23 15:11:59 2011 -0500
 
     [gi-overrides] fix setting rows in treeview to accept None as a value
 
      * as done in PyGTK None indicates the column should not be set
 
- gi/overrides/Gtk.py     |    3 +++
+ gi/overrides/Gtk.py    |    3 +++
  tests/test_overrides.py |   18 +++++++++++++-----
  2 files changed, 16 insertions(+), 5 deletions(-)
 
-commit ecbfaf60914a87f29ff0529614db9b6afca94c82
+commit 498f0d9c903131aca5efe27ffaad7620e40f72ea
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Feb 23 14:23:19 2011 +0100
+Date:  Wed Feb 23 14:23:19 2011 +0100
 
     [gi] Add value_name for enum and flags from introspection
     "c:identifier" (if attr is available).
 
- gi/gimodule.c    |   22 ++++++++++++++++++----
+ gi/gimodule.c   |   22 ++++++++++++++++++----
  tests/test_gi.py |   36 ++++++++++++++++++++++++++++++++++++
  2 files changed, 54 insertions(+), 4 deletions(-)
 
-commit e5ae620ad772f62cb14ab7c049ba0ce00cc501f2
-Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Tue Feb 22 21:37:33 2011 +0100
-
-    Don't force loading of DynamicModule until set in sys.modules
-
-    This fixes Tomeu's previous commit, which removed lazy loading.
-    Forcing the loading of a module before it is installed in sys.modules
-    prevents some overrides from being registered (namely Gtk.main_quit).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=642305
-
- gi/importer.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 992c0c1096c77bc299a40a34ec30a2ac0c562ed4
+commit 824aeb7fab17d6590e5babf2d1f64298f2d0e16b
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Feb 23 11:40:55 2011 +0100
+Date:  Wed Feb 23 11:40:55 2011 +0100
 
     Fix flags with multiple names for the same value.
 
@@ -1118,55 +9154,27 @@ Date:   Wed Feb 23 11:40:55 2011 +0100
     of duplicate instances we keep, because if an instance is not
     found in the dict, a new one is created anyway.
 
- gobject/pygflags.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 8bf3f6ed075994eb3e29950670395bcf1b9dc2a0
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 22 15:07:40 2011 -0500
-
-    [gi-demos] add liststore demo
-
- demos/gtk-demo/demos/Tree View/liststore.py |  205
- +++++++++++++++++++++++++++
- 1 files changed, 205 insertions(+), 0 deletions(-)
-
-commit 788fc96771046fc64cede392e748b2d1b6b3aa1c
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 22 14:35:44 2011 -0500
-
-    [gi-demos] run through the demos and remove the FIXMEs that have
-    been fixed
+ gobject/pygflags.c |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
- demos/gtk-demo/demos/appwindow.py     |   18 ++++++------------
- demos/gtk-demo/demos/assistant.py     |    3 ---
- demos/gtk-demo/demos/builder.py       |    3 ---
- demos/gtk-demo/demos/button_box.py    |   10 +++-------
- demos/gtk-demo/demos/clipboard.py     |    8 ++------
- demos/gtk-demo/demos/colorselector.py |    2 --
- demos/gtk-demo/demos/combobox.py      |    4 +---
- demos/gtk-demo/demos/drawingarea.py   |    3 ---
- 8 files changed, 12 insertions(+), 39 deletions(-)
-
-commit adf7aec853878681b450c3ef1f89bfe9ba85fec1
-Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Feb 16 11:53:18 2011 +0100
+commit 3afbebeee486e14fd3f48552368903eb78f6b10c
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date:  Tue Feb 22 21:37:33 2011 +0100
 
-    Load typelibs at import time, add gi.require_version()
+    Don't force loading of DynamicModule until set in sys.modules
 
-    also adds Repository.get_loaded_namespaces()
+    This fixes Tomeu's previous commit, which removed lazy loading.
+    Forcing the loading of a module before it is installed in sys.modules
+    prevents some overrides from being registered (namely Gtk.main_quit).
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642305
 
- gi/__init__.py       |   29 ++++++++++++++++++++++++++++-
- gi/importer.py       |    1 +
- gi/module.py         |   21 ++++-----------------
- gi/pygi-repository.c |   23 +++++++++++++++++++++++
- 4 files changed, 56 insertions(+), 18 deletions(-)
+ gi/importer.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 6fe7783b96366f380f9168909932a87e35d994b3
+commit 2a9cbfb435b47dc646e2c6ffe630464b560229a6
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 21 17:20:57 2011 -0500
+Date:  Mon Feb 21 17:20:57 2011 -0500
 
     use GValue support to marshal GtkTreeModel values correctly
 
@@ -1174,14 +9182,14 @@ Date:   Mon Feb 21 17:20:57 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642921
 
- gi/overrides/Gtk.py     |   37 ++++++++++++++++++--
+ gi/overrides/Gtk.py    |   37 +++++++++++++++++---
  tests/test_overrides.py |   87
  ++++++++++++++++++++++++++++++++++++++++-------
  2 files changed, 107 insertions(+), 17 deletions(-)
 
-commit bc4a570bcc0a02029d746fbbcfdf4cc14c37f2ad
+commit 9e4ce7dc0f03ea407654c4af028122f57cbc4c5e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 21 16:14:20 2011 -0500
+Date:  Mon Feb 21 16:14:20 2011 -0500
 
     [gi] pass raw GValues instead of trying to marshal them
 
@@ -1194,9 +9202,9 @@ Date:   Mon Feb 21 16:14:20 2011 -0500
        the raw GValue interfaces and expect paramaters that take
        GValues to
        marshal them correctly e.g.:
-           value = GObject.Value()
-           value.int(GObject.TYPE_UINT)
-           value.set_uint(1234)
+          value = GObject.Value()
+          value.int(GObject.TYPE_UINT)
+          value.set_uint(1234)
      * The objective here is to not for users to use this API but for
      overrides
        to be able to utilize them.  For instance in the TreeModel API
@@ -1207,23 +9215,49 @@ Date:   Mon Feb 21 16:14:20 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642914
 
- gi/pygi-argument.c |   24 ++++++++++++++++++------
- tests/test_gi.py   |    9 ++++++++-
+ gi/pygi-argument.c |  24 ++++++++++++++++++------
+ tests/test_gi.py   |   9 ++++++++-
  2 files changed, 26 insertions(+), 7 deletions(-)
 
-commit 428fc90eb12f26ceb7c868879ad05788890d32a3
+commit b458f6f3424a04f6ceece09d443009372d70544c
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Feb 19 19:42:41 2011 -0500
+Date:  Sat Feb 19 19:42:41 2011 -0500
 
     [gi-demos] add icon view edit and drag-and-drop demo
 
  demos/gtk-demo/demos/Icon View/iconviewedit.py |  101
  ++++++++++++++++++++++++
- 1 files changed, 101 insertions(+), 0 deletions(-)
+ 1 file changed, 101 insertions(+)
+
+commit 7b47289e25d1dd57ce15556ccfbb3ede1c4bfe8b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sat Feb 19 17:26:42 2011 -0500
+
+    [gi-demos] add info bars demo
+
+ demos/gtk-demo/demos/infobars.py |   99
+ ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 99 insertions(+)
+
+commit 76758efb6579752237a0dc4d56cf9518de6c6e55
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date:  Wed Feb 16 11:53:18 2011 +0100
+
+    Load typelibs at import time, add gi.require_version()
+
+    also adds Repository.get_loaded_namespaces()
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=642305
+
+ gi/__init__.py       |   29 ++++++++++++++++++++++++++++-
+ gi/importer.py       |    1 +
+ gi/module.py        |   21 ++++-----------------
+ gi/pygi-repository.c |   23 +++++++++++++++++++++++
+ 4 files changed, 56 insertions(+), 18 deletions(-)
 
-commit eb0e179bff167303db1c20412f4bc9c8baa94582
+commit 96f7d1aed732db09a74cd463ed894b7347dbcb15
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Sat Feb 19 23:11:25 2011 +0100
+Date:  Sat Feb 19 23:11:25 2011 +0100
 
     [gi] Register GType for non-GType enums and flags at runtime.
 
@@ -1240,39 +9274,18 @@ Date:   Sat Feb 19 23:11:25 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642607
 
- gi/gimodule.c      |  117
+ gi/gimodule.c     |  117
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/module.py       |   24 +++++++----
- gi/pygi-info.c     |   15 +++++++
- gi/types.py        |   16 -------
- gobject/pygflags.c |   13 ++++--
- tests/test_gi.py   |   35 +++++++++++++++
+ gi/module.py      |   24 +++++++----
+ gi/pygi-info.c     |  15 +++++++
+ gi/types.py       |   16 -------
+ gobject/pygflags.c |  13 ++++--
+ tests/test_gi.py   |  35 ++++++++++++++++
  6 files changed, 191 insertions(+), 29 deletions(-)
 
-commit d5e67257361609036d2bbfa47ea85a6c759b332a
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Feb 19 17:26:42 2011 -0500
-
-    [gi-demos] add info bars demo
-
- demos/gtk-demo/demos/infobars.py |   99
- ++++++++++++++++++++++++++++++++++++++
- 1 files changed, 99 insertions(+), 0 deletions(-)
-
-commit 372f480b078d1befb30532a0ebe0ad9c90e78df0
-Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Sat Feb 19 15:44:52 2011 +0100
-
-    tests/runtests.py: Add missing "import sys"
-
-    master already has this.
-
- tests/runtests.py |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-commit c1b35fc49680ad25e996de57e3e020bd43d9186c
+commit 63a60bcc20e724f96ea8d565ee0cf13a228b72b9
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Feb 8 15:38:21 2011 +0100
+Date:  Tue Feb 8 15:38:21 2011 +0100
 
     [gi] Add Pythonic gdbus method invocation
 
@@ -1292,15 +9305,15 @@ Date:   Tue Feb 8 15:38:21 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640181
 
- gi/overrides/Gio.py |   99
+ gi/overrides/Gio.py |  99
  +++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gdbus.py |  102
+ tests/test_gdbus.py | 102
  ++++++++++++++++++++++++++++++++++++++++++++++++++-
  2 files changed, 199 insertions(+), 2 deletions(-)
 
-commit 2737e1c2c506cd324a0aa2abfdfeb3ad4f08e678
+commit ed5cdbb6f52bdbd13521a814516b15687955d6f7
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Fri Feb 18 22:48:59 2011 +0100
+Date:  Fri Feb 18 22:48:59 2011 +0100
 
     Skip GError out parameters in Python closure.
 
@@ -1311,24 +9324,33 @@ Date:   Fri Feb 18 22:48:59 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642715
 
- gi/pygi-closure.c |    8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
+ gi/pygi-closure.c |   8 ++++++++
+ 1 file changed, 8 insertions(+)
 
-commit 93677502c12a3ee123dd565bf1b404ef47ec1c47
+commit 5a5ee3877e22939a697772a7f0630ef8cae3d52f
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date:  Fri Feb 18 10:15:59 2011 +0100
+
+    Fix runtests.py to work with Python3 (print function syntax error).
+
+ tests/runtests.py |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ad5d3fccff9433e2dadac89d731dac5cafb0eac3
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Feb 17 19:46:49 2011 -0500
+Date:  Thu Feb 17 19:46:49 2011 -0500
 
     [gi-demos] added rotate text demo
 
     * needs some Pango Attr fixes to be 100% done, See FIXME
 
- demos/gtk-demo/demos/rotatedtext.py |  196
+ demos/gtk-demo/demos/rotatedtext.py | 196
  +++++++++++++++++++++++++++++++++++
- 1 files changed, 196 insertions(+), 0 deletions(-)
+ 1 file changed, 196 insertions(+)
 
-commit 8495ab57f49fb507a8004a9cf967d6fe91bb4ef0
+commit 9ac11c3c3b1c0399c85ece57c0983ed60d419d7a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Feb 17 17:25:00 2011 -0500
+Date:  Thu Feb 17 17:25:00 2011 -0500
 
     [gi-demos] add images demo
 
@@ -1336,30 +9358,30 @@ Date:   Thu Feb 17 17:25:00 2011 -0500
 
  demos/gtk-demo/demos/images.py |  311
  ++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 311 insertions(+), 0 deletions(-)
+ 1 file changed, 311 insertions(+)
 
-commit 60b9dd8d021e550089f44dc489ffeb77af6976ee
+commit 13b06170b89b3468e6255be32af4833ffc675c9d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Feb 17 14:48:24 2011 -0500
+Date:  Thu Feb 17 14:48:24 2011 -0500
 
     [gi-demos] add pixbuf demo
 
  demos/gtk-demo/demos/pixbuf.py |  183
  ++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 183 insertions(+), 0 deletions(-)
+ 1 file changed, 183 insertions(+)
 
-commit f57153dd6786858ff2ab79c28227cd021755d693
+commit 7abcfd5b4db99bb0f50c5a47d346a2de3836f994
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Feb 17 14:47:12 2011 -0500
+Date:  Thu Feb 17 14:47:12 2011 -0500
 
     [gi-demos] remove fixmes from print demo, fixed in pango
 
  demos/gtk-demo/demos/printing.py |   10 +++-------
- 1 files changed, 3 insertions(+), 7 deletions(-)
+ 1 file changed, 3 insertions(+), 7 deletions(-)
 
-commit b8345be15c7f65e97f6bc148ad6c35ff80ff3870
+commit 9b13f49356da7d71c69b82da2a59d92f456a6913
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 16 19:39:30 2011 -0500
+Date:  Wed Feb 16 19:39:30 2011 -0500
 
     [gi-demos] add printing demo
 
@@ -1367,54 +9389,54 @@ Date:   Wed Feb 16 19:39:30 2011 -0500
 
  demos/gtk-demo/demos/printing.py |  177
  ++++++++++++++++++++++++++++++++++++++
- 1 files changed, 177 insertions(+), 0 deletions(-)
+ 1 file changed, 177 insertions(+)
 
-commit 123877715145038a5877b8c538a48a1285f1ed54
+commit 6025b62ee662af347e48b6752e6d5be74b4a8215
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 16 17:52:38 2011 -0500
+Date:  Wed Feb 16 17:52:38 2011 -0500
 
     [gi-overrides] add cursor overrides
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635947
 
- gi/overrides/Gdk.py     |   41 +++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gdk.py    |   41 +++++++++++++++++++++++++++++++++++++++++
  tests/test_overrides.py |   23 +++++++++++++++++++++++
- 2 files changed, 64 insertions(+), 0 deletions(-)
+ 2 files changed, 64 insertions(+)
 
-commit 68d72e015997da8d5732527c7ab96dd8c61fa664
+commit 03c0aa498470037ef2aa6a8233198ff521f8d42f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 16 16:18:24 2011 -0500
+Date:  Wed Feb 16 16:18:24 2011 -0500
 
     [gi-demos] add the links demo
 
  demos/gtk-demo/demos/links.py |   74
  +++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 74 insertions(+), 0 deletions(-)
+ 1 file changed, 74 insertions(+)
 
-commit 00505a9a5445b85a091650a777a47f632ddc9d6d
+commit 79ecddf8d54b3f4f8b5ef05d302675152622c832
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 16 15:48:40 2011 -0500
+Date:  Wed Feb 16 15:48:40 2011 -0500
 
     [gi-demos] add expander demo
 
  demos/gtk-demo/demos/expander.py |   60
  ++++++++++++++++++++++++++++++++++++++
- 1 files changed, 60 insertions(+), 0 deletions(-)
+ 1 file changed, 60 insertions(+)
 
-commit ed8710c7aa05cc0c919366536c94bf43955f1b71
+commit 76cdb13ab872f91f8384d26b0f2932087a746117
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 16 15:14:35 2011 -0500
+Date:  Wed Feb 16 15:14:35 2011 -0500
 
     [gi-overrides] use pop instead of del and add extra tests for
     Gtk.Table kwargs
 
- gi/overrides/Gtk.py     |    6 ++----
+ gi/overrides/Gtk.py    |    6 ++----
  tests/test_overrides.py |    8 ++++++++
  2 files changed, 10 insertions(+), 4 deletions(-)
 
-commit 888675f85c895a60d4432b992961ec3067da6e20
+commit 6ef83c049735689c42f085ca9d7b8e1f251c410f
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Tue Feb 15 20:07:42 2011 +0100
+Date:  Tue Feb 15 20:07:42 2011 +0100
 
     [tests] Separate processes for GI and static binding tests.
 
@@ -1429,87 +9451,60 @@ Date:   Tue Feb 15 20:07:42 2011 +0100
     so that make does not continue. Otherwise you might miss the
     failures from the first batch of tests in the scrollback.
 
- tests/Makefile.am |   29 ++++++++++++-----------------
- tests/runtests.py |    4 +++-
- 2 files changed, 15 insertions(+), 18 deletions(-)
-
-commit 71b0dd93d524afce9f4a4b0b393c8a16a1f70e2f
-Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Tue Feb 15 16:26:24 2011 +0100
-
-    [GI] Remove implicit loading of gi module preserve the code path
-    for static bindings.
+ tests/Makefile.am |   19 +++++++++++--------
+ tests/runtests.py |   4 +++-
+ 2 files changed, 14 insertions(+), 9 deletions(-)
 
-    Previously type lookups (as well as property accesses and signal
-    connects would trigger an import of the gi module). Now we make
-    those paths fail, and fallback to the old static binding code
-    paths *unless* the gi module is already in sys.modules.
-
-    So if Python code calls:
-    from gi.repository import Gtk
-
-    or even just:
-    import gi
-
-    then everything will work just like it did without this patch. If gi
-    is not explicitly imported, the code skips the introspection code
-    and acts like the old static bindings did.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=642387
-
- gi/pygi.h |   10 ++++++++--
- 1 files changed, 8 insertions(+), 2 deletions(-)
-
-commit 97e78181813f15f693e650df5a8901bd2fe71541
+commit e0896b45f60f37097ec521f1bc38778383b78dd8
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 14:47:10 2011 -0500
+Date:  Tue Feb 15 14:47:10 2011 -0500
 
     [gi-demos] add dialogs demo
 
  demos/gtk-demo/demos/dialogs.py |  153
  +++++++++++++++++++++++++++++++++++++++
- 1 files changed, 153 insertions(+), 0 deletions(-)
+ 1 file changed, 153 insertions(+)
 
-commit a23a48edafb9d08fec5411b828d1e0c6763e84af
+commit 2dea743e82f6b18697950c34f116b2d0f1d6b1dd
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 14:46:41 2011 -0500
+Date:  Tue Feb 15 14:46:41 2011 -0500
 
     [gi-overrides] fix typo in GtkTable constructor
 
- gi/overrides/Gtk.py |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
+ gi/overrides/Gtk.py |   8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
-commit bcccff3b2ad9c8054a4d5462c62cde566587eba6
+commit 9c277e1782c5a9d672d91fabf5289c5415891682
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 13:26:38 2011 -0500
+Date:  Tue Feb 15 13:26:38 2011 -0500
 
     [gi-demos] keep popup menu from destroying itself by holding a ref
     in app class
 
- demos/gtk-demo/demos/clipboard.py |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
+ demos/gtk-demo/demos/clipboard.py |   8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
-commit 9dc0979ba7d35b6ff9bb219a21926c2fd88451c7
+commit 18800c4db0e1faea38fd84f635d26a7ded5d10de
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 13:25:13 2011 -0500
+Date:  Tue Feb 15 13:25:13 2011 -0500
 
     [gi-overrides] add a Gtk.Menu override for the popup method
 
- gi/overrides/Gtk.py |    7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
+ gi/overrides/Gtk.py |   7 +++++++
+ 1 file changed, 7 insertions(+)
 
-commit 317278a3ddf15f1f9da53051295a0b533b1b1a11
+commit ad93386ba9f73ef4c3826544b3868cf03c01225e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 13:24:33 2011 -0500
+Date:  Tue Feb 15 13:24:33 2011 -0500
 
     [gi-demos] fix the about dialog in appwindow demo
 
  demos/gtk-demo/demos/appwindow.py |   22 +++++++++-------------
- 1 files changed, 9 insertions(+), 13 deletions(-)
+ 1 file changed, 9 insertions(+), 13 deletions(-)
 
-commit cb2d2aad023789991b20036e22cae5ad3eee9b36
+commit d0c45c80974f05b6adfd3bb01d785be268a53a98
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 11:21:13 2011 -0500
+Date:  Tue Feb 15 11:21:13 2011 -0500
 
     [gi-demos] fix clipboard demo so DnD works
 
@@ -1518,42 +9513,42 @@ Date:   Tue Feb 15 11:21:13 2011 -0500
       notify
 
  demos/gtk-demo/demos/clipboard.py |   20 ++++++++++----------
- 1 files changed, 10 insertions(+), 10 deletions(-)
+ 1 file changed, 10 insertions(+), 10 deletions(-)
 
-commit 5434b7aac323170ea9469afbda520b801462c246
+commit 02d0327508234ab2e3b7dc6de506d70e6fcaaa17
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 10:18:53 2011 -0500
+Date:  Tue Feb 15 10:18:53 2011 -0500
 
     [gi-demos] fix clipboard demo to reflect new API
 
- demos/gtk-demo/demos/clipboard.py |    6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ demos/gtk-demo/demos/clipboard.py |   6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
-commit b6c97de9680f3d5d629132415c1f7a9c42e558f8
+commit aa006cad6990eff0cbb68fa9550e428f2bc96473
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 18:17:20 2011 -0500
+Date:  Mon Feb 14 18:17:20 2011 -0500
 
     [gi-demo] Fix color dialog demo to run with new draw, style and
     color apis
 
  demos/gtk-demo/demos/colorselector.py |   44
- ++++++++++++--------------------
- 1 files changed, 17 insertions(+), 27 deletions(-)
+ +++++++++++++--------------------
+ 1 file changed, 17 insertions(+), 27 deletions(-)
 
-commit 7147bd635fb03439a5f9edbce56c5558d092428c
+commit f94a96c53e9432ac085bd05acee7ebdd2803fbad
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 17:58:25 2011 -0500
+Date:  Mon Feb 14 17:58:25 2011 -0500
 
     [gi-demos] fix most of the combobox app
 
     * Still having some issues with filtering the ComboBoxText widget
 
  demos/gtk-demo/demos/combobox.py |   17 ++++++++---------
- 1 files changed, 8 insertions(+), 9 deletions(-)
+ 1 file changed, 8 insertions(+), 9 deletions(-)
 
-commit a64b8fe89492ae47172979f1900686455cd1f9a8
+commit 3606eb20ad1651af621bf1aa429ec102082565eb
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Mon Feb 14 19:36:27 2011 +0100
+Date:  Mon Feb 14 19:36:27 2011 +0100
 
     Use PyGI type conversion (to fix foreign types) for signal callbacks.
 
@@ -1562,31 +9557,31 @@ Date:   Mon Feb 14 19:36:27 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=637601
 
- gi/Makefile.am           |    2 +
- gi/gimodule.c            |    1 +
- gi/pygi-argument.c       |   91 +++++++++++++++++
- gi/pygi-argument.h       |    2 +
- gi/pygi-private.h        |    1 +
+ gi/Makefile.am                  |    2 +
+ gi/gimodule.c           |    1 +
+ gi/pygi-argument.c      |   91 +++++++++++++++++
+ gi/pygi-argument.h      |    2 +
+ gi/pygi-private.h       |    1 +
  gi/pygi-signal-closure.c |  245
  ++++++++++++++++++++++++++++++++++++++++++++++
  gi/pygi-signal-closure.h |   46 +++++++++
- gi/pygi.h                |   28 +++++
- gobject/pygobject.c      |   24 ++++-
+ gi/pygi.h               |   28 ++++++
+ gobject/pygobject.c     |   24 ++++-
  9 files changed, 436 insertions(+), 4 deletions(-)
 
-commit 36ddad6af4a579c070171fd0522d7ffd93d5d73e
+commit 2e39d5e8f96be2253acb2f34a0d0b5b9c9adb8ff
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 16:47:03 2011 -0500
+Date:  Mon Feb 14 16:47:03 2011 -0500
 
     [gi-demos] fix drawingarea app to use the new draw api
 
- demos/gtk-demo/demos/drawingarea.py |  144
+ demos/gtk-demo/demos/drawingarea.py | 144
  ++++++++++++-----------------------
- 1 files changed, 50 insertions(+), 94 deletions(-)
+ 1 file changed, 50 insertions(+), 94 deletions(-)
 
-commit ddde83ebd4dbb179aa5388057a14faf32ece26ae
+commit 8385afbbc5df295d9b7cd3b5d19c90faa1f7ea8e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 16:43:35 2011 -0500
+Date:  Mon Feb 14 16:43:35 2011 -0500
 
     [gi-overrides] for Gtk 3 alias Gdk.Rectangle to cairo.RectangleInt
 
@@ -1595,12 +9590,12 @@ Date:   Mon Feb 14 16:43:35 2011 -0500
       bindings
     * we alias this so people do not get confused
 
- gi/overrides/Gdk.py |    5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
+ gi/overrides/Gdk.py |   5 +++++
+ 1 file changed, 5 insertions(+)
 
-commit 8617d0e2a63771eba04983c7319f18638aa6d81e
+commit d491c369e049ab726f09002af0462391d5c2f3ec
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 15:07:11 2011 -0500
+Date:  Mon Feb 14 15:07:11 2011 -0500
 
     [gi-overrides] let user set the proper property names in Gtk.Table
 
@@ -1610,193 +9605,153 @@ Date:   Mon Feb 14 15:07:11 2011 -0500
     * The GTK properties are n_columns and n_rows
     * support both
 
- gi/overrides/Gtk.py |    8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
+ gi/overrides/Gtk.py |   8 ++++++++
+ 1 file changed, 8 insertions(+)
 
-commit 09c0534e4ac673ffdbfb41bc0aa34353be3b88e2
+commit 95bc2b2b025d659725d701c3b759c0c4d9681a36
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 15:06:38 2011 -0500
+Date:  Mon Feb 14 15:06:38 2011 -0500
 
     [gi-demos] get appwindow demo working again
 
  demos/gtk-demo/demos/appwindow.py |   24 ++++--------------------
- 1 files changed, 4 insertions(+), 20 deletions(-)
+ 1 file changed, 4 insertions(+), 20 deletions(-)
 
-commit 1944349cc59ddaf4fd7308ffce10b521c885c88b
+commit 015185f502c498c21cb108d3bb288c5b6dbf202f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 15:05:44 2011 -0500
+Date:  Mon Feb 14 15:05:44 2011 -0500
 
     [gi-demos] fixed use of tree_iter_get
 
- demos/gtk-demo/gtk-demo.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 29efc5a31c2879cefcf31d1d9bdbab65052d3b24
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Feb 11 11:18:24 2011 -0500
-
-    pre-release version bump
-
- configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-commit 5dae6386ef74b6334daa3d0baf7c2e43d93a7e40
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Feb 11 11:05:04 2011 -0500
-
-    bump version and edit NEWS for release
-
- NEWS         |  289
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- configure.ac |    2 +-
- 2 files changed, 290 insertions(+), 1 deletions(-)
-
-commit e12097a3fc006f435ae01156e55cacd7622a6e06
-Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Feb 10 16:46:08 2011 -0500
-
-    fix build to correctly use python-config
-
- autogen.sh        |    3 +++
- configure.ac      |    6 ------
- m4/python.m4      |    9 +++++----
- tests/runtests.py |    1 +
- 4 files changed, 9 insertions(+), 10 deletions(-)
-
-commit 5ec107f805e32d4183b3c1a015d411992fc46a48
-Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Feb 9 18:00:34 2011 +0100
-
-    Run gio tests separately when enabled
-
-    As we can't load both gio and gi.repository.Gio at the same time,
-    run the gio
-    tests separately when gio is enabled.
-
- tests/Makefile.am |   13 ++++++++++++-
- 1 files changed, 12 insertions(+), 1 deletions(-)
-
-commit 02ac041ba001bdda506f749e90aebc86a414d7c1
-Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Feb 2 13:33:55 2011 +0100
-
-    Revert "Remove gio static bindings"
+ demos/gtk-demo/gtk-demo.py |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-    This reverts commit bca5834fc8fa342149e0eec7b396877a2abe6d33.
+commit 0c20977e4598e5447dd07c069e91226efacb1160
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date:  Fri Feb 11 22:02:03 2011 +0100
 
-    We still need the static gio bindings for now.
+    Remove last GIO-related bits
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638899
 
- Makefile.am                       |    2 +-
- configure.ac                      |   22 +-
- gio/.gitignore                    |    3 +
- gio/Makefile.am                   |  117 +
- gio/__init__.py                   |   40 +
- gio/gappinfo.override             |  213 ++
- gio/gapplaunchcontext.override    |   99 +
- gio/gbufferedinputstream.override |   70 +
- gio/gcancellable.override         |   38 +
- gio/gdatainputstream.override     |  250 ++
- gio/gdrive.override               |  347 ++
- gio/gfile.override                | 2215 +++++++++++
- gio/gfileattribute.override       |  153 +
- gio/gfileenumerator.override      |  184 +
- gio/gfileinfo.override            |  121 +
- gio/gfileinputstream.override     |   68 +
- gio/gfileiostream.override        |   68 +
- gio/gfileoutputstream.override    |   68 +
- gio/gicon.override                |  310 ++
- gio/ginputstream.override         |  344 ++
- gio/gio-types.defs                |  807 ++++
- gio/gio.defs                      | 7465
- +++++++++++++++++++++++++++++++++++++
- gio/gio.override                  |  409 ++
- gio/giomodule.c                   |  208 +
- gio/giostream.override            |   68 +
- gio/gmemoryinputstream.override   |   91 +
- gio/gmemoryoutputstream.override  |   45 +
- gio/gmount.override               |  454 +++
- gio/goutputstream.override        |  292 ++
- gio/gresolver.override            |  312 ++
- gio/gsocket.override              |  575 +++
- gio/gvolume.override              |  237 ++
- gio/gvolumemonitor.override       |   94 +
- gio/pygio-utils.c                 |  236 ++
- gio/pygio-utils.h                 |   49 +
- gio/unix-types.defs               |   55 +
- gio/unix.defs                     |  475 +++
- gio/unix.override                 |   62 +
- gio/unixmodule.c                  |   52 +
- tests/Makefile.am                 |    9 +
- tests/runtests-windows.py         |    3 +
- tests/test_gcancellable.py        |   15 +
- tests/test_gicon.py               |  112 +
- tests/test_gio.py                 | 1138 ++++++
- tests/test_gresolver.py           |   68 +
- tests/test_gsocket.py             |  126 +
- 46 files changed, 18187 insertions(+), 2 deletions(-)
-
-commit a535e4af7c38fd7917d804470e8c46da4c2a86ea
-Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Feb 9 17:32:03 2011 +0100
-
-    Decrease the refcount for GInitiallyUnowned constructors.
+ PKG-INFO.in                    |    2 +-
+ README                                 |    3 +-
+ configure.ac                   |    3 --
+ examples/gio/directory-async.py |   33 -----------------
+ examples/gio/downloader.py     |   77
+ ---------------------------------------
+ pygobject.doap                         |    2 +-
+ 6 files changed, 3 insertions(+), 117 deletions(-)
 
-    This mimicks the weird legacy pygtk behaviour and makes all the tests
-    pass despite the proper fixes having been reverted.
+commit e4ebbd7de5570af1abf41bdf9469d4ce3edd48cb
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date:  Fri Feb 11 18:38:27 2011 +0100
 
-    https://bugzilla.gnome.org/show_bug.cgi?id=641525
+    Remove GIO documentation
 
- gi/pygi-invoke.c |    4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
+    https://bugzilla.gnome.org/show_bug.cgi?id=638899
 
-commit 657d113c766c5ff9c5e7285ff5309283333983e4
-Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Feb 9 17:03:30 2011 +0100
+ docs/Makefile.am                             |   82 +-
+ docs/reference/pygio-appinfo.xml             |  894 -----
+ docs/reference/pygio-applaunchcontext.xml     |  194 --
+ docs/reference/pygio-asyncresult.xml         |  117 -
+ docs/reference/pygio-bufferedinputstream.xml  |  461 ---
+ docs/reference/pygio-bufferedoutputstream.xml |  275 --
+ docs/reference/pygio-cancellable.xml         |  290 --
+ docs/reference/pygio-classes.xml             |   47 -
+ docs/reference/pygio-constants.xml           | 1540 ---------
+ docs/reference/pygio-datainputstream.xml      |  799 -----
+ docs/reference/pygio-dataoutputstream.xml     |  504 ---
+ docs/reference/pygio-drive.xml                       |  546 ---
+ docs/reference/pygio-emblem.xml              |  232 --
+ docs/reference/pygio-emblemedicon.xml        |  160 -
+ docs/reference/pygio-file.xml                | 4534
+ -------------------------
+ docs/reference/pygio-fileattributeinfo.xml    |   73 -
+ docs/reference/pygio-fileenumerator.xml       |  488 ---
+ docs/reference/pygio-fileicon.xml            |  109 -
+ docs/reference/pygio-fileinfo.xml            |  346 --
+ docs/reference/pygio-fileinputstream.xml      |  214 --
+ docs/reference/pygio-filemonitor.xml         |  128 -
+ docs/reference/pygio-fileoutputstream.xml     |  257 --
+ docs/reference/pygio-filterinputstream.xml    |  152 -
+ docs/reference/pygio-filteroutputstream.xml   |  152 -
+ docs/reference/pygio-functions.xml           |  395 ---
+ docs/reference/pygio-icon.xml                |  217 --
+ docs/reference/pygio-inputstream.xml         |  730 ----
+ docs/reference/pygio-loadableicon.xml        |  198 --
+ docs/reference/pygio-memoryinputstream.xml    |  151 -
+ docs/reference/pygio-memoryoutputstream.xml   |  175 -
+ docs/reference/pygio-mount.xml                       |  962 ------
+ docs/reference/pygio-mountoperation.xml       |  726 ----
+ docs/reference/pygio-outputstream.xml        |  140 -
+ docs/reference/pygio-seekable.xml            |  231 --
+ docs/reference/pygio-simpleasyncresult.xml    |  317 --
+ docs/reference/pygio-themedicon.xml          |  204 --
+ docs/reference/pygio-unixinputstream.xml      |  202 --
+ docs/reference/pygio-unixoutputstream.xml     |  202 --
+ docs/reference/pygio-volume.xml              |  718 ----
+ docs/reference/pygio-volumemonitor.xml        |  844 -----
+ docs/reference/pygiounix-classes.xml         |   13 -
+ docs/reference/pygobject-ref.xml             |    2 -
+ 42 files changed, 1 insertion(+), 19020 deletions(-)
+
+commit abdebc7f6515f9658812c0355d8ad0892e5371e4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Feb 11 11:05:04 2011 -0500
 
-    Ensure the sink functions are only ran once.
+    bump version to reflect the master branch moving towards pygobject 3.0
 
-    This mitigates in a not-so-clean way the leak experienced in pygobject
-    for wrappers created multiple times, without breaking pygtk.
+    * added NEWS file from branch pygobject-2-28
+    * bump to 2.90.1
+    * this branch will drop support for the static binding
+    * use the pygobject-2-28 branch for static binding fixes
 
-    https://bugzilla.gnome.org/show_bug.cgi?id=641525
+ NEWS        |  289
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac |    4 +-
+ 2 files changed, 291 insertions(+), 2 deletions(-)
 
- gobject/pygobject.c |   23 +++++++++++++++--------
- 1 files changed, 15 insertions(+), 8 deletions(-)
+commit 16140237aa45b4f188923da9f95b9d2af971011b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu Feb 10 16:46:08 2011 -0500
 
-commit d32c0ecc6cde743047054e65355cbbfbf808d5ce
-Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Feb 9 17:15:41 2011 +0100
+    fix build to correctly use python-config
 
-    Revert "Fix wrong refcount when calling introspected widget
-    constructors"
+ autogen.sh       |    3 +++
+ configure.ac     |    6 ------
+ m4/python.m4     |    9 +++++----
+ tests/runtests.py |   1 +
+ 4 files changed, 9 insertions(+), 10 deletions(-)
 
-    This reverts commit 7bc4122897d9d05172a2bd5b56bded87e2afaec4.
+commit c2079f415638ef892b1e51f25eaafa3e1621667f
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date:  Thu Feb 10 22:26:00 2011 +0100
 
-    https://bugzilla.gnome.org/show_bug.cgi?id=641525
+    Add missing libraries to link against
 
- gobject/pygobject.c |    4 +---
- 1 files changed, 1 insertions(+), 3 deletions(-)
+ glib/Makefile.am    |   2 +-
+ gobject/Makefile.am |   1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
 
-commit 4c9715b29f8883e23027cca10157ea96013b0dbc
+commit 3cca62a9e7afd3d3d302c66f4fafe253f7743d4e
 Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Feb 9 16:33:42 2011 +0100
+Date:  Wed Jan 19 15:00:56 2011 +0100
 
-    Revert "Fix reference leaks for GInitiallyUnowned objects"
+    Make runtests.py able to run command-line provided test files
 
-    This reverts commit f0a0b6c2eda89622de2b1e5ebb6a48103ad72a42.
-    The test cases have been kept.
+    With this patch we are now able to run ./runtests.py <somefile>, which
+    is more friendly than defining an environment variable to run some
+    specific tests.
 
-    https://bugzilla.gnome.org/show_bug.cgi?id=641525
+    https://bugzilla.gnome.org/show_bug.cgi?id=639948
 
- gobject/gobjectmodule.c |    2 --
- gobject/pygobject.c     |   14 +++++++-------
- 2 files changed, 7 insertions(+), 9 deletions(-)
+ tests/runtests.py |   9 +++++++++
+ 1 file changed, 9 insertions(+)
 
 commit 14c4cf8e6edae893538680964380d543bde4a14d
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Feb 9 11:34:59 2011 +0100
+Date:  Wed Feb 9 11:34:59 2011 +0100
 
     Run test suite under dbus-launch
 
@@ -1806,24 +9761,24 @@ Date:   Wed Feb 9 11:34:59 2011 +0100
     session
     D-BUS (such as distribution package builds).
 
- tests/Makefile.am |    3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ tests/Makefile.am |   3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 0858f550e2b6f75e3f583f963f5952f5ddae4e0e
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Feb 8 15:46:36 2011 +0100
+Date:  Tue Feb 8 15:46:36 2011 +0100
 
     Fix test_gdbus.py to be Python3 friendly
 
     - TestCase.assert_() has been deprecated by assertTrue().
     - Exceptions don't have a message attribute any more, use str(e)
 
- tests/test_gdbus.py |   34 +++++++++++++++-------------------
- 1 files changed, 15 insertions(+), 19 deletions(-)
+ tests/test_gdbus.py |  34 +++++++++++++++-------------------
+ 1 file changed, 15 insertions(+), 19 deletions(-)
 
 commit b7f32e4cca0cef201489b55653f96ac64a8f9ab9
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Sat Jan 29 12:20:50 2011 +0100
+Date:  Sat Jan 29 12:20:50 2011 +0100
 
     [gi] Provide comfortable GSettings API
 
@@ -1833,15 +9788,15 @@ Date:   Sat Jan 29 12:20:50 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640838
 
- gi/overrides/Gio.py              |   54 ++++++++++++++++++++++++++++
+ gi/overrides/Gio.py             |   54 ++++++++++++++++++++++++++++
  tests/org.gnome.test.gschema.xml |    9 +++++
- tests/test_overrides.py          |   73
- ++++++++++++++++++++++++++++++-------
+ tests/test_overrides.py         |   73
+ ++++++++++++++++++++++++++++++--------
  3 files changed, 122 insertions(+), 14 deletions(-)
 
 commit 8dad0eaed60a9de26e9a729a48a1f6bc74be486e
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Fri Feb 4 16:36:07 2011 +0100
+Date:  Fri Feb 4 16:36:07 2011 +0100
 
     Fix vfunc search bug when using GInterfaces and a do_* method.
 
@@ -1852,13 +9807,13 @@ Date:   Fri Feb 4 16:36:07 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=641493
 
- gi/types.py      |    4 +++-
+ gi/types.py     |    4 +++-
  tests/test_gi.py |    8 ++++++++
- 2 files changed, 11 insertions(+), 1 deletions(-)
+ 2 files changed, 11 insertions(+), 1 deletion(-)
 
 commit 2660be1f227be7a53092483bc9d8ead1bd1fb266
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Thu Feb 3 15:31:42 2011 +0100
+Date:  Thu Feb 3 15:31:42 2011 +0100
 
     [GI] Add tests for Gtk.Widget.drag_* methods.
 
@@ -1867,45 +9822,65 @@ Date:   Thu Feb 3 15:31:42 2011 +0100
     methods in Gtk+, this test checks that they are included as class
     methods when using pygobject introspection.
 
-    https://bugzilla.gnome.org/show_bug.cgi?id=639945
+    https://bugzilla.gnome.org/show_bug.cgi?id=639945
+
+ tests/test_overrides.py |   40 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+
+commit d57500537014b3da624be33b40401ba289fa22b8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu Feb 3 09:02:16 2011 -0500
+
+    [gi] make caller allocates work again
+
+ gi/pygi-cache.c  |   18 +++---------------
+ gi/pygi-invoke.c |   37 ++++++++++++++++++++++++++++++++++---
+ 2 files changed, 37 insertions(+), 18 deletions(-)
+
+commit 99d6e6c8d806e6f9e48c3c2380024fb3511d110a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Feb 2 19:27:40 2011 -0500
+
+    [gi] fix container object reffing
 
- tests/test_overrides.py |   40 ++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 40 insertions(+), 0 deletions(-)
+ gi/pygi-argument.c |   7 +++----
+ gi/pygi-cache.c    |  12 ++++--------
+ 2 files changed, 7 insertions(+), 12 deletions(-)
 
 commit 09acaff29dfaabc77477cffca2c7137f68991e7f
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Feb 2 21:00:48 2011 +0100
+Date:  Wed Feb 2 21:00:48 2011 +0100
 
     [python 3] use the right syntaxis to raise exceptions
 
- codegen/argtypes.py    |    8 ++++----
+ codegen/argtypes.py   |    8 ++++----
  codegen/definitions.py |   14 +++++++-------
- gi/overrides/Gtk.py    |    2 +-
+ gi/overrides/Gtk.py   |    2 +-
  3 files changed, 12 insertions(+), 12 deletions(-)
 
 commit 36094e5982d3e05d5662843b6d401f0974f5235f
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Feb 2 20:50:12 2011 +0100
+Date:  Wed Feb 2 20:50:12 2011 +0100
 
     [gi] return PYGLIB_MODULE_ERROR_RETURN on error and use pygobject_init
 
  tests/testhelpermodule.c |    6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit c913c1789296310c2cf27554ce719d7f6e9c94cd
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Feb 2 20:37:21 2011 +0100
+Date:  Wed Feb 2 20:37:21 2011 +0100
 
     [gi] return PYGLIB_MODULE_ERROR_RETURN on error
 
     This is to avoid some warnings when building with python 3
 
  gi/gimodule.c |    6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 7bc4122897d9d05172a2bd5b56bded87e2afaec4
 Author: Steve Frécinaux <code@istique.net>
-Date:   Sat Jan 29 00:16:50 2011 +0100
+Date:  Sat Jan 29 00:16:50 2011 +0100
 
     Fix wrong refcount when calling introspected widget constructors
 
@@ -1921,13 +9896,13 @@ Date:   Sat Jan 29 00:16:50 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640868
 
- gobject/pygobject.c      |    4 +++-
+ gobject/pygobject.c     |    4 +++-
  tests/test_everything.py |    9 ++++++++-
  2 files changed, 11 insertions(+), 2 deletions(-)
 
 commit afeaaa126f7cd6556fb855ecd0facc174c0f946c
 Author: Simon Schampijer <simon@laptop.org>
-Date:   Wed Jan 19 16:19:46 2011 +0100
+Date:  Wed Jan 19 16:19:46 2011 +0100
 
     Gdk.Window: Map the standard constructor to the *new* constructor
 
@@ -1939,22 +9914,117 @@ Date:   Wed Jan 19 16:19:46 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639936
 
- gi/overrides/Gdk.py     |    6 ++++++
+ gi/overrides/Gdk.py    |    6 ++++++
  tests/test_overrides.py |    8 ++++++++
- 2 files changed, 14 insertions(+), 0 deletions(-)
+ 2 files changed, 14 insertions(+)
+
+commit 4a67f45880433905de33632fe0c32a13b44c0b33
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Jan 31 16:51:37 2011 -0500
+
+    [gi] handle hash being NULL
+
+ gi/pygi-argument.c |   6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit 2fbfe410f4b4394a2018ada0e538585c1bec23ae
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Jan 31 16:50:52 2011 -0500
+
+    [gi] handle the situation where an aux arg comes before its parent
+
+ gi/pygi-cache.c  |   70
+ ++++++++++++++++++++++++++++++++++++++----------------
+ gi/pygi-invoke.c |    2 +-
+ 2 files changed, 51 insertions(+), 21 deletions(-)
 
 commit 858669f92c9907dd70b4966d6a8521ed122225be
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon Jan 31 17:38:52 2011 +0100
+Date:  Mon Jan 31 17:38:52 2011 +0100
 
     Ship tests/org.gnome.test.gschema.xml in dist tarballs
 
- tests/Makefile.am |    3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ tests/Makefile.am |   3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 77d76df59606e470808085e977fb199cc76e8251
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sun Jan 30 18:21:24 2011 -0500
+
+    [gi] allow caching and marshalling of ghash out
+
+ gi/pygi-argument.c |  155
+ ++++++++++++++++++++++++++++++++++++++++++++++++----
+ gi/pygi-cache.c    |  27 +++++----
+ 2 files changed, 162 insertions(+), 20 deletions(-)
+
+commit bd66af67f248a3ca90d2fa2626605263c2392e16
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sun Jan 30 17:06:44 2011 -0500
+
+    [gi] whitespace fixes
+
+ gi/pygi-cache.c |   60
+ +++++++++++++++++++++++++++----------------------------
+ 1 file changed, 30 insertions(+), 30 deletions(-)
+
+commit 1cdbd4be9b015f792c2c02afa5ac7e24edbdae86
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sun Jan 30 17:04:13 2011 -0500
+
+    [gi] added ugly aux arg counters
+
+    * we need to simplify the ffi invoke so we can simply reference args
+      at their position in the C parameter list
+    * this works for now but is fragile if new aux values are added in
+    the future
+
+ gi/pygi-argument.c |  12 ++++++++--
+ gi/pygi-cache.c    |  66
+ +++++++++++++++++++++++++++++++++++-----------------
+ gi/pygi-cache.h    |   2 ++
+ gi/pygi-invoke.c   |  12 +++++++---
+ 4 files changed, 66 insertions(+), 26 deletions(-)
+
+commit c51447f4efde2ce4caf39c1ffac905ec428d1d64
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sun Jan 30 11:30:54 2011 -0500
+
+    [gi] make inout marshalling work
+
+    * refactor cache generation so we can create caches and then fill
+    in their
+      values based on if they are in, out or inout
+    * in invoke we order the pointers based on their direction
+
+ gi/pygi-cache.c  | 1445
+ ++++++++++++++++++++++++++----------------------------
+ gi/pygi-invoke.c |   19 +-
+ 2 files changed, 711 insertions(+), 753 deletions(-)
+
+commit 2b185362de45f46ce0f0b8816499aef06ab1ad1e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sat Jan 29 13:49:36 2011 -0500
+
+    [gi] marshal arrays out
+
+ gi/pygi-argument.c |  101
+ ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 99 insertions(+), 2 deletions(-)
+
+commit e62e7062d5cfd782eac64852f681c63e2776b8d4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sat Jan 29 13:48:23 2011 -0500
+
+    [gi] fix sequence caching to support out
+
+ gi/pygi-cache.c |  111
+ +++++++++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 87 insertions(+), 24 deletions(-)
 
 commit 69207910209ebfe450df616aeb8fa4cc2e7eccf3
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Fri Jan 28 17:14:19 2011 +0100
+Date:  Fri Jan 28 17:14:19 2011 +0100
 
     [gi] Add GSettings tests
 
@@ -1962,14 +10032,14 @@ Date:   Fri Jan 28 17:14:19 2011 +0100
     so let's
     first make sure that the canonical GLib API works.
 
- tests/Makefile.am                |    7 +++++--
+ tests/Makefile.am               |    7 +++++--
  tests/org.gnome.test.gschema.xml |   16 ++++++++++++++++
- tests/test_overrides.py          |   31 +++++++++++++++++++++++++++++++
+ tests/test_overrides.py         |   31 +++++++++++++++++++++++++++++++
  3 files changed, 52 insertions(+), 2 deletions(-)
 
 commit 488478a83640d50baee963337fcc870fec76b784
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Fri Jan 28 07:20:26 2011 +0100
+Date:  Fri Jan 28 07:20:26 2011 +0100
 
     [gi] Provide GtkTextBuffer.insert_with_tags_by_name()
 
@@ -1978,13 +10048,13 @@ Date:   Fri Jan 28 07:20:26 2011 +0100
     consistent
     with the actual GTK API.
 
- gi/overrides/Gtk.py     |   19 ++++++++++++++-----
+ gi/overrides/Gtk.py    |   19 ++++++++++++++-----
  tests/test_overrides.py |    4 ++--
  2 files changed, 16 insertions(+), 7 deletions(-)
 
 commit dace1a553793fb7fb054b60760f02c9e5cf00b38
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 27 13:37:18 2011 +0100
+Date:  Thu Jan 27 13:37:18 2011 +0100
 
     [gi] Support tag names in GtkTextBuffer.insert_with_tags()
 
@@ -1993,64 +10063,64 @@ Date:   Thu Jan 27 13:37:18 2011 +0100
     due to using varargs. As both are useful, support both cases in
     the override.
 
- gi/overrides/Gtk.py     |    5 +++++
+ gi/overrides/Gtk.py    |    5 +++++
  tests/test_overrides.py |    9 +++++++++
- 2 files changed, 14 insertions(+), 0 deletions(-)
+ 2 files changed, 14 insertions(+)
 
 commit 91d34124b2a5128e93e13c7fee8693d5edc4e9bb
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Thu Jan 27 12:23:18 2011 +0100
+Date:  Thu Jan 27 12:23:18 2011 +0100
 
     Add MAINTAINERCLEANFILES
 
     This var behaves like .gitignore and allows us to skip some specific
     files.
 
- Makefile.am |   27 +++++++++++++++++++++++++++
- 1 files changed, 27 insertions(+), 0 deletions(-)
+ Makefile.am |  27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
 
 commit 8a98d26981ce68809a21c64cac4962e58c927905
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Thu Jan 27 12:15:30 2011 +0100
+Date:  Thu Jan 27 12:15:30 2011 +0100
 
     Remove .gitignore files and use git.mk
 
     git.mk is a script maintained in pango. From time to time we must
     check if it was updated and update it here.
 
- .gitignore                |   46 ----------
- Makefile.am               |    2 +
- codegen/.gitignore        |    2 -
- codegen/Makefile.am       |    2 +
- docs/.gitignore           |    7 --
- docs/Makefile.am          |    2 +
- examples/Makefile.am      |    2 +
- gi/.gitignore             |   40 ---------
- gi/Makefile.am            |    2 +
- gi/overrides/Makefile.am  |    2 +
- gi/repository/Makefile.am |    2 +
- gi/tests/Makefile.am      |    2 +
- git.mk                    |  200
+ .gitignore               |   46 -----------
+ Makefile.am              |    2 +
+ codegen/.gitignore       |    2 -
+ codegen/Makefile.am      |    2 +
+ docs/.gitignore          |    7 --
+ docs/Makefile.am         |    2 +
+ examples/Makefile.am     |    2 +
+ gi/.gitignore            |   40 ---------
+ gi/Makefile.am                   |    2 +
+ gi/overrides/Makefile.am  |   2 +
+ gi/repository/Makefile.am |   2 +
+ gi/tests/Makefile.am     |    2 +
+ git.mk                           |  200
  +++++++++++++++++++++++++++++++++++++++++++++
- glib/Makefile.am          |    2 +
- gobject/.gitignore        |    3 -
- gobject/Makefile.am       |    2 +
- tests/.gitignore          |    2 -
- tests/Makefile.am         |    2 +
+ glib/Makefile.am         |    2 +
+ gobject/.gitignore       |    3 -
+ gobject/Makefile.am      |    2 +
+ tests/.gitignore         |    2 -
+ tests/Makefile.am        |    2 +
  18 files changed, 222 insertions(+), 100 deletions(-)
 
 commit 331c42b63bc60a3b906fa21e1c0a7c1b9428f347
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 27 12:04:19 2011 +0100
+Date:  Thu Jan 27 12:04:19 2011 +0100
 
     pygi-convert.sh: Convert Pango.TabAlign.*
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit be1a2959fa0a3d8682e0e8aef389d73dacab0689
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 27 12:02:39 2011 +0100
+Date:  Thu Jan 27 12:02:39 2011 +0100
 
     pygi-convert.sh: Drop window -> get_window() conversion
 
@@ -2058,81 +10128,81 @@ Date:   Thu Jan 27 12:02:39 2011 +0100
     self.window.
 
  pygi-convert.sh |    1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
+ 1 file changed, 1 deletion(-)
 
 commit dd7deb4b658c56857c26b1a278a3d688f2ea6a2a
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 27 11:58:26 2011 +0100
+Date:  Thu Jan 27 11:58:26 2011 +0100
 
     pygi-convert.sh: Don't convert self.window assignments
 
  pygi-convert.sh |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 975341a26772966d4afc87a88a6a566d61237fa0
 Author: Steve Frécinaux <code@istique.net>
-Date:   Fri Jan 21 18:41:54 2011 +0100
+Date:  Fri Jan 21 18:41:54 2011 +0100
 
     Fix leaked python reference in python-defined subclasses
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640184
 
  gobject/gobjectmodule.c |    1 +
- tests/test_gobject.py   |    4 ++++
- 2 files changed, 5 insertions(+), 0 deletions(-)
+ tests/test_gobject.py  |    4 ++++
+ 2 files changed, 5 insertions(+)
 
 commit a59e2d58bdb3f31a4f415dbe14b7d9988ac28ce3
 Author: Steve Frécinaux <code@istique.net>
-Date:   Fri Jan 21 15:54:43 2011 +0100
+Date:  Fri Jan 21 15:54:43 2011 +0100
 
     Add some tests for the number of python refs held at creation time
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640184
 
  tests/test_gobject.py |   21 +++++++++++++++++++++
- 1 files changed, 21 insertions(+), 0 deletions(-)
+ 1 file changed, 21 insertions(+)
 
 commit 7d70105eb324ea4b6a58c2d3fb3f2dda36e7ab33
 Author: Steve Frécinaux <code@istique.net>
-Date:   Fri Jan 21 17:24:49 2011 +0100
+Date:  Fri Jan 21 17:24:49 2011 +0100
 
     Factor out parameter marshalling from construction functions.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640197
 
- gobject/gobjectmodule.c     |   35 ++-------------------
- gobject/pygobject-private.h |    5 +++
- gobject/pygobject.c         |   71
- +++++++++++++++++++++++++-----------------
+ gobject/gobjectmodule.c     |  35 ++-------------------
+ gobject/pygobject-private.h |   5 +++
+ gobject/pygobject.c        |   71
+ +++++++++++++++++++++++++------------------
  3 files changed, 50 insertions(+), 61 deletions(-)
 
 commit a3e0cfe8924887ecd1e07cedd2cfb999c853ac62
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 26 15:34:24 2011 -0500
+Date:  Wed Jan 26 15:34:24 2011 -0500
 
     [gi] in python 3 an array of uint8 can be bytes but not string
 
  tests/test_gi.py |    4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
+ 1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit 843553ea958eddec185bb660851a310dc050a14b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 26 15:30:06 2011 -0500
+Date:  Wed Jan 26 15:30:06 2011 -0500
 
     [gi] fix Gio.FileEnumerator to reflect the Python 3 iter protocol
 
- gi/overrides/Gio.py |    6 +++++-
- 1 files changed, 5 insertions(+), 1 deletions(-)
+ gi/overrides/Gio.py |   6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
 
 commit 6ff357839feb39930a5f3175de3d0ed35f24d3f4
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 26 15:17:03 2011 -0500
+Date:  Wed Jan 26 15:17:03 2011 -0500
 
     [gi] python 3 fixes
 
     Patches need to work in Python 3 - here are some of the issues I
     fixed up.
-    Patch submitters should keep this in mind.  When I note to only
+    Patch submitters should keep this in mind. When I note to only
     use something
     in tests it means that there is a compat module that is only available
     to the
@@ -2149,9 +10219,9 @@ Date:   Wed Jan 26 15:17:03 2011 -0500
     issue
     * callable does not exist in 3.x, use hasattr(obj, '__call__') or
 
-          if sys.version_info > (3, 0):
-              def callable(obj):
-                  return hasattr(obj, '__call__')
+         if sys.version_info > (3, 0):
+             def callable(obj):
+                 return hasattr(obj, '__call__')
 
     * using unicode in tests is tricky, you can't use u'' even in
     a versioned
@@ -2159,43 +10229,43 @@ Date:   Wed Jan 26 15:17:03 2011 -0500
       (and only i
       in tests):
 
-          from compathelper import _unicode
-          unicode_string = _unicode('this is a unicode string')
+         from compathelper import _unicode
+         unicode_string = _unicode('this is a unicode string')
 
     * exception caching changed in 2.7, instead of except Exception,
     e we now use
       except Exception as e.  Do this to be compatible with older
       versions:
 
-          except Exception:
-              etype, e = sys.exc_info()[:2]
+         except Exception:
+             etype, e = sys.exc_info()[:2]
 
     * Unbound methods with an im_func attribute no longer exits in 3.x.
       Unbound methods are now just functions so class.method in 3.x is
       equivalent to class.method.im_func in 2.x.  If you have to go this
       low level do this:
 
-          func = class1.method
-          if sys.version_info < (3,0):
-              func = func.im_func
+         func = class1.method
+         if sys.version_info < (3,0):
+             func = func.im_func
 
     * all numbers are long in 3.x so 42L is invalid in 3.x.  In tests (and
       only in tests) do this:
 
-          from compathelper import _long
-          l = _long(42)
+         from compathelper import _long
+         l = _long(42)
 
- gi/overrides/GLib.py    |   16 ++++++++--------
- gi/types.py             |    5 ++++-
- tests/compathelper.py   |   19 +++++++++++++++++++
- tests/test_gdbus.py     |   12 ++++++++----
- tests/test_gi.py        |   19 ++++++++++++-------
+ gi/overrides/GLib.py   |   16 ++++++++--------
+ gi/types.py            |    5 ++++-
+ tests/compathelper.py  |   19 +++++++++++++++++++
+ tests/test_gdbus.py    |   12 ++++++++----
+ tests/test_gi.py       |   19 ++++++++++++-------
  tests/test_overrides.py |    8 +++++---
  6 files changed, 56 insertions(+), 23 deletions(-)
 
 commit 832d662b9f90f5762bbf28b3cca73f947c1f83ce
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 26 14:00:08 2011 -0500
+Date:  Wed Jan 26 14:00:08 2011 -0500
 
     [gi] fix try/except blocks using depricated raise format
 
@@ -2205,25 +10275,25 @@ Date:   Wed Jan 26 14:00:08 2011 -0500
 
 commit d3e30e240fed6ef1dd40fd29fd13dc2effc6c7b1
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 26 19:03:48 2011 +0100
+Date:  Wed Jan 26 19:03:48 2011 +0100
 
     [gi] Add docstring to GLib.Variant constructor
 
  gi/overrides/GLib.py |   11 +++++++++++
- 1 files changed, 11 insertions(+), 0 deletions(-)
+ 1 file changed, 11 insertions(+)
 
 commit 963cd52fec26f7a4fb34414f8ac6662932ede322
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 26 18:45:38 2011 +0100
+Date:  Wed Jan 26 18:45:38 2011 +0100
 
     [gi] update gdbus test cases for previous GVariant change
 
- tests/test_gdbus.py |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ tests/test_gdbus.py |   4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 27e3a6276ff5f2cdc03ddf69ee80d44c3bf2c094
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 26 18:39:17 2011 +0100
+Date:  Wed Jan 26 18:39:17 2011 +0100
 
     [gi] Accept only a single object in GLib.Variant constructor
 
@@ -2243,13 +10313,13 @@ Date:   Wed Jan 26 18:39:17 2011 +0100
 
     Thanks to Ryan Lortie for pointing this out!
 
- gi/overrides/GLib.py    |   25 ++++++++++---------------
+ gi/overrides/GLib.py   |   25 ++++++++++---------------
  tests/test_overrides.py |   32 +++++++++++++-------------------
  2 files changed, 23 insertions(+), 34 deletions(-)
 
 commit b15e8e2c0c933d0f827a70280faf875ac383d81b
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Jan 26 00:40:49 2011 +0100
+Date:  Wed Jan 26 00:40:49 2011 +0100
 
     Speed up _setup_native_vfuncs()
 
@@ -2271,13 +10341,13 @@ Date:   Wed Jan 26 00:40:49 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640629
 
- gi/types.py      |   26 +++++++++++++-------------
+ gi/types.py     |   26 +++++++++++++-------------
  tests/test_gi.py |   13 +++++++++++++
  2 files changed, 26 insertions(+), 13 deletions(-)
 
 commit 569d42ac2f50fb706ef289ff631db743483f40ee
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Thu Jan 20 16:26:18 2011 +0100
+Date:  Thu Jan 20 16:26:18 2011 +0100
 
     Speed up class creation: rewrite _setup_vfuncs() to be much more
     efficient.
@@ -2305,65 +10375,139 @@ Date:   Thu Jan 20 16:26:18 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640073
 
- gi/types.py      |  104
+ gi/types.py     |  104
  +++++++++++++++++++++++++++++++++---------------------
  tests/test_gi.py |   13 +++++++
  2 files changed, 77 insertions(+), 40 deletions(-)
 
 commit 8f4e6536f3c2edf38a45632d1c23eb7c6681c3be
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Jan 24 19:23:19 2011 +0100
+Date:  Mon Jan 24 19:23:19 2011 +0100
 
     pygi-convert.sh: Convert gtk.UI_MANAGER_*
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 1f473b5164407a178203eb8cc7f3c786e0d0e5c2
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Fri Jan 21 18:41:54 2011 +0100
+Date:  Fri Jan 21 18:41:54 2011 +0100
 
     pygi-convert.sh: Convert gdk.GRAB_*
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit f5d0b7b9d189f65503c0bf66d8bda4186ca3223a
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Fri Jan 21 16:45:07 2011 +0100
+Date:  Fri Jan 21 16:45:07 2011 +0100
 
     [gi] set the gtype GValue correctly
 
- gi/pygi-property.c |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ gi/pygi-property.c |   4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit ce521011d7f6d7f082aaea76fa05c5af9f6e93f5
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Fri Jan 21 16:20:23 2011 +0100
+Date:  Fri Jan 21 16:20:23 2011 +0100
 
     [gi] use the right argument type for callback
 
- gi/pygi-foreign-cairo.c    |    8 ++++----
- gi/pygi-foreign-gvariant.c |    4 ++--
- gi/pygi-foreign-gvariant.h |    2 +-
- gi/pygi-foreign.c          |    2 +-
- gi/pygi.h                  |    2 +-
+ gi/pygi-foreign-cairo.c    |   8 ++++----
+ gi/pygi-foreign-gvariant.c |   4 ++--
+ gi/pygi-foreign-gvariant.h |   2 +-
+ gi/pygi-foreign.c         |    2 +-
+ gi/pygi.h                 |    2 +-
  5 files changed, 9 insertions(+), 9 deletions(-)
 
+commit 9f101baaa63a75acf62f955cfc4b311ff0dd5464
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jan 21 09:23:54 2011 -0500
+
+    [gi] marshal out flags and enum
+
+ gi/pygi-argument.c |  14 +++++++++-----
+ gi/pygi-cache.c    |  24 ++++++++++++------------
+ 2 files changed, 21 insertions(+), 17 deletions(-)
+
+commit 4c93bdeae76830aa4029dfc86e32e6f277d5271d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jan 21 08:18:37 2011 -0500
+
+    [gi] marshal unions
+
+ gi/pygi-cache.c |   27 +++++++++++++--------------
+ 1 file changed, 13 insertions(+), 14 deletions(-)
+
 commit a060287d1a6d190acb9d344f08fd5662e3296da5
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Fri Jan 21 11:00:27 2011 +0100
+Date:  Fri Jan 21 11:00:27 2011 +0100
 
     [gi] Add test cases for GDBus client operations
 
- tests/Makefile.am   |    1 +
- tests/test_gdbus.py |   94
+ tests/Makefile.am   |   1 +
+ tests/test_gdbus.py |  94
  +++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 95 insertions(+), 0 deletions(-)
+ 2 files changed, 95 insertions(+)
+
+commit e7699d9af41f8c374326b8a4ec0939ef1426e386
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jan 21 04:28:15 2011 -0500
+
+    [gi] error out if the constructor returns NULL
+
+ gi/pygi-invoke.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 58ff2b2c38c1004861083ca88633be76767229f0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jan 21 04:26:45 2011 -0500
+
+    [gi] throw error for caller allocates until we can write code to
+    support it
+
+ gi/pygi-cache.c |   11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+commit 5eb779439daa8bf1e86df689377dc10ef1430eab
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jan 21 04:26:11 2011 -0500
+
+    [gi] support struct out
+
+ gi/pygi-argument.c |  30 ++++++++++++++++++++++++++----
+ gi/pygi-cache.c    |  15 ++-------------
+ 2 files changed, 28 insertions(+), 17 deletions(-)
+
+commit 3133dc595adf44279397d30712c0f8595f0e1acc
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Fri Jan 21 04:22:06 2011 -0500
+
+    [gi] move to using type_info and interface_info instead of arg_info
+
+    * only arguments have arg_infos, not return types and instances so
+      type_info is much better to pass.  In fact most API that took an
+      arg_info simply converted it to a type_info
+    * In the case of instances for methods we don't even have a type_info.
+      Since all instances are interfaces, we also attach the
+      interface_info
+      to the interface cache
+
+ gi/pygi-argument.c        |   20 ++++----------------
+ gi/pygi-cache.c           |   43
+ ++++++++++++++++++++++++++++++++-----------
+ gi/pygi-cache.h           |    4 +++-
+ gi/pygi-foreign-cairo.c    |  24 ++++++++++++------------
+ gi/pygi-foreign-gvariant.c |  11 +++++------
+ gi/pygi-foreign-gvariant.h |  10 +++++-----
+ gi/pygi-foreign.c         |   21 +++++++++------------
+ gi/pygi-foreign.h         |    6 +++---
+ gi/pygi.h                 |    8 ++++----
+ 9 files changed, 77 insertions(+), 70 deletions(-)
 
 commit e97e28048efb966ecc1a03277d36cbaa81b8db7d
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Fri Jan 21 09:54:14 2011 +0100
+Date:  Fri Jan 21 09:54:14 2011 +0100
 
     [gi] Add Variant construction/unpack support for boxed Variants
 
@@ -2372,42 +10516,42 @@ Date:   Fri Jan 21 09:54:14 2011 +0100
     currently does not work (see
     https://bugzilla.gnome.org/show_bug.cgi?id=639952)
 
- gi/overrides/GLib.py    |   18 +++++++++++++++++-
+ gi/overrides/GLib.py   |   18 +++++++++++++++++-
  tests/test_overrides.py |   26 ++++++++++++++++++++++++++
- 2 files changed, 43 insertions(+), 1 deletions(-)
+ 2 files changed, 43 insertions(+), 1 deletion(-)
 
 commit 71dd03261fc06b8180c14cd31b54d8e4b200be3a
 Merge: bc29600 bd002c7
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Fri Jan 21 09:33:16 2011 +0100
+Date:  Fri Jan 21 09:33:16 2011 +0100
 
     Merge branch 'windows-setup-fixes'
 
 commit bc29600a2a04c972ceab7ef8d3292e8633977591
 Author: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date:   Thu Jan 20 19:48:23 2011 +0100
+Date:  Thu Jan 20 19:48:23 2011 +0100
 
     pygi-convert.sh: GdkPixbuf methods
 
     GNOME bug #639880
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit d1b0fa501cc431baa530d96fb50f4c35590890ac
 Author: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date:   Thu Jan 20 19:45:01 2011 +0100
+Date:  Thu Jan 20 19:45:01 2011 +0100
 
     pygi-convert.sh: Gdk.COLORSPACE_RGB
 
     GNOME bug #639880
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 6d8ff4d5bdda5480089543869535cc3ee83da2f5
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 11:41:11 2011 +0100
+Date:  Wed Jan 19 11:41:11 2011 +0100
 
     [gi] Support nested objects and empty sequences in GLib.Variant
     building
@@ -2427,23 +10571,34 @@ Date:   Wed Jan 19 11:41:11 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639939
 
- gi/overrides/GLib.py    |  229
+ gi/overrides/GLib.py   |  229
  +++++++++++++++++++++++++----------------------
- tests/test_overrides.py |  159 +++++++++++++++++++++++++++++++--
+ tests/test_overrides.py |  159 ++++++++++++++++++++++++++++++--
  2 files changed, 273 insertions(+), 115 deletions(-)
 
 commit ac095f5435f106e175fa3297cb273e63c85d2809
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jan 20 15:55:45 2011 +0100
+Date:  Thu Jan 20 15:55:45 2011 +0100
 
     Uncomment test_gi.TestInterfaceClash
 
  tests/test_gi.py |   22 +++++++++++-----------
- 1 files changed, 11 insertions(+), 11 deletions(-)
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+commit 1239f3709ba257c404dda72b7067b77b19c240fa
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu Jan 20 09:05:02 2011 -0500
+
+    [gi] add support for enum and flags
+
+ gi/pygi-argument.c |  121
+ +++++++++++++++++++++++++++++++++++++++++-----------
+ gi/pygi-cache.c    |  30 +++++++------
+ 2 files changed, 111 insertions(+), 40 deletions(-)
 
 commit f0a0b6c2eda89622de2b1e5ebb6a48103ad72a42
 Author: Steve Frécinaux <code@istique.net>
-Date:   Thu Jan 20 14:14:15 2011 +0100
+Date:  Thu Jan 20 14:14:15 2011 +0100
 
     Fix reference leaks for GInitiallyUnowned objects
 
@@ -2453,18 +10608,18 @@ Date:   Thu Jan 20 14:14:15 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639949
 
- gobject/gobjectmodule.c  |    2 +
- gobject/pygobject.c      |   14 +++++-----
- tests/test-floating.c    |   36 ++++++++++++++++++++++++++
- tests/test-floating.h    |   21 +++++++++++++++
- tests/test_gobject.py    |   63
+ gobject/gobjectmodule.c  |    2 ++
+ gobject/pygobject.c     |   14 +++++------
+ tests/test-floating.c   |   36 ++++++++++++++++++++++++++
+ tests/test-floating.h   |   21 ++++++++++++++++
+ tests/test_gobject.py   |   63
  ++++++++++++++++++++++++++++++++++++++++++++++
  tests/testhelpermodule.c |   50 ++++++++++++++++++++++++++++++++++++
  6 files changed, 179 insertions(+), 7 deletions(-)
 
 commit cae2cf3d4fb049c94389bf8f84d7d97a544d7a3f
 Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Jan 19 16:57:57 2011 +0100
+Date:  Wed Jan 19 16:57:57 2011 +0100
 
     Add tests for refcount of a GObject owned by a library
 
@@ -2474,27 +10629,27 @@ Date:   Wed Jan 19 16:57:57 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639949
 
- tests/test-floating.c    |   30 ++++++++++++++++++++++
- tests/test-floating.h    |   20 +++++++++++++++
- tests/test_gobject.py    |   62
+ tests/test-floating.c   |   30 ++++++++++++++++++++++
+ tests/test-floating.h   |   20 +++++++++++++++
+ tests/test_gobject.py   |   62
  ++++++++++++++++++++++++++++++++++++++++++++++
- tests/testhelpermodule.c |   51 +++++++++++++++++++++++++++++++++++++
- 4 files changed, 163 insertions(+), 0 deletions(-)
+ tests/testhelpermodule.c |   51 ++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 163 insertions(+)
 
 commit b6737b91938d527872eff1d645a205cacf94e15d
 Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Jan 19 14:52:41 2011 +0100
+Date:  Wed Jan 19 14:52:41 2011 +0100
 
     Add a test to check for regular object reference count
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639949
 
  tests/test_gobject.py |    8 +++++++-
- 1 files changed, 7 insertions(+), 1 deletions(-)
+ 1 file changed, 7 insertions(+), 1 deletion(-)
 
 commit 2b0f1ede820414ef1cfd6b37569fcb946d2031fc
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 20 14:15:52 2011 +0100
+Date:  Thu Jan 20 14:15:52 2011 +0100
 
     [gi] Update TreeView.enable_model_drag_{source,dest} to current GTK
 
@@ -2504,49 +10659,49 @@ Date:   Thu Jan 20 14:15:52 2011 +0100
     Gtk.TreeView.enable_model_drag_{source,dest}(). Thus
     drop the explicit array length argument from the call in the override.
 
- gi/overrides/Gtk.py |    2 --
- 1 files changed, 0 insertions(+), 2 deletions(-)
+ gi/overrides/Gtk.py |   2 --
+ 1 file changed, 2 deletions(-)
 
 commit b59edf4f0f7cab44033f9d704d476e10ee0d0c0a
 Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Jan 19 18:04:10 2011 +0100
+Date:  Wed Jan 19 18:04:10 2011 +0100
 
     Fix a typo in a private symbol name.
 
  gobject/gobjectmodule.c |    6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 6447688e283a8fb22de3ab68cbc06e34ad23d198
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 20 11:49:08 2011 +0100
+Date:  Thu Jan 20 11:49:08 2011 +0100
 
     pygi-convert.sh: Convert glib.source_remove()
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 84ee8de4bc00a8f901926cc6386d73c12dbd0b0b
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 20 11:42:34 2011 +0100
+Date:  Thu Jan 20 11:42:34 2011 +0100
 
     Fix typo in previous commit to actually convert glib.GError
 
  pygi-convert.sh |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b238cb614338f46e6feb7935cca0a55c7a929418
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 20 11:40:14 2011 +0100
+Date:  Thu Jan 20 11:40:14 2011 +0100
 
     pygi-convert.sh: Move some glib bits which are better handled
     by gobject
 
  pygi-convert.sh |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit 21c09a7ee294b59abb3eca6f64f13bf5c8a2fa0e
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Jan 19 12:00:02 2011 +0100
+Date:  Wed Jan 19 12:00:02 2011 +0100
 
     Modify override for Gtk.Adjustment to allow position or keyword
     arguments in __init__().
@@ -2559,13 +10714,13 @@ Date:   Wed Jan 19 12:00:02 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639934
 
- gi/overrides/Gtk.py     |   14 ++++++++++++--
+ gi/overrides/Gtk.py    |   14 ++++++++++++--
  tests/test_overrides.py |   34 +++++++++++++++++++++++++++-------
  2 files changed, 39 insertions(+), 9 deletions(-)
 
 commit d465e25297ad6589ff2cd0c00e11e8bd8ffe3f78
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 22:52:51 2011 +0100
+Date:  Wed Jan 19 22:52:51 2011 +0100
 
     [gi] Fix small typo in previous commit
 
@@ -2576,23 +10731,43 @@ Date:   Wed Jan 19 22:52:51 2011 +0100
     639939 does.
 
  tests/test_overrides.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2b8e1d0531dcb8f57dc9f2fddf25970bee3daa90
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 20:18:19 2011 +0100
+Date:  Wed Jan 19 20:18:19 2011 +0100
 
     [gi] Add pythonic iterator and indexing for string GVariants
 
     This extends commit b1a98083c to also work for strings.
 
- gi/overrides/GLib.py    |    8 +++++++-
+ gi/overrides/GLib.py   |    8 +++++++-
  tests/test_overrides.py |   13 +++++++++++++
- 2 files changed, 20 insertions(+), 1 deletions(-)
+ 2 files changed, 20 insertions(+), 1 deletion(-)
+
+commit 8efd14c87b35072cdd039bf223f8ced8f51be9bb
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 14:08:03 2011 -0500
+
+    [gi] return NULL if out_marshaller fails
+
+ gi/pygi-invoke.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 5b1db41d60204c8021f47f43b85dac126c389c8d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 13:57:54 2011 -0500
+
+    [gi] fix some transfer issues and test case failures
+
+ gi/pygi-argument.c |   4 ++++
+ gi/pygi-cache.c    |  11 ++++++++---
+ gi/pygi-invoke.c   |  17 +++++++++--------
+ 3 files changed, 21 insertions(+), 11 deletions(-)
 
 commit 7c2f48bb6d67ec9a1ee5ac03a5aee34b54c6ebdd
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jan 19 18:09:23 2011 +0100
+Date:  Wed Jan 19 18:09:23 2011 +0100
 
     Construct structs using default API constructor
 
@@ -2603,21 +10778,21 @@ Date:   Wed Jan 19 18:09:23 2011 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=627444
 
  gi/pygi-info.c |   37 +++++++++++++++++++++++++++++++++++++
- gi/types.py    |    7 +++++++
- 2 files changed, 44 insertions(+), 0 deletions(-)
+ gi/types.py   |    7 +++++++
+ 2 files changed, 44 insertions(+)
 
 commit db7300e173388d9557dcd2333781bfaa6b021605
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 18:54:39 2011 +0100
+Date:  Wed Jan 19 18:54:39 2011 +0100
 
     pygi-convert.sh: Migrate Gdk.Cursor constructor, and some cursor names
 
  pygi-convert.sh |    2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
 
 commit 4c1d4faddf1c9cb233c484da3eadd8e31c231f70
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 18:43:29 2011 +0100
+Date:  Wed Jan 19 18:43:29 2011 +0100
 
     pygi-convert.sh: Handle .window attributes
 
@@ -2626,11 +10801,11 @@ Date:   Wed Jan 19 18:43:29 2011 +0100
     GtkWidget methods instead.
 
  pygi-convert.sh |    5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
+ 1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit b1049b947d073fb569ba900a4d5c8519482d831e
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jan 19 17:35:09 2011 +0100
+Date:  Wed Jan 19 17:35:09 2011 +0100
 
     Also deal with foreign boxed structs
 
@@ -2638,12 +10813,12 @@ Date:   Wed Jan 19 17:35:09 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639967
 
- gi/pygi-argument.c |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ gi/pygi-argument.c |   4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 25b69ae257a12b6dc97ed3f2f7ea54b166ddbba1
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Jan 19 17:45:11 2011 +0100
+Date:  Wed Jan 19 17:45:11 2011 +0100
 
     [gi] Convert GErrors to GObject.GError exceptions, and throw them
     upon returning from calling the C function.
@@ -2663,9 +10838,31 @@ Date:   Wed Jan 19 17:45:11 2011 +0100
  tests/test_gi.py |   10 ++++++++++
  3 files changed, 15 insertions(+), 10 deletions(-)
 
+commit 18b84767db1d66e3d6f09067ab19ffd4b82539ca
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 12:05:45 2011 -0500
+
+    [gi] fix out marshalling for a couple of int types
+
+ gi/pygi-argument.c |   2 +-
+ gi/pygi-cache.c    |   2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit c5d7c730008275b2c585b2609fc2ff5e051cce47
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 11:59:09 2011 -0500
+
+    [gi] fixed range checking and type conversion with unsigned and
+    large numbers
+
+ gi/pygi-argument.c |  90
+ +++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-cache.c    |   2 +-
+ 2 files changed, 76 insertions(+), 16 deletions(-)
+
 commit e6fcafc6179e963cbae7774e7ee50415bde2c523
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 17:03:06 2011 +0100
+Date:  Wed Jan 19 17:03:06 2011 +0100
 
     pygi-convert.sh: Don't convert glib -> GLib for now
 
@@ -2679,20 +10876,20 @@ Date:   Wed Jan 19 17:03:06 2011 +0100
     now, so disable the replacement rules.
 
  pygi-convert.sh |   19 ++++++++++---------
- 1 files changed, 10 insertions(+), 9 deletions(-)
+ 1 file changed, 10 insertions(+), 9 deletions(-)
 
 commit 167261d556eab0d2e448c7ed28eef540a024ba1d
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jan 19 16:47:08 2011 +0100
+Date:  Wed Jan 19 16:47:08 2011 +0100
 
     Link libregress.so to GIO_LIBS again
 
  configure.ac |    5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
+ 1 file changed, 5 insertions(+)
 
 commit d143afa6da4f5b5f47be8df11fa41d7b47ab1794
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Jan 19 16:14:42 2011 +0100
+Date:  Wed Jan 19 16:14:42 2011 +0100
 
     Fix attributes 2BUTTON_PRESS and 3BUTTON_PRESS of Gdk.EventType.
 
@@ -2700,30 +10897,88 @@ Date:   Wed Jan 19 16:14:42 2011 +0100
     because in Python attributes starting with a numeral causes a
     syntax error.
 
- gi/overrides/Gdk.py |    7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
+ gi/overrides/Gdk.py |   7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 4f5d20966d4a8c649e5fae584039621edab178f3
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 10:02:40 2011 -0500
+
+    [gi] use correct format stings when setting errors
+
+ gi/pygi-argument.c |  12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit 7f08fd5c33ee5c9907f5becbe2f21fb7122d6e19
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 09:45:09 2011 -0500
+
+    [gi] allow marshalling strings as None
+
+ gi/pygi-argument.c |   5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 093242a9e125998cd07bf66fc4b2880f532a2e4d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 09:41:56 2011 -0500
+
+    [gi] make error messages more detailed
+
+ gi/pygi-argument.c |   2 +-
+ gi/pygi-cache.c    |  18 +++++++++---------
+ 2 files changed, 10 insertions(+), 10 deletions(-)
+
+commit f0b17605ed2eb917b350654b070984beb553eae3
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 09:41:13 2011 -0500
+
+    [gi] allow marshalling None for hashes
+
+ gi/pygi-argument.c |   5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 93f1b787ab8420300d1064c0237a0c2d8a2ac98f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 09:40:37 2011 -0500
+
+    [gi] add marshalling to some out values
+
+ gi/pygi-argument.c |  50
+ +++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 41 insertions(+), 9 deletions(-)
 
 commit 614b6ca7f45c4acbee088fe74fecf279ed50cc0c
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Wed Jan 19 15:27:33 2011 +0100
+Date:  Wed Jan 19 15:27:33 2011 +0100
 
     [gi] Fixed typo in exception
 
- gi/overrides/Gtk.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ gi/overrides/Gtk.py |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 5f16df31b5a5a9f45f702eee48c3a18899ea3f71
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 09:13:44 2011 -0500
+
+    [gi] fix marshalling structs
+
+ gi/pygi-argument.c |  47 +++++++++++++++++++++++++++++++++++------------
+ gi/pygi-foreign.c  |  18 ++++++++++++------
+ gi/pygi-foreign.h  |   8 ++++----
+ 3 files changed, 51 insertions(+), 22 deletions(-)
 
 commit b2189424f9dd6d3a4a5b9792f0d5843fc27657d1
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Wed Jan 19 15:12:25 2011 +0100
+Date:  Wed Jan 19 15:12:25 2011 +0100
 
     [gi] Enable handling of Gdk.EventType.2BUTTON_PRESS and 3BUTTON_PRESS
 
- gi/overrides/Gdk.py |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ gi/overrides/Gdk.py |   4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 5eca5ff2c9509ec96158fe43b29f0fd951243efe
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 14:54:57 2011 +0100
+Date:  Wed Jan 19 14:54:57 2011 +0100
 
     Revert "Fix Pango FontDescription override"
 
@@ -2741,100 +10996,141 @@ Date:   Wed Jan 19 14:54:57 2011 +0100
 
     This reverts commit 8878c57676091c08e66bc6cbe735d898cb420582.
 
- gi/overrides/Pango.py   |    5 ++++-
+ gi/overrides/Pango.py  |    5 ++++-
  tests/test_overrides.py |    5 +++++
- 2 files changed, 9 insertions(+), 1 deletions(-)
+ 2 files changed, 9 insertions(+), 1 deletion(-)
 
 commit 9e7b95b3676a1b502662523a9bd4ebe40ccb4845
 Author: Tony Young <rofflwaffls@gmail.com>
-Date:   Thu Dec 16 23:39:33 2010 +0000
+Date:  Thu Dec 16 23:39:33 2010 +0000
 
     Python iterator interface support for GFileEnumerator.
 
- gi/overrides/Gio.py      |   41 +++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gio.py     |   41 +++++++++++++++++++++++++++++++++++++++++
  gi/overrides/Makefile.am |    1 +
  tests/test_overrides.py  |   20 ++++++++++++++++++++
- 3 files changed, 62 insertions(+), 0 deletions(-)
+ 3 files changed, 62 insertions(+)
 
 commit bca5834fc8fa342149e0eec7b396877a2abe6d33
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Jan 7 12:10:37 2011 +0100
+Date:  Fri Jan 7 12:10:37 2011 +0100
 
     Remove gio static bindings
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638899
 
- Makefile.am                       |    2 +-
- configure.ac                      |   25 -
- gio/.gitignore                    |    3 -
- gio/Makefile.am                   |  117 -
- gio/__init__.py                   |   40 -
- gio/gappinfo.override             |  213 --
+ Makefile.am                      |    2 +-
+ configure.ac                     |   25 -
+ gio/.gitignore                           |    3 -
+ gio/Makefile.am                  |  117 -
+ gio/__init__.py                  |   40 -
+ gio/gappinfo.override            |  213 --
  gio/gapplaunchcontext.override    |   99 -
  gio/gbufferedinputstream.override |   70 -
- gio/gcancellable.override         |   38 -
- gio/gdatainputstream.override     |  250 --
- gio/gdrive.override               |  347 --
- gio/gfile.override                | 2215 -----------
- gio/gfileattribute.override       |  153 -
- gio/gfileenumerator.override      |  184 -
- gio/gfileinfo.override            |  121 -
- gio/gfileinputstream.override     |   68 -
- gio/gfileiostream.override        |   68 -
+ gio/gcancellable.override        |   38 -
+ gio/gdatainputstream.override    |  250 --
+ gio/gdrive.override              |  347 --
+ gio/gfile.override               | 2215 -----------
+ gio/gfileattribute.override      |  153 -
+ gio/gfileenumerator.override     |  184 -
+ gio/gfileinfo.override                   |  121 -
+ gio/gfileinputstream.override    |   68 -
+ gio/gfileiostream.override       |   68 -
  gio/gfileoutputstream.override    |   68 -
- gio/gicon.override                |  310 --
- gio/ginputstream.override         |  344 --
- gio/gio-types.defs                |  807 ----
- gio/gio.defs                      | 7465
+ gio/gicon.override               |  310 --
+ gio/ginputstream.override        |  344 --
+ gio/gio-types.defs               |  807 ----
+ gio/gio.defs                     | 7465
  -------------------------------------
- gio/gio.override                  |  409 --
- gio/giomodule.c                   |  208 -
- gio/giostream.override            |   68 -
+ gio/gio.override                 |  409 --
+ gio/giomodule.c                  |  208 --
+ gio/giostream.override                   |   68 -
  gio/gmemoryinputstream.override   |   91 -
  gio/gmemoryoutputstream.override  |   45 -
- gio/gmount.override               |  454 ---
- gio/goutputstream.override        |  292 --
- gio/gresolver.override            |  312 --
- gio/gsocket.override              |  575 ---
- gio/gvolume.override              |  237 --
- gio/gvolumemonitor.override       |   94 -
- gio/pygio-utils.c                 |  236 --
- gio/pygio-utils.h                 |   49 -
- gio/unix-types.defs               |   55 -
- gio/unix.defs                     |  475 ---
- gio/unix.override                 |   62 -
- gio/unixmodule.c                  |   52 -
- tests/Makefile.am                 |    9 -
- tests/runtests-windows.py         |    3 -
- tests/test_gcancellable.py        |   15 -
- tests/test_gicon.py               |  112 -
- tests/test_gio.py                 | 1138 ------
- tests/test_gresolver.py           |   68 -
- tests/test_gsocket.py             |  126 -
- 46 files changed, 1 insertions(+), 18191 deletions(-)
+ gio/gmount.override              |  454 ---
+ gio/goutputstream.override       |  292 --
+ gio/gresolver.override                   |  312 --
+ gio/gsocket.override             |  575 ---
+ gio/gvolume.override             |  237 --
+ gio/gvolumemonitor.override      |   94 -
+ gio/pygio-utils.c                |  236 --
+ gio/pygio-utils.h                |   49 -
+ gio/unix-types.defs              |   55 -
+ gio/unix.defs                    |  475 ---
+ gio/unix.override                |   62 -
+ gio/unixmodule.c                 |   52 -
+ tests/Makefile.am                |    9 -
+ tests/runtests-windows.py        |    3 -
+ tests/test_gcancellable.py       |   15 -
+ tests/test_gicon.py              |  112 -
+ tests/test_gio.py                | 1138 ------
+ tests/test_gresolver.py          |   68 -
+ tests/test_gsocket.py            |  126 -
+ 46 files changed, 1 insertion(+), 18191 deletions(-)
+
+commit 6ab3d8d286573289cf8e41eee31eb806621f6f43
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 07:56:16 2011 -0500
+
+    [gi] switch from using (*arg). to arg-> when referencing union
+    memebers
+
+ gi/pygi-argument.c |  54
+ ++++++++++++++++++++++++++--------------------------
+ 1 file changed, 27 insertions(+), 27 deletions(-)
+
+commit 762ccb3d2620ea22023446b6ae79f3a111d8b56a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 07:49:52 2011 -0500
+
+    [gi] return FALSE when setting errors in the marshaller
+
+ gi/pygi-argument.c |   3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit cbaba6357937cbed3ebd34d2db1cdd59d37df118
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 07:14:18 2011 -0500
+
+    [gi] do arg counting in new invoke
+
+ gi/pygi-cache.c              |    2 ++
+ gi/pygi-cache.h              |   14 ++++++++------
+ gi/pygi-invoke-state-struct.h |    2 +-
+ gi/pygi-invoke.c             |   20 +++++++++++++++++++-
+ 4 files changed, 30 insertions(+), 8 deletions(-)
+
+commit f45033858bed70d7defec3f71f26aa5b3999d680
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 19 06:35:45 2011 -0500
+
+    [gi] set length for uint8 in arrays in new invoke marshaller
+
+ gi/pygi-argument.c |   1 +
+ 1 file changed, 1 insertion(+)
 
 commit 09f7ca7e2378e6679002677ac3f4802f4cc7d9d5
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Jan 19 12:04:15 2011 +0100
+Date:  Wed Jan 19 12:04:15 2011 +0100
 
     [gi] set length when marshalling guint8 erases
 
- gi/pygi-argument.c |    1 +
- tests/test_gi.py   |    4 ++++
- 2 files changed, 5 insertions(+), 0 deletions(-)
+ gi/pygi-argument.c |   1 +
+ tests/test_gi.py   |   4 ++++
+ 2 files changed, 5 insertions(+)
 
 commit 22eee43e50a150ace80694213fb87be9f0c72f51
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Wed Jan 19 10:27:47 2011 +0100
+Date:  Wed Jan 19 10:27:47 2011 +0100
 
     Convert Gdk.Pixbuf to GdkPixbuf.Pixbuf
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit a4b210d69c832629894090b7154ae194209b0c60
 Author: Arnaud Charlet <charlet@adacore.com>
-Date:   Tue Jan 18 18:31:29 2011 +0100
+Date:  Tue Jan 18 18:31:29 2011 +0100
 
     Disable calls to PyGILState_* when threads are disabled
 
@@ -2844,32 +11140,43 @@ Date:   Tue Jan 18 18:31:29 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=374603
 
- glib/pyglib.c               |   12 ++++++++++++
- gobject/pygobject-private.h |    6 ++++++
- 2 files changed, 18 insertions(+), 0 deletions(-)
+ glib/pyglib.c              |   12 ++++++++++++
+ gobject/pygobject-private.h |   6 ++++++
+ 2 files changed, 18 insertions(+)
+
+commit 329afb6fb1b3c325a6a9de2b6aca91c64d51dd9f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jan 18 12:31:57 2011 -0500
+
+    [gi] fix handling of garrays vs c arrays
+
+ gi/pygi-argument.c |   9 +++++++--
+ gi/pygi-cache.c    |   2 ++
+ gi/pygi-cache.h    |   1 +
+ 3 files changed, 10 insertions(+), 2 deletions(-)
 
 commit a000627ec3904b9414ce375aec8d144fc0c26248
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 18:29:50 2011 +0100
+Date:  Tue Jan 18 18:29:50 2011 +0100
 
     pygi-convert.sh: Do not comment out set_cell_data_func() calls;
     these should be ported properly
 
  pygi-convert.sh |    1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
+ 1 file changed, 1 deletion(-)
 
 commit 99ff4610fb5ece2fc8d2f9eba13e661968adf3f0
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 18:26:01 2011 +0100
+Date:  Tue Jan 18 18:26:01 2011 +0100
 
     pygi-convert.sh: Fix match for adding missing imports
 
  pygi-convert.sh |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 3aa95011fad67df20370e92bf25236a34d7d08d3
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 18:09:30 2011 +0100
+Date:  Tue Jan 18 18:09:30 2011 +0100
 
     pygi-convert.sh: Fix Gtk.Label handling to be idempotent
 
@@ -2879,20 +11186,47 @@ Date:   Tue Jan 18 18:09:30 2011 +0100
     assertion.
 
  pygi-convert.sh |    5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit f66051380c0432bf142774542ade2144adcd455e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jan 18 11:44:27 2011 -0500
+
+    [gi] use correct union memeber when marshalling floats
+
+ gi/pygi-argument.c |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 36bc1c17e7d4189059337cc6a73c64edd819ec12
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Tue Jan 18 17:29:52 2011 +0100
+Date:  Tue Jan 18 17:29:52 2011 +0100
 
     Remove trailing whitespace from gi/overrides/Gtk.py
 
- gi/overrides/Gtk.py |   10 +++++-----
- 1 files changed, 5 insertions(+), 5 deletions(-)
+ gi/overrides/Gtk.py |  10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+commit 1006df1929a667716c25e74b35b8f14643358732
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jan 18 11:24:06 2011 -0500
+
+    [gi] fix constructor invoking and add some support for interface
+    out values
+
+    * constructors are now simplified and are treated like normal
+    static methods
+      which happen to return an instance
+
+ gi/pygi-argument.c |   8 ++--
+ gi/pygi-cache.c    |  132
+ ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-invoke.c   |   9 ++--
+ gi/types.py       |   21 +++------
+ 4 files changed, 142 insertions(+), 28 deletions(-)
 
 commit 8878c57676091c08e66bc6cbe735d898cb420582
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 16:47:10 2011 +0100
+Date:  Tue Jan 18 16:47:10 2011 +0100
 
     Fix Pango FontDescription override
 
@@ -2903,40 +11237,54 @@ Date:   Tue Jan 18 16:47:10 2011 +0100
     just fine now).
 
  gi/overrides/Pango.py |    7 +------
- 1 files changed, 1 insertions(+), 6 deletions(-)
+ 1 file changed, 1 insertion(+), 6 deletions(-)
 
 commit efbbe71634037fa100b17327389b883b259cca54
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 16:23:39 2011 +0100
+Date:  Tue Jan 18 16:23:39 2011 +0100
 
     tests: Respect existing $GI_TYPELIB_PATH
 
     This allows us to run the test suite against local typelibs.
 
- tests/Makefile.am |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ tests/Makefile.am |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c96ca383350e5b9b079d9a86464922314939c006
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jan 18 07:16:40 2011 -0500
+
+    [gi] fix aux value offsets for methods and element size crashers
+
+    * if the callable is a method we need to add 1 to the aux index
+      for in values so we grab the right argument cache
+    * use _pygi_g_type_info_size instead of _pygi_g_type_tag_size to
+      support all types
+
+ gi/pygi-cache.c |   42 ++++++++++++++++++++++++------------------
+ 1 file changed, 24 insertions(+), 18 deletions(-)
 
 commit f56d85a7f39c2088bf9fd50b1b1e5b67c03104d3
 Merge: 84d6142 7d997b6
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Tue Jan 18 13:14:45 2011 +0100
+Date:  Tue Jan 18 13:14:45 2011 +0100
 
     Merge branch 'value'
 
 commit 7d997b6fe88343776c4d67a9f3437ba0c4122da0
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Tue Jan 18 13:12:36 2011 +0100
+Date:  Tue Jan 18 13:12:36 2011 +0100
 
     GTK overrides: Do type conversion to column types of ListStore and
     TreeStore in set_value
 
- gi/overrides/Gtk.py     |   28 ++++++++++++++++++----------
+ gi/overrides/Gtk.py    |   28 ++++++++++++++++++----------
  tests/test_overrides.py |   12 +++++++++++-
  2 files changed, 29 insertions(+), 11 deletions(-)
 
 commit 84d6142c14a7ebfb7284d3db52e14d3393f93905
 Author: Steve Frécinaux <code@istique.net>
-Date:   Mon Jan 17 18:57:58 2011 +0100
+Date:  Mon Jan 17 18:57:58 2011 +0100
 
     Always register a new GType when a GObject class is subclassed
 
@@ -2954,42 +11302,42 @@ Date:   Mon Jan 17 18:57:58 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=543056
 
- gobject/__init__.py |    6 +++---
- tests/test_gi.py    |   21 ++-------------------
+ gobject/__init__.py |   6 +++---
+ tests/test_gi.py    |  21 ++-------------------
  2 files changed, 5 insertions(+), 22 deletions(-)
 
 commit 30750ccef31e6c864628f418fc00e8c573d29a1b
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Tue Jan 18 12:57:13 2011 +0100
+Date:  Tue Jan 18 12:57:13 2011 +0100
 
     Raise required versions of GLib and GObject-Introspection
 
     https://bugzilla.gnome.org/show_bug.cgi?id=612126
 
  configure.ac |    6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 761e98d32729f5894f4c75a54c65ed11329dc9d5
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 12:52:32 2011 +0100
+Date:  Tue Jan 18 12:52:32 2011 +0100
 
     pygi-convert.sh: Handle keysyms
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit d62cdfa38a675c1daf3bc12d5cd769434eea5dc8
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 12:14:09 2011 +0100
+Date:  Tue Jan 18 12:14:09 2011 +0100
 
     GLib overrides: Add test case for array variant building
 
  tests/test_overrides.py |    7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
+ 1 file changed, 7 insertions(+)
 
 commit 69a78307f3762e3f54d28d98514cec7d31ff20db
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jan 18 10:21:03 2011 +0100
+Date:  Tue Jan 18 10:21:03 2011 +0100
 
     Remove cairo.RectangleInt from the foreign module
 
@@ -2997,31 +11345,31 @@ Date:   Tue Jan 18 10:21:03 2011 +0100
 
  gi/pygi-foreign-cairo.c |   96
  -----------------------------------------------
- 1 files changed, 0 insertions(+), 96 deletions(-)
+ 1 file changed, 96 deletions(-)
 
 commit 017680c9a5e163021628bf29543598861a3b600a
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jan 18 10:20:25 2011 +0100
+Date:  Tue Jan 18 10:20:25 2011 +0100
 
     Dont try to guess the transfer if its a boxed
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639823
 
  gi/pygi-invoke.c |    5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
+ 1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit 771ef76574690eb98926249f38661d741d1ebbb0
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Tue Jan 18 12:02:01 2011 +0100
+Date:  Tue Jan 18 12:02:01 2011 +0100
 
     The tags can be Empty not None.
 
- gi/overrides/Gtk.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ gi/overrides/Gtk.py |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b1a98083cdc50653e1d7bfb809bdf089f833df3d
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 12:01:28 2011 +0100
+Date:  Tue Jan 18 12:01:28 2011 +0100
 
     Add Pythonic iterators and indexing to GVariant
 
@@ -3031,14 +11379,14 @@ Date:   Tue Jan 18 12:01:28 2011 +0100
 
     Add corresponding test cases.
 
- gi/overrides/GLib.py    |   50 ++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/GLib.py   |   50 ++++++++++++++++++++++++++++++++++++++++++
  tests/test_overrides.py |   55
  +++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 105 insertions(+), 0 deletions(-)
+ 2 files changed, 105 insertions(+)
 
 commit ecb9f824c503c529d43e585b4cdb4c1c9ab14593
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 10:48:03 2011 +0100
+Date:  Tue Jan 18 10:48:03 2011 +0100
 
     Add GLib.Variant.unpack()
 
@@ -3050,39 +11398,39 @@ Date:   Tue Jan 18 10:48:03 2011 +0100
 
     Add appropriate test case.
 
- gi/overrides/GLib.py    |   45
+ gi/overrides/GLib.py   |   45
  +++++++++++++++++++++++++++++++++++++++++++++
  tests/test_overrides.py |   33 ++++++++++++++++++++++++++++++++-
- 2 files changed, 77 insertions(+), 1 deletions(-)
+ 2 files changed, 77 insertions(+), 1 deletion(-)
 
 commit 31c73dee34a52fd22b5ff3a23adce92cea5ddc3d
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Tue Jan 18 10:56:18 2011 +0100
+Date:  Tue Jan 18 10:56:18 2011 +0100
 
     Add override for gtk_text_buffer_insert_with_tags
 
- gi/overrides/Gtk.py     |   12 ++++++++++++
+ gi/overrides/Gtk.py    |   12 ++++++++++++
  tests/test_overrides.py |    6 ++++++
- 2 files changed, 18 insertions(+), 0 deletions(-)
+ 2 files changed, 18 insertions(+)
 
 commit fc7d7f7f153d57ff3866b7bfd5e6479d702cc4d9
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Mon Jan 17 14:35:14 2011 +0100
+Date:  Mon Jan 17 14:35:14 2011 +0100
 
     Deduce PYTHON_LIBS in addition to PYTHON_INCLUDES
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620215
 
- gi/Makefile.am    |    6 ++++--
- gio/Makefile.am   |    2 +-
- glib/Makefile.am  |    2 +-
- m4/python.m4      |    7 +++++--
- tests/Makefile.am |    2 +-
+ gi/Makefile.am    |   6 ++++--
+ gio/Makefile.am   |   2 +-
+ glib/Makefile.am  |   2 +-
+ m4/python.m4     |    7 +++++--
+ tests/Makefile.am |   2 +-
  5 files changed, 12 insertions(+), 7 deletions(-)
 
 commit bceec758b27e6c396d17a79424633b5dc9116f54
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Mon Jan 17 14:20:55 2011 +0100
+Date:  Mon Jan 17 14:20:55 2011 +0100
 
     Kill JD_CHECK_PYTHON_HEADERS
 
@@ -3096,7 +11444,7 @@ Date:   Mon Jan 17 14:20:55 2011 +0100
 
 commit e2dea065da94d17a915abe1ce4671b1dc48e02c0
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Jan 17 19:09:27 2011 +0100
+Date:  Mon Jan 17 19:09:27 2011 +0100
 
     Revert "Override Gtk.Box.pack_start and pack_end to set default
     values to be compliant with pygtk"
@@ -3108,7 +11456,7 @@ Date:   Mon Jan 17 19:09:27 2011 +0100
        gi/overrides/Gtk.py
 
  gi/overrides/Gtk.py |  10 ----------
- 1 files changed, 0 insertions(+), 10 deletions(-)
+ 1 file changed, 10 deletions(-)
 
 commit 4fbae9629adc166627de05bb0946b71485343d69
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -3120,7 +11468,7 @@ Date:    Mon Jan 17 19:08:23 2011 +0100
     This reverts commit 232841148f35684be83a2f47b5b18da4fb74f63a.
 
  gi/overrides/Gtk.py |  13 ++-----------
- 1 files changed, 2 insertions(+), 11 deletions(-)
+ 1 file changed, 2 insertions(+), 11 deletions(-)
 
 commit c054f0aca67952876b3519bb75ddc62c5517f7cb
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -3132,7 +11480,7 @@ Date:    Mon Jan 17 19:08:06 2011 +0100
     This reverts commit ed7e7a8f22b1481acf78c0c2e4c489dbad72f599.
 
  gi/overrides/Gtk.py |   9 ---------
- 1 files changed, 0 insertions(+), 9 deletions(-)
+ 1 file changed, 9 deletions(-)
 
 commit 2d9534f347505573da46743b47318e08bf073aef
 Author: Martin Pitt <martin.pitt@ubuntu.com>
@@ -3141,7 +11489,20 @@ Date:   Mon Jan 17 18:54:10 2011 +0100
     pygi-convert.sh: Handle gtk.combo_box_new_text()
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
+
+commit 0586a83212a9f9234fe00659ae744ab04e7ccc67
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Jan 17 12:31:03 2011 -0500
+
+    support callbacks
+
+ gi/pygi-argument.c |  68 ++++++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-cache.c    |  80
+ +++++++++++++++++++++++++++++++++++++++-------------
+ gi/pygi-cache.h    |  13 +++++++--
+ gi/pygi-invoke.c   |   2 +-
+ 4 files changed, 138 insertions(+), 25 deletions(-)
 
 commit 914d3a0a29680f4d3aa0e1f8afdd625b017b013a
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -3151,7 +11512,7 @@ Date:    Mon Jan 17 16:57:53 2011 +0100
     add default values to be pygtk compliant
 
  gi/overrides/Gtk.py |   6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
+ 1 file changed, 6 insertions(+)
 
 commit ed7e7a8f22b1481acf78c0c2e4c489dbad72f599
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -3161,7 +11522,7 @@ Date:    Mon Jan 17 16:29:28 2011 +0100
     set_cell_data_func to add default values to be compliant with pygtk
 
  gi/overrides/Gtk.py |   9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
+ 1 file changed, 9 insertions(+)
 
 commit 232841148f35684be83a2f47b5b18da4fb74f63a
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -3171,7 +11532,7 @@ Date:    Mon Jan 17 16:28:51 2011 +0100
     to be compliant with pygtk
 
  gi/overrides/Gtk.py |  13 +++++++++++--
- 1 files changed, 11 insertions(+), 2 deletions(-)
+ 1 file changed, 11 insertions(+), 2 deletions(-)
 
 commit 1dec12826753756fcadefc8ef8c756fc902c320b
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -3181,7 +11542,7 @@ Date:    Mon Jan 17 15:54:32 2011 +0100
     compliant with pygtk
 
  gi/overrides/Gtk.py |  10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
+ 1 file changed, 10 insertions(+)
 
 commit a8c727b9c4195d8085a45661683a18614ae84485
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -3191,7 +11552,7 @@ Date:    Mon Jan 17 15:46:25 2011 +0100
     be compliant with pygtk
 
  gi/overrides/Gtk.py |  10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
+ 1 file changed, 10 insertions(+)
 
 commit 7cc8ac35bb0d8dbf7d66f014f8cd7ff070b3acb8
 Author: Steve Frécinaux <code@istique.net>
@@ -3265,7 +11626,7 @@ Date:    Mon Jan 17 16:16:45 2011 +0100
     pygi-convert.sh: Handle GdkPixbuf.InterpType
 
  pygi-convert.sh |    2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
 
 commit 66a5784f4ab5de5b6d8d51eb4ce869fa26f6a601
 Author: Laszlo Pandy <laszlok2@gmail.com>
@@ -3285,7 +11646,7 @@ Date:    Mon Jan 17 15:43:34 2011 +0100
  gi/module.py    |    2 +-
  gi/types.py     |    2 ++
  tests/test_gi.py |   10 ++++++++++
- 3 files changed, 13 insertions(+), 1 deletions(-)
+ 3 files changed, 13 insertions(+), 1 deletion(-)
 
 commit da50d5620a42046d4fc905bb28a0890d73533cb1
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -3295,12 +11656,12 @@ Date:  Mon Dec 13 18:03:51 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=637165
 
- gi/pygi-info.c   |    4 +-
+ gi/pygi-info.c   |    4 +--
  gi/pygi-invoke.c |   72
- +++++++++++++++++++++++++++++++++++++++++------------
- gi/pygi-invoke.h |    3 +-
+ +++++++++++++++++++++++++++++++++++++++++-------------
+ gi/pygi-invoke.h |    3 ++-
  gi/types.py     |   28 ++++++++++++++++++++-
- tests/test_gi.py |    5 ++-
+ tests/test_gi.py |    5 ++--
  5 files changed, 89 insertions(+), 23 deletions(-)
 
 commit 8ceef79c98a1c2e22ed8ab655ef1169f1763dd23
@@ -3325,17 +11686,17 @@ Date:  Fri Dec 31 18:38:04 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=636656
 
- glib/glibmodule.c      |    5 +++-
- glib/pyglib-private.h  |    3 ++
+ glib/glibmodule.c      |    5 ++++-
+ glib/pyglib-private.h  |    3 +++
  glib/pyglib.c          |   48
- ++--------------------------------------------
- glib/pygmaincontext.c  |   22 +++++++++++++++++++++
+ +++--------------------------------------------
+ glib/pygmaincontext.c  |   22 ++++++++++++++++++++++
  glib/pygmaincontext.h  |    2 +-
  glib/pygmainloop.c     |    2 +-
- glib/pygoptioncontext.c |   21 ++++++++++++++++++++
- glib/pygoptioncontext.h |    2 +
+ glib/pygoptioncontext.c |   21 +++++++++++++++++++++
+ glib/pygoptioncontext.h |    2 ++
  glib/pygoptiongroup.c  |   26 +++++++++++++++++++++++++
- glib/pygoptiongroup.h  |    2 +
+ glib/pygoptiongroup.h  |    2 ++
  glib/pygsource.c       |    2 +-
  11 files changed, 86 insertions(+), 49 deletions(-)
 
@@ -3346,7 +11707,7 @@ Date:    Mon Jan 17 14:51:26 2011 +0100
     pygi-convert.sh: Handle Gdk.DragAction
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit aa390aa80f06ac83ec89e5c5ee143d21ace97917
 Author: Martin Pitt <martin.pitt@ubuntu.com>
@@ -3357,7 +11718,7 @@ Date:    Mon Jan 17 14:46:58 2011 +0100
     There are other GSettings.get_* functions like get_for_screen().
 
  pygi-convert.sh |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2e6d5bb49425e6087ca61765ecb72e7a760f2ab2
 Author: Martin Pitt <martin.pitt@ubuntu.com>
@@ -3368,7 +11729,7 @@ Date:    Mon Jan 17 11:22:46 2011 +0100
     This particular affects dbus.mainloop.glib.*
 
  pygi-convert.sh |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3887b030fc19d25e0cd7b4ed504f4ed23363c3d6
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3379,7 +11740,7 @@ Date:    Sun Jan 16 22:09:56 2011 +0100
     Do not leak interface info in (g|s)_et_property.
 
  gi/pygi-property.c |   4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
+ 1 file changed, 4 insertions(+)
 
 commit a4950b4cbb3c7567a8586061bb361adb7d9afb98
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3390,7 +11751,7 @@ Date:    Sun Jan 16 21:43:30 2011 +0100
     Do not leak type_info in find_vfunc_info
 
  gi/gimodule.c |   10 +++++-----
- 1 files changed, 5 insertions(+), 5 deletions(-)
+ 1 file changed, 5 insertions(+), 5 deletions(-)
 
 commit d0cbcc45366d40702c69cef207d3c0f361260c02
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3402,7 +11763,7 @@ Date:    Sun Jan 16 12:16:31 2011 +0100
 
  gi/overrides/Gtk.py    |    3 +++
  tests/test_overrides.py |    4 ++++
- 2 files changed, 7 insertions(+), 0 deletions(-)
+ 2 files changed, 7 insertions(+)
 
 commit 6409d659326bf3cefdf6051379e8bc2031f16733
 Author: Martin Pitt <martin.pitt@ubuntu.com>
@@ -3411,7 +11772,7 @@ Date:    Sat Jan 15 11:20:23 2011 -0600
     pygi-convert.sh: Convert Pango.WrapMode
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 6aaa6a38198e84a189ca1e8d26b1871d5b6bb711
 Author: Martin Pitt <martin.pitt@ubuntu.com>
@@ -3424,7 +11785,30 @@ Date:   Sat Jan 15 11:17:09 2011 -0600
     just change module names which start with "gtk" or "gdk".
 
  pygi-convert.sh |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 9be0f1f2dfb89150faf1827ef482feea03645149
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu Jan 13 23:56:19 2011 -0500
+
+    [gi] implement aux arg handling for array lengths
+
+ gi/pygi-argument.c |   8 ++++++++
+ gi/pygi-cache.c    |  36 ++++++++++++++++++++++++++++--------
+ gi/pygi-cache.h    |   1 -
+ gi/pygi-invoke.c   |   8 ++++++--
+ 4 files changed, 42 insertions(+), 11 deletions(-)
+
+commit cfca2f0a53a5c29f543875ca4cb83a2e18d3bc72
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu Jan 13 21:07:25 2011 -0500
+
+    [gi] marshal in hashes
+
+ gi/pygi-argument.c |  93 +++++++++++++++++++++++++++++++++++++--
+ gi/pygi-cache.c    |  122
+ ++++++++++++++++++++++++++++++++++++----------------
+ 2 files changed, 176 insertions(+), 39 deletions(-)
 
 commit c36fbf4918c8557a8e274a12004a412da3b22b2c
 Author: Laszlo Pandy <git@laszlopandy.com>
@@ -3455,7 +11839,53 @@ Date:   Thu Jan 13 00:02:20 2011 +0100
     pygi-convert.sh: handle ReliefStyle
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
+
+commit e9166ba5d19f2b586f65a3b83a671a5afd486d8f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 12 16:50:30 2011 -0500
+
+    [gi] support for GList and GSList in
+
+ gi/pygi-argument.c |  122
+ +++++++++++++++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 116 insertions(+), 6 deletions(-)
+
+commit 9baf3240fbac103823ad0feaaf1c82e46d276722
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 12 16:24:17 2011 -0500
+
+    [gi] handle allow_none for all args
+
+ gi/pygi-cache.c  |    3 ++-
+ gi/pygi-cache.h  |    1 +
+ gi/pygi-invoke.c |    7 +++++++
+ 3 files changed, 10 insertions(+), 1 deletion(-)
+
+commit d54d12c66226910952b0dc44c8d9514a7edaa6f2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Wed Jan 12 16:23:02 2011 -0500
+
+    [gi] fix marshalling fixed arrays
+
+    * get the correct item_size and pass the GArray data not the GArray
+
+ gi/pygi-argument.c |  39 ++++++++++++++++++++++-----------------
+ gi/pygi-cache.c    |   3 ++-
+ 2 files changed, 24 insertions(+), 18 deletions(-)
+
+commit 3b0eff80d2ee35e0417476f0a170b9e178e3d1ee
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jan 11 17:20:43 2011 -0500
+
+    [gi] implement out arg handling
+
+ gi/pygi-argument.c           |   43 +++++++++--------------------------
+ gi/pygi-cache.c              |   22 +++++++++++++-----
+ gi/pygi-invoke-state-struct.h |   13 +++++++++++
+ gi/pygi-invoke.c             |   50
+ +++++++++++++++++++++++++++++++++++++++--
+ 4 files changed, 89 insertions(+), 39 deletions(-)
 
 commit bd002c72675d35b5e60ab773181e7c36c30d2625
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -3464,7 +11894,7 @@ Date:    Tue Jan 11 22:21:18 2011 +0100
     setup.py: fix the provides keyword argument
 
  setup.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 59dac72d0fa8e1d68bbbc13d76c2747f1cb11857
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -3473,7 +11903,34 @@ Date:   Tue Jan 11 22:19:18 2011 +0100
     setup.py: use the same spaces-less format for all setup() parameters
 
  setup.py |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit c5c149be171895d292852df364541f14f0ec423a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jan 11 15:39:09 2011 -0500
+
+    [gi] implemented return marshalling and started on out marshalling
+
+ gi/pygi-argument.c |  387
+ +++++++++++++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-argument.h |  117 ++++++++++++++++
+ gi/pygi-cache.c    |  316 +++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-cache.h    |   8 +-
+ gi/pygi-invoke.c   |  12 +-
+ 5 files changed, 829 insertions(+), 11 deletions(-)
+
+commit 4fcca8518774ab89607196dfc52037e3da30ac8a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jan 11 13:49:58 2011 -0500
+
+    [gi] flesh out interface in marshalling a bit more
+
+ gi/pygi-argument.c |  74
+ ++++++++++++++++++++++++++++++++++++++----------
+ gi/pygi-cache.c    |  79
+ +++++++++++++++++++++++++++++++++++++++++-----------
+ gi/pygi-cache.h    |   1 +
+ 3 files changed, 123 insertions(+), 31 deletions(-)
 
 commit 4992dca9f5cea68d85eb2ed86105c9c6b8311d79
 Author: Laszlo Pandy <laszlok2@gmail.com>
@@ -3493,7 +11950,7 @@ Date:    Tue Jan 11 19:30:38 2011 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=639232
 
  gi/module.py |    9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
+ 1 file changed, 9 insertions(+)
 
 commit 2ffaec59e7349c145a0e2a5edba2ffb7d8628369
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -3504,7 +11961,7 @@ Date:    Tue Jan 11 19:40:19 2011 +0100
     Breaks marshalling of some types
 
  gi/module.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 52a298cc0f05ceec96457f17f9a801e9838fb757
 Author: Laszlo Pandy <laszlok2@gmail.com>
@@ -3525,7 +11982,124 @@ Date:  Tue Jan 11 19:26:50 2011 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=639229
 
  gi/module.py |   10 +++++++---
- 1 files changed, 7 insertions(+), 3 deletions(-)
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+commit 369a75ba5fb64ff7a7c95d21f8bfe359e639e9ff
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Jan 10 17:55:03 2011 -0500
+
+    [gi] add object and interface in marshalling
+
+    * also remove the PyGIArgCleanup sinature as GDestroyNotify works
+    just fine
+
+ gi/pygi-argument.c |  15 +++--
+ gi/pygi-cache.c    |  182
+ +++++++++++++++++++++++++++++++++++++++++++++++-----
+ gi/pygi-cache.h    |   1 -
+ gi/pygi-invoke.c   |   1 +
+ 4 files changed, 178 insertions(+), 21 deletions(-)
+
+commit 88531c58d0491a31dd319387237a03df5c9edc07
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Jan 10 15:33:56 2011 -0500
+
+    [gi] fix casting when marshaling a char to uint8
+
+ gi/pygi-argument.c |   2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 441da4a7346ca059630dbc820c5b46e4d0222f4b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Mon Jan 10 15:07:16 2011 -0500
+
+    [gi] hook up invoke to the cache
+
+    * We now can invoke with in values
+    * out, constructors and returns still don't work along with numerous
+    complex
+      in types
+
+ gi/Makefile.am                       |    1 +
+ gi/pygi-argument.c           |   60 +++++++++--------
+ gi/pygi-argument.h           |   60 ++++++++---------
+ gi/pygi-cache.h              |    6 +-
+ gi/pygi-invoke-state-struct.h |   26 +++++++
+ gi/pygi-invoke.c             |  149
+ +++++++++++++++++++++++++++++++----------
+ gi/pygi-invoke.h             |    2 +-
+ gi/pygi-private.h            |    1 +
+ 8 files changed, 208 insertions(+), 97 deletions(-)
+
+commit f32b1f494aa5d09b9b198f607722c819c6bbd808
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sun Jan 9 19:37:55 2011 -0500
+
+    hooked up caching stage and fixed segfaults
+
+    * caching stage is hooked up but not used yet
+    * throws exceptions for everything that can not be cached yet
+
+ gi/pygi-cache.c  |   59
+ ++++++++++++++++++++++++++++++++++++++++++------------
+ gi/pygi-info.c   |    3 +++
+ gi/pygi-invoke.c |    5 +++++
+ gi/pygi.h       |    2 ++
+ 4 files changed, 56 insertions(+), 13 deletions(-)
+
+commit c2bf1d4d9cf2e9f8e313528fe717f6279dad5da1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sun Jan 9 18:05:31 2011 -0500
+
+    [gi] fix some function names
+
+ gi/pygi-cache.c |    5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+commit 2ec4230a5180f048c26c2e4234b2a098d42f030b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sun Jan 9 15:58:06 2011 -0500
+
+    [gi] refactor cache structs so they inherit from ArgCache
+
+ gi/pygi-argument.c |  122 ++++++++++---------
+ gi/pygi-cache.c    |  344
+ ++++++++++++++++++++++++++++------------------------
+ gi/pygi-cache.h    |  50 ++++----
+ 3 files changed, 273 insertions(+), 243 deletions(-)
+
+commit f4cdf0c0321285da015686fcb7115bd91bfd5c7c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sat Jan 8 20:45:11 2011 -0500
+
+    [gi]fix cache compile error - now compiles but cache still not
+    hooked up
+
+ gi/Makefile.am     |   2 +
+ gi/pygi-argument.c |  100 +++++++++++++++---------------
+ gi/pygi-argument.h |  174
+ +++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-cache.c    |  169
+ +++++++++++++++++++++++++-------------------------
+ gi/pygi-cache.h    |  25 ++++----
+ 5 files changed, 293 insertions(+), 177 deletions(-)
+
+commit 5f8f3044dd8085b2e8ce0bf70e9d52f05abf909d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Sat Jan 8 19:10:29 2011 -0500
+
+    add sequence caching and array marshalling w/ item marshalling
+
+    * simplify what we pass into the arg cache generators so we may
+    use them
+      for geneating marshalling caches for container items, not just
+      arguments
+
+ gi/pygi-argument.c |  76 ++++++++++++++++-
+ gi/pygi-cache.c    |  242
+ ++++++++++++++++++++++------------------------------
+ gi/pygi-cache.h    |   4 +-
+ 3 files changed, 175 insertions(+), 147 deletions(-)
 
 commit 202a268db7f98f5a3c525c6e65ec4bff1917257e
 Author: Emilio Pozuelo Monfort <pochu27@gmail.com>
@@ -3536,7 +12110,7 @@ Date:    Sat Jan 8 02:19:52 2011 +0000
     Needed for G_TYPE_CONVERTER_FLAGS and others.
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c3aa36151fdef9ed9884d93114786bbe86387983
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -3545,7 +12119,7 @@ Date:    Fri Jan 7 12:58:11 2011 +0100
     Add test for incorrect attributes in Gdk.Event
 
  tests/test_overrides.py |    4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
+ 1 file changed, 4 insertions(+)
 
 commit 204b45c7e95eb50d9e3843127fb10e13b1b17fee
 Author: Simon van der Linden <svdlinden@gnome.org>
@@ -3568,7 +12142,7 @@ Date:    Sun Jan 2 19:25:55 2011 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=638523
 
  gi/overrides/Gdk.py |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 6cf298ca5565d0eb99824f050ff47407e50a5c01
 Author: Mike Gorse <mgorse@novell.com>
@@ -3579,7 +12153,7 @@ Date:    Fri Jan 7 09:08:31 2011 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=638847
 
  gi/pygi-closure.c |   3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit 1be76d5e006efa24598ff7bf26153660dbe0a890
 Author: Mike Gorse <mgorse@novell.com>
@@ -3590,7 +12164,46 @@ Date:   Fri Jan 7 09:07:35 2011 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=638847
 
  gi/pygi-argument.c |   1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
+
+commit 43849c51391fc9cd239697065c3d40fa02fb6783
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu Jan 6 17:30:14 2011 -0500
+
+    whitespace fixes
+
+ gi/pygi-cache.c |   24 ++++++++++++------------
+ gi/pygi-cache.h |   42 +++++++++++++++++++++---------------------
+ 2 files changed, 33 insertions(+), 33 deletions(-)
+
+commit 8b5b3d2bbbbdf5d26c83e9a6fe67121cbd77ebe1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Thu Jan 6 17:29:00 2011 -0500
+
+    add marshalling for basic types and add more skeleton code
+
+    * still doesn't compile
+
+ gi/pygi-argument.c |  708
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.h |  35 ++-
+ gi/pygi-cache.c    |  82 ++++--
+ gi/pygi-cache.h    |  41 ++-
+ 4 files changed, 832 insertions(+), 34 deletions(-)
+
+commit f554cf62848104d31518138ae85bc51acaafda67
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date:  Tue Jan 4 18:49:53 2011 -0500
+
+    first checkin of the new caching branch
+
+    * this does not compile and is not hooked up to the build system
+    * lays out the caching data structures and some skeleton functions
+
+ gi/pygi-cache.c |  480
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-cache.h |  104 ++++++++++++
+ 2 files changed, 584 insertions(+)
 
 commit 8d5a7857876669f56bb03bf618bcfdcc290721c0
 Author: Eitan Isaacson <eitan@monotonous.org>
@@ -3602,7 +12215,7 @@ Date:    Wed Dec 22 12:34:10 2010 -0800
 
  gi/pygi-closure.c |   66
  +++++++++++++++++++++++++++++++++++++++++++++--------
- 1 files changed, 56 insertions(+), 10 deletions(-)
+ 1 file changed, 56 insertions(+), 10 deletions(-)
 
 commit f14976ffabec28f6cafe1e37dc81d207a947d4ca
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -3611,7 +12224,7 @@ Date:    Tue Dec 28 18:34:25 2010 +0100
     Fix stupid name clash
 
  gi/module.py |    7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
+ 1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit 01b2a193d403beb861eab524300b4f1af63157ce
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -3620,7 +12233,7 @@ Date:    Tue Dec 28 13:49:18 2010 +0100
     Add /usr/share to XDG_DATA_DIRS when running the tests
 
  tests/Makefile.am |   7 ++++++-
- 1 files changed, 6 insertions(+), 1 deletions(-)
+ 1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit efc186f692f9eac781cc47456be74a3da7f14dcd
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -3629,7 +12242,7 @@ Date:    Tue Dec 28 13:25:34 2010 +0100
     Comment out tests that require SRV lookups
 
  tests/test_gresolver.py |    5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
+ 1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit d2462cc1ab51d76fb4625c47c3d34de1d5d0dee8
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -3640,7 +12253,7 @@ Date:    Tue Dec 28 13:00:16 2010 +0100
  tests/Makefile.am |   2 +-
  tests/python.supp |  387
  +++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 388 insertions(+), 1 deletions(-)
+ 2 files changed, 388 insertions(+), 1 deletion(-)
 
 commit 0ee58113ecbea72784c52de928c041fc8fc88984
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
@@ -3696,7 +12309,7 @@ Date:    Tue Dec 14 12:29:54 2010 +0100
     is mingw32
 
  dsextras.py |   6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
+ 1 file changed, 6 insertions(+)
 
 commit cebf5f09a6c5018ced64f35e7747fc81b93b823e
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -3705,7 +12318,7 @@ Date:    Tue Dec 14 12:29:01 2010 +0100
     dsextras.py: be consistent in how distutils imports are done
 
  dsextras.py |   6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 35e590d48c78f2e76c47c2b4eaf0f7e8d1ed5c93
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -3714,7 +12327,7 @@ Date:    Tue Dec 14 12:25:07 2010 +0100
     dsextras.py: add have_gcc() function
 
  dsextras.py |   5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
+ 1 file changed, 5 insertions(+)
 
 commit 637c2c287cfb0e89365026531c651111f5593ac7
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -3723,7 +12336,7 @@ Date:    Tue Dec 14 12:24:41 2010 +0100
     dsextras.py: use distutils.spawn.find_executable for have_pkgconfig()
 
  dsextras.py |   8 ++------
- 1 files changed, 2 insertions(+), 6 deletions(-)
+ 1 file changed, 2 insertions(+), 6 deletions(-)
 
 commit 020d00bc0ce7b77006b4d4f42d63122d79bcbf89
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -3732,7 +12345,7 @@ Date:    Tue Dec 14 12:22:54 2010 +0100
     setup.py: fix another case of use True/False instead of 1/0
 
  setup.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b03cc9e0d66d8caea3cd6a63db198c43de9267e9
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3741,7 +12354,7 @@ Date:    Mon Dec 13 10:21:52 2010 +0100
     pygi-convert.sh: improve GtkSourceView conversion
 
  pygi-convert.sh |    7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
+ 1 file changed, 7 insertions(+)
 
 commit fbc12cd7c09a67de9e28b7b0b28de9dc0e0e3418
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3750,7 +12363,7 @@ Date:    Mon Dec 13 10:27:56 2010 +0100
     pygi-convert.sh: Gtk.DialogFlags conversion
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 73e933d2429aea4d14e15350a538da1c5c3f71eb
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
@@ -3767,7 +12380,7 @@ Date:    Sun Dec 12 20:38:46 2010 -0500
        recent commit.
 
  codegen/docextract_to_xml.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit db7ffa75b007074cb6b33b547c6d8140da300a3e
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3776,7 +12389,7 @@ Date:    Mon Dec 13 00:17:26 2010 +0100
     pygi-convert.sh: add more Gtk conversions and sort
 
  pygi-convert.sh |   50 ++++++++++++++++++++++++++------------------------
- 1 files changed, 26 insertions(+), 24 deletions(-)
+ 1 file changed, 26 insertions(+), 24 deletions(-)
 
 commit f4bfe73d0ccedf7f671d3acd6d9e262d5383b733
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3785,7 +12398,7 @@ Date:    Mon Dec 13 00:01:40 2010 +0100
     pygi-convert.sh: convert Atk
 
  pygi-convert.sh |   12 ++++++++++++
- 1 files changed, 12 insertions(+), 0 deletions(-)
+ 1 file changed, 12 insertions(+)
 
 commit e55ce3667eb1d352bf96f265bf018ffe8aea75f9
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3794,7 +12407,7 @@ Date:    Sun Dec 12 23:48:48 2010 +0100
     pygi-convert.sh: convert a few more Gio types
 
  pygi-convert.sh |    9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
+ 1 file changed, 9 insertions(+)
 
 commit acc9f84bc6e13d76c6516cefe393d4a4f868aa24
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3803,7 +12416,7 @@ Date:    Sun Dec 12 14:19:00 2010 +0100
     pygi-convert.sh: more GLib conversion
 
  pygi-convert.sh |    7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
+ 1 file changed, 7 insertions(+)
 
 commit c903390814bebdc62d530472f6f94feecc59b8b3
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3812,7 +12425,7 @@ Date:    Sun Dec 12 14:00:34 2010 +0100
     pygi-convert.sh: remove two cases handled by overrides
 
  pygi-convert.sh |    2 --
- 1 files changed, 0 insertions(+), 2 deletions(-)
+ 1 file changed, 2 deletions(-)
 
 commit d33c987e505ec8ddffa2b8cb5526f05b9b5f62be
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3822,7 +12435,7 @@ Date:    Sun Dec 12 13:38:56 2010 +0100
 
  gi/overrides/Gtk.py    |    7 +++++++
  tests/test_overrides.py |    7 +++++++
- 2 files changed, 14 insertions(+), 0 deletions(-)
+ 2 files changed, 14 insertions(+)
 
 commit 1c24bb089fcd69e3104ae72a0e7560a8c5a3f05b
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3831,7 +12444,7 @@ Date:    Sun Dec 12 12:32:39 2010 +0100
     pygi-convert.sh: Fix 'find' syntax
 
  pygi-convert.sh |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f0a1d6b6bb53d0fa2788d8b9027d737b0aef8dfc
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3840,7 +12453,7 @@ Date:    Sun Dec 12 12:29:38 2010 +0100
     pygi-convert.sh: start handling Gio and GLib
 
  pygi-convert.sh |    8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
+ 1 file changed, 8 insertions(+)
 
 commit 365bf3251af3498dc797a58cce071805451b49b1
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3849,7 +12462,7 @@ Date:    Sat Dec 11 23:05:31 2010 +0100
     pygi-convert.sh: convert Gdk.ScrollDirection.
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit bca603de0f217fb290189a0ea330f82961c46d5d
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3863,7 +12476,7 @@ Date:    Sat Dec 11 15:03:21 2010 +0100
 
  gi/overrides/Pango.py  |   13 +++++++++++++
  tests/test_overrides.py |    6 ++++++
- 2 files changed, 19 insertions(+), 0 deletions(-)
+ 2 files changed, 19 insertions(+)
 
 commit df233301802e3f7f9ce338cde015ca2a2fc648ab
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3874,7 +12487,7 @@ Date:    Sat Dec 11 14:18:53 2010 +0100
     It is now properly handled by an override.
 
  pygi-convert.sh |    1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
+ 1 file changed, 1 deletion(-)
 
 commit d8abcc9463542af9cd43d71849d0ad4c183b570b
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3896,7 +12509,7 @@ Date:    Sat Dec 4 22:13:28 2010 +0000
 
  gi/overrides/Gtk.py    |    7 +++++++
  tests/test_overrides.py |    9 +++++++++
- 2 files changed, 16 insertions(+), 0 deletions(-)
+ 2 files changed, 16 insertions(+)
 
 commit e76352dd83c8706e68ad57d00d185da9afea99c4
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -3906,7 +12519,7 @@ Date:    Thu Dec 9 13:23:10 2010 -0500
 
  gi/overrides/Gtk.py    |    8 ++++++++
  tests/test_overrides.py |    8 ++++++++
- 2 files changed, 16 insertions(+), 0 deletions(-)
+ 2 files changed, 16 insertions(+)
 
 commit de682b2d36c362140ab7d43c0743b01ec0865a74
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -3915,7 +12528,7 @@ Date:    Wed Dec 8 16:39:27 2010 -0500
     [gi] get rid of some debug prints and fix error messages
 
  gi/overrides/Gtk.py |   7 +++----
- 1 files changed, 3 insertions(+), 4 deletions(-)
+ 1 file changed, 3 insertions(+), 4 deletions(-)
 
 commit dbb16571803bf51f497768bf80944514f4290ee5
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3924,7 +12537,7 @@ Date:    Wed Dec 8 18:25:15 2010 +0100
     Fix demo for override changes.
 
  demos/gtk-demo/gtk-demo.py |   5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
+ 1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit 2adcd95762944a4e27123093d3c8d080e49be1ea
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3937,7 +12550,7 @@ Date:    Wed Dec 8 18:06:01 2010 +0100
  gi/overrides/Pango.py     |   40
  ++++++++++++++++++++++++++++++++++++++++
  tests/test_overrides.py    |   7 +++++++
- 4 files changed, 49 insertions(+), 1 deletions(-)
+ 4 files changed, 49 insertions(+), 1 deletion(-)
 
 commit 769da968c9187414d0420412d8fb8c833d12042a
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -3962,7 +12575,7 @@ Date:    Wed Dec 8 17:37:00 2010 +0100
     Fix usage of TreeIter api that is now an override.
 
  demos/gtk-demo/gtk-demo.py |   6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit d2cfd6e9250d40de7c715ac74e299deddf137683
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3975,7 +12588,7 @@ Date:    Wed Dec 8 17:34:54 2010 +0100
     reserved keyword.
 
  gi/overrides/Gtk.py |   4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit c0c684c9bb4e2bc08d7cb6ac246705e8a3b77656
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -3984,7 +12597,7 @@ Date:    Wed Dec 8 14:16:39 2010 +0100
     Fix typo when raising an exception
 
  gi/types.py |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 88c9a3ad49d9fcf779c3523672d8bf4767910301
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -3993,7 +12606,7 @@ Date:    Wed Dec 8 10:46:27 2010 +0100
     pygi-convert.sh: Added more conversions
 
  pygi-convert.sh |   14 ++++++++++++++
- 1 files changed, 14 insertions(+), 0 deletions(-)
+ 1 file changed, 14 insertions(+)
 
 commit 4d8d96326b2cac91e6d75e6601b92e202d1918ff
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4003,7 +12616,7 @@ Date:    Tue Dec 7 20:39:15 2010 +0100
 
  gi/overrides/Gtk.py    |    7 +++++++
  tests/test_overrides.py |    6 ++++++
- 2 files changed, 13 insertions(+), 0 deletions(-)
+ 2 files changed, 13 insertions(+)
 
 commit f4f7fb35af1b41598dc050f5df155a01c370a920
 Author: Dmitry Morozov <dmitry.a.morozov@yandex.ru>
@@ -4013,7 +12626,7 @@ Date:    Sat Dec 4 19:19:19 2010 +0600
 
  gi/overrides/Gtk.py    |    9 +++++++++
  tests/test_overrides.py |    6 +++++-
- 2 files changed, 14 insertions(+), 1 deletions(-)
+ 2 files changed, 14 insertions(+), 1 deletion(-)
 
 commit d2ad05d6d8d53b941e0ad33fcb200f1245a2d308
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4022,7 +12635,7 @@ Date:    Tue Dec 7 14:13:00 2010 +0100
     No need to import Gdk
 
  gi/overrides/Gtk.py |   1 -
- 1 files changed, 0 insertions(+), 1 deletions(-)
+ 1 file changed, 1 deletion(-)
 
 commit b6a40badf0b2b59e690ce818efb03c7c816b8a04
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4031,7 +12644,7 @@ Date:    Tue Dec 7 14:07:53 2010 +0100
     Remove semicolumns
 
  gi/overrides/Gtk.py |   7 +++----
- 1 files changed, 3 insertions(+), 4 deletions(-)
+ 1 file changed, 3 insertions(+), 4 deletions(-)
 
 commit cdc9c26553bf47ea488676e7bdc5f8ab0a2c906b
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4041,7 +12654,7 @@ Date:    Mon Dec 6 16:05:30 2010 -0500
     constructor
 
  gi/overrides/Gtk.py |   4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit cede81ad65db017e95543d8d35715751aa202fed
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4050,7 +12663,7 @@ Date:    Sun Dec 5 13:31:20 2010 +0100
     Fix cut&paste error in the Label override
 
  gi/overrides/Gtk.py |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 607c59b74ebbc1e39cb4121c870b689e1888c106
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4059,7 +12672,7 @@ Date:    Sat Dec 4 16:03:27 2010 +0100
     pygi-convert.sh: handle TextWindowType
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit dfeabe0b68938e27da2e65903983b5113dc422f1
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4069,7 +12682,7 @@ Date:    Sat Dec 4 15:49:15 2010 +0100
 
  gi/overrides/Gtk.py    |    7 +++++++
  tests/test_overrides.py |    4 ++++
- 2 files changed, 11 insertions(+), 0 deletions(-)
+ 2 files changed, 11 insertions(+)
 
 commit da4e045e5abbed2796cc4ed39df35a0dde2de31b
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4079,7 +12692,7 @@ Date:    Sat Dec 4 15:40:35 2010 +0100
 
  gi/overrides/Gtk.py    |    7 +++++++
  tests/test_overrides.py |   12 ++++++++++++
- 2 files changed, 19 insertions(+), 0 deletions(-)
+ 2 files changed, 19 insertions(+)
 
 commit 81452c23ab1befa59ff375692e582791432796a5
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4088,7 +12701,7 @@ Date:    Sat Dec 4 12:59:43 2010 +0100
     pygi-convert.sh: convert MovementStep
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 4d097eea94258eda0c328711491fd456cbd6741b
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4101,7 +12714,7 @@ Date:    Sat Dec 4 11:57:02 2010 +0100
     shuld just clean up the old stuff.
 
  gi/overrides/Gdk.py |  22 ++++++++++++++++------
- 1 files changed, 16 insertions(+), 6 deletions(-)
+ 1 file changed, 16 insertions(+), 6 deletions(-)
 
 commit cda317195566711d66190145b545e26ed7226172
 Author: Johan Dahlin <johan@gnome.org>
@@ -4158,7 +12771,7 @@ Date:    Fri Dec 3 23:39:50 2010 +0100
 
  gi/overrides/Gtk.py    |   10 ++++++++++
  tests/test_overrides.py |   29 +++++++++++++++++++++++++++++
- 2 files changed, 39 insertions(+), 0 deletions(-)
+ 2 files changed, 39 insertions(+)
 
 commit dacfe618fa244445c979f1a5efa80c1f9a5a4ae9
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4182,7 +12795,7 @@ Date:    Sun Nov 28 13:02:30 2010 +0100
 
  gi/overrides/Gtk.py    |    6 ++++++
  tests/test_overrides.py |   11 +++++++++++
- 2 files changed, 17 insertions(+), 0 deletions(-)
+ 2 files changed, 17 insertions(+)
 
 commit 94e8befc935d4a6c7f766e34195e10fc3fb3b93a
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4196,7 +12809,7 @@ Date:    Tue Nov 30 16:57:05 2010 -0500
 
  gi/types.py |  55
  +++++++++++++++++++++++++++++++++++++++++++++----------
- 1 files changed, 45 insertions(+), 10 deletions(-)
+ 1 file changed, 45 insertions(+), 10 deletions(-)
 
 commit 9c5aee4f06f92457f9ae987656c0c469f76d0ee8
 Author: Jonathan Matthew <jonathan@d14n.org>
@@ -4210,7 +12823,7 @@ Date:    Thu Jul 22 23:19:51 2010 +1000
 
  gi/gimodule.c   |  130
  +++++++++++++++++++++++++++++++++++++++---------------
- tests/test_gi.py |   37 +++++++++++++++
+ tests/test_gi.py |   37 ++++++++++++++++
  2 files changed, 131 insertions(+), 36 deletions(-)
 
 commit 78358e1ab54d02317f397276adee03ecb2187588
@@ -4221,7 +12834,7 @@ Date:    Mon Nov 29 18:29:57 2010 -0500
 
  tests/test_everything.py |   67
  ++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 67 insertions(+), 0 deletions(-)
+ 1 file changed, 67 insertions(+)
 
 commit 792e679c06df4357843fd310c7953a931172fc99
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4256,7 +12869,7 @@ Date:    Mon Nov 29 15:11:46 2010 -0500
     add test for inout argument count
 
  tests/test_gi.py |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 5de88b4bcffdafcf8c7c20033cdf95dc690199ce
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4282,7 +12895,7 @@ Date:    Sun Nov 21 12:16:53 2010 +0100
  ++++++++++++++++++++++++++++++++++++++++++++++
  gi/pygi-info.c                  |    5 ++++
  tests/test_everything.py |    5 ++++
- 3 files changed, 70 insertions(+), 0 deletions(-)
+ 3 files changed, 70 insertions(+)
 
 commit fd2c0288eb67823fca1265348a27a9f8f147ae50
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4291,7 +12904,7 @@ Date:    Sat Nov 27 23:01:42 2010 +0100
     pygi-convert.sh: gtk.accel_map -> Gtk.AccelMap._
 
  pygi-convert.sh |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 13d0ff1d9c129bb458e234b630ebe920b50e2e0f
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4300,7 +12913,7 @@ Date:    Sat Nov 27 22:34:13 2010 +0100
     pygi-convert.sh: handle "from gtk import gdk"
 
  pygi-convert.sh |    2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
 
 commit 63a97634031c3d159ad77fdaa1f6341d7656eb07
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4309,7 +12922,7 @@ Date:    Sat Nov 27 22:23:24 2010 +0100
     pygi-convert.sh: add some Pango special cases
 
  pygi-convert.sh |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit 57e42bf4230d1aa20a47e3b0df2e509602333892
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4321,7 +12934,7 @@ Date:    Sat Nov 27 19:51:38 2010 +0100
 
  gi/overrides/Gtk.py    |    9 +++++++++
  tests/test_overrides.py |   17 +++++++++++++++++
- 2 files changed, 26 insertions(+), 0 deletions(-)
+ 2 files changed, 26 insertions(+)
 
 commit 828b698e47ee819a60d24a772a3cc51ff9cd6601
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4331,7 +12944,7 @@ Date:    Sat Nov 27 19:32:48 2010 +0100
 
  gi/overrides/Gtk.py    |    3 +++
  tests/test_overrides.py |   11 ++++++++++-
- 2 files changed, 13 insertions(+), 1 deletions(-)
+ 2 files changed, 13 insertions(+), 1 deletion(-)
 
 commit bf55dc862755a57bb1b998702d284fc460e88a30
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4343,7 +12956,7 @@ Date:    Sat Nov 27 16:46:40 2010 +0100
 
  gi/overrides/Gtk.py    |    3 +++
  tests/test_overrides.py |    3 +++
- 2 files changed, 6 insertions(+), 0 deletions(-)
+ 2 files changed, 6 insertions(+)
 
 commit 94c0e2f71636d055bdebe3ec378f3d339eea66c9
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4365,7 +12978,7 @@ Date:    Mon Nov 22 18:35:09 2010 -0500
     to be set
 
  gi/overrides/Gtk.py |   4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 226777cdb70fc72d206664ffd8b6737f7239d23f
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4375,7 +12988,7 @@ Date:    Mon Nov 22 18:32:28 2010 -0500
 
  gi/overrides/Gtk.py    |    3 +++
  tests/test_overrides.py |    2 ++
- 2 files changed, 5 insertions(+), 0 deletions(-)
+ 2 files changed, 5 insertions(+)
 
 commit d0049fa9982d13b3553b05569fb0a227e48b6647
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4399,7 +13012,7 @@ Date:    Sun Nov 21 23:03:25 2010 +0100
 
  gi/overrides/Gtk.py    |   15 +++++++++++++++
  tests/test_overrides.py |    6 ++++++
- 2 files changed, 21 insertions(+), 0 deletions(-)
+ 2 files changed, 21 insertions(+)
 
 commit a5e806ad8a8b279402ff7adb1c1cdc04f9f3da76
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -4410,7 +13023,7 @@ Date:    Sun Nov 21 21:57:40 2010 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=635464
 
  gi/overrides/Gtk.py |   6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
+ 1 file changed, 6 insertions(+)
 
 commit 1c537bc67107948c92b51ba6ba749747e84263e2
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4426,8 +13039,8 @@ Date:    Mon Nov 22 15:04:00 2010 -0500
       should be accepted by pycairo for any API that takes a rect
 
  gi/pygi-foreign-cairo.c |   85
- +++++++++++++++++++++++++++++++++++-----------
- 1 files changed, 64 insertions(+), 21 deletions(-)
+ +++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 64 insertions(+), 21 deletions(-)
 
 commit 4cede8f12321bed6c3b71813a62c01b61853ba69
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4439,7 +13052,7 @@ Date:    Fri Nov 19 16:46:53 2010 -0500
 
  gi/overrides/Gdk.py |   7 +++++++
  gi/overrides/Gtk.py |  25 +++++++++++++++++++++++++
- 2 files changed, 32 insertions(+), 0 deletions(-)
+ 2 files changed, 32 insertions(+)
 
 commit 3fd51bb903724b752f72f49c7cb35652b819791d
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4453,8 +13066,8 @@ Date:    Fri Nov 19 16:44:32 2010 -0500
     https://bugzilla.gnome.org/show_bug.cgi?id=627367
 
  gi/pygi-argument.c |  65
- ++++++++++++++++++++++++++++++++++++++++++---------
- tests/test_gi.py   |   6 +++-
+ ++++++++++++++++++++++++++++++++++++++++++----------
+ tests/test_gi.py   |   6 +++--
  2 files changed, 57 insertions(+), 14 deletions(-)
 
 commit 7ddb0f7fd8b1b9e8f691c6d42a83cb16c6561d26
@@ -4464,7 +13077,7 @@ Date:    Fri Nov 19 18:19:38 2010 +0100
     pygi-convert.sh: Add pynotify -> Notify
 
  pygi-convert.sh |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit bf03d4db03a7739ac16ddc4e614441557ede554d
 Author: Martin Pitt <martin.pitt@ubuntu.com>
@@ -4484,7 +13097,7 @@ Date:    Fri Nov 19 09:08:07 2010 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=635244
 
  pygi-convert.sh |   25 +++++--------------------
- 1 files changed, 5 insertions(+), 20 deletions(-)
+ 1 file changed, 5 insertions(+), 20 deletions(-)
 
 commit 18f5d229d3a4b9520c1c456be2635c8e36015c12
 Author: Martin Pitt <martin.pitt@ubuntu.com>
@@ -4495,7 +13108,7 @@ Date:    Fri Nov 19 09:00:35 2010 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=635244
 
  pygi-convert.sh |    2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
 
 commit ef74273c2043944708515e59a654ebe4944b46ff
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4508,7 +13121,7 @@ Date:    Thu Nov 18 13:54:48 2010 -0500
       since they reside in an unordered hash internally
 
  tests/test_overrides.py |    9 +++++----
- 1 files changed, 5 insertions(+), 4 deletions(-)
+ 1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit 2c25886bf6710568d0646f82dce4770faa44c40d
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4537,7 +13150,7 @@ Date:    Fri Nov 12 10:20:32 2010 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=634671
 
  gi/pygi-invoke.c |   25 ++++++++++++++-----------
- 1 files changed, 14 insertions(+), 11 deletions(-)
+ 1 file changed, 14 insertions(+), 11 deletions(-)
 
 commit d9bab3b185bb59bd29e3c3f6225f3636f58ec45e
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4547,7 +13160,7 @@ Date:    Wed Nov 10 14:11:56 2010 -0500
 
  NEWS |   73
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 73 insertions(+), 0 deletions(-)
+ 1 file changed, 73 insertions(+)
 
 commit 1338a95339e21cc02b9df6d10166996c8b97a6bf
 Author: Jonathan Matthew <jonathan@d14n.org>
@@ -4558,7 +13171,7 @@ Date:    Tue Sep 28 13:44:13 2010 +1000
     https://bugzilla.gnome.org/show_bug.cgi?id=625033
 
  gi/pygi-info.c |   29 +++++++++++++++++++++++++++++
- 1 files changed, 29 insertions(+), 0 deletions(-)
+ 1 file changed, 29 insertions(+)
 
 commit 9ce3edf69824935aeca9e676eaa9782786c22a97
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4574,7 +13187,7 @@ Date:    Tue Nov 9 22:57:41 2010 -0500
       without the forign structs
 
  gi/pygi-foreign-cairo.c |    4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
+ 1 file changed, 4 insertions(+)
 
 commit 68b8211d8b014cf26ca7e9ab751fb3f61f228290
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4600,7 +13213,7 @@ Date:    Mon Oct 25 18:28:36 2010 -0400
 
  gi/pygi-foreign-cairo.c |   57
  +++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-invoke.c       |   15 ++++++++++-
+ gi/pygi-invoke.c       |   15 +++++++++++--
  2 files changed, 70 insertions(+), 2 deletions(-)
 
 commit ce8b948310220288e9eef904eef4ec8f4e24a376
@@ -4611,7 +13224,7 @@ Date:    Tue Nov 9 22:11:51 2010 -0500
 
  gi/overrides/Gtk.py    |   17 +++++++++++++++++
  tests/test_overrides.py |   12 ++++++++++++
- 2 files changed, 29 insertions(+), 0 deletions(-)
+ 2 files changed, 29 insertions(+)
 
 commit 87dbc716f26cefc0e9427c3d6e8befe8eabd3d1e
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4630,7 +13243,7 @@ Date:    Tue Nov 9 21:12:54 2010 -0500
 
  gi/pygi-info.c |   16 ++++++++++++++++
  gi/types.py   |    2 +-
- 2 files changed, 17 insertions(+), 1 deletions(-)
+ 2 files changed, 17 insertions(+), 1 deletion(-)
 
 commit 540e9f1f349ba3625e28b7673c92210eb8974098
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4644,7 +13257,7 @@ Date:    Tue Nov 9 12:17:05 2010 -0500
     https://bugzilla.gnome.org/show_bug.cgi?id=634423
 
  gi/overrides/Gtk.py    |   80
- ++++++++++++++++++++++++++++++++++++----------
+ ++++++++++++++++++++++++++++++++++++-----------
  tests/test_overrides.py |   53 ++++++++++++++++++++++++++++++-
  2 files changed, 114 insertions(+), 19 deletions(-)
 
@@ -4656,7 +13269,7 @@ Date:    Fri Nov 5 13:56:12 2010 -0400
     behavior
 
  gi/overrides/Gtk.py |  14 ++++++++++++--
- 1 files changed, 12 insertions(+), 2 deletions(-)
+ 1 file changed, 12 insertions(+), 2 deletions(-)
 
 commit 89c104d17d79d7b935cd76101cba19d49390f7be
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4685,7 +13298,7 @@ Date:    Thu Nov 4 12:00:14 2010 -0400
  gi/overrides/Gtk.py               |    2 +-
  gi/overrides/__init__.py          |   43
  ++++++++++++++++++++++++++++++++++++
- gi/types.py                       |    8 ------
+ gi/types.py                       |    8 -------
  tests/test_overrides.py           |   27 ++++++++++++++++++++++
  7 files changed, 84 insertions(+), 12 deletions(-)
 
@@ -4703,7 +13316,7 @@ Date:    Thu Nov 4 11:16:43 2010 +0100
     setup.py: ease maintenance burden for tests installation
 
  setup.py |   23 +++--------------------
- 1 files changed, 3 insertions(+), 20 deletions(-)
+ 1 file changed, 3 insertions(+), 20 deletions(-)
 
 commit cdacaa9572893796e0f3aa3730d0191911cb29ee
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4713,7 +13326,7 @@ Date:    Wed Nov 3 09:51:09 2010 -0400
 
  gi/overrides/Gtk.py |  79
  ++++++++++++++++++++++++++-------------------------
- 1 files changed, 40 insertions(+), 39 deletions(-)
+ 1 file changed, 40 insertions(+), 39 deletions(-)
 
 commit 3d5955767d81f45e796ab2af0707533375681774
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4725,7 +13338,7 @@ Date:    Wed Nov 3 09:38:56 2010 +0100
 
  tests/runtests-windows.py |   47
  +++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 47 insertions(+), 0 deletions(-)
+ 1 file changed, 47 insertions(+)
 
 commit 8cb3f2e78161639c568110aad6a807dcf59f3ae8
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4738,7 +13351,7 @@ Date:    Wed Nov 3 09:35:52 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  pygobject_postinstall.py |   26 +++-----------------------
- 1 files changed, 3 insertions(+), 23 deletions(-)
+ 1 file changed, 3 insertions(+), 23 deletions(-)
 
 commit 63167574df53eb481cc11b6a097b2bfe7d5747f5
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4749,7 +13362,7 @@ Date:    Wed Nov 3 09:34:38 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  pygobject_postinstall.py |   35 +----------------------------------
- 1 files changed, 1 insertions(+), 34 deletions(-)
+ 1 file changed, 1 insertion(+), 34 deletions(-)
 
 commit f7b12611f94fd8c27fb67a03746c10149ce6e0ef
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4760,7 +13373,7 @@ Date:    Wed Nov 3 09:31:14 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  setup.py |   56 ++++++++++++++++++++++++++------------------------------
- 1 files changed, 26 insertions(+), 30 deletions(-)
+ 1 file changed, 26 insertions(+), 30 deletions(-)
 
 commit a31b4196fbb4638a245430f2fdeafd7534b1d84d
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4772,7 +13385,7 @@ Date:    Wed Nov 3 09:28:36 2010 +0100
 
  setup.py |   61
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 61 insertions(+), 0 deletions(-)
+ 1 file changed, 61 insertions(+)
 
 commit 7c3b0c20b83c05833d73c240690dce3daf43fde8
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4783,7 +13396,7 @@ Date:    Wed Nov 3 09:26:59 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  setup.py |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit 78533d851ee1314686f18cfa793613a9cf7d6686
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4794,7 +13407,7 @@ Date:    Wed Nov 3 09:25:56 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  setup.py |   25 +++++++++++++++++++++++++
- 1 files changed, 25 insertions(+), 0 deletions(-)
+ 1 file changed, 25 insertions(+)
 
 commit ad40688df533dda0b1f7be8ea37c542b8796a26b
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4805,7 +13418,7 @@ Date:    Wed Nov 3 09:24:45 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  setup.py |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit 21ddfc66e4e18c002a33154eb4ab81170ed71ecc
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4816,7 +13429,7 @@ Date:    Wed Nov 3 09:23:05 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  setup.py |   37 ++++++++++++++++++++-----------------
- 1 files changed, 20 insertions(+), 17 deletions(-)
+ 1 file changed, 20 insertions(+), 17 deletions(-)
 
 commit 7d353d04892de67265bf693f591f37fd393de639
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4828,7 +13441,7 @@ Date:    Wed Nov 3 09:18:11 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  setup.py |   18 ++++++++++--------
- 1 files changed, 10 insertions(+), 8 deletions(-)
+ 1 file changed, 10 insertions(+), 8 deletions(-)
 
 commit 286364ed39953e942e24d5911519bcac2f90975a
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4840,7 +13453,7 @@ Date:    Wed Nov 3 09:05:59 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  setup.py |   29 +++++++++--------------------
- 1 files changed, 9 insertions(+), 20 deletions(-)
+ 1 file changed, 9 insertions(+), 20 deletions(-)
 
 commit 3f70f92904c123e6cc40929c0affd3f75d061828
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4851,7 +13464,7 @@ Date:    Wed Nov 3 09:02:30 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  setup.py |   31 ++++++++++++++++++++++---------
- 1 files changed, 22 insertions(+), 9 deletions(-)
+ 1 file changed, 22 insertions(+), 9 deletions(-)
 
 commit 9aa54b65f729c0f3b0e96ab7ff797f87dad6a455
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4862,7 +13475,7 @@ Date:    Wed Nov 3 08:58:00 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  README.win32 |   13 +++++--------
- 1 files changed, 5 insertions(+), 8 deletions(-)
+ 1 file changed, 5 insertions(+), 8 deletions(-)
 
 commit 5a33105f690ba84b2e4bb15d73d3467e92fa06e0
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4874,7 +13487,7 @@ Date:    Wed Nov 3 07:59:18 2010 +0100
 
  dsextras.py | 148
  +++++++++++++++++++++++++++++++++++++----------------------
- 1 files changed, 93 insertions(+), 55 deletions(-)
+ 1 file changed, 93 insertions(+), 55 deletions(-)
 
 commit d03503d0412d173acb383926ab3c2d640dad3e3f
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4885,7 +13498,7 @@ Date:    Wed Nov 3 07:00:40 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  dsextras.py |   4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8c62968e9f8467e24870b8c4f61112676eef4630
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4897,7 +13510,7 @@ Date:    Wed Nov 3 06:56:32 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  dsextras.py |  15 ++++++---------
- 1 files changed, 6 insertions(+), 9 deletions(-)
+ 1 file changed, 6 insertions(+), 9 deletions(-)
 
 commit b98277afc24886bbda400e0ad360992bffa77b7c
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4908,7 +13521,7 @@ Date:    Wed Nov 3 06:49:48 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  dsextras.py |  10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
+ 1 file changed, 10 insertions(+)
 
 commit a565558652ebc3fa49d7aea40d399b06bbe376c4
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4920,7 +13533,7 @@ Date:    Wed Nov 3 06:45:05 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  dsextras.py |   4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 4b1ff0c7f9953f925d2178069263cca67ca7db02
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4931,7 +13544,7 @@ Date:    Wed Nov 3 06:44:21 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  dsextras.py |  25 +++++++++++++------------
- 1 files changed, 13 insertions(+), 12 deletions(-)
+ 1 file changed, 13 insertions(+), 12 deletions(-)
 
 commit 819a21cea831c3892040390e9446b78a91d1cbbe
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4943,7 +13556,7 @@ Date:    Wed Nov 3 06:28:04 2010 +0100
 
  dsextras.py |  58
  +++++++++++++++++++++++++++++++---------------------------
- 1 files changed, 31 insertions(+), 27 deletions(-)
+ 1 file changed, 31 insertions(+), 27 deletions(-)
 
 commit d20edbfdde2819f8d4fee8cb3170c126fcd31d5f
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -4955,7 +13568,7 @@ Date:    Wed Nov 3 06:16:21 2010 +0100
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
  .gitignore |   7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
+ 1 file changed, 7 insertions(+)
 
 commit 268d6ed2b0b1d266c612da4453b6117d9e14437e
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -4964,7 +13577,7 @@ Date:    Thu Oct 28 15:32:28 2010 -0400
     [gi] add tests for calling dir on a dynamic module
 
  tests/test_gi.py |   24 ++++++++++++++++++++++++
- 1 files changed, 24 insertions(+), 0 deletions(-)
+ 1 file changed, 24 insertions(+)
 
 commit f6386a6e0d225c83cdbe1add4c4d3ea51d3ec2f0
 Author: Deepankar Sharma <deepankar.sharma@gmail.com>
@@ -4975,7 +13588,7 @@ Date:    Wed Oct 27 18:28:11 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=625093
 
  gi/module.py |    8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
+ 1 file changed, 8 insertions(+)
 
 commit 28ed01c34c503cfb4f14fe7af7912060ca70aba6
 Author: Simón Pena <spenap@gmail.com>
@@ -4991,7 +13604,7 @@ Date:    Mon Sep 20 23:10:14 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=629552
 
  gobject/pygpointer.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1731f89e4b5a20c33976963e12a1f39a21d33fde
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5004,7 +13617,7 @@ Date:    Thu Oct 28 14:21:12 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=629042
 
  gi/pygi-invoke.c |   10 +++++++++-
- 1 files changed, 9 insertions(+), 1 deletions(-)
+ 1 file changed, 9 insertions(+), 1 deletion(-)
 
 commit 783e2e351ec7470bda6b441e51f387dd61543c4b
 Author: José Aliste <jaliste@src.gnome.org>
@@ -5015,8 +13628,8 @@ Date:    Fri Oct 15 14:30:10 2010 -0300
     https://bugzilla.gnome.org/show_bug.cgi?id=632185
 
  gi/pygi-info.c |   91
- +++++++++++++++++++++++++++++++++++++++++++++++--------
- gi/pygi-info.h |    7 ++++
+ +++++++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-info.h |    7 +++++
  2 files changed, 84 insertions(+), 14 deletions(-)
 
 commit 2ca897273f52ae38f5e06e72c773a048e199eee5
@@ -5026,7 +13639,7 @@ Date:    Thu Oct 28 13:49:15 2010 -0400
     include Python.h so that PY_VERSION_HEX gets defined
 
  gi/pygi-foreign-cairo.c |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 8b28b1d713df33931e255600ab98feda37a8e02a
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5036,7 +13649,7 @@ Date:    Thu Oct 28 13:47:34 2010 -0400
     python 2.x
 
  gi/overrides/Gtk.py |   9 +++++++--
- 1 files changed, 7 insertions(+), 2 deletions(-)
+ 1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 3c09710d2f68af9c16ce39fd25656147656a486a
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5045,7 +13658,7 @@ Date:    Sat Oct 23 14:24:24 2010 +0200
     Override Gtk.Widget.translate_coordinates to not return success value
 
  gi/overrides/Gtk.py |  11 +++++++++++
- 1 files changed, 11 insertions(+), 0 deletions(-)
+ 1 file changed, 11 insertions(+)
 
 commit 9d4443b3de8c327d8645ddde0a7a6dc5b977d7b4
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5055,7 +13668,7 @@ Date:    Sat Oct 23 14:22:36 2010 +0200
     value
 
  gi/overrides/Gtk.py |   5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
+ 1 file changed, 5 insertions(+)
 
 commit 6679d39ace06294e98f9d6fc911ed6fb27656010
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5065,7 +13678,7 @@ Date:    Sat Oct 23 14:21:36 2010 +0200
     not return success value
 
  gi/overrides/Gtk.py |  15 +++++++++++++++
- 1 files changed, 15 insertions(+), 0 deletions(-)
+ 1 file changed, 15 insertions(+)
 
 commit 80b1b266fa68a5c67106871502017166628f71e4
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5075,7 +13688,7 @@ Date:    Sat Oct 23 14:20:38 2010 +0200
     value
 
  gi/overrides/Gtk.py |  12 ++++++++++++
- 1 files changed, 12 insertions(+), 0 deletions(-)
+ 1 file changed, 12 insertions(+)
 
 commit 17cd0fb3a2d2ca0c6109c41727ba0b8c42217cd5
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5085,7 +13698,7 @@ Date:    Sat Oct 23 14:19:20 2010 +0200
     return success value
 
  gi/overrides/Gtk.py |  15 +++++++++++++++
- 1 files changed, 15 insertions(+), 0 deletions(-)
+ 1 file changed, 15 insertions(+)
 
 commit 95c86fa31da3d2fe84db0e2b5bc2a6dc896c9223
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5095,7 +13708,7 @@ Date:    Sat Oct 23 14:18:09 2010 +0200
     value
 
  gi/overrides/Gtk.py |   5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
+ 1 file changed, 5 insertions(+)
 
 commit da6d87460b9392c29d025a7eed9249fb604204bc
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5105,7 +13718,7 @@ Date:    Sat Oct 23 14:17:04 2010 +0200
     value
 
  gi/overrides/Gtk.py |  10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
+ 1 file changed, 10 insertions(+)
 
 commit 0ed2e8772bdc405b0d0c7e0b2803e0e141abcb6a
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5114,7 +13727,7 @@ Date:    Sat Oct 23 14:16:21 2010 +0200
     Override Gtk.IMContext.get_surrounding to not return success value
 
  gi/overrides/Gtk.py |  10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
+ 1 file changed, 10 insertions(+)
 
 commit b85b445f15421209c0b4adf676d7c8218d6437c5
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5124,7 +13737,7 @@ Date:    Sat Oct 23 14:15:24 2010 +0200
     of Gtk.IconView to not return success value
 
  gi/overrides/Gtk.py |  19 +++++++++++++++++++
- 1 files changed, 19 insertions(+), 0 deletions(-)
+ 1 file changed, 19 insertions(+)
 
 commit 684d716192d58c972083e579e909bcd97f8a5025
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5133,7 +13746,7 @@ Date:    Sat Oct 23 14:13:47 2010 +0200
     Override Gtk.Container.get_focus_chain to not return success value
 
  gi/overrides/Gtk.py |  10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
+ 1 file changed, 10 insertions(+)
 
 commit 8ec830c57fafbfe50d9619c6caba3cb95a00d688
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5142,7 +13755,7 @@ Date:    Sat Oct 23 14:12:44 2010 +0200
     Override Gtk.ComboBox.get_active_iter to not return success value
 
  gi/overrides/Gtk.py |  10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
+ 1 file changed, 10 insertions(+)
 
 commit b483852904468722230903989e3451c7c6a24c0f
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5161,14 +13774,14 @@ Date:  Tue Oct 12 12:18:33 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622987
 
- gi/pygi-argument.c         |   17 +++++---------
- gobject/gobjectmodule.c     |   4 +-
+ gi/pygi-argument.c         |   17 ++++++---------
+ gobject/gobjectmodule.c     |   4 ++--
  gobject/pygobject-private.h |   1 +
- gobject/pygobject.h        |    2 +
- gobject/pygtype.c          |   37 ++++++++++++++++++++++++++++---
+ gobject/pygobject.h        |    2 ++
+ gobject/pygtype.c          |   37 ++++++++++++++++++++++++++++----
  tests/test_gi.py           |    1 -
  tests/test_overrides.py     |  50
- +++++++++++++++++++++++++++++++++++++++---
+ +++++++++++++++++++++++++++++++++++++++----
  7 files changed, 90 insertions(+), 22 deletions(-)
 
 commit 8c87d622dcc6d76a981edfc5818fe67bb2e114e2
@@ -5178,7 +13791,7 @@ Date:    Fri Oct 22 13:28:31 2010 +1300
     Shortcut removal is not needed on post-uninstall
 
  pygobject_postinstall.py |   14 ++------------
- 1 files changed, 2 insertions(+), 12 deletions(-)
+ 1 file changed, 2 insertions(+), 12 deletions(-)
 
 commit a3ed97fe6f80548801739fe6b72771b9eb6d93f7
 Author: John Stowers <john.stowers@gmail.com>
@@ -5187,7 +13800,7 @@ Date:    Thu Oct 21 13:25:35 2010 +1300
     Disable shortcut creation in windows installer
 
  pygobject_postinstall.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a3d6212b0abccef58f05d454c091936776413d98
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5229,7 +13842,7 @@ Date:    Thu Oct 7 19:37:53 2010 +0200
 
  gi/overrides/Gtk.py    |  195
  +++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py |  160 +++++++++++++++++++++++++++++++++++++--
+ tests/test_overrides.py |  160 ++++++++++++++++++++++++++++++++++++--
  2 files changed, 349 insertions(+), 6 deletions(-)
 
 commit acfcc29af727fb67d0dfbbcc7cc14963ef21f1ea
@@ -5239,7 +13852,7 @@ Date:    Sat Oct 16 18:59:25 2010 +1300
     Correctly build GIO on windows
 
  setup.py |    6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 33b59fd7437009b6c3ed43412e171d2cc91ee317
 Author: John Stowers <john.stowers@gmail.com>
@@ -5248,7 +13861,7 @@ Date:    Sat Oct 16 18:17:28 2010 +1300
     Require Python >= 2.6.0 for Windows build
 
  setup.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 544e0e4de4f5f97b0584eaf72ae8a081eca28ab6
 Author: John Stowers <john.stowers@gmail.com>
@@ -5257,7 +13870,7 @@ Date:    Sat Oct 16 17:41:01 2010 +1300
     Fix depreciation warning in dsextras.py
 
  dsextras.py |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 239ff961778e4e1587404d8a70dfbe8630ab0623
 Author: John Stowers <john.stowers@gmail.com>
@@ -5277,7 +13890,7 @@ Date:    Sat Oct 16 17:08:11 2010 +1300
     Support for GCC4 in Windows distutils build - bug 626548
 
  dsextras.py |   3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 27367c8dc3a3a31fdd778505b319cd3f4afb9e27
 Author: John Stowers <john.stowers@gmail.com>
@@ -5286,7 +13899,7 @@ Date:    Fri Oct 15 09:39:02 2010 +1300
     Remove obsolete comments in dsextras.py
 
  dsextras.py |  11 ++---------
- 1 files changed, 2 insertions(+), 9 deletions(-)
+ 1 file changed, 2 insertions(+), 9 deletions(-)
 
 commit b5f383f854fb8f72677828b029589320c59006d1
 Author: John Stowers <john.stowers@gmail.com>
@@ -5297,7 +13910,7 @@ Date:    Fri Oct 15 09:21:03 2010 +1300
        * Fixes bug 631962
 
  dsextras.py |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e1981da105b574e273ae6500fc6d25caf6af6aae
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5348,7 +13961,7 @@ Date:    Tue Sep 28 12:44:42 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=630807
 
  gi/module.py |    2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
 
 commit 28f9366c9cb382801bad080864f667c867daa3c7
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
@@ -5359,7 +13972,7 @@ Date:    Sat Oct 9 17:40:40 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=631765
 
  gi/overrides/Gtk.py |  12 ++++++++++++
- 1 files changed, 12 insertions(+), 0 deletions(-)
+ 1 file changed, 12 insertions(+)
 
 commit f01a7d9e8222663ce52100e061033f2745a5e7af
 Author: Vincent Untz <vuntz@gnome.org>
@@ -5370,7 +13983,7 @@ Date:    Thu Oct 7 09:42:24 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=631548
 
  gi/overrides/Gtk.py |  36 ++++++++++++++++++++++--------------
- 1 files changed, 22 insertions(+), 14 deletions(-)
+ 1 file changed, 22 insertions(+), 14 deletions(-)
 
 commit 1e1357f5fa1a034b0b707040d664ac46be6e23f7
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5403,7 +14016,7 @@ Date:    Mon Oct 4 12:43:31 2010 -0400
     * see https://bugzilla.gnome.org/show_bug.cgi?id=631158
 
  gi/pygi.h |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f25e763d53e5cdd4de08e90b04aea4b4c4720ac0
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5434,7 +14047,7 @@ Date:    Tue Sep 28 15:28:16 2010 -0400
     string handling
 
  glib/glibmodule.c |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9562842907a9d94f6adae2c1bb20d6b1f189abda
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5466,7 +14079,7 @@ Date:    Mon Sep 27 12:03:10 2010 -0400
 
  NEWS |   93
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 93 insertions(+), 0 deletions(-)
+ 1 file changed, 93 insertions(+)
 
 commit 7072d56b6cba13da97a052c75d1ae0c2cc417fd1
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -5475,7 +14088,7 @@ Date:    Sun Sep 26 08:37:31 2010 +0200
     Pre-release version bump 2.26.0
 
  configure.ac |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit a549f429d2ced7a78d5baa5e2f28f6750b4788f2
 Author: John Stowers <john.stowers@gmail.com>
@@ -5488,7 +14101,7 @@ Date:    Fri Sep 24 22:44:03 2010 +1200
 
  glib/glibmodule.c |   68
  +++++++++++++++++++++++++++++++++++++++--------------
- 1 files changed, 50 insertions(+), 18 deletions(-)
+ 1 file changed, 50 insertions(+), 18 deletions(-)
 
 commit 328aca600714bdca89dfdb531c222ee561ede27e
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5497,7 +14110,7 @@ Date:    Fri Sep 24 12:16:22 2010 -0400
     fixed make check and make dist
 
  tests/Makefile.am |   31 ++++++++++++++++++-------------
- 1 files changed, 18 insertions(+), 13 deletions(-)
+ 1 file changed, 18 insertions(+), 13 deletions(-)
 
 commit 27023fd56148dd17b5576c1e81e0fe851d9b8727
 Author: John Stowers <john.stowers@gmail.com>
@@ -5506,7 +14119,7 @@ Date:    Fri Sep 24 21:20:53 2010 +1200
     Disable GI tests when introspection disabled
 
  tests/Makefile.am |   2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
 
 commit 7fe831081cdd2e26f5d948326b9f89ea0694e752
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -5557,7 +14170,7 @@ Date:    Tue Sep 21 17:52:14 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=630271
 
  gi/pygi-invoke.c        |   83
- ++++++++++++++++++++-------------------------
+ +++++++++++++++++++++-------------------------
  tests/test_everything.py |    4 ++-
  2 files changed, 40 insertions(+), 47 deletions(-)
 
@@ -5571,10 +14184,10 @@ Date:  Mon Sep 13 16:36:47 2010 +0200
 
  gi/gimodule.c             |   20 +++++++
  gi/overrides/GLib.py      |  131
- +++++++++++++++++++++++++++++++++++++++++--
+ +++++++++++++++++++++++++++++++++++++++++---
  gi/pygi-foreign-gvariant.c |   2 +-
- tests/test_everything.py   |  16 -----
- tests/test_overrides.py    |  25 ++++++++
+ tests/test_everything.py   |  16 ------
+ tests/test_overrides.py    |  25 +++++++++
  5 files changed, 170 insertions(+), 24 deletions(-)
 
 commit fc45abdd9b55ab63556798ab0f04715be79dba08
@@ -5586,7 +14199,7 @@ Date:    Thu Sep 23 10:49:36 2010 -0400
     * https://bugzilla.gnome.org/show_bug.cgi?id=627449
 
  glib/option.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 4ed100f3183c6325dd04461484e877bb7d4131b1
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5617,7 +14230,7 @@ Date:    Fri Sep 17 15:50:47 2010 +0200
     let's fix the tests.
 
  tests/test_gi.py |   14 +++++++-------
- 1 files changed, 7 insertions(+), 7 deletions(-)
+ 1 file changed, 7 insertions(+), 7 deletions(-)
 
 commit 2da8da589644d6125101210712defb1272a8abb1
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5643,7 +14256,7 @@ Date:    Thu Sep 9 13:55:17 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=629198
 
  gobject/pygtype.c |   9 ---------
- 1 files changed, 0 insertions(+), 9 deletions(-)
+ 1 file changed, 9 deletions(-)
 
 commit 98f54f9d33996baeaa8c8c1240310f5396d03a1d
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5672,7 +14285,7 @@ Date:    Tue Sep 14 14:10:49 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
  gi/pygi-argument.c |  182
- +++++++++++++++++++++++++++------------------------
+ +++++++++++++++++++++++++++-------------------------
  gi/pygi-argument.h |   2 +
  gi/pygi-invoke.c   |  14 ++++
  3 files changed, 112 insertions(+), 86 deletions(-)
@@ -5686,7 +14299,7 @@ Date:    Wed Sep 15 10:26:20 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
  gi/pygi-foreign-cairo.c |    6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
+ 1 file changed, 6 insertions(+)
 
 commit b855562e5c0019cd7e4982fe00c467ede9e3926d
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5702,7 +14315,7 @@ Date:    Thu Sep 9 22:16:58 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
  gi/pygi-argument.c |  10 +++-------
- 1 files changed, 3 insertions(+), 7 deletions(-)
+ 1 file changed, 3 insertions(+), 7 deletions(-)
 
 commit 0e72e28c6c5502c7db5103cf1299c9f0e6689fdd
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5715,7 +14328,7 @@ Date:    Thu Sep 9 18:44:11 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
  gi/pygi-argument.c |  20 ++++++++++++--------
- 1 files changed, 12 insertions(+), 8 deletions(-)
+ 1 file changed, 12 insertions(+), 8 deletions(-)
 
 commit d5666d99a1c0396b7da0cb14f9f4ff8892da7e2e
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5727,8 +14340,8 @@ Date:    Thu Sep 9 17:35:10 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gobject/pygtype.c |   31 +++++++++++++++++--------------
- 1 files changed, 17 insertions(+), 14 deletions(-)
+ gobject/pygtype.c |   29 ++++++++++++++++-------------
+ 1 file changed, 16 insertions(+), 13 deletions(-)
 
 commit 3d431c7dd0de97db10cb0c00c39d9c1837bed2f2
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -5737,7 +14350,7 @@ Date:    Fri Sep 17 12:14:56 2010 +0200
     Specify encoding of tests/test_gi.py
 
  tests/test_gi.py |    3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit a808bdabb9fa6f4a9b9ce42e1cce05fb37403f0f
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5748,7 +14361,7 @@ Date:    Thu Sep 9 13:24:30 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
  tests/test_gi.py |    6 +++++-
- 1 files changed, 5 insertions(+), 1 deletions(-)
+ 1 file changed, 5 insertions(+), 1 deletion(-)
 
 commit 928f4485041d80d0c36ff2daeae4bcd09bd0bde4
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5777,7 +14390,7 @@ Date:    Thu Sep 9 08:04:40 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
  glib/pygspawn.c |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit a499b2f0d622b671bd154544f66b73f1278e66ed
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5831,7 +14444,7 @@ Date:    Thu Sep 9 16:25:51 2010 -0400
     compilation: Fix syntax error
 
  gi/pygi-info.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9f7afd6d5afd8c1a5f36bf1295814757b71c8cbc
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -5841,7 +14454,7 @@ Date:    Thu Sep 9 22:17:00 2010 +0200
 
  gi/overrides/GLib.py |   48
  ++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 48 insertions(+), 0 deletions(-)
+ 1 file changed, 48 insertions(+)
 
 commit 306b792ac97a458ddee59fb86d66453495117f3e
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -5874,7 +14487,7 @@ Date:    Wed Sep 8 13:08:48 2010 -0400
     fix for changes in the gi test libraries
 
  tests/test_everything.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 246877074617b0e9c3b2ba2a5395a73e0ed9cd5d
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5883,7 +14496,7 @@ Date:    Wed Sep 8 13:08:07 2010 -0400
     Gtk.DialogFlags.NO_SEPARATOR has been removed in Gtk 3.0
 
  gi/overrides/Gtk.py |  10 ++++++++--
- 1 files changed, 8 insertions(+), 2 deletions(-)
+ 1 file changed, 8 insertions(+), 2 deletions(-)
 
 commit f92fc48e7e2ec50996e994ccb7d08a61e7374f22
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -5900,7 +14513,7 @@ Date:    Wed Sep 8 12:35:09 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=629087
 
  gi/pygi-callbacks.c |   5 +----
- 1 files changed, 1 insertions(+), 4 deletions(-)
+ 1 file changed, 1 insertion(+), 4 deletions(-)
 
 commit 8c517de2d278bdef641c72b8f2919a3924290ec1
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -5944,7 +14557,7 @@ Date:    Fri Sep 3 12:04:16 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
  gobject/gobjectmodule.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b7bf4269682a3335f5e0a52b46fa721af134d09a
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -5954,17 +14567,17 @@ Date:  Wed Sep 1 11:03:40 2010 +0200
 
  gi/pygi-argument.c        |   52
  ++++++++++++++++++++++----------------------
- gi/pygi-argument.h        |   10 ++++----
- gi/pygi-closure.c         |   34 ++++++++++++++--------------
- gi/pygi-foreign-cairo.c    |   8 +++---
- gi/pygi-foreign-gvariant.c |   4 +-
- gi/pygi-foreign-gvariant.h |   4 +-
+ gi/pygi-argument.h        |   10 ++++-----
+ gi/pygi-closure.c         |   34 ++++++++++++++---------------
+ gi/pygi-foreign-cairo.c    |   8 +++----
+ gi/pygi-foreign-gvariant.c |   4 ++--
+ gi/pygi-foreign-gvariant.h |   4 ++--
  gi/pygi-foreign.c         |   12 +++++-----
- gi/pygi-foreign.h         |    8 +++---
- gi/pygi-info.c                    |    8 +++---
- gi/pygi-invoke.c          |   28 +++++++++++-----------
- gi/pygi-property.c        |    4 +-
- gi/pygi.h                 |   16 ++++++------
+ gi/pygi-foreign.h         |    8 +++----
+ gi/pygi-info.c                    |    8 +++----
+ gi/pygi-invoke.c          |   28 ++++++++++++------------
+ gi/pygi-property.c        |    4 ++--
+ gi/pygi.h                 |   16 +++++++-------
  12 files changed, 94 insertions(+), 94 deletions(-)
 
 commit 7197f85c9be2b03636639ac909ca2c3170653509
@@ -6012,7 +14625,7 @@ Date:    Fri Aug 20 10:58:48 2010 -0400
  configure.ac            |    5 +-
  gi/pygi-argument.c      |    9 +--
  gi/pygi-invoke.c        |  147
- +++++----------------------------------------
+ +++++---------------------------------------
  tests/Makefile.am       |   42 ++++++++++++-
  tests/test_everything.py |    6 +-
  tests/test_gi.py        |  151
@@ -6029,7 +14642,7 @@ Date:    Fri Aug 20 10:43:58 2010 -0400
 
  gobject/pygenum.c  |   1 +
  gobject/pygflags.c |   1 +
- 2 files changed, 2 insertions(+), 0 deletions(-)
+ 2 files changed, 2 insertions(+)
 
 commit c03e6b482548aee99362356807c804f8834fad2b
 Author: John Ehresman <jpe@wingware.com>
@@ -6039,8 +14652,8 @@ Date:    Thu Apr 15 17:11:30 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/pygspawn.c    |   7 +++--
- gobject/pygenum.c  |  61 ++++++++++++++++++++++++------------------
+ glib/pygspawn.c    |   7 ++---
+ gobject/pygenum.c  |  61 +++++++++++++++++++++++------------------
  gobject/pygflags.c |  76
  ++++++++++++++++++++++------------------------------
  3 files changed, 71 insertions(+), 73 deletions(-)
@@ -6063,7 +14676,7 @@ Date:    Wed Aug 18 11:03:32 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
  gi/types.py |  12 ++++++++----
- 1 files changed, 8 insertions(+), 4 deletions(-)
+ 1 file changed, 8 insertions(+), 4 deletions(-)
 
 commit 286dcd0c6455961d818ac7f05f80f82435abc1dc
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -6134,8 +14747,8 @@ Date:    Mon Aug 16 21:14:27 2010 -0400
  gi/pygi-boxed.c      |   43 ++-----------
  gi/pygi-info.c       |  171
  ++++++++++++++++++++------------------------------
- gi/pygi-repository.c |   39 ++---------
- gi/pygi-struct.c     |   45 ++-----------
+ gi/pygi-repository.c |   39 +++---------
+ gi/pygi-struct.c     |   45 +++----------
  4 files changed, 88 insertions(+), 210 deletions(-)
 
 commit 1efa2b12913b194d433c17014bc1077271a6ca32
@@ -6156,9 +14769,9 @@ Date:    Mon Aug 16 13:51:05 2010 -0400
  gi/pygi-argument.c         |   96
  ++++++++++++++++++++++++++-----------------
  gi/pygi-boxed.c            |    1 +
- gi/pygi-info.c                     |   13 ++++--
- gi/pygi-private.h          |   23 ++++++++++
- gi/pygi-repository.c       |    8 ++-
+ gi/pygi-info.c                     |   13 +++---
+ gi/pygi-private.h          |   23 +++++++++++
+ gi/pygi-repository.c       |    8 ++--
  gi/pygi-struct.c           |    1 +
  glib/pyglib-python-compat.h |   6 +++
  8 files changed, 103 insertions(+), 47 deletions(-)
@@ -6172,7 +14785,7 @@ Date:    Fri Aug 20 09:28:57 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=627408
 
  glib/option.py |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 3cefffecc1317b6ad77a5ed936bfb990d16bf9d3
 Author: Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
@@ -6186,7 +14799,7 @@ Date:    Thu Aug 19 18:45:05 2010 -0300
     https://bugzilla.gnome.org/show_bug.cgi?id=627440
 
  glib/pyglib-python-compat.h |   2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
 
 commit d45c7031876f355e15409f00f3e50e77d18f8f4b
 Author: Colin Walters <walters@verbum.org>
@@ -6195,7 +14808,7 @@ Date:    Thu Aug 19 17:50:35 2010 -0400
     pyglib: Fix a compiler warning
 
  glib/pyglib.c |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 0fe6828ddce187ac1897a1f02ca1c5480796d5b9
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6204,7 +14817,7 @@ Date:    Wed Aug 18 20:36:51 2010 +0200
     Don't force gtk 2.0
 
  pygi-convert.sh |   11 +++++++----
- 1 files changed, 7 insertions(+), 4 deletions(-)
+ 1 file changed, 7 insertions(+), 4 deletions(-)
 
 commit ac59c18a4f2bfff47c862b763aaf1d1cf136a4f5
 Author: Steve Frécinaux <code@istique.net>
@@ -6215,7 +14828,7 @@ Date:    Tue Aug 17 14:49:30 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=627143
 
  gi/gimodule.c |    9 +++++++--
- 1 files changed, 7 insertions(+), 2 deletions(-)
+ 1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 18ee0db673c2fa42244ab85950bbf4840edb674b
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -6237,7 +14850,7 @@ Date:    Wed Aug 11 16:13:59 2010 -0400
 
  gio/giomodule.c |  153
  ++++++++++++++++++++++++++++---------------------------
- 1 files changed, 78 insertions(+), 75 deletions(-)
+ 1 file changed, 78 insertions(+), 75 deletions(-)
 
 commit c52f8ed3ae8cb66a03b5695e980770c3f467f755
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -6249,7 +14862,7 @@ Date:    Wed Aug 11 16:04:48 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
  gi/pygi-argument.c |  31 +++++++++++++++++++++++++++----
- 1 files changed, 27 insertions(+), 4 deletions(-)
+ 1 file changed, 27 insertions(+), 4 deletions(-)
 
 commit de9eae4dfcce856a42cc5c569a5b9683c28d0eeb
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -6260,7 +14873,7 @@ Date:    Wed Aug 11 15:03:55 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
  glib/pygiochannel.c |  30 ++++++++++++++++++++++++------
- 1 files changed, 24 insertions(+), 6 deletions(-)
+ 1 file changed, 24 insertions(+), 6 deletions(-)
 
 commit 5824ff98175b749dbcfa72d24b994230b6e05377
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -6278,22 +14891,22 @@ Date:  Mon Aug 9 15:16:51 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
  glib/glibmodule.c          |   48 +++++-----
- glib/pygiochannel.c        |   46 +++++-----
- glib/pyglib-python-compat.h | 153 +++++++++++++++++++++++-------
- glib/pyglib.c              |   22 ++--
+ glib/pygiochannel.c        |   46 ++++-----
+ glib/pyglib-python-compat.h | 153 ++++++++++++++++++++++--------
+ glib/pyglib.c              |   22 ++---
  glib/pyglib.h              |   14 ---
  glib/pygoptioncontext.c     |   4 +-
  glib/pygsource.c           |   16 ++--
- glib/pygspawn.c            |   32 +++---
+ glib/pygspawn.c            |   32 +++----
  gobject/gobjectmodule.c     | 216
- +++++++++++++++++++++---------------------
+ +++++++++++++++++++++----------------------
  gobject/pygboxed.c         |    2 +-
- gobject/pygenum.c          |   84 +++++++++---------
+ gobject/pygenum.c          |   84 ++++++++---------
  gobject/pygflags.c         |  122 ++++++++++++------------
- gobject/pygobject-private.h |  12 +-
- gobject/pygobject.c        |   46 +++++-----
+ gobject/pygobject-private.h |  12 +--
+ gobject/pygobject.c        |   46 ++++-----
  gobject/pygobject.h        |   23 +++++
- gobject/pygparamspec.c      |  24 +++---
+ gobject/pygparamspec.c      |  24 ++---
  gobject/pygpointer.c       |    2 +-
  gobject/pygtype.c          |  170 +++++++++++++++++-----------------
  18 files changed, 563 insertions(+), 473 deletions(-)
@@ -6307,7 +14920,7 @@ Date:    Mon Aug 16 10:14:04 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=622606
 
  tests/test_overrides.py |   10 ++++++++++
- 1 files changed, 10 insertions(+), 0 deletions(-)
+ 1 file changed, 10 insertions(+)
 
 commit f07cfde377e42686c6b80f56cac62338ee333e61
 Author: Johan Dahlin <johan@gnome.org>
@@ -6318,7 +14931,7 @@ Date:    Mon Aug 16 10:08:38 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=622606
 
  gi/overrides/Gtk.py |  13 +++++++++++++
- 1 files changed, 13 insertions(+), 0 deletions(-)
+ 1 file changed, 13 insertions(+)
 
 commit 65a06a7216163c7e65b32c5b5f3388faa7fda5d6
 Author: Simon van der Linden <svdlinden@gnome.org>
@@ -6343,7 +14956,7 @@ Date:    Mon Aug 16 09:55:35 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=626996
 
  gi/pygi.h |   1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 0dc3656070f496431829c6e8441ca17129c569f8
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -6353,19 +14966,19 @@ Date:  Mon Aug 9 16:11:55 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/pygiochannel.c    |   18 +++++++---
+ glib/pygiochannel.c    |   18 ++++++----
  glib/pyglib.c          |   85
  +++++++++++++++++++++++++++++++++++++++++++++++
  glib/pyglib.h          |    3 ++
- glib/pygmaincontext.c  |   17 ++++++---
- glib/pygmainloop.c     |   17 ++++++---
+ glib/pygmaincontext.c  |   17 ++++++----
+ glib/pygmainloop.c     |   17 ++++++----
  glib/pygoptioncontext.c |   18 ++++++----
- glib/pygoptiongroup.c  |   22 +++++++-----
- gobject/pygboxed.c     |   18 +++++++---
+ glib/pygoptiongroup.c  |   22 ++++++------
+ gobject/pygboxed.c     |   18 ++++++----
  gobject/pygobject.c    |   44 +++++++++++++++++-------
- gobject/pygparamspec.c  |   19 +++++++---
- gobject/pygpointer.c   |   17 ++++++---
- gobject/pygtype.c      |   26 +++++++++++---
+ gobject/pygparamspec.c  |   19 +++++++----
+ gobject/pygpointer.c   |   17 ++++++----
+ gobject/pygtype.c      |   26 +++++++++++----
  12 files changed, 233 insertions(+), 71 deletions(-)
 
 commit b426e531dc53d4b50e572a2da19733479635e662
@@ -6381,7 +14994,7 @@ Date:    Thu Aug 12 18:09:33 2010 +0200
 
  autogen.sh |  506
  +++++++-----------------------------------------------------
- 1 files changed, 58 insertions(+), 448 deletions(-)
+ 1 file changed, 58 insertions(+), 448 deletions(-)
 
 commit 769645e00d6d055a4cd802454dbfc1bbfcbee691
 Author: Simon van der Linden <svdlinden@gnome.org>
@@ -6422,7 +15035,7 @@ Date:    Thu Aug 12 11:09:37 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=626684
 
  gi/pygi-invoke.c |    9 ++++++++-
- 1 files changed, 8 insertions(+), 1 deletions(-)
+ 1 file changed, 8 insertions(+), 1 deletion(-)
 
 commit 0ab967ca40ddcffc2834d4e656bb2010c6b9bdda
 Author: Simon van der Linden <svdlinden@gnome.org>
@@ -6436,7 +15049,7 @@ Date:    Thu Aug 12 10:46:17 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=626684
 
  gi/pygi-invoke.c |   14 +++-----------
- 1 files changed, 3 insertions(+), 11 deletions(-)
+ 1 file changed, 3 insertions(+), 11 deletions(-)
 
 commit e17be9cd288fee5d7cb174d9d577eb9279044c67
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6445,7 +15058,7 @@ Date:    Tue Aug 10 17:40:16 2010 +0200
     Call valgrind with G_SLICE=always-malloc G_DEBUG=gc-friendly
 
  tests/Makefile.am |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 8be59c37dd57acc51875c7189ca09d728b729013
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
@@ -6456,7 +15069,7 @@ Date:    Wed Aug 4 13:43:17 2010 +0200
  gi/pygi-argument.c |   2 --
  gi/pygi-invoke.c   |   2 +-
  gi/pygi-struct.c   |   1 -
- 3 files changed, 1 insertions(+), 4 deletions(-)
+ 3 files changed, 1 insertion(+), 4 deletions(-)
 
 commit 529eca6054e9a7e2267f1529e317c2373932762f
 Author: Simon van der Linden <svdlinden@gnome.org>
@@ -6465,7 +15078,7 @@ Date:    Fri Jul 30 22:39:40 2010 +0200
     Add myself as a maintainer
 
  MAINTAINERS |   4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
+ 1 file changed, 4 insertions(+)
 
 commit caac75a6ed6f671b37e38a78e71b87906a00ac1b
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6482,9 +15095,9 @@ Date:    Fri Jul 30 14:14:16 2010 +0200
 
  gi/pygi-boxed.c        |   50
  +++++++++++++++++++++++++++++++----------------
- gi/pygi-boxed.h        |   10 +++++---
- gi/pygi-invoke.c       |   16 +++++---------
- tests/test_overrides.py |   39 +++++++++++++++++------------------
+ gi/pygi-boxed.h        |   10 ++++++----
+ gi/pygi-invoke.c       |   16 ++++++---------
+ tests/test_overrides.py |   39 ++++++++++++++++++------------------
  4 files changed, 64 insertions(+), 51 deletions(-)
 
 commit 99c7322898c00a576c7319ea0a7c808446253133
@@ -6497,8 +15110,8 @@ Date:    Fri Jul 30 15:44:21 2010 +0200
 
  gi/overrides/Gdk.py    |   48
  +++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-invoke.c       |    4 ---
- tests/test_overrides.py |   10 +++++++++
+ gi/pygi-invoke.c       |    4 ----
+ tests/test_overrides.py |   10 ++++++++++
  3 files changed, 58 insertions(+), 4 deletions(-)
 
 commit 55814e722c2ae11310f346790c9221e4fad92b50
@@ -6510,7 +15123,7 @@ Date:    Fri Jul 30 06:30:48 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=625438
 
  gio/gio.override |    5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
+ 1 file changed, 5 insertions(+)
 
 commit 477315465d0a6d84b51e146e86e254873bc564ff
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -6525,7 +15138,7 @@ Date:    Fri Jul 30 06:43:06 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=625438
 
  gio/gfile.override |   8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit faa7d4eece7ddb698725098970c2478a3b45c4d5
 Author: Paul Bolle <pebolle@tiscali.nl>
@@ -6542,7 +15155,7 @@ Date:    Fri Jul 30 10:56:01 2010 +0200
 
  demos/gtk-demo/gtk-demo.py |   2 ++
  examples/cairo-demo.py     |   2 ++
- 2 files changed, 4 insertions(+), 0 deletions(-)
+ 2 files changed, 4 insertions(+)
 
 commit c9da5782e6c633d9af43ee85075e9ee65db09780
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -6579,7 +15192,7 @@ Date:    Fri Jul 30 10:35:33 2010 +0200
     This reverts commit e7bb3954880568884ca66e7751ede689dc2f24f6.
 
  gi/overrides/Gdk.py |  44 --------------------------------------------
- 1 files changed, 0 insertions(+), 44 deletions(-)
+ 1 file changed, 44 deletions(-)
 
 commit 61ffb8d6d08fcfe638f71ea97ceac3a366e5536d
 Author: Paul Bolle <pebolle@tiscali.nl>
@@ -6592,7 +15205,7 @@ Date:    Thu Jul 29 22:55:28 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=625619
 
  examples/cairo-demo.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e7bb3954880568884ca66e7751ede689dc2f24f6
 Author: Toms Baugis <toms.baugis@gmail.com>
@@ -6603,7 +15216,7 @@ Date:    Tue Jul 27 21:37:16 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=620593
 
  gi/overrides/Gdk.py |  44 ++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 44 insertions(+), 0 deletions(-)
+ 1 file changed, 44 insertions(+)
 
 commit 0a9f1da052fd33dcef81d0e267fc7972f02c7888
 Author: Simon van der Linden <svdlinden@gnome.org>
@@ -6618,22 +15231,22 @@ Date:  Wed Jul 28 14:56:00 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625488
 
- Makefile.am               |    5 ---
+ Makefile.am               |    5 ----
  tests/Makefile.am         |   65
- ++++++++++++++++++++-----------------------
- tests/common.py           |   47 -------------------------------
+ ++++++++++++++++++++------------------------
+ tests/common.py           |   47 --------------------------------
  tests/runtests.py         |   43 +++++++++++------------------
- tests/test_gcancellable.py |   4 +-
+ tests/test_gcancellable.py |   4 +--
  tests/test_gi.py          |    3 --
  tests/test_gicon.py       |    3 +-
  tests/test_gio.py         |    3 +-
  tests/test_gobject.py     |    3 +-
- tests/test_gresolver.py    |   4 +-
+ tests/test_gresolver.py    |   4 +--
  tests/test_gsocket.py     |    4 ++-
  tests/test_interface.py    |   6 +++-
  tests/test_mainloop.py     |  11 +++-----
  tests/test_signal.py      |    4 ++-
- tests/test_source.py      |    4 +-
+ tests/test_source.py      |    4 +--
  tests/test_subprocess.py   |   5 +---
  tests/test_thread.py      |    5 +++-
  tests/test_unknown.py     |    5 +++-
@@ -6646,7 +15259,7 @@ Date:    Thu Jul 29 12:34:19 2010 +0200
     Add some more transformations to pygi-convert.sh
 
  pygi-convert.sh |   37 +++++++++++++++++++++++++++++--------
- 1 files changed, 29 insertions(+), 8 deletions(-)
+ 1 file changed, 29 insertions(+), 8 deletions(-)
 
 commit de519adcd21947a0aef7932cdecb78cef200c85e
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6665,7 +15278,7 @@ Date:    Wed Jul 28 12:26:48 2010 +0200
     Add GValue<->GArgument marshalling for some more types
 
  gi/pygi-property.c |  37 ++++++++++++++++++++++++++++++++++++-
- 1 files changed, 36 insertions(+), 1 deletions(-)
+ 1 file changed, 36 insertions(+), 1 deletion(-)
 
 commit ddffa70c3ee0e837070f390632bc692430f79171
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6675,7 +15288,7 @@ Date:    Wed Jul 28 11:10:42 2010 +0200
     if needed
 
  gobject/pygobject.c |   7 ++++++-
- 1 files changed, 6 insertions(+), 1 deletions(-)
+ 1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit 045433a1f8167205dc8eae613dcb8835d02c8916
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6685,7 +15298,7 @@ Date:    Wed Jul 28 10:59:49 2010 +0200
     modules
 
  gi/module.py |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 6655a79b2f13fe417aefdf6aebab0f2d6162ba00
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6709,7 +15322,7 @@ Date:    Tue Jul 27 21:52:49 2010 +0200
  gi/pygi.h               |   41 +++++++++
  gobject/pygobject.c     |    9 ++
  tests/test_everything.py |   19 ++++
- 9 files changed, 341 insertions(+), 0 deletions(-)
+ 9 files changed, 341 insertions(+)
 
 commit 85f4572b3ffbfa364ebb2e470eab759edc557b36
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6718,7 +15331,7 @@ Date:    Tue Jul 27 21:32:41 2010 +0200
     Readd Gdk.Rectangle override for Gtk-2.0
 
  gi/overrides/Gdk.py |  19 +++++++++++++++++++
- 1 files changed, 19 insertions(+), 0 deletions(-)
+ 1 file changed, 19 insertions(+)
 
 commit 2082ee35e2a33f52bf1e8ec49cb4a43398e91989
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6732,14 +15345,14 @@ Date:  Tue Jul 27 18:25:27 2010 +0200
     * gi/pygi-repository.c: Add wrappers for g_irepository_enumerate and
       g_irepository_get_version.
 
- gi/importer.py                            |   26 +++++----------
+ gi/importer.py                            |   26 ++++++----------
  gi/module.py                      |   58
- +++++++++++++++++++++++------------
+ +++++++++++++++++++++++-------------
  gi/overrides/GIMarshallingTests.py |   2 +-
  gi/overrides/Gdk.py               |    2 +-
  gi/overrides/Gtk.py               |    2 +-
  gi/pygi-repository.c              |   56
- ++++++++++++++++++++++++++++++++++-
+ +++++++++++++++++++++++++++++++++-
  6 files changed, 105 insertions(+), 41 deletions(-)
 
 commit 6d7ed6c322234c240b1063a1dfaadd17157432a9
@@ -6752,7 +15365,7 @@ Date:    Tue Jul 13 20:27:28 2010 +1000
     https://bugzilla.gnome.org/show_bug.cgi?id=624232
 
  gi/pygi-callbacks.c |   3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 7e9cbd5601ad548b78d106bac1a1576d33b91c65
 Author: Simon van der Linden <svdlinden@gnome.org>
@@ -6765,7 +15378,7 @@ Date:    Mon Jul 26 17:00:23 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=625326
 
  tests/testhelpermodule.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 5ca2a41f16f4a5fcc3ab4d00bec46b077c7eb384
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6788,7 +15401,7 @@ Date:    Sun Jul 25 17:30:40 2010 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=625095
 
  gi/pygi-callbacks.c |   3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 1162e436273ff8e9e4e24bd8ba74615fd4624753
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -6815,7 +15428,7 @@ Date:    Mon Jul 26 11:54:47 2010 +0200
     Increase a bit verbosity of tests so people know which test failed
 
  tests/runtests.py |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3b3c63514f311592e6769a373d37a2bde7ea6b38
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6826,7 +15439,7 @@ Date:    Thu Jul 15 15:17:53 2010 +0200
  gi/pygi-foreign-gvariant.c |  63
  ++++++++++++++++++++++++++++++++++++++++++++
  gi/pygi-foreign-gvariant.h |  41 ++++++++++++++++++++++++++++
- 2 files changed, 104 insertions(+), 0 deletions(-)
+ 2 files changed, 104 insertions(+)
 
 commit e65275bc57f345c111eb12a6b4476ff1ddc3bc24
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6845,14 +15458,14 @@ Date:  Thu Jul 15 13:31:33 2010 +0200
 
  gi/Makefile.am                  |    2 +
  gi/pygi-argument.c      |    2 +-
- gi/pygi-foreign-cairo.c  |   16 +++---
+ gi/pygi-foreign-cairo.c  |   16 +++----
  gi/pygi-foreign.c       |  107
- ++++++++++++++++++++++++++++-----------------
- gi/pygi-foreign.h       |    7 +--
+ ++++++++++++++++++++++++++++------------------
+ gi/pygi-foreign.h       |    7 ++-
  gi/pygi-invoke.c        |   18 ++++----
  gi/pygi-struct.c        |   10 ++++-
  gi/pygi.h               |    9 ++--
- tests/test_everything.py |    8 +++
+ tests/test_everything.py |    8 ++++
  9 files changed, 110 insertions(+), 69 deletions(-)
 
 commit 3b3bd4da3fbc993fa7f7cfb46ed4e67671c94cc0
@@ -6862,7 +15475,7 @@ Date:    Mon Jul 12 11:19:06 2010 +0200
     Add HACKING to MANIFEST.in
 
  MANIFEST.in |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 40bf08ff001b119c7daf709197005ef6480216c5
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6871,7 +15484,7 @@ Date:    Mon Jul 12 11:18:04 2010 +0200
     Add HACKING file with instructions for releasing
 
  HACKING |   14 ++++++++++++++
- 1 files changed, 14 insertions(+), 0 deletions(-)
+ 1 file changed, 14 insertions(+)
 
 commit 3b9dffe7cc3820dfb84fd968fc604899601c5dc4
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6880,7 +15493,7 @@ Date:    Mon Jul 12 11:09:58 2010 +0200
     Post release version bump to 2.21.6
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 42a5a0897b38156ae010c396ea254abf502f35de
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6889,7 +15502,7 @@ Date:    Mon Jul 12 11:00:29 2010 +0200
     Update NEWS and release PyGObject-2.21.5
 
  NEWS |   17 +++++++++++++++++
- 1 files changed, 17 insertions(+), 0 deletions(-)
+ 1 file changed, 17 insertions(+)
 
 commit 5857f25c1c6e25b79e6134558bd7151bc6c30ef7
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -6898,7 +15511,7 @@ Date:    Mon Jul 12 11:00:20 2010 +0200
     Pre-release version bump to 2.21.5
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e500adc3ac19ef6f436809e5a8828ac7e8db28f6
 Author: Florian Müllner <florian.muellner@gmail.com>
@@ -6913,7 +15526,7 @@ Date:    Sat Jul 10 22:35:13 2010 +0200
  gi/pygi-callbacks.c |   1 -
  gi/pygi-closure.c   |   2 +-
  gi/pygi-invoke.c    |   1 -
- 3 files changed, 1 insertions(+), 3 deletions(-)
+ 3 files changed, 1 insertion(+), 3 deletions(-)
 
 commit 2efa18afbcc2fac1c90958535b2f80e6e730ee56
 Author: =?UTF-8?q?Florian=20M=C3=BCllner?= <florian.muellner@gmail.com>
@@ -6934,7 +15547,7 @@ Date:    Mon Jul 12 10:31:42 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=624065
 
  configure.ac      |    2 +-
- gi/importer.py     |   7 ++-
+ gi/importer.py     |   7 +--
  gi/pygi-argument.c |  146
  ----------------------------------------------------
  gi/pygi-closure.c  |  10 ----
@@ -6985,7 +15598,7 @@ Date:    Thu Jul 8 12:54:43 2010 -0400
     override test fixes for new GTK+ annotations
 
  tests/test_overrides.py |   23 +++++++++++++----------
- 1 files changed, 13 insertions(+), 10 deletions(-)
+ 1 file changed, 13 insertions(+), 10 deletions(-)
 
 commit 7a400f8139b70ddfe7c949035e0851689951c647
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
@@ -6994,7 +15607,7 @@ Date:    Thu Jul 8 12:42:25 2010 +0200
     Fix warning.
 
  gi/pygi-argument.c |   4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 39fd0a85a3de06b1b877d1125f91036409886373
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7019,7 +15632,7 @@ Date:    Tue Jul 6 17:50:10 2010 -0400
 
  demos/gtk-demo/demos/Entry/entry_completion.py |   87
  ++++++++++++++++++++++++
- 1 files changed, 87 insertions(+), 0 deletions(-)
+ 1 file changed, 87 insertions(+)
 
 commit f3531eaa1bfa4e01651d35cd587384d30a398ba8
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7028,7 +15641,7 @@ Date:    Tue Jul 6 17:49:18 2010 -0400
     string changes
 
  demos/gtk-demo/demos/Entry/entry_buffer.py |   4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit baf1e9bb550c7bf45e2ac0b70ba29c434ef1ccc6
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7038,7 +15651,7 @@ Date:    Tue Jul 6 17:27:04 2010 -0400
 
  demos/gtk-demo/demos/Entry/entry_buffer.py |  73
  ++++++++++++++++++++++++++++
- 1 files changed, 73 insertions(+), 0 deletions(-)
+ 1 file changed, 73 insertions(+)
 
 commit f2b1d222120f055bec9339cca55c9cc90f538c00
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7047,7 +15660,7 @@ Date:    Tue Jul 6 17:26:03 2010 -0400
     fix loading of demo modules to support sub modules
 
  demos/gtk-demo/gtk-demo.py |   9 +++++++--
- 1 files changed, 7 insertions(+), 2 deletions(-)
+ 1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 4f9390fb1892b13ab2ea00ed66c5000a40f09029
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7057,7 +15670,7 @@ Date:    Tue Jul 6 15:56:34 2010 -0400
 
  demos/gtk-demo/gtk-demo.py |  76
  +++++++++++++++++++++++++++++++-------------
- 1 files changed, 54 insertions(+), 22 deletions(-)
+ 1 file changed, 54 insertions(+), 22 deletions(-)
 
 commit dc2249a3ecf339008351316217191d0551ccc588
 Author: Jose Aliste <jaliste@src.gnome.org>
@@ -7068,7 +15681,7 @@ Date:    Mon Jul 5 14:36:59 2010 -0400
     Fixes bug #623486.
 
  gi/module.py |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 2357bca8d14539894b6bd0acfdc18d30b4bb4db6
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
@@ -7081,7 +15694,7 @@ Date:    Mon Jul 5 16:11:07 2010 +0200
     it anymore.
 
  gi/overrides/Gdk.py |  19 -------------------
- 1 files changed, 0 insertions(+), 19 deletions(-)
+ 1 file changed, 19 deletions(-)
 
 commit daca09dc2c2306d4fa82a68bbdd147d4b170a1e7
 Author: Philip Withnall <philip.withnall@collabora.co.uk>
@@ -7102,7 +15715,7 @@ Date:    Tue Jun 29 11:27:13 2010 +0200
     Update NEWS and release PyGObject-2.21.4
 
  NEWS |   27 +++++++++++++++++++++++++--
- 1 files changed, 25 insertions(+), 2 deletions(-)
+ 1 file changed, 25 insertions(+), 2 deletions(-)
 
 commit 2d473ee17be4671244bb4a2a0953a21ccf2a0df6
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -7125,13 +15738,13 @@ Date:  Tue Jun 29 10:27:39 2010 +0200
 
  configure.ac           |    2 +
  gi/Makefile.am                 |   38 +++++++++-----
- gi/gimodule.c          |    8 +---
+ gi/gimodule.c          |    8 +--
  gi/pygi-argument.c     |   10 +---
- gi/pygi-foreign-cairo.c |   56 ++++++++++++++++-----
+ gi/pygi-foreign-cairo.c |   56 +++++++++++++++------
  gi/pygi-foreign-cairo.h |   55 ---------------------
  gi/pygi-foreign.c      |  125
  ++++++++++++++++++++++++++++-------------------
- gi/pygi-foreign.h      |   31 +++++------
+ gi/pygi-foreign.h      |   31 ++++++------
  gi/pygi.h              |   40 +++++++++++++--
  9 files changed, 196 insertions(+), 169 deletions(-)
 
@@ -7144,10 +15757,10 @@ Date:  Mon Jun 28 14:20:43 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=623021
 
  gi/gimodule.c          |    8 +++---
- gi/pygi-type.c                 |    4 +-
+ gi/pygi-type.c                 |    4 +--
  gi/pygi-type.h                 |    2 +-
- gi/pygi.h              |   54 +++++++++++++++----------------------
- gobject/Makefile.am    |    6 ++++
+ gi/pygi.h              |   54 ++++++++++++++++----------------------
+ gobject/Makefile.am    |    6 +++++
  gobject/pygboxed.c     |    2 +-
  gobject/pygenum.c      |    2 +-
  gobject/pygflags.c     |    2 +-
@@ -7196,7 +15809,7 @@ Date:    Thu Jun 24 16:13:37 2010 -0400
 
  demos/gtk-demo/demos/drawingarea.py | 249
  +++++++++++++++++++++++++++++++++++
- 1 files changed, 249 insertions(+), 0 deletions(-)
+ 1 file changed, 249 insertions(+)
 
 commit 8bba5f842393a284367cdd15f3d32a8c7745516a
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7205,7 +15818,7 @@ Date:    Thu Jun 24 14:11:00 2010 -0400
     sort the demo list
 
  demos/gtk-demo/gtk-demo.py |   2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
 
 commit b9da82742701ed276b01dee39626cd71cbef8556
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7214,7 +15827,7 @@ Date:    Thu Jun 24 13:56:18 2010 -0400
     rename iter to treeiter so we aren't using a python reserved word
 
  demos/gtk-demo/gtk-demo.py |  12 ++++++------
- 1 files changed, 6 insertions(+), 6 deletions(-)
+ 1 file changed, 6 insertions(+), 6 deletions(-)
 
 commit c93935621f2fb1ff5e8c424ae884bd684ea68e50
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7226,7 +15839,7 @@ Date:    Thu Jun 24 13:47:54 2010 -0400
     caller-allocates)
 
  demos/gtk-demo/gtk-demo.py |  10 ++++------
- 1 files changed, 4 insertions(+), 6 deletions(-)
+ 1 file changed, 4 insertions(+), 6 deletions(-)
 
 commit 8d9516a593a515290109401a9db7aa259b5aa35c
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7252,7 +15865,7 @@ Date:    Wed Jun 23 17:04:33 2010 -0400
  gi/overrides/Gtk.py    |   59 ++++++++++++++++++++++++++++++++++++++++
  tests/test_overrides.py |   69
  +++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 128 insertions(+), 0 deletions(-)
+ 2 files changed, 128 insertions(+)
 
 commit c305fbeb7bdb44623d5198f4a8f0a374d529fdf4
 Author: Johan Dahlin <johan@gnome.org>
@@ -7264,7 +15877,7 @@ Date:    Wed Jun 23 14:34:28 2010 -0300
     add this to be able to include pygobject.h
 
  gi/Makefile.am |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit 53a093198851e3ba5abd1f6c3314737decd401d8
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
@@ -7273,7 +15886,7 @@ Date:    Wed Jun 23 18:09:19 2010 +0200
     Add unit test for add_actions user data.
 
  tests/test_overrides.py |   20 +++++++++++++++-----
- 1 files changed, 15 insertions(+), 5 deletions(-)
+ 1 file changed, 15 insertions(+), 5 deletions(-)
 
 commit 7f829af620cba768de619dd9f228d5d2ebf7fee4
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -7282,7 +15895,7 @@ Date:    Wed Jun 23 18:06:46 2010 +0200
     Pass user_data param when adding actions
 
  gi/overrides/Gtk.py |  12 ++++++------
- 1 files changed, 6 insertions(+), 6 deletions(-)
+ 1 file changed, 6 insertions(+), 6 deletions(-)
 
 commit 8f537ccd62f41ebe0db3853e2ae08080666f598f
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7293,7 +15906,7 @@ Date:    Wed Jun 23 12:02:04 2010 -0400
     * we should always specify what exception types we are expecting
 
  gi/overrides/Gtk.py |   6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit f140a8ebf59347162b67b550bd6f62d2eafad29a
 Author: Johan Dahlin <johan@gnome.org>
@@ -7307,7 +15920,7 @@ Date:    Wed Jun 23 12:31:51 2010 -0300
     https://bugzilla.gnome.org/show_bug.cgi?id=622503
 
  configure.ac |    9 +++++----
- 1 files changed, 5 insertions(+), 4 deletions(-)
+ 1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit e8bd25355fbe7de38a28b7a0583167a2c0ffc31f
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7374,7 +15987,7 @@ Date:    Wed Jun 23 12:26:51 2010 +0200
     only be done with list.
 
  gi/overrides/Gtk.py |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3d72b8248cc534a689dee5679a729b2fba56c528
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -7384,7 +15997,7 @@ Date:    Wed Jun 23 12:26:02 2010 +0200
     for base classes such as GInitiallyUnowned.
 
  gi/__init__.py |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit c7c94ef349c30597f2f10d90f74718d678ec7add
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7395,7 +16008,7 @@ Date:    Tue Jun 22 14:45:48 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=622425
 
  gi/pygi-info.c |    5 +++--
- 1 files changed, 3 insertions(+), 2 deletions(-)
+ 1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit fb1ee243493616d7a7e4f6924c574db39f5a423d
 Merge: acf7b43 5f9cb91
@@ -7411,7 +16024,7 @@ Date:    Tue Jun 22 15:39:46 2010 -0400
     remove unneeded TextIter creation in the tests
 
  tests/test_overrides.py |    3 ---
- 1 files changed, 0 insertions(+), 3 deletions(-)
+ 1 file changed, 3 deletions(-)
 
 commit 53c355d2cc0894e7f551e9b4eb719b89188a978e
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7431,7 +16044,7 @@ Date:    Mon Jun 21 11:42:12 2010 -0400
  gi/overrides/Gtk.py    |   51
  +++++++++++++++++++++++++++++++++++++++++++++++
  tests/test_overrides.py |   25 +++++++++++++++++++++++
- 2 files changed, 76 insertions(+), 0 deletions(-)
+ 2 files changed, 76 insertions(+)
 
 commit 1d89a88b212c7411ad28e74eda80ae751de92e50
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7484,7 +16097,7 @@ Date:    Sun Jun 20 13:27:34 2010 +0200
  gi/overrides/Gtk.py    |   46
  +++++++++++++++++++++++++++++++++++++++++++++-
  tests/test_overrides.py |   16 ++++++++++++++++
- 2 files changed, 61 insertions(+), 1 deletions(-)
+ 2 files changed, 61 insertions(+), 1 deletion(-)
 
 commit acf7b43a41ce814f0c57ce609a090826f04771db
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -7493,7 +16106,7 @@ Date:    Mon Jun 21 18:17:38 2010 +0200
     Post release version bump to 2.21.4
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a7fa8b80406227a06cf18f8675dbc1f471283829
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -7502,7 +16115,7 @@ Date:    Mon Jun 21 18:10:32 2010 +0200
     Update NEWS and release PyGObject-2.21.3
 
  NEWS |    7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
+ 1 file changed, 7 insertions(+)
 
 commit 79acac7b86ec52cd3681d94d7f116314c3f00167
 Author: Ludovic L'Hours <ludovic.lhours@gmail.com>
@@ -7523,7 +16136,7 @@ Date:    Mon Jun 21 17:34:54 2010 +0200
     Add *~ and *.orig to .gitignore
 
  .gitignore |   5 ++++-
- 1 files changed, 4 insertions(+), 1 deletions(-)
+ 1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit 00a85f6a844714d1715e2f67431747d1a4cdacb1
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -7541,12 +16154,12 @@ Date:  Mon Jun 21 17:33:56 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=583909
 
  gobject/gobjectmodule.c  |    2 -
- gobject/pygobject.c     |   50 +++++++++++++--------
+ gobject/pygobject.c     |   50 ++++++++++++---------
  gobject/pygobject.h     |    1 +
  tests/Makefile.am       |    2 +
  tests/test-floating.c   |   95 ++++++++++++++++++++++++++++++++++++++++
  tests/test-floating.h   |   60 +++++++++++++++++++++++++
- tests/test_gobject.py   |   19 ++++++++-
+ tests/test_gobject.py   |   19 +++++++-
  tests/testhelpermodule.c |  109
  ++++++++++++++++++++++++++++++++++++++++++++++
  8 files changed, 315 insertions(+), 23 deletions(-)
@@ -7746,7 +16359,7 @@ Date:    Sun Jun 20 10:49:55 2010 -0300
     [giounix] Make it possible to compile on glib 2.20
 
  gio/unix.override |   2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
 
 commit 606018a2c551d890fc2bb987d99683f777598bda
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7781,7 +16394,7 @@ Date:    Tue Jun 15 11:42:28 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=530935
 
  gobject/pygobject.c |  11 ++++++++++-
- 1 files changed, 10 insertions(+), 1 deletions(-)
+ 1 file changed, 10 insertions(+), 1 deletion(-)
 
 commit aa1e82c7eb87620bd73e1edb486f5b9e0d49aa96
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7791,7 +16404,7 @@ Date:    Mon Jun 14 18:36:57 2010 -0400
 
  demos/gtk-demo/demos/combobox.py |  282
  ++++++++++++++++++++++++++++++++++++++
- 1 files changed, 282 insertions(+), 0 deletions(-)
+ 1 file changed, 282 insertions(+)
 
 commit a8668694da59c2dd959c875f13337e64ca22f7e9
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7800,7 +16413,7 @@ Date:    Mon Jun 14 13:43:53 2010 -0400
     fix leak in the allow None callbacks patch
 
  gi/pygi-callbacks.c |   4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 729072e73d65e7fd5b5197ebe5a8c53a449d0ec0
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7833,7 +16446,7 @@ Date:    Mon Jun 14 19:06:45 2010 +0200
     Fix to match latest gtk annotations
 
  demos/gtk-demo/demos/appwindow.py |   3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
+ 1 file changed, 1 insertion(+), 2 deletions(-)
 
 commit 6306dd73cc74aa9202569eac0eaaa5f825c8dc59
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7858,7 +16471,7 @@ Date:    Thu Jun 10 20:23:13 2010 +0200
     Post release version bump to 2.21.3
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c4e64d5d264593051b9a3131e4985a58e8e76f8b
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -7867,7 +16480,7 @@ Date:    Thu Jun 10 20:21:13 2010 +0200
     Update NEWS and release PyGObject-2.21.2
 
  NEWS |   26 ++++++++++++++++++++++++++
- 1 files changed, 26 insertions(+), 0 deletions(-)
+ 1 file changed, 26 insertions(+)
 
 commit e0fe844d5fe8f7e26316f197444fd4143ed36adf
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -7881,7 +16494,7 @@ Date:    Thu Jun 10 20:09:07 2010 +0200
           test_subtype.py
 
  tests/Makefile.am |   4 ----
- 1 files changed, 0 insertions(+), 4 deletions(-)
+ 1 file changed, 4 deletions(-)
 
 commit 495a301cb81c5e914bcef905999265604faa27fc
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -7890,7 +16503,7 @@ Date:    Thu Jun 10 19:39:09 2010 +0200
     Add myself to the maintainers list in the README
 
  README |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 04627488220b4f2a16e11f8982af7866fea9f7eb
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -7934,7 +16547,7 @@ Date:    Mon Jun 7 09:47:23 2010 +0200
 
  gi/pygi-invoke.c        |    3 ++-
  tests/test_everything.py |    6 ++++++
- 2 files changed, 8 insertions(+), 1 deletions(-)
+ 2 files changed, 8 insertions(+), 1 deletion(-)
 
 commit b435319fe830a909cc4d414533b3b66574931e24
 Author: Steve Frécinaux <code@istique.net>
@@ -7949,7 +16562,7 @@ Date:    Mon Jun 7 09:54:06 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=620805
 
  pre-commit.hook |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e9ee2916494eb7654004925c1ee1e94f99b14f1a
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -7959,7 +16572,7 @@ Date:    Tue Jun 8 16:55:26 2010 -0400
 
  demos/gtk-demo/demos/colorselector.py |  121
  +++++++++++++++++++++++++++++++++
- 1 files changed, 121 insertions(+), 0 deletions(-)
+ 1 file changed, 121 insertions(+)
 
 commit ec598128de9e90dccab662ed2f5511c8d659e156
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -7968,7 +16581,7 @@ Date:    Tue Jun 8 15:48:33 2010 +0200
     Update PyGObject dependency to 2.21.1
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 87774a17bd607724a56e18c2eb1ac71b04b7079d
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -7978,7 +16591,7 @@ Date:    Tue Jun 8 10:40:39 2010 +0200
 
  MAINTAINERS   |    4 ++++
  pygobject.doap |    7 +++++++
- 2 files changed, 11 insertions(+), 0 deletions(-)
+ 2 files changed, 11 insertions(+)
 
 commit 46c91a11d448e5e11d142d3362aff1483226bca4
 Author: Colin Walters <walters@verbum.org>
@@ -7994,7 +16607,7 @@ Date:    Wed May 5 13:54:27 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=617796
 
  gobject/pygi-external.h |    2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
 
 commit c1c41576d053cc1cdd8366d8cd1e59fff1c3a9c6
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8003,7 +16616,7 @@ Date:    Mon Jun 7 17:19:30 2010 -0400
     fix some typos and add a link to a patch which fixes a FIXME
 
  demos/gtk-demo/demos/clipboard.py |   7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
+ 1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit e7fabb5024d94a3166766e5fca740741bc50380a
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8013,7 +16626,7 @@ Date:    Mon Jun 7 16:21:42 2010 -0400
 
  demos/gtk-demo/demos/clipboard.py |  235
  +++++++++++++++++++++++++++++++++++++
- 1 files changed, 235 insertions(+), 0 deletions(-)
+ 1 file changed, 235 insertions(+)
 
 commit e0f1dce5ec58d071759f886697501da6eeea549d
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8022,7 +16635,7 @@ Date:    Sun Jun 6 13:27:46 2010 -0400
     set is_fully_bound to false
 
  demos/gtk-demo/demos/button_box.py |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 986db1c73746d3a8ad7d8d5141c7eed194e7b948
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8032,7 +16645,7 @@ Date:    Sat Jun 5 23:53:36 2010 -0400
 
  demos/gtk-demo/demos/button_box.py |  121
  ++++++++++++++++++++++++++++++++++++
- 1 files changed, 121 insertions(+), 0 deletions(-)
+ 1 file changed, 121 insertions(+)
 
 commit e9f5f8a829121e59367bae690442150f144946ad
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8041,7 +16654,7 @@ Date:    Sat Jun 5 23:26:03 2010 -0400
     set is_fully_bound to True fro builder example
 
  demos/gtk-demo/demos/builder.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit d9968c3a4dea1d4a73a9376009cf486c80ea3da6
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8062,7 +16675,7 @@ Date:    Sat Jun 5 14:54:47 2010 -0400
 
  demos/gtk-demo/demos/builder.py |   57
  +++++++++++++++++++++++++++++++++++++++
- 1 files changed, 57 insertions(+), 0 deletions(-)
+ 1 file changed, 57 insertions(+)
 
 commit a96dbafdf562a2ac6bde4df27919d3628689dbdb
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8072,7 +16685,7 @@ Date:    Fri Jun 4 17:48:24 2010 -0400
 
  demos/gtk-demo/demos/assistant.py |  134
  +++++++++++++++++++++++++++++++++++++
- 1 files changed, 134 insertions(+), 0 deletions(-)
+ 1 file changed, 134 insertions(+)
 
 commit 7e1b8cf32f33d45603aaec76afb0d14be84ffd94
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8081,7 +16694,7 @@ Date:    Fri Jun 4 16:56:46 2010 -0400
     add formatting rules and copyright notice
 
  demos/gtk-demo/demos/appwindow.py |   19 +++++++++++++++++++
- 1 files changed, 19 insertions(+), 0 deletions(-)
+ 1 file changed, 19 insertions(+)
 
 commit 03b99692b81631d397ab62dcd263341465bcee88
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8114,7 +16727,7 @@ Date:    Fri Jun 4 16:26:54 2010 -0400
  demos/gtk-demo/demos/data/gtk-logo-rgb.gif      |  Bin 0 -> 6427 bytes
  demos/gtk-demo/demos/test.py                    |   14 +
  demos/gtk-demo/gtk-demo.py                      |  266 +++++++++++++++
- 18 files changed, 931 insertions(+), 0 deletions(-)
+ 18 files changed, 931 insertions(+)
 
 commit b3b1f029d8d16cf9bd74160009808147d07e3b3f
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -8123,7 +16736,7 @@ Date:    Fri Jun 4 11:25:08 2010 +0200
     Update gobject-introspection dependency to 0.6.14
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 45c4e46ae93bd83a0e3f3550df6c64ce96bbedb4
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -8132,7 +16745,7 @@ Date:    Fri Jun 4 11:23:41 2010 +0200
     Post-release version bump to 0.6.1
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7a94270dac48b67aabc7dbad156cf1180db9cb5e
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -8141,7 +16754,7 @@ Date:    Fri Jun 4 08:29:42 2010 +0200
     Pre-release version bump 0.6.0
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1e42ee6eb25a07a5201f24ffeac18d298a98477e
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8169,8 +16782,8 @@ Date:    Fri May 28 10:03:11 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=620406
 
  gi/pygi-invoke.c        |   73
- +++++++++++++++++++++++++++++++++++++++++++--
- tests/test_everything.py |   28 +++++++++++++++++
+ +++++++++++++++++++++++++++++++++++++++++++---
+ tests/test_everything.py |   28 ++++++++++++++++++
  2 files changed, 97 insertions(+), 4 deletions(-)
 
 commit c3f467e0ae99aa78c2fdb91b973a272d2fe970bd
@@ -8182,7 +16795,7 @@ Date:    Wed Jun 2 14:14:16 2010 -0400
     * use from gi.repository import GObject
 
  tests/test_overrides.py |    5 ++---
- 1 files changed, 2 insertions(+), 3 deletions(-)
+ 1 file changed, 2 insertions(+), 3 deletions(-)
 
 commit 46b5133fea4cd5db57a360b3cbe9ee923e27560c
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -8194,7 +16807,7 @@ Date:    Tue Jun 1 14:28:57 2010 +0200
 
  gi/pygi-info.c   |   11 +++++++++++
  tests/test_gi.py |   17 +++++++++++++++++
- 2 files changed, 28 insertions(+), 0 deletions(-)
+ 2 files changed, 28 insertions(+)
 
 commit 5f0f9a9c9145a129a063b041424c3109a24d9ead
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -8205,7 +16818,7 @@ Date:    Wed May 26 13:20:27 2010 +0200
 
  autogen.sh     |    7 +++++++
  pre-commit.hook |   39 +++++++++++++++++++++++++++++++++++++++
- 2 files changed, 46 insertions(+), 0 deletions(-)
+ 2 files changed, 46 insertions(+)
 
 commit 1319da5b7f483e48a90b0b7489f77236ba26f479
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -8217,22 +16830,22 @@ Date:  Wed May 26 12:19:17 2010 +0200
 
     This won't affect git blame nor git diff if the switch -w is used.
 
- gi/gimodule.c          |  138 ++++----
+ gi/gimodule.c          |  138 +++----
  gi/pygi-argument.c     |  960
- +++++++++++++++++++++++-----------------------
+ +++++++++++++++++++++++------------------------
  gi/pygi-boxed.c        |  108 +++---
  gi/pygi-callbacks.c    |  154 ++++----
  gi/pygi-callbacks.h    |    8 +-
- gi/pygi-closure.c      |  270 +++++++-------
+ gi/pygi-closure.c      |  270 ++++++-------
  gi/pygi-closure.h      |   18 +-
  gi/pygi-foreign-cairo.c |   36 +-
  gi/pygi-foreign-cairo.h |   36 +-
- gi/pygi-foreign.c      |   54 ++--
+ gi/pygi-foreign.c      |   54 +--
  gi/pygi-foreign.h      |   10 +-
- gi/pygi-info.c                 |  646 ++++++++++++++++----------------
- gi/pygi-invoke.c       |  380 ++++++++++----------
+ gi/pygi-info.c                 |  646 +++++++++++++++----------------
+ gi/pygi-invoke.c       |  380 +++++++++----------
  gi/pygi-repository.c   |  114 +++---
- gi/pygi-struct.c       |   88 +++---
+ gi/pygi-struct.c       |   88 ++---
  gi/pygi-type.c                 |   32 +-
  gi/pygi.h              |   20 +-
  gi/pygobject-external.h |   14 +-
@@ -8263,7 +16876,7 @@ Date:    Tue May 25 14:17:13 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=619604
 
  gi/types.py |  15 +++++++++++----
- 1 files changed, 11 insertions(+), 4 deletions(-)
+ 1 file changed, 11 insertions(+), 4 deletions(-)
 
 commit 686e10fcdb108af9758eb025a3447813c3513a93
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8274,7 +16887,7 @@ Date:    Thu Apr 29 10:55:13 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=617153
 
  gi/types.py |   3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 9f34d120845d936b04546a5cea599ec67e9181a7
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8290,7 +16903,7 @@ Date:    Mon May 24 16:16:50 2010 -0400
     * add test that loads objects from strings and connects them to
     signals
 
- gi/overrides/Gtk.py    |   19 +++++++++++-
+ gi/overrides/Gtk.py    |   19 +++++++++++--
  tests/test_overrides.py |   72
  +++++++++++++++++++++++++++++++++++++++++++++--
  2 files changed, 86 insertions(+), 5 deletions(-)
@@ -8307,7 +16920,7 @@ Date:    Mon May 24 18:48:10 2010 +0200
 
  gi/gimodule.c   |    9 +++++++++
  tests/test_gi.py |   13 ++++++++++++-
- 2 files changed, 21 insertions(+), 1 deletions(-)
+ 2 files changed, 21 insertions(+), 1 deletion(-)
 
 commit c9d44d4d46c3da3a445000b1db592baa9c378a92
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8329,7 +16942,7 @@ Date:    Mon May 24 11:48:16 2010 -0400
     check refcounting of callback userdata in unit tests
 
  tests/test_everything.py |   18 ++++++++++++++++++
- 1 files changed, 18 insertions(+), 0 deletions(-)
+ 1 file changed, 18 insertions(+)
 
 commit 8eb809468fe3e1f8e4f92bd7f25d96f9cf802cd4
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
@@ -8367,7 +16980,7 @@ Date:    Sun May 23 10:59:27 2010 +0200
 
  gi/pygi-argument.c      |    5 +++++
  tests/test_everything.py |    6 ++++++
- 2 files changed, 11 insertions(+), 0 deletions(-)
+ 2 files changed, 11 insertions(+)
 
 commit 60fdf4b8f738dd0f5c190bc18ddf010032d3c5ca
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8387,7 +17000,7 @@ Date:    Sat May 22 14:06:37 2010 +0200
 
  gi/gimodule.c           |   12 ++++++++++++
  tests/test_everything.py |    3 +++
- 2 files changed, 15 insertions(+), 0 deletions(-)
+ 2 files changed, 15 insertions(+)
 
 commit 4b369f8aca980fc6a582094d6648f40fe4af5e9f
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8427,7 +17040,7 @@ Date:    Fri May 21 19:05:03 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=619311
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit aa0357e468eb91e0f3707346e9b32f312fbf51d3
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8438,7 +17051,7 @@ Date:    Thu Apr 29 13:06:15 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=617159
 
  gi/gimodule.c |    4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
+ 1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit ab1aaff108d23aabd28c3634edfb67236eb55460
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8496,7 +17109,7 @@ Date:    Fri May 14 14:57:27 2010 -0400
       early GTK development
 
  gi/pygi-argument.c |  14 +++++++++++---
- 1 files changed, 11 insertions(+), 3 deletions(-)
+ 1 file changed, 11 insertions(+), 3 deletions(-)
 
 commit d963007aab123f4e53a944a66a935db2d22907c2
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8515,7 +17128,7 @@ Date:    Mon May 17 11:54:34 2010 -0400
     * fixes https://bugzilla.gnome.org/show_bug.cgi?id=618889
 
  gi/overrides/Gtk.py |   1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 897420ed97cc4a7b8a806894df5e76ed72617614
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8528,7 +17141,7 @@ Date:    Wed May 12 14:25:32 2010 -0400
  gi/overrides/Gtk.py    |  167
  ++++++++++++++++++++++++++++++++++++++++++++++-
  tests/test_overrides.py |   45 +++++++++++++
- 2 files changed, 211 insertions(+), 1 deletions(-)
+ 2 files changed, 211 insertions(+), 1 deletion(-)
 
 commit 865939d29c1e9d69dbe6b9cf89477b5516dbff1f
 Author: Zach Goldberg <zach@zachgoldberg.com>
@@ -8537,7 +17150,7 @@ Date:    Thu May 13 01:02:24 2010 -0400
     Bump version for development to 0.5.2 (hopefully 0.6)
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2674a9546b0246d4a75d71cf1708df77dc0173f9
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8570,9 +17183,9 @@ Date:    Thu Apr 29 14:55:33 2010 -0400
     * add DynamicGObjectModule tests and make tests use the new module
       - change import gobject to from gi.repository import GObject
 
- gi/importer.py                  |    6 +-
+ gi/importer.py                  |    6 +--
  gi/module.py            |   30 +++++++++++++++
- tests/test_everything.py |    6 +-
+ tests/test_everything.py |    6 +--
  tests/test_gi.py        |   93
  +++++++++++++++++++++++++---------------------
  4 files changed, 87 insertions(+), 48 deletions(-)
@@ -8584,7 +17197,7 @@ Date:    Fri Apr 30 14:11:55 2010 -0400
     override Gdk.Drawable to add cairo_create convinience method
 
  gi/overrides/Gdk.py |   7 ++++++-
- 1 files changed, 6 insertions(+), 1 deletions(-)
+ 1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit 17fa1289b1e2ed841dd5de09a2ec7c25d401886e
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8607,7 +17220,7 @@ Date:    Wed May 5 08:06:03 2010 +0200
     Avoid freeing garbage
 
  gi/pygi-invoke.c |    6 ++++--
- 1 files changed, 4 insertions(+), 2 deletions(-)
+ 1 file changed, 4 insertions(+), 2 deletions(-)
 
 commit 5e20c018ae09a936f5ff140df5d1c133c98e98ba
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8619,7 +17232,7 @@ Date:    Thu Apr 29 13:09:03 2010 +0200
 
  gi/types.py     |   10 +++++++++-
  tests/test_gi.py |   10 ++++++++++
- 2 files changed, 19 insertions(+), 1 deletions(-)
+ 2 files changed, 19 insertions(+), 1 deletion(-)
 
 commit 3e61e7d4450a2bb133c7f3862e0962a35339ce8d
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8631,7 +17244,7 @@ Date:    Mon May 3 18:35:13 2010 +0200
 
  gi/pygi-invoke.c        |    3 ++-
  tests/test_everything.py |   10 ++++++++++
- 2 files changed, 12 insertions(+), 1 deletions(-)
+ 2 files changed, 12 insertions(+), 1 deletion(-)
 
 commit 9669acd0fad193013ef3505ae231588307f9834c
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8657,7 +17270,7 @@ Date:    Tue Apr 27 19:13:08 2010 -0400
     Add the Gtk.Builder override
 
  gi/overrides/Gtk.py |  37 ++++++++++++++++++++++++++++++++++++-
- 1 files changed, 36 insertions(+), 1 deletions(-)
+ 1 file changed, 36 insertions(+), 1 deletion(-)
 
 commit 9fc6783406b8263ebd67ceae2730b4e86689b43e
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8669,7 +17282,7 @@ Date:    Fri Apr 30 15:00:52 2010 +0200
 
  gi/pygi-closure.c       |    8 +++++++-
  tests/test_everything.py |   16 ++++++++++++++++
- 2 files changed, 23 insertions(+), 1 deletions(-)
+ 2 files changed, 23 insertions(+), 1 deletion(-)
 
 commit 5657ccaaec09e2a3194ea2e9a923724bcc66759e
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8680,7 +17293,7 @@ Date:    Thu Apr 29 18:32:50 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=617162
 
  gi/overrides/Gdk.py |  20 +++++++++++++++++++-
- 1 files changed, 19 insertions(+), 1 deletions(-)
+ 1 file changed, 19 insertions(+), 1 deletion(-)
 
 commit 4410abd589a2f64cfbd7bbcb4013fae9e4aa734f
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -8729,7 +17342,7 @@ Date:    Tue Apr 20 23:23:38 2010 -0400
 
  gi/pygi-info.c |  417
  +++++++++++++++++++++++++++++---------------------------
- 1 files changed, 214 insertions(+), 203 deletions(-)
+ 1 file changed, 214 insertions(+), 203 deletions(-)
 
 commit 1d9c6b6d76a3e27f66e6f0cfc7b16c5191e4fc22
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8757,7 +17370,7 @@ Date:    Sun Apr 25 15:09:08 2010 -0400
 
  gi/pygi-closure.c       |    3 +++
  tests/test_everything.py |   13 +++++++++++++
- 2 files changed, 16 insertions(+), 0 deletions(-)
+ 2 files changed, 16 insertions(+)
 
 commit 2b12049306bf57513c43d08017185468bf897a4a
 Author: Zach Goldberg <zach@zachgoldberg.com>
@@ -8771,7 +17384,7 @@ Date:    Tue Apr 20 22:57:14 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=616356
 
  gi/pygi-closure.c |   4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8240320d0b67074ce91bdf7aadcf5951c5a8c45a
 Author: Zach Goldberg <zach@zachgoldberg.com>
@@ -8792,7 +17405,7 @@ Date:    Tue Apr 20 23:53:57 2010 -0400
 
  gi/pygi-info.c   |    1 +
  tests/test_gi.py |    3 +++
- 2 files changed, 4 insertions(+), 0 deletions(-)
+ 2 files changed, 4 insertions(+)
 
 commit 10e558ca283cdd06725bb0d24b5071ccbecc7d13
 Author: Zach Goldberg <zach@zachgoldberg.com>
@@ -8809,7 +17422,7 @@ Date:    Tue Apr 20 22:57:14 2010 -0400
     https://bugzilla.gnome.org/show_bug.cgi?id=616356
 
  gi/pygi-closure.c |   3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit d3b5fae9d609dbcd83deb0fa9102b24faf76787c
 Author: Zach Goldberg <zach@zachgoldberg.com>
@@ -8834,8 +17447,8 @@ Date:    Sat Jan 2 16:31:55 2010 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=603598
 
  gi/module.py      |    3 +-
- gi/pygi-argument.c |  24 +++----------
- gi/pygi-boxed.c    |  18 +++++++++-
+ gi/pygi-argument.c |  24 +++-----------
+ gi/pygi-boxed.c    |  18 ++++++++--
  gi/pygi-info.c     |  94
  +++++++++++++++++++++++++++++++++++++++++++++++-----
  gi/pygi-info.h     |   1 +
@@ -8854,7 +17467,7 @@ Date:    Fri Jan 22 22:16:32 2010 +0100
 
  configure.ac     |    2 +-
  gi/pygi-private.h |   20 --------------------
- 2 files changed, 1 insertions(+), 21 deletions(-)
+ 2 files changed, 1 insertion(+), 21 deletions(-)
 
 commit c0f40de5648e2ebc556c449342a0025ffce2e33b
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8866,7 +17479,7 @@ Date:    Sun Apr 18 11:50:14 2010 -0400
 
  gi/pygi-info.c |  360
  ++++++++++++++++++++++++++------------------------------
- 1 files changed, 168 insertions(+), 192 deletions(-)
+ 1 file changed, 168 insertions(+), 192 deletions(-)
 
 commit 24bb89f1310dc2fc8ee6ddaf945342ebf80055cd
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8877,7 +17490,7 @@ Date:    Tue Apr 20 15:12:47 2010 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=616279
 
  gi/pygi-closure.c |   9 +++++----
- 1 files changed, 5 insertions(+), 4 deletions(-)
+ 1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit d1ba23cdd05686ea721425f233371d573a2e9cce
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8886,7 +17499,7 @@ Date:    Thu Apr 22 19:57:17 2010 +0200
     Rename variable with a very generic name
 
  gi/module.py |   28 ++++++++++++++--------------
- 1 files changed, 14 insertions(+), 14 deletions(-)
+ 1 file changed, 14 insertions(+), 14 deletions(-)
 
 commit 391640b30ede50af3667b1019edb72bd79f2c68c
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8915,7 +17528,7 @@ Date:    Tue Apr 20 22:20:42 2010 -0400
     bumping to the next development version.
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e203dc7c8f524c16aa52e15758dc3a2b09fbac75
 Author: John Ehresman <jpe@wingware.com>
@@ -8924,7 +17537,7 @@ Date:    Tue Apr 20 20:40:02 2010 -0400
     Added missing , to keyword list of gio.GFile.set_attribute
 
  gio/gresolver.override |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 0b222f01ac9ceea1d127083623ad532ecc75bf7e
 Author: John Ehresman <jpe@wingware.com>
@@ -8933,8 +17546,8 @@ Date:    Tue Apr 20 20:37:12 2010 -0400
     Fix arg conversion in gio.GFile.set_attribute
 
  gio/gfile.override |  232
- ++++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 files changed, 227 insertions(+), 5 deletions(-)
+ ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 227 insertions(+), 5 deletions(-)
 
 commit a579ccc8bea90937bf970be3d461e2b650b0c7d6
 Author: John Ehresman <jpe@wingware.com>
@@ -8943,7 +17556,7 @@ Date:    Tue Apr 20 20:01:53 2010 -0400
     Set constants under python 2.5 or before
 
  gobject/gobjectmodule.c |    8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
+ 1 file changed, 8 insertions(+)
 
 commit 11fa39a861abf679e01b5f0da97be93ae0adf0f0
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
@@ -8959,7 +17572,7 @@ Date:    Sun Apr 18 20:22:21 2010 -0400
        not make the parsing crash.
 
  codegen/docextract_to_xml.py |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8dbc2cb016acef7b364804cd9bc8f0b1da37e84b
 Author: Zach Goldberg <zach@zachgoldberg.com>
@@ -8978,7 +17591,7 @@ Date:    Sun Apr 18 14:28:13 2010 -0400
     One more missing file...
 
  examples/Makefile.am |    2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
 
 commit 1dc575af19fe985cc3fa3ec0cf18aeab1f43c16d
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8988,7 +17601,7 @@ Date:    Sun Apr 18 14:18:44 2010 -0400
 
  Makefile.am  |    8 +++++++-
  configure.ac |    1 +
- 2 files changed, 8 insertions(+), 1 deletions(-)
+ 2 files changed, 8 insertions(+), 1 deletion(-)
 
 commit 8a9bb04755057e934b7f46c917af6ef281a2fedd
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -8996,8 +17609,8 @@ Date:    Sun Apr 18 13:48:45 2010 -0400
 
     Add one more missing file to tarballs
 
- gi/overrides/Makefile.am          |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ gi/overrides/Makefile.am |    1 +
+ 1 file changed, 1 insertion(+)
 
 commit 979e01852fc7f830ee91093accdc387fa535075f
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -9006,7 +17619,7 @@ Date:    Sun Apr 18 13:45:29 2010 -0400
     Add missing file to tarballs
 
  tests/Makefile.am |   1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 8b70faa7a9a32b9ea8862f28a503e38f496cfd89
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -9020,13 +17633,13 @@ Date:  Sun Apr 18 13:11:11 2010 -0400
  +++++++++++++++++++++++++++++++++++++++++++++++++++
  gi/pygi-argument.c  |   1 +
  gi/pygi-callbacks.c |   3 +-
- gi/pygi-closure.c   |   4 +-
+ gi/pygi-closure.c   |   4 +--
  gi/pygi-closure.h   |   2 +-
  gi/pygi-info.c      |  86
- ++++++++++++++++++++++++++++++++++++++++++++++++-
+ +++++++++++++++++++++++++++++++++++++++++++++++--
  gi/pygi-info.h      |   1 +
  gi/types.py        |   44 +++++++++++++++++--------
- tests/test_gi.py    |  18 ++++++++++
+ tests/test_gi.py    |  18 +++++++++++
  9 files changed, 227 insertions(+), 21 deletions(-)
 
 commit e239faacb4798fe2d166233ca1a19a843a6225e3
@@ -9036,7 +17649,7 @@ Date:    Sun Apr 18 11:59:06 2010 -0400
     Fix a typo in pygi-callbacks.c header
 
  gi/pygi-callbacks.c |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 79aa416ae8632b123da61d79fb820d9e2704209c
 Author: Zach Goldberg <zach@zachgoldberg.com>
@@ -9073,7 +17686,7 @@ Date:    Sun Apr 18 10:44:35 2010 -0400
 
  pygi-convert.sh |  193
  +++++++++++++++++++++++++++++++++++++++----------------
- 1 files changed, 137 insertions(+), 56 deletions(-)
+ 1 file changed, 137 insertions(+), 56 deletions(-)
 
 commit 34a39318c674737c6d64f2430456daef86ba1626
 Author: Colin Walters <walters@verbum.org>
@@ -9083,7 +17696,7 @@ Date:    Sun Apr 18 10:40:44 2010 -0400
 
  pygi-convert.sh |   71
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 71 insertions(+), 0 deletions(-)
+ 1 file changed, 71 insertions(+)
 
 commit a3afdb5fd33de0bf11d63857a245a8f5edec242c
 Author: Olav Vitters <olav@vitters.nl>
@@ -9092,7 +17705,7 @@ Date:    Sun Apr 18 13:01:58 2010 +0200
     Fix doap file
 
  pygi.doap |   4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
+ 1 file changed, 4 insertions(+)
 
 commit 0de73d0bba79f92af22f43693f3575c596712416
 Author: Zach Goldberg <zach@zachgoldberg.com>
@@ -9101,7 +17714,7 @@ Date:    Sat Apr 17 16:01:31 2010 -0400
     Add Zach Goldberg as a pygi maintainer
 
  pygi.doap |   5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
+ 1 file changed, 5 insertions(+)
 
 commit a0e22e36e8cf0c1e0da3c0ec48c821fdb5a07ccd
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -9110,7 +17723,7 @@ Date:    Sat Apr 17 11:47:54 2010 -0400
     Require PyCairo
 
  configure.ac |    7 +------
- 1 files changed, 1 insertions(+), 6 deletions(-)
+ 1 file changed, 1 insertion(+), 6 deletions(-)
 
 commit 2778f8a1bf6379a46beec6546c8efcb0fec2d7ad
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -9120,7 +17733,7 @@ Date:    Sat Apr 17 11:40:14 2010 -0400
 
  examples/cairo-demo.py |  121
  ++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 121 insertions(+), 0 deletions(-)
+ 1 file changed, 121 insertions(+)
 
 commit 610dd1eec87fab5c8c3badb4d104cba74477c745
 Author: Zach Goldberg <zach@zachgoldberg.com>
@@ -9151,9 +17764,9 @@ Date:    Sat Apr 17 09:17:14 2010 -0400
  gi/pygi-closure.c   | 205
  ++++++++++++++++++++++++++++++++++++++++++++++++
  gi/pygi-closure.h   |  57 ++++++++++++++
- gi/pygi-info.c      |  49 +++++++++++-
+ gi/pygi-info.c      |  49 ++++++++++--
  gi/pygi-private.h   |   2 +
- tests/test_gi.py    |  64 +++++++++++++++-
+ tests/test_gi.py    |  64 ++++++++++++++-
  10 files changed, 648 insertions(+), 10 deletions(-)
 
 commit a34cb9f0038a6c89e5e6c5f7761d48a5a833044f
@@ -9164,15 +17777,15 @@ Date:  Sat Apr 17 10:54:45 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603712
 
- configure.ac            |    6 ++
+ configure.ac            |    6 +++
  gi/Makefile.am                  |   10 +++-
  gi/gimodule.c           |    7 +++
  gi/pygi-argument.c      |   27 +++++++++-
  gi/pygi-foreign-cairo.c  |  103 ++++++++++++++++++++++++++++++++++++++
- gi/pygi-foreign-cairo.h  |   55 ++++++++++++++++++++
+ gi/pygi-foreign-cairo.h  |   55 +++++++++++++++++++++
  gi/pygi-foreign.c       |  123
  ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-foreign.h       |   52 +++++++++++++++++++
+ gi/pygi-foreign.h       |   52 ++++++++++++++++++++
  gi/pygi-private.h       |    1 +
  tests/test_everything.py |   48 ++++++++++++++++++
  10 files changed, 428 insertions(+), 4 deletions(-)
@@ -9198,7 +17811,7 @@ Date:    Fri Apr 16 10:40:40 2010 -0400
  HACKING          |   19 +++++++++++++++++++
  Makefile.am      |   12 ++++++++++++
  tests/Makefile.am |   14 +++++++++++++-
- 3 files changed, 44 insertions(+), 1 deletions(-)
+ 3 files changed, 44 insertions(+), 1 deletion(-)
 
 commit 695ac7bc5c60371a32538d690c7a15509f3c9637
 Author: John Stowers <john.stowers@gmail.com>
@@ -9208,7 +17821,7 @@ Date:    Fri Apr 16 14:36:11 2010 +1200
 
  Makefile.am  |    1 +
  README.win32 |   24 ++++++++++++++++++++++++
- 2 files changed, 25 insertions(+), 0 deletions(-)
+ 2 files changed, 25 insertions(+)
 
 commit e580da87f0b2fd36cb5d8008fb2fb0c3b01f456a
 Author: John Stowers <john.stowers@gmail.com>
@@ -9235,7 +17848,7 @@ Date:    Sat Jul 25 14:12:30 2009 +1200
     are OK
 
  gio/giomodule.c |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit 5d159a13d89587cba189a0ca3203ac003e2f1f2b
 Author: John Stowers <john.stowers@gmail.com>
@@ -9247,7 +17860,7 @@ Date:    Thu Apr 15 22:52:48 2010 +1200
     largely unneeded. Just add the G_XXX constants
     to the module directly
 
- gobject/Makefile.am         |   16 +--------
+ gobject/Makefile.am         |   16 +-------
  gobject/constants.py        |   83
  ++++++++++++++++++++++++++++++++++++++++++
  gobject/constants.py.in      |   50 -------------------------
@@ -9268,9 +17881,9 @@ Date:    Thu Apr 15 22:49:17 2010 +1200
     * Modernise setup.py and add more util functions
       to dsextras
 
- dsextras.py |  32 ++++++++++++++++--
+ dsextras.py |  32 ++++++++++++++++---
  setup.py    | 102
- ++++++++++++++++++++++++++++++++++++++++++++++++++--------
+ +++++++++++++++++++++++++++++++++++++++++++++++++++--------
  2 files changed, 116 insertions(+), 18 deletions(-)
 
 commit d11ef47072acae5801ce25c68d1289e425eb9fc2
@@ -9280,7 +17893,7 @@ Date:    Thu Apr 15 22:48:28 2010 +1200
     Include pygsource.h
 
  glib/pygiochannel.c |   1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit c5f6af4844c74354abc508d17969d9d45153acf2
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -9289,7 +17902,7 @@ Date:    Thu Apr 15 14:25:59 2010 -0400
     Add metadata to the .doap file
 
  pygi.doap |   3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit 81796cb77cbe6b9598a652bd63c047af93e747ee
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -9299,7 +17912,7 @@ Date:    Wed Apr 14 12:01:43 2010 -0400
 
  gi/overrides/GIMarshallingTests.py |  69
  ++++++++++++++++++++++++++++++++++++
- 1 files changed, 69 insertions(+), 0 deletions(-)
+ 1 file changed, 69 insertions(+)
 
 commit de5d2ea1584b01af809346316c7fbd4955a9db1d
 Author: Colin Walters <walters@verbum.org>
@@ -9316,7 +17929,7 @@ Date:    Wed Apr 14 10:06:07 2010 -0400
     the end of the normal build.
 
  gi/Makefile.am |   15 +++++++++------
- 1 files changed, 9 insertions(+), 6 deletions(-)
+ 1 file changed, 9 insertions(+), 6 deletions(-)
 
 commit 5a47e96e3f580c973e6880dafa747f54c144c760
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -9342,7 +17955,7 @@ Date:    Tue Apr 13 13:33:12 2010 -0400
        errors with a regular space.
 
  codegen/docextract_to_xml.py |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit bd4e7f2459e34957aaae59b9be807d6dff5ec1eb
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
@@ -9354,7 +17967,7 @@ Date:    Tue Apr 13 12:28:10 2010 -0400
        expressions that cause errors with more appropriate output.
 
  codegen/docextract_to_xml.py |    4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
+ 1 file changed, 4 insertions(+)
 
 commit f00b9ce91fc9c3aabd4af4132fc112d9e415e12e
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
@@ -9370,7 +17983,7 @@ Date:    Sun Apr 11 17:46:40 2010 -0400
        multi-line comments are used in Doxygen blocks.
 
  codegen/docextract_to_xml.py |    9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
+ 1 file changed, 9 insertions(+)
 
 commit a2fcdecbb5e109da5568084d7acb2332af83b6f5
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
@@ -9387,7 +18000,7 @@ Date:    Sun Apr 11 16:15:01 2010 -0400
        errors.
 
  codegen/docextract.py |    4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
+ 1 file changed, 4 insertions(+)
 
 commit 825fd305f03b726665edca34963978ce27448182
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
@@ -9482,7 +18095,7 @@ Date:    Sun Apr 11 15:45:09 2010 -0400
 
  codegen/docextract.py       |  439
  +++++++++++++++++++++++++++++++++---------
- codegen/docextract_to_xml.py |   87 ++++++--
+ codegen/docextract_to_xml.py |   87 ++++++---
  2 files changed, 414 insertions(+), 112 deletions(-)
 
 commit 9fef1acb42cd900d4a814a7378f60bc189121785
@@ -9492,7 +18105,7 @@ Date:    Fri Apr 9 13:47:03 2010 +0200
     Always create the .so link
 
  gi/Makefile.am |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e9f7fd414e94595e40eb1ba0fc471ca69136d82f
 Author: Paul Bolle <pebolle@tiscali.nl>
@@ -9504,7 +18117,7 @@ Date:    Thu Apr 8 11:52:25 2010 +0200
 
  docs/reference/pygio-file.xml       |   58
  +++++++++++++++++-----------------
- docs/reference/pygio-inputstream.xml |   22 ++++++------
+ docs/reference/pygio-inputstream.xml |   22 ++++++-------
  docs/reference/pygio-mount.xml       |   10 +++---
  3 files changed, 45 insertions(+), 45 deletions(-)
 
@@ -9522,7 +18135,7 @@ Date:    Mon Apr 5 18:10:42 2010 +0200
  tests/test_gtype.py     |  112 ------------------
  tests/test_subtype.py   |  289
  ----------------------------------------------
- 4 files changed, 0 insertions(+), 718 deletions(-)
+ 4 files changed, 718 deletions(-)
 
 commit ef0ceb266a45715ece58642fb0042e3376416755
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -9533,7 +18146,7 @@ Date:    Wed Feb 3 20:33:03 2010 +0100
  gi/overrides/Gdk.py   |   21 +++++++++++++++++++++
  gi/overrides/Gtk.py   |   21 +++++++++++++++++++++
  gi/overrides/TestGI.py |   20 ++++++++++++++++++++
- 3 files changed, 62 insertions(+), 0 deletions(-)
+ 3 files changed, 62 insertions(+)
 
 commit 5106523a4b8378997a1e6cb0488398aa73e7d9d5
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -9547,8 +18160,8 @@ Date:    Wed Feb 3 20:29:55 2010 +0100
 
  gi/overrides/TestGI.py |   49
  ++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gi.py      |    8 ++++++-
- 2 files changed, 56 insertions(+), 1 deletions(-)
+ tests/test_gi.py      |    8 +++++++-
+ 2 files changed, 56 insertions(+), 1 deletion(-)
 
 commit 23fc0f615d87994acafd9d39e92dd92b587fc2eb
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -9608,13 +18221,13 @@ Date:  Fri Jan 22 13:41:21 2010 +0100
 
  gi/importer.py      |  40 +++++++-------------
  gi/module.py       |   43 ++++++++++++++-------
- gi/overrides/Gdk.py |  42 +++++++++++++-------
- gi/overrides/Gtk.py |  16 +++----
+ gi/overrides/Gdk.py |  42 +++++++++++++--------
+ gi/overrides/Gtk.py |  16 ++++----
  gi/types.py        |    6 +++
  tests/libtestgi.c   | 105
  +++++++++++++++++++++++++++++++++++++++++++++++++++
  tests/libtestgi.h   |  49 ++++++++++++++++++++++++
- tests/test_gi.py    |  36 +++++++++++++++++
+ tests/test_gi.py    |  36 ++++++++++++++++++
  8 files changed, 273 insertions(+), 64 deletions(-)
 
 commit 289d641775d1ea52d2a5379126b70b7fcee46683
@@ -9626,7 +18239,7 @@ Date:    Sun Jan 10 21:01:59 2010 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=606582
 
  gio/gcancellable.override |   1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit b11cf2595987c1f0fc4ffd834f07c98b92aa2355
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -9636,7 +18249,7 @@ Date:    Fri Jan 8 21:10:28 2010 +0100
 
  gi/pygi-struct.c |    2 +-
  tests/test_gi.py |    5 +++++
- 2 files changed, 6 insertions(+), 1 deletions(-)
+ 2 files changed, 6 insertions(+), 1 deletion(-)
 
 commit b4189be2b2d3c350fdf33e27309bee5a72e4f72a
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -9680,7 +18293,7 @@ Date:    Mon Jan 4 08:35:14 2010 +0100
     Committed a patch from Kevin Pyle
 
  Makefile.am |  27 +++++++++++++--------------
- 1 files changed, 13 insertions(+), 14 deletions(-)
+ 1 file changed, 13 insertions(+), 14 deletions(-)
 
 commit 8ddcbca0e98e0b0c082170a2b2b6cfcbd7864b40
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -9694,7 +18307,7 @@ Date:    Fri Dec 11 22:24:30 2009 +0100
 
  tests/runtests.py |   1 -
  tests/test_gi.py  |   3 +++
- 2 files changed, 3 insertions(+), 1 deletions(-)
+ 2 files changed, 3 insertions(+), 1 deletion(-)
 
 commit 284a1e1c0143c95d3007cf58e6c248b5d11fb4d1
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9706,7 +18319,7 @@ Date:    Sun Jan 3 11:02:57 2010 +0100
  gio/gcancellable.override  |  37 +++++++++++++++++++++++++++++++++++++
  gio/gio.override          |    3 +++
  tests/test_gcancellable.py |  15 +++++++++++++++
- 4 files changed, 56 insertions(+), 0 deletions(-)
+ 4 files changed, 56 insertions(+)
 
 commit 82d7bcbf37200ee2ef5892dd12bebd2f39965c56
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9716,7 +18329,7 @@ Date:    Sat Jan 2 23:15:56 2010 +0100
 
  gio/gio.defs |  102
  +++++++++++++++++++++++++++++-----------------------------
- 1 files changed, 51 insertions(+), 51 deletions(-)
+ 1 file changed, 51 insertions(+), 51 deletions(-)
 
 commit 49a078cd22d55dc33a03ecfda235d63955edc741
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9725,7 +18338,7 @@ Date:    Sat Jan 2 23:15:21 2010 +0100
     Post release version bump to 2.21.2
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 4f9f1f43ab4e2cfb204ffa0e257a34cfd95d84e2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9734,7 +18347,7 @@ Date:    Sat Jan 2 22:58:36 2010 +0100
     Update NEWS and release PyGObject-2.21.1
 
  NEWS |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 55 insertions(+), 0 deletions(-)
+ 1 file changed, 55 insertions(+)
 
 commit c1f34be73bd186d7b4682dfef133da2c4229d213
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9744,7 +18357,7 @@ Date:    Fri Jan 1 20:25:35 2010 +0100
 
  gio/gvolume.override |   54
  ++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 54 insertions(+), 0 deletions(-)
+ 1 file changed, 54 insertions(+)
 
 commit 9b76fbff6f6897aaf26ed4644c1f19efc2826917
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9753,7 +18366,7 @@ Date:    Fri Jan 1 20:22:21 2010 +0100
     gio.Mount.unmount_with_operation() fix a copy/paste leftover
 
  gio/gmount.override |   4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 6f459786dd641cd49d81eba403d940620f961cab
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9763,7 +18376,7 @@ Date:    Fri Jan 1 20:21:05 2010 +0100
 
  gio/gmount.override |  54
  +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 54 insertions(+), 0 deletions(-)
+ 1 file changed, 54 insertions(+)
 
 commit d4b5d1b4839364e5676eb2da28f1d21db7e2552d
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9773,7 +18386,7 @@ Date:    Fri Jan 1 20:15:38 2010 +0100
 
  gio/gmount.override |  54
  +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 54 insertions(+), 0 deletions(-)
+ 1 file changed, 54 insertions(+)
 
 commit e919d47c2430451b436cec955e9b99237f97028c
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9783,7 +18396,7 @@ Date:    Fri Jan 1 18:22:46 2010 +0100
 
  gio/gfile.override |  54
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 54 insertions(+), 0 deletions(-)
+ 1 file changed, 54 insertions(+)
 
 commit 5a614df9c5507d67f240462f7bf71b4cd411addf
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9793,7 +18406,7 @@ Date:    Fri Jan 1 18:14:11 2010 +0100
 
  gio/gfile.override |  52
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 52 insertions(+), 0 deletions(-)
+ 1 file changed, 52 insertions(+)
 
 commit 6af506647f36f2b825bc6556df5ee57fa7721906
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9803,7 +18416,7 @@ Date:    Fri Jan 1 18:10:49 2010 +0100
 
  gio/gfile.override |  52
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 52 insertions(+), 0 deletions(-)
+ 1 file changed, 52 insertions(+)
 
 commit e700efc839fc0b651fc9794a1611190bffa80263
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9813,7 +18426,7 @@ Date:    Fri Jan 1 18:02:46 2010 +0100
 
  gio/gfile.override |  55
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 55 insertions(+), 0 deletions(-)
+ 1 file changed, 55 insertions(+)
 
 commit 92662f129fc728258fd5e34f53dcb081e3715017
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9822,7 +18435,7 @@ Date:    Fri Jan 1 17:00:26 2010 +0100
     Wrap gio.File.poll_mountable()
 
  gio/gfile.override |  41 +++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 41 insertions(+), 0 deletions(-)
+ 1 file changed, 41 insertions(+)
 
 commit 99902b786500948c3278779841e4db54223b9256
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9831,7 +18444,7 @@ Date:    Fri Jan 1 16:56:26 2010 +0100
     Wrap gio.File.open_readwrite_async()
 
  gio/gfile.override |  44 ++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 44 insertions(+), 0 deletions(-)
+ 1 file changed, 44 insertions(+)
 
 commit 8cff5d53183ae81364ac74a34a1d52e55e082eb4
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9841,7 +18454,7 @@ Date:    Fri Jan 1 16:50:15 2010 +0100
 
  gio/gfile.override |  54
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 54 insertions(+), 0 deletions(-)
+ 1 file changed, 54 insertions(+)
 
 commit ca436fe7785fd24b0f0e65f2f8c9fa6478277682
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9852,7 +18465,7 @@ Date:    Fri Jan 1 13:30:24 2010 +0100
  gio/gfile.override |  51
  +++++++++++++++++++++++++++++++++++++++++++++++++++
  tests/test_gio.py  |  24 ++++++++++++++++++++++++
- 2 files changed, 75 insertions(+), 0 deletions(-)
+ 2 files changed, 75 insertions(+)
 
 commit f72c5e451dfaeb01b3c3d9243fed2732d3620462
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9862,7 +18475,7 @@ Date:    Fri Jan 1 13:20:11 2010 +0100
 
  gio/gdrive.override |  52
  +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 52 insertions(+), 0 deletions(-)
+ 1 file changed, 52 insertions(+)
 
 commit 29043bade408338cefa13fb4b0c875aabd3ef05e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9872,7 +18485,7 @@ Date:    Fri Jan 1 13:00:42 2010 +0100
 
  gio/gdrive.override |  52
  +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 52 insertions(+), 0 deletions(-)
+ 1 file changed, 52 insertions(+)
 
 commit dff374287bbecc8af782bbc726fad86c6c867754
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9881,7 +18494,7 @@ Date:    Fri Jan 1 12:45:29 2010 +0100
     Add more remainders on missing methods of gio.Socket and related types
 
  gio/gsocket.override |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit b8c7e996498bd72df551011af85ff05ef7335b4f
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9890,8 +18503,8 @@ Date:    Fri Jan 1 12:41:08 2010 +0100
     Wrap gio.SocketListener.accept_socket_async|finish() and add a test
 
  gio/gsocket.override  |   86
- +++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gsocket.py |   24 +++++++++++++
+ +++++++++++++++++++++++++++++++++++++++++++++++--
+ tests/test_gsocket.py |   24 ++++++++++++++
  2 files changed, 108 insertions(+), 2 deletions(-)
 
 commit a5ae2d5ba3db34967fe07a3cc97b75df2793988c
@@ -9911,7 +18524,7 @@ Date:    Fri Jan 1 11:19:34 2010 +0100
     Wrap gio.SocketListener.accept_async()
 
  gio/gsocket.override |   42 ++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 42 insertions(+), 0 deletions(-)
+ 1 file changed, 42 insertions(+)
 
 commit c9496b29ef9ef232020a4044577d2947353953a5
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9922,7 +18535,7 @@ Date:    Fri Jan 1 11:14:35 2010 +0100
  gio/gsocket.override  |   48
  +++++++++++++++++++++++++++++++++++++++++++++++-
  tests/test_gsocket.py |   13 +++++++++++++
- 2 files changed, 60 insertions(+), 1 deletions(-)
+ 2 files changed, 60 insertions(+), 1 deletion(-)
 
 commit 1aa5e301c49f11e1c5ef58de44b4b03f714d1a70
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9933,7 +18546,7 @@ Date:    Thu Dec 31 16:35:18 2009 +0100
  gio/gsocket.override  |   46
  +++++++++++++++++++++++++++++++++++++++++++++-
  tests/test_gsocket.py |   13 +++++++++++++
- 2 files changed, 58 insertions(+), 1 deletions(-)
+ 2 files changed, 58 insertions(+), 1 deletion(-)
 
 commit aaedcf166c78baf5449ef59d0ade4a29077fedc7
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9942,7 +18555,7 @@ Date:    Thu Dec 31 16:25:33 2009 +0100
     Make cancellable optional in gio.SocketClient.connect_to_host()
 
  gio/gio.defs |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3829d7667b19126fb74562b28d271e616b154c99
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9952,8 +18565,8 @@ Date:    Thu Dec 31 15:25:10 2009 +0100
 
  gio/gsocket.override  |   57
  ++++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gsocket.py |    9 +++++++
- 2 files changed, 65 insertions(+), 1 deletions(-)
+ tests/test_gsocket.py |    9 ++++++++
+ 2 files changed, 65 insertions(+), 1 deletion(-)
 
 commit 5bec72f34ea75bc56158cae5c39d61a2a4e7e601
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9962,7 +18575,7 @@ Date:    Thu Dec 31 10:19:47 2009 +0100
     Add more remainders on missing methods of gio.Socket and related types
 
  gio/gsocket.override |    8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
+ 1 file changed, 8 insertions(+)
 
 commit b08b20f2b1a57bcbf400d6fe8e87cf052bdb719d
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9972,7 +18585,7 @@ Date:    Thu Dec 31 10:16:18 2009 +0100
 
  gio/gsocket.override |   47
  +++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 47 insertions(+), 0 deletions(-)
+ 1 file changed, 47 insertions(+)
 
 commit 116ea1bfe32946e67aa54eb8dc7b977e57f254c2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9982,7 +18595,7 @@ Date:    Thu Dec 31 10:10:43 2009 +0100
 
  gio/gsocket.override |   48
  ++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 48 insertions(+), 0 deletions(-)
+ 1 file changed, 48 insertions(+)
 
 commit 9c930910505d5b9001b8cec17ff98fadeaa799e2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -9991,7 +18604,7 @@ Date:    Thu Dec 31 09:59:46 2009 +0100
     Wrap gio.SocketClient.connect_async()
 
  gio/gsocket.override |   45 +++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 45 insertions(+), 0 deletions(-)
+ 1 file changed, 45 insertions(+)
 
 commit dff024256295c15e49888ad9d5fef74a7746edd7
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10001,7 +18614,7 @@ Date:   Wed Dec 30 23:44:25 2009 +0100
 
  gio/gsocket.override  |   42 ++++++++++++++++++++++++++++++++++++++++++
  tests/test_gsocket.py |   16 ++++++++++++++++
- 2 files changed, 58 insertions(+), 0 deletions(-)
+ 2 files changed, 58 insertions(+)
 
 commit e2330bd0d6cbc49b0ecb27b30e3b0593935ce229
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10011,7 +18624,7 @@ Date:   Wed Dec 30 23:43:14 2009 +0100
 
  gio/gio-types.defs |   7 +++++++
  gio/gio.defs      |   31 +++++++++++++++++++++++++++++++
- 2 files changed, 38 insertions(+), 0 deletions(-)
+ 2 files changed, 38 insertions(+)
 
 commit 6040b33467ea381c6cb02f6a5efc0745fa8fa47b
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10020,7 +18633,7 @@ Date:   Wed Dec 30 22:54:47 2009 +0100
     Make cancellable optional for gio.SocketAddressEnumerator.next()
 
  gio/gio.defs |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b19f59790b9de943d69b6c5e483928e0443c3d20
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10029,7 +18642,7 @@ Date:   Wed Dec 30 22:17:44 2009 +0100
     Add a remainder of the Socket methods that needs manual wrapping still
 
  gio/gsocket.override |    5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
+ 1 file changed, 5 insertions(+)
 
 commit 771a7c3fdef7b2e98e509293a8376a81c1282286
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10039,7 +18652,7 @@ Date:   Wed Dec 30 17:20:35 2009 +0100
 
  gio/gsocket.override  |   27 +++++++++++++++++++++++++++
  tests/test_gsocket.py |    6 +++++-
- 2 files changed, 32 insertions(+), 1 deletions(-)
+ 2 files changed, 32 insertions(+), 1 deletion(-)
 
 commit 50960656815b0897a5ebe5f011537b8dcbdc857e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10051,7 +18664,7 @@ Date:   Wed Dec 30 16:21:49 2009 +0100
  gio/gio.override      |    1 +
  gio/gsocket.override  |   41 +++++++++++++++++++++++++++++++++++++++++
  tests/test_gsocket.py |   21 +++++++++++++++++++++
- 4 files changed, 64 insertions(+), 0 deletions(-)
+ 4 files changed, 64 insertions(+)
 
 commit de7a359e81792ae8573ac944455ea289985449ed
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10061,7 +18674,7 @@ Date:   Wed Dec 30 14:07:52 2009 +0100
 
  gio/gresolver.override  |   37 +++++++++++++++++++++++++++++++++++++
  tests/test_gresolver.py |   13 +++++++++++++
- 2 files changed, 50 insertions(+), 0 deletions(-)
+ 2 files changed, 50 insertions(+)
 
 commit 308421789ce849040d645077c41c80b6e2e65e83
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10071,7 +18684,7 @@ Date:   Wed Dec 30 14:00:22 2009 +0100
 
  gio/gresolver.override |   48
  ++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 48 insertions(+), 0 deletions(-)
+ 1 file changed, 48 insertions(+)
 
 commit 9d56ce775f56fff1b1ef3c75843c0583e39f75c3
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10081,7 +18694,7 @@ Date:   Wed Dec 30 11:11:32 2009 +0100
 
  gio/gresolver.override  |   42 ++++++++++++++++++++++++++++++++++++++++++
  tests/test_gresolver.py |    5 +++++
- 2 files changed, 47 insertions(+), 0 deletions(-)
+ 2 files changed, 47 insertions(+)
 
 commit 7fc71f490494dae73a5264869a97a9d30814930e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10092,7 +18705,7 @@ Date:   Tue Dec 29 22:12:50 2009 +0100
  gio/gresolver.override  |   46
  ++++++++++++++++++++++++++++++++++++++++++++++
  tests/test_gresolver.py |   14 ++++++++++++++
- 2 files changed, 60 insertions(+), 0 deletions(-)
+ 2 files changed, 60 insertions(+)
 
 commit c91656dbe56f07d3ebbad5113467c22427cf212a
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10102,7 +18715,7 @@ Date:   Tue Dec 29 21:41:30 2009 +0100
 
  gio/gresolver.override  |   82
  +++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gresolver.py |   16 ++++++++-
+ tests/test_gresolver.py |   16 +++++++--
  2 files changed, 96 insertions(+), 2 deletions(-)
 
 commit 45b477342fa1c2435917c6d97745ad57665c4734
@@ -10113,7 +18726,7 @@ Date:   Tue Dec 29 17:15:44 2009 +0100
 
  gio/gdrive.override |  54
  +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 54 insertions(+), 0 deletions(-)
+ 1 file changed, 54 insertions(+)
 
 commit 635227480f9659a1f91ab1ec12536d3ed012a976
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10123,7 +18736,7 @@ Date:   Tue Dec 29 17:06:52 2009 +0100
 
  gio/gdrive.override |   7 ++++++-
  gio/gio.defs       |    1 +
- 2 files changed, 7 insertions(+), 1 deletions(-)
+ 2 files changed, 7 insertions(+), 1 deletion(-)
 
 commit 3c0cbc95af29b1e192ed4b5963e96e39c70b349c
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10132,7 +18745,7 @@ Date:   Tue Dec 29 13:51:54 2009 +0100
     Small fix in the header
 
  gio/gdrive.override |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7589128515b79d836365247dc876538c6352da23
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10145,7 +18758,7 @@ Date:   Tue Dec 29 12:40:50 2009 +0100
  gio/gresolver.override  |   57
  +++++++++++++++++++++++++++++++++++++++++++++++
  tests/test_gresolver.py |   21 +++++++++++++++++
- 4 files changed, 80 insertions(+), 0 deletions(-)
+ 4 files changed, 80 insertions(+)
 
 commit 604d2bf220b1fefa415baaedbdb2882dbaf9e07e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10155,7 +18768,7 @@ Date:   Tue Dec 29 12:39:13 2009 +0100
     gio.Resolver.lookup_by_address()
 
  gio/gio.defs |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 00029145f4cd10759b37b38fb9f72435bf26b28b
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10165,7 +18778,7 @@ Date:   Tue Dec 29 10:15:14 2009 +0100
 
  gio/gio.defs |   94
  +++++++++++++++++++++++++++++-----------------------------
- 1 files changed, 47 insertions(+), 47 deletions(-)
+ 1 file changed, 47 insertions(+), 47 deletions(-)
 
 commit 56d5dfc4fd862e32c19f944a0feb7a00a9154f06
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10174,7 +18787,7 @@ Date:   Tue Dec 29 10:12:53 2009 +0100
     Strip g_prefix from InetAddress functions
 
  gio/gio.defs |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 1d360301d51a587a36a59f5d62e354484bbd2b31
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10185,7 +18798,7 @@ Date:   Tue Dec 29 10:03:59 2009 +0100
     Strip the g_ prefix from function name
 
  gio/gio.defs |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 0fe00109c4f6fc27cbaae9b0a24ecfac71355d2f
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10197,8 +18810,8 @@ Date:   Tue Dec 29 09:54:05 2009 +0100
  gio/gfileiostream.override |  68
  ++++++++++++++++++++++++++++++++++++++++++++
  gio/gio.override          |    1 +
- tests/test_gio.py         |   18 +++++++++++
- 4 files changed, 88 insertions(+), 0 deletions(-)
+ tests/test_gio.py         |   18 ++++++++++++
+ 4 files changed, 88 insertions(+)
 
 commit 86783c695f3641b9491962e8f95a4dcb91f4017c
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -10223,7 +18836,7 @@ Date:   Mon Dec 28 22:41:54 2009 +0100
  gio/giostream.override |   68
  ++++++++++++++++++++++++++++++++++++++++++++++++
  tests/test_gio.py     |   21 +++++++++++++++
- 4 files changed, 91 insertions(+), 0 deletions(-)
+ 4 files changed, 91 insertions(+)
 
 commit 0bff01bcee73a0e0d18342331136119c4e8bf151
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10232,7 +18845,7 @@ Date:   Mon Dec 28 22:39:09 2009 +0100
     Make cancellable an optional parameter in GFile.create_readwrite()
 
  gio/gio.defs |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1cabd733cde269ce3164834933f4a226673ecb0b
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10241,7 +18854,7 @@ Date:   Mon Dec 28 21:39:50 2009 +0100
     Remove a duplicate entry in gio.defs
 
  gio/gio.defs |    9 ---------
- 1 files changed, 0 insertions(+), 9 deletions(-)
+ 1 file changed, 9 deletions(-)
 
 commit 9ac372ad0bcfdec4bb1c96bc152246542a59a9b1
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10261,7 +18874,7 @@ Date:   Mon Dec 28 18:28:03 2009 +0100
 
  gio/gicon.override  |  14 ++++++++++++++
  tests/test_gicon.py |   7 +++++++
- 2 files changed, 21 insertions(+), 0 deletions(-)
+ 2 files changed, 21 insertions(+)
 
 commit 3d5056ad766d6856d8d6459fe9b377de2f0fd172
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10271,7 +18884,7 @@ Date:   Sat Dec 26 22:27:48 2009 +0100
 
  gio/gio-types.defs |  153
  ++++++++++++++++++++++++++++++++++++++++++++++++++--
- 1 files changed, 149 insertions(+), 4 deletions(-)
+ 1 file changed, 149 insertions(+), 4 deletions(-)
 
 commit 62a9d660a4a2d5fab1d57c6c96c984ff02d25ccd
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10280,7 +18893,7 @@ Date:   Fri Dec 25 18:06:39 2009 +0100
     Post release version bump to 2.21.1
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2bd92cba5b028f0f78c35ecb34e648e95248f9d3
 Author: Bastian Winkler <buz@netbuz.org>
@@ -10292,7 +18905,7 @@ Date:   Fri Aug 14 15:10:26 2009 +0200
     from python.
 
  gobject/pygtype.c |   15 +++++++++++----
- 1 files changed, 11 insertions(+), 4 deletions(-)
+ 1 file changed, 11 insertions(+), 4 deletions(-)
 
 commit 828d0f042b59ea0319f33a23803c179af34ef2f1
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -10304,7 +18917,7 @@ Date:   Tue Dec 22 18:05:47 2009 +0100
  gi/overrides/Makefile.am |    1 +
  gi/overrides/keysyms.py  | 1499
  ++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 1502 insertions(+), 0 deletions(-)
+ 3 files changed, 1502 insertions(+)
 
 commit 24fa1224ff00b9da177e0bfaa1e14e1b899e4976
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -10315,12 +18928,12 @@ Date: Wed Nov 25 10:33:56 2009 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602640
 
- gi/pygi-argument.c |  11 ++++++++-
- gi/pygi-argument.h |   3 +-
- gi/pygi-info.c     |  14 ++++++++++-
+ gi/pygi-argument.c |  11 +++++++++-
+ gi/pygi-argument.h |   3 ++-
+ gi/pygi-info.c     |  14 ++++++++++--
  tests/libtestgi.c  |  60
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/libtestgi.h  |   4 +++
+ tests/libtestgi.h  |   4 ++++
  tests/test_gi.py   |  15 +++++++++++++
  6 files changed, 103 insertions(+), 4 deletions(-)
 
@@ -10341,7 +18954,7 @@ Date:   Fri Dec 18 10:31:48 2009 +0100
     Add pygi-external.h into Makefile SOURCES
 
  gobject/Makefile.am |   3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 108c03b78f04b4bcfe066a6cb4d941e172bd32fe
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10350,7 +18963,7 @@ Date:   Fri Dec 18 01:20:34 2009 +0100
     Bug 598435 - No wrapping for g_find_program_in_path ()
 
  glib/glibmodule.c |   20 ++++++++++++++++++++
- 1 files changed, 20 insertions(+), 0 deletions(-)
+ 1 file changed, 20 insertions(+)
 
 commit d3d5cb3a4a2c2cb2bd0c2571304d59e19bc08452
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10362,7 +18975,7 @@ Date:   Thu Dec 17 21:54:36 2009 +0100
  gio/unix.defs      |  115
  ++++++++++++++++++++++++++++++++++++++++++++++++++-
  gio/unix.override   |   8 ++++
- 3 files changed, 144 insertions(+), 1 deletions(-)
+ 3 files changed, 144 insertions(+), 1 deletion(-)
 
 commit c87c8a81947a68507e8f3bcaf8e0e969b3e5331b
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10375,7 +18988,7 @@ Date:   Thu Dec 17 21:52:11 2009 +0100
     Without the patch the unix module will fail, so I'm forced to bump.
 
  configure.ac |    6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit b630c8d4b1e55938dac89729768c4a877b305215
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10384,7 +18997,7 @@ Date:   Thu Dec 17 02:24:45 2009 +0100
     Properly define Connectable as interface type and not object type
 
  gio/gio-types.defs |  12 ++++++------
- 1 files changed, 6 insertions(+), 6 deletions(-)
+ 1 file changed, 6 insertions(+), 6 deletions(-)
 
 commit e955b931b07113c7432f7a85f882f69f12d263ad
 Author: Anderson Lizardo <anderson.lizardo@openbossa.org>
@@ -10398,7 +19011,7 @@ Date:   Mon Nov 30 22:01:25 2009 +0100
 
  configure.ac     |    2 +-
  gi/pygi-private.h |   19 +++++++++++++++++++
- 2 files changed, 20 insertions(+), 1 deletions(-)
+ 2 files changed, 20 insertions(+), 1 deletion(-)
 
 commit 542fdf6da4ad8f2d28d0d50152bd93cb4d8ee39a
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -10422,7 +19035,7 @@ Date:   Mon Nov 30 00:10:56 2009 +0100
     https://bugzilla.gnome.org/show_bug.cgi?id=603355
 
  gobject/generate-constants.c |   32 ++++++++++++++++----------------
- 1 files changed, 16 insertions(+), 16 deletions(-)
+ 1 file changed, 16 insertions(+), 16 deletions(-)
 
 commit cfa7d005487e17e8f7c1ceb14282d3a5baadb736
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10445,7 +19058,7 @@ Date:   Mon Nov 23 15:58:17 2009 -0200
     https://bugzilla.gnome.org/show_bug.cgi?id=602830
 
  gi/types.py |   8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit a8660621679c629fc81320a8ddf5bf2c7ee1f177
 Author: Johan Dahlin <johan@gnome.org>
@@ -10456,7 +19069,7 @@ Date:   Tue Nov 24 10:36:18 2009 -0200
     https://bugzilla.gnome.org/show_bug.cgi?id=602830
 
  gi/module.py |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 66c34805223af9e63c7d61f21a3dbd7505a8f256
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -10469,16 +19082,16 @@ Date: Mon Nov 30 10:03:34 2009 +0000
  gi/Makefile.am     |   2 +
  gi/gimodule.c     |    1 +
  gi/module.py      |    2 +-
- gi/pygi-argument.c |  14 ++++-
+ gi/pygi-argument.c |  14 +++-
  gi/pygi-boxed.c    |  184
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-boxed.h    |  40 +++++++++++
+ gi/pygi-boxed.h    |  40 ++++++++++++
  gi/pygi-info.c     |   2 +-
  gi/pygi-private.h  |   1 +
  gi/pygi.h         |    6 ++
  gi/types.py       |   18 -----
  tests/libtestgi.c  |  72 ++++++++++----------
- tests/libtestgi.h  |  18 +++---
+ tests/libtestgi.h  |  18 ++---
  tests/test_gi.py   |  47 ++++++++------
  13 files changed, 321 insertions(+), 86 deletions(-)
 
@@ -10517,7 +19130,7 @@ Date:   Sat Nov 28 18:45:54 2009 +0000
     https://bugzilla.gnome.org/show_bug.cgi?id=603244
 
  gobject/generate-constants.c |   17 ++++++++++++++++-
- 1 files changed, 16 insertions(+), 1 deletions(-)
+ 1 file changed, 16 insertions(+), 1 deletion(-)
 
 commit 3a295cb7ffaaaf29c71b8833cf0ee5ec7ceaa909
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10526,7 +19139,7 @@ Date:   Sat Nov 28 18:48:49 2009 +0100
     Fix bad name when rebuilding the unix source module
 
  gio/Makefile.am |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a8cbb6fb72dbe6630d1265b18095c9a96f496b86
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10550,7 +19163,7 @@ Date:   Sat Nov 28 11:03:51 2009 +0000
  tests/libtestgi.c |   23 +++++++++++++++++++++++
  tests/libtestgi.h |   16 ++++++++++++++++
  tests/test_gi.py  |   21 +++++++++++++++++++++
- 3 files changed, 60 insertions(+), 0 deletions(-)
+ 3 files changed, 60 insertions(+)
 
 commit 076ba3156c13375a75983cef7a409c8c8afea119
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10598,7 +19211,7 @@ Date:   Wed Nov 25 16:53:55 2009 +0100
     Use the right variable when looking up in sys.modules
 
  gi/importer.py |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit fc3dca018e85aee34ade79d104ebd8cdd1dd5968
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -10612,7 +19225,7 @@ Date:   Tue Nov 24 15:52:47 2009 +0100
  tests/libtestgi.c  |   6 ++++++
  tests/libtestgi.h  |   1 +
  tests/test_gi.py   |   1 +
- 4 files changed, 26 insertions(+), 1 deletions(-)
+ 4 files changed, 26 insertions(+), 1 deletion(-)
 
 commit 33081c29a1c2fdec2b8bfe17ae0a72b8db7a8d84
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -10621,7 +19234,7 @@ Date:   Tue Nov 24 13:10:11 2009 +0100
     Add stuff to .gitignore
 
  .gitignore |   7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
+ 1 file changed, 7 insertions(+)
 
 commit 5c010fe673d9bd01c27c8d7d312064665275888c
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10629,24 +19242,24 @@ Date: Mon Nov 23 22:39:12 2009 +0100
 
     Remove the girepository module
 
- Makefile.am                       |    2 +-
- configure.ac                      |   17 -
- girepository/Makefile.am          |   54 --
- girepository/__init__.py          |   24 -
- girepository/bank-argument.c      |  379 ------------
- girepository/bank-info.c          | 1194
- ------------------------------------
- girepository/bank-repository.c     |  236 -------
- girepository/bank.c               |  155 -----
- girepository/bank.h               |   80 ---
- girepository/btypes.py                    |  300 ---------
- girepository/importer.py          |   51 --
- girepository/module.py                    |  224 -------
- girepository/overrides/Gdk.py     |   14 -
- girepository/overrides/Gtk.py     |    8 -
- girepository/repository.py        |   51 --
- tests/test_girepository.py        |  386 ------------
- 16 files changed, 1 insertions(+), 3174 deletions(-)
+ Makefile.am                   |    2 +-
+ configure.ac                  |   17 -
+ girepository/Makefile.am      |   54 --
+ girepository/__init__.py      |   24 -
+ girepository/bank-argument.c  |  379 -------------
+ girepository/bank-info.c      | 1194
+ ----------------------------------------
+ girepository/bank-repository.c |  236 --------
+ girepository/bank.c           |  155 ------
+ girepository/bank.h           |   80 ---
+ girepository/btypes.py                |  300 ----------
+ girepository/importer.py      |   51 --
+ girepository/module.py                |  224 --------
+ girepository/overrides/Gdk.py |   14 -
+ girepository/overrides/Gtk.py |    8 -
+ girepository/repository.py    |   51 --
+ tests/test_girepository.py    |  386 -------------
+ 16 files changed, 1 insertion(+), 3174 deletions(-)
 
 commit a644edf0515c26ed027522891ccf02aceac764e8
 Author: Johan Dahlin <johan@gnome.org>
@@ -10666,7 +19279,7 @@ Date:   Mon Nov 23 15:32:16 2009 -0200
     ones.
 
  gi/importer.py |   34 +++++++++++++++++++++-------------
- 1 files changed, 21 insertions(+), 13 deletions(-)
+ 1 file changed, 21 insertions(+), 13 deletions(-)
 
 commit fad89e12a744b57e6348968f351d25d167de8248
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
@@ -10692,7 +19305,7 @@ Date:   Sun Nov 22 17:25:04 2009 +0100
 
  gi/gimodule.c |   33 +++++++++++++++++++++++++++++++++
  gi/types.py   |    5 ++++-
- 2 files changed, 37 insertions(+), 1 deletions(-)
+ 2 files changed, 37 insertions(+), 1 deletion(-)
 
 commit d67d5afb5115c1d8294415b2e1a82af2c737ba17
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
@@ -10701,7 +19314,7 @@ Date:   Sun Nov 22 18:23:02 2009 +0200
     Ignore one more file.
 
  .gitignore |   1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 408b2186aea58a41ec26b9d0ca29ecd42df5ef7e
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
@@ -10722,7 +19335,7 @@ Date:   Mon Oct 26 18:06:06 2009 +0000
     Treat GI_INFO_TYPE_INTERFACE same as GI_INFO_TYPE_OBJECT
 
  gi/pygi-argument.c |   3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit e6f730d6e1431e36bd5f6b503a1038617f8d1e7d
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10731,7 +19344,7 @@ Date:   Sat Nov 14 21:42:43 2009 +0100
     Import pygtk properly to avoid failure on some setups
 
  tests/test_gi.py |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ 1 file changed, 3 insertions(+)
 
 commit e604a89e9dc1a79687ef5fb94af7a2182be07dfb
 Author: Alex Dedul <rotmer@gmail.com>
@@ -10747,7 +19360,7 @@ Date:   Sat Nov 14 21:39:15 2009 +0100
     Signed-off-by: Simon van der Linden <svdlinden@src.gnome.org>
 
  configure.ac |    7 +++++--
- 1 files changed, 5 insertions(+), 2 deletions(-)
+ 1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit 4a887cfabb326cb99dc65073d592c03f59e2f141
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10756,7 +19369,7 @@ Date:   Sat Nov 14 21:36:19 2009 +0100
     Fix silent rules setup
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 602afea88c338a38327cd84e08703c5daa384ec6
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
@@ -10768,7 +19381,7 @@ Date:   Tue Nov 10 22:32:33 2009 +0200
     from the docs.
 
  docs/reference/pygobject-functions.xml |   36
- ++++++-------------------------
+ +++++++-------------------------
  glib/glibmodule.c                     |   16 ++++++++++++++
  2 files changed, 23 insertions(+), 29 deletions(-)
 
@@ -10784,7 +19397,7 @@ Date:   Mon Nov 9 22:44:12 2009 +0100
  ...capabilities-to-import-wrappers-from-pygi.patch |  200
  --------------------
  ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  29 ---
- 4 files changed, 0 insertions(+), 493 deletions(-)
+ 4 files changed, 493 deletions(-)
 
 commit 6a69288941e65312fe82649ec72d2f21b2dc618f
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10800,7 +19413,7 @@ Date:   Sat Nov 7 23:42:07 2009 +0100
     called instead.
 
  gobject/pygboxed.c |   3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 000f7c36e667c6e078e3370769ea868e56a1b4ee
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10818,13 +19431,13 @@ Date: Sat Nov 7 16:43:35 2009 +0100
     function and
     API definition had to be copied in this tree.
 
- configure.ac           |    8 +++++
+ configure.ac           |    8 ++++++
  gobject/pygboxed.c     |   10 +++++++
  gobject/pygi-external.h |   66
  +++++++++++++++++++++++++++++++++++++++++++++++
  gobject/pygobject.c    |   10 +++++++
  gobject/pygpointer.c   |   11 ++++++++
- 5 files changed, 105 insertions(+), 0 deletions(-)
+ 5 files changed, 105 insertions(+)
 
 commit fdfbc90dbc9e305646b62d73de506b5e0e99cc91
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10846,7 +19459,7 @@ Date:   Sun Nov 8 16:52:18 2009 +0100
     Add myself to pygi.doap
 
  pygi.doap |   5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
+ 1 file changed, 5 insertions(+)
 
 commit 6f50d5102aec9288e1851f12e9d232b9c141d524
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10855,7 +19468,7 @@ Date:   Sun Nov 8 15:40:51 2009 +0100
     Add a doap file
 
  pygi.doap |   17 +++++++++++++++++
- 1 files changed, 17 insertions(+), 0 deletions(-)
+ 1 file changed, 17 insertions(+)
 
 commit ce673b9027868e6add4eeb438bc707eb40bfd046
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10868,7 +19481,7 @@ Date:   Sun Nov 8 13:06:54 2009 +0100
  ++++++++++++++++++++
  ...capabilities-to-import-wrappers-from-pygi.patch |  138 +++++++++++++++
  ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  29 +++
- 4 files changed, 431 insertions(+), 0 deletions(-)
+ 4 files changed, 431 insertions(+)
 
 commit b24fd9633cabe1d95cde173a04e9a49833b06a26
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10910,7 +19523,7 @@ Date:   Sun Nov 8 12:35:08 2009 +0100
  tests/libtestgi.h        |  643 +++++++++
  tests/runtests.py        |   22 +
  tests/test_gi.py         | 1416 +++++++++++++++++++
- 33 files changed, 11566 insertions(+), 0 deletions(-)
+ 33 files changed, 11566 insertions(+)
 
 commit bfd3100a580b8bea9db25b8bb7443fb8c3dbe1cc
 Author: Simon van der Linden <svdlinden@src.gnome.org>
@@ -10918,8 +19531,8 @@ Date:   Sat Nov 7 13:23:53 2009 +0100
 
     Fix girpository build setup
 
- configure.ac            |   21 ++++++----
- girepository/Makefile.am |   13 +++---
+ configure.ac            |   21 +++++++----
+ girepository/Makefile.am |   13 +++----
  m4/introspection.m4     |   92
  ++++++++++++++++++++++++++++++++++++++++++++++
  3 files changed, 111 insertions(+), 15 deletions(-)
@@ -10932,7 +19545,7 @@ Date:   Fri Nov 6 19:17:36 2009 +0100
     boxed wrappers
 
  gobject/pygtype.c |   39 +++++++++++++++++++++++++++++++++------
- 1 files changed, 33 insertions(+), 6 deletions(-)
+ 1 file changed, 33 insertions(+), 6 deletions(-)
 
 commit a9c168c58cc6a449b51653417bf3f58bdd41457c
 Author: Philippe Normad <phil@base-art.net>
@@ -10943,8 +19556,8 @@ Date:   Wed Oct 21 18:01:16 2009 +0200
     Fixes bug #481569
 
  glib/pygmainloop.c |  95
- +++++++++++++++++++++++++++------------------------
- 1 files changed, 50 insertions(+), 45 deletions(-)
+ +++++++++++++++++++++++++++-------------------------
+ 1 file changed, 50 insertions(+), 45 deletions(-)
 
 commit c6a5750379354c12e2599b3c73b4f9a23fd39114
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10953,7 +19566,7 @@ Date:   Fri Sep 25 20:12:21 2009 +0200
     Post release version bump to 2.21.0
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 33920eb013628a5e22b7b32403fb965ae3210f47
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10962,7 +19575,7 @@ Date:   Wed Sep 23 21:52:04 2009 +0200
     Update NEWS and release 2.20.0
 
  NEWS |    6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
+ 1 file changed, 6 insertions(+)
 
 commit 66b12f7d2f54143ea80b4f8aec863b26800363d6
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -10971,7 +19584,7 @@ Date:   Wed Sep 23 21:51:43 2009 +0200
     Bump version to 2.20.0
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7bf87338a026ac82f908aa5fddf2bfea2daf6617
 Author: Brian Cameron <Brian.Cameron@sun.com>
@@ -10981,7 +19594,7 @@ Date:   Wed Sep 23 12:11:50 2009 -0500
     defsdir files and codegen files.  See bug #596023.
 
  pygobject-2.0-uninstalled.pc.in |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit d042402b7c649b2bed7f20038eb82518ec7cc9b3
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
@@ -10992,7 +19605,7 @@ Date:   Tue Sep 22 22:02:27 2009 +0300
     Bug #579406, second change.
 
  glib/pygmainloop.c |   1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 640be8109d066e85ed77c810830a5f73c750415b
 Author: Frédéric Péters <fpeters@0d.be>
@@ -11005,7 +19618,7 @@ Date:   Sun Aug 30 16:46:02 2009 +0200
     file that is produced when using ref-html-style.xsl.
 
  docs/xsl/devhelp.xsl |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c888b5ca722fcad6a03de585606c677c2969ebd6
 Author: Paolo Borelli <pborelli@gnome.org>
@@ -11014,7 +19627,7 @@ Date:   Thu Aug 13 21:32:07 2009 +0200
     Allow to use automake 1.11
 
  autogen.sh |  13 +++++++------
- 1 files changed, 7 insertions(+), 6 deletions(-)
+ 1 file changed, 7 insertions(+), 6 deletions(-)
 
 commit 30deaba4bd1e199aab75cb346ee9237237807fbd
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11023,7 +19636,7 @@ Date:   Tue Aug 11 22:19:50 2009 +0200
     Update README
 
  README |   10 ++++++++--
- 1 files changed, 8 insertions(+), 2 deletions(-)
+ 1 file changed, 8 insertions(+), 2 deletions(-)
 
 commit af165d350d0d1bb493be5140bf84376d3da1e4d8
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11032,7 +19645,7 @@ Date:   Tue Aug 11 22:16:52 2009 +0200
     Update AUTHORS
 
  AUTHORS |    8 +++++---
- 1 files changed, 5 insertions(+), 3 deletions(-)
+ 1 file changed, 5 insertions(+), 3 deletions(-)
 
 commit 5f9f87f276b97964b525a501d8584ea8b4d8bfd2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11042,7 +19655,7 @@ Date:   Tue Aug 11 22:11:43 2009 +0200
 
  MAINTAINERS   |    8 ++++++++
  pygobject.doap |   14 ++++++++++++++
- 2 files changed, 22 insertions(+), 0 deletions(-)
+ 2 files changed, 22 insertions(+)
 
 commit 3bfae47fbcb5523d91fb2d1ed7ea347eeddd1775
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11051,7 +19664,7 @@ Date:   Tue Aug 11 20:52:44 2009 +0200
     Update NEWS release 2.19.0
 
  NEWS |   29 +++++++++++++++++++++++++++++
- 1 files changed, 29 insertions(+), 0 deletions(-)
+ 1 file changed, 29 insertions(+)
 
 commit e82a1841f31ad54dd50569d0d45290713409e0bf
 Author: John Finlay <finlay@moeraki.com>
@@ -11061,7 +19674,7 @@ Date:   Tue Aug 11 00:04:31 2009 -0700
 
  gobject/pygobject.h | 242
  ++++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 files changed, 241 insertions(+), 1 deletions(-)
+ 1 file changed, 241 insertions(+), 1 deletion(-)
 
 commit f1fad96da2c531fbd3218923baa4fe806a2942d4
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11070,7 +19683,7 @@ Date:   Sat Aug 8 21:37:54 2009 +0200
     Bug 590063 â€“ GFileInfo.list_attributes should accept None/NULL
 
  gio/gfileinfo.override |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit b7907cf6ff6ccf8d38b5206f09f5c864c205e5de
 Author: Johan Dahlin <johan@gnome.org>
@@ -11080,7 +19693,7 @@ Date:   Fri Jul 24 14:30:37 2009 -0300
 
  MAINTAINERS   |    4 ----
  pygobject.doap |    7 -------
- 2 files changed, 0 insertions(+), 11 deletions(-)
+ 2 files changed, 11 deletions(-)
 
 commit be6eb21320b4688bcfcd8cbea33f7be29a76f2a2
 Author: John Finlay <finlay@moeraki.com>
@@ -11090,7 +19703,7 @@ Date:   Wed Jul 8 15:47:44 2009 -0700
            DLL API macros.
 
  codegen/defsgen.py |   6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 2214cad3529979e29342a7e1fdc2915b90ce9c10
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11118,7 +19731,7 @@ Date:   Mon Jun 22 23:13:36 2009 +0200
  docs/reference/pygio-classes.xml   |   1 +
  docs/reference/pygio-functions.xml |  395
  ++++++++++++++++++++++++++++++++++++
- 3 files changed, 398 insertions(+), 0 deletions(-)
+ 3 files changed, 398 insertions(+)
 
 commit ebddee47fb7f3e06f9e0a7a14b9532d5cf8a3881
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11132,7 +19745,7 @@ Date:   Sun Jun 21 18:35:56 2009 +0200
  +++++++++++++++++++++++++++++
  docs/reference/pygio-unixoutputstream.xml |  202
  +++++++++++++++++++++++++++++
- 4 files changed, 410 insertions(+), 0 deletions(-)
+ 4 files changed, 410 insertions(+)
 
 commit 5b71e58117c85634d95d08449eb54079b246e5be
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
@@ -11141,7 +19754,7 @@ Date:   Sun Jun 21 16:50:03 2009 +0300
     Document that many functions got moved gobject -> glib
 
  docs/reference/pygobject-functions.xml |    7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
+ 1 file changed, 7 insertions(+)
 
 commit b270dc43f2cef5260b0bbc71356fd8e6a2b7f754
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11153,7 +19766,7 @@ Date:   Sat Jun 20 19:23:25 2009 +0200
  docs/reference/pygio-classes.xml         |    1 +
  docs/reference/pygio-dataoutputstream.xml |  504
  +++++++++++++++++++++++++++++
- 3 files changed, 507 insertions(+), 0 deletions(-)
+ 3 files changed, 507 insertions(+)
 
 commit 549313fc4886fa3deb31761de6f5400708165d86
 Author: Murray Cumming <murrayc@murrayc.com>
@@ -11163,7 +19776,7 @@ Date:   Thu Jun 18 18:48:37 2009 +0200
     the struct keyword.
 
  codegen/h2def.py |    8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 5c36ef20dca8cd1793f2d3e88949675299097f40
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11176,7 +19789,7 @@ Date:   Mon Jun 15 23:02:34 2009 +0200
  docs/reference/pygio-constants.xml      |   66 +++
  docs/reference/pygio-datainputstream.xml |  799
  ++++++++++++++++++++++++++++++
- 4 files changed, 868 insertions(+), 0 deletions(-)
+ 4 files changed, 868 insertions(+)
 
 commit a8b36c343c6850af929c1d5a930f923831b4e637
 Author: Theppitak Karoonboonyanan <thep@linux.thai.net>
@@ -11187,7 +19800,7 @@ Date:   Mon Jun 15 23:25:01 2009 +0300
     Bug #585817.
 
  girepository/Makefile.am |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9d9ae97b8a49836ec1f3b8d6529bafe1cc06d4d7
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
@@ -11199,8 +19812,8 @@ Date:   Mon Jun 15 23:19:47 2009 +0300
     mark gio.emblem_new_with_origin as sort-of-deprecated.
 
  docs/reference/pygio-emblem.xml |   51
- +++++++++++++++++++++++++++++++++++++-
- gio/gio.defs                   |    5 ++-
+ +++++++++++++++++++++++++++++++++++++--
+ gio/gio.defs                   |    5 ++--
  2 files changed, 52 insertions(+), 4 deletions(-)
 
 commit 268e1681fd5b46e6412d3a8db84f3f1cb02fdbde
@@ -11209,7 +19822,7 @@ Date:   Sat Jun 13 14:44:47 2009 +0200
 
     Add docs for gio.BufferedOutputStream class
 
- docs/Makefile.am                             |   96 +++++-----
+ docs/Makefile.am                             |   96 ++++-----
  docs/reference/pygio-bufferedoutputstream.xml |  275
  +++++++++++++++++++++++++
  docs/reference/pygio-classes.xml             |    1 +
@@ -11224,8 +19837,8 @@ Date:   Sat Jun 13 14:38:34 2009 +0200
     Added the constructor reference and fixed a typo in properties header
 
  docs/reference/pygio-bufferedinputstream.xml |   34
- ++++++++++++++++++++++++-
- 1 files changed, 32 insertions(+), 2 deletions(-)
+ ++++++++++++++++++++++++--
+ 1 file changed, 32 insertions(+), 2 deletions(-)
 
 commit a9b13b60a5aad726d7d7dd7fdc5153b1561fb591
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11237,7 +19850,7 @@ Date:   Sat Jun 13 01:25:06 2009 +0200
  docs/reference/pygio-bufferedinputstream.xml |  431
  ++++++++++++++++++++++++++
  docs/reference/pygio-classes.xml            |    1 +
- 3 files changed, 434 insertions(+), 0 deletions(-)
+ 3 files changed, 434 insertions(+)
 
 commit 7766daa59b0e2b85413cee368bf2ebd2afe198e1
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
@@ -11248,7 +19861,7 @@ Date:   Sun May 31 18:25:47 2009 +0300
     Also move several gio.Mount overrides over from 'gio.override' to
     existing 'gmount.override'.  Part of bug #584289.
 
- gio/gfile.override          |   20 ++--
+ gio/gfile.override          |   20 ++---
  gio/gfileenumerator.override |    6 +-
  gio/ginputstream.override    |    2 +-
  gio/gio.override            |  204
@@ -11276,7 +19889,7 @@ Date:   Fri Jun 12 00:12:17 2009 +0200
     Fix object type in gio.BufferedInputStream_fill_async
 
  gio/gbufferedinputstream.override |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 407b0e909056f15960e6a4e549896d786ce0a0b2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11291,7 +19904,7 @@ Date:   Tue Jun 9 00:08:21 2009 +0200
  +++++++++++++++++++++++++++++++++++++
  gio/gio.override                 |    1 +
  tests/test_gio.py                |   25 +++++++++++++
- 4 files changed, 97 insertions(+), 0 deletions(-)
+ 4 files changed, 97 insertions(+)
 
 commit b7c96b41b287685fe57504e0add3a6f16e649975
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11301,7 +19914,7 @@ Date:   Mon Jun 8 15:42:40 2009 +0200
     definition
 
  gio/gio-types.defs |   7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
+ 1 file changed, 7 insertions(+)
 
 commit 3666f75af4ef2c8e038116aee5afada59d59f689
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11313,7 +19926,7 @@ Date:   Mon Jun 8 14:20:02 2009 +0200
  docs/reference/pygio-classes.xml           |    1 +
  docs/reference/pygio-memoryoutputstream.xml | 175
  +++++++++++++++++++++++++++
- 3 files changed, 178 insertions(+), 0 deletions(-)
+ 3 files changed, 178 insertions(+)
 
 commit 6eb5e3988cbddb4afb3d5747364d6eb80370bb78
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11342,7 +19955,7 @@ Date:   Mon Jun 8 11:45:11 2009 +0200
  docs/reference/pygio-memoryinputstream.xml |  151
  ++++++++++++++++++++++++++++
  gio/Makefile.am                           |    1 +
- gio/ginputstream.override                 |   34 ------
+ gio/ginputstream.override                 |   34 -------
  gio/gio.override                          |    1 +
  gio/gmemoryinputstream.override           |   91 +++++++++++++++++
  tests/test_gio.py                         |    4 +
@@ -11356,7 +19969,7 @@ Date:   Mon Jun 8 19:15:24 2009 +0200
 
  girepository/Makefile.am      |    2 +-
  girepository/bank-repository.c |   67
- +++++++++++++++++++--------------------
+ ++++++++++++++++++++--------------------
  girepository/bank.h           |    2 +-
  girepository/btypes.py                |    6 ++--
  girepository/module.py                |    2 +-
@@ -11369,7 +19982,7 @@ Date:   Fri Jun 5 19:03:59 2009 +0200
     Removes the header but the modeline in test_girepository.py.
 
  tests/test_girepository.py |  26 +-------------------------
- 1 files changed, 1 insertions(+), 25 deletions(-)
+ 1 file changed, 1 insertion(+), 25 deletions(-)
 
 commit abe4828f52c7eb3a08f5b592e7ced1e97a58ef5c
 Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
@@ -11377,10 +19990,10 @@ Date: Wed Jun 3 10:47:58 2009 +0200
 
     Adds overrides modules from PyBank.
 
- girepository/Makefile.am          |    3 +++
- girepository/importer.py          |    3 +--
- girepository/overrides/Gdk.py     |   14 ++++++++++++++
- girepository/overrides/Gtk.py     |    8 ++++++++
+ girepository/Makefile.am      |    3 +++
+ girepository/importer.py      |    3 +--
+ girepository/overrides/Gdk.py |   14 ++++++++++++++
+ girepository/overrides/Gtk.py |    8 ++++++++
  4 files changed, 26 insertions(+), 2 deletions(-)
 
 commit c12964e6a3354d8063355225c94e6d21d621e08b
@@ -11391,7 +20004,7 @@ Date:   Tue Jun 2 23:40:41 2009 +0200
 
  tests/test_girepository.py |  242
  +++++++++++++++++++++++++++++++++-----------
- 1 files changed, 182 insertions(+), 60 deletions(-)
+ 1 file changed, 182 insertions(+), 60 deletions(-)
 
 commit a4469a3f7d32a25156bae5e7aef9ec4ae5f6e140
 Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
@@ -11402,7 +20015,7 @@ Date:   Tue Jun 2 23:03:26 2009 +0200
 
  tests/test_girepository.py |  288
  ++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 288 insertions(+), 0 deletions(-)
+ 1 file changed, 288 insertions(+)
 
 commit e4f2a5ef8734cf40cf8345d442612db1f6c62d5a
 Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
@@ -11410,7 +20023,7 @@ Date:   Thu May 28 17:45:11 2009 +0200
 
     Introduces the girepository module from the former PyBank.
 
- INSTALL                       |   69 ++-
+ INSTALL                       |   69 +--
  Makefile.am                   |    2 +-
  configure.ac                  |   12 +
  girepository/Makefile.am      |   52 ++
@@ -11434,7 +20047,7 @@ Date:   Tue Jun 2 18:28:22 2009 +0200
     Fix the docs for gio.FilterOutputStream
 
  docs/reference/pygio-filteroutputstream.xml |   6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit fded60d8376fc45d19bf6cd8be6b927cc3f2e8c6
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11446,7 +20059,7 @@ Date:   Tue Jun 2 18:27:00 2009 +0200
  docs/reference/pygio-classes.xml           |    1 +
  docs/reference/pygio-filteroutputstream.xml | 152
  +++++++++++++++++++++++++++
- 3 files changed, 155 insertions(+), 0 deletions(-)
+ 3 files changed, 155 insertions(+)
 
 commit e2c31f916967229b6547e68013628ce0082cf875
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11458,7 +20071,7 @@ Date:   Tue Jun 2 13:29:59 2009 +0200
  docs/reference/pygio-classes.xml          |    1 +
  docs/reference/pygio-filterinputstream.xml |  152
  ++++++++++++++++++++++++++++
- 3 files changed, 155 insertions(+), 0 deletions(-)
+ 3 files changed, 155 insertions(+)
 
 commit 49a467eee445bc75554db0374006722ac075194b
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11467,7 +20080,7 @@ Date:   Tue Jun 2 11:33:20 2009 +0200
     Add API appeared in 2.20 but not marked as such in gio docs
 
  gio/gio.defs |   30 ++++++++++++++++++++++++++++++
- 1 files changed, 30 insertions(+), 0 deletions(-)
+ 1 file changed, 30 insertions(+)
 
 commit 180c157f2a20b7d2dd9af05bfb5f515fd23870a0
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11486,7 +20099,7 @@ Date:   Tue Jun 2 10:41:26 2009 +0200
  gio/gfileoutputstream.override                   |   68 ++++++++
  gio/gio.override                         |    1 +
  tests/test_gio.py                        |   27 +++
- 7 files changed, 358 insertions(+), 1 deletions(-)
+ 7 files changed, 358 insertions(+), 1 deletion(-)
 
 commit 4673577d1f6c3d54423808dd575987092fb05ad2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11497,7 +20110,7 @@ Date:   Tue Jun 2 10:17:41 2009 +0200
     Add implemented interface section and remove a method description
 
  docs/reference/pygio-fileinputstream.xml |   25 +++++++++----------------
- 1 files changed, 9 insertions(+), 16 deletions(-)
+ 1 file changed, 9 insertions(+), 16 deletions(-)
 
 commit 1e1cad02879d514745b5233658654cbe944530a5
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11506,7 +20119,7 @@ Date:   Mon Jun 1 22:54:26 2009 +0200
     Fix the method name
 
  gio/gfileinputstream.override |   14 +++++++-------
- 1 files changed, 7 insertions(+), 7 deletions(-)
+ 1 file changed, 7 insertions(+), 7 deletions(-)
 
 commit f605811afe8c91f121e89b6f9ec28c70b62f4110
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11525,7 +20138,7 @@ Date:   Mon Jun 1 22:40:56 2009 +0200
  gio/gfileinputstream.override           |   68 +++++++++
  gio/gio.override                        |    1 +
  tests/test_gio.py                       |   27 ++++
- 7 files changed, 321 insertions(+), 0 deletions(-)
+ 7 files changed, 321 insertions(+)
 
 commit 08623e54a426377c1504b5c364aabae5a17f8ad8
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
@@ -11570,7 +20183,7 @@ Date:   Sat May 30 17:24:15 2009 +0300
     Bug #584290.
 
  gio/goutputstream.override |   8 ++++----
- 1 files changed, 4 insertions(+), 4 deletions(-)
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit e43fa429f6b4019a432acb481bbc07c8201cc46d
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
@@ -11579,7 +20192,7 @@ Date:   Wed May 27 21:19:27 2009 +0300
     Code maintenance: ignore one more file created by unit tests
 
  tests/.gitignore |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
+ 1 file changed, 1 insertion(+)
 
 commit 76e9dc74ac706a9207f9d31f887d6e38df2a678f
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11603,7 +20216,7 @@ Date:   Mon May 25 01:33:08 2009 +0200
 
  gio/gio.defs  |  106
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- gio/unix.defs |   48 +++++++++++++++++++++----
+ gio/unix.defs |   48 +++++++++++++++++++++-----
  2 files changed, 146 insertions(+), 8 deletions(-)
 
 commit 0d08df42514fba6abc896814abfee0d2d083c29e
@@ -11613,7 +20226,7 @@ Date:   Mon May 25 00:14:21 2009 +0200
     Post release version bump 2.19.0
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit edfb09e3de7baf294b3beba84b4ecb94e1f16764
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11641,7 +20254,7 @@ Date:   Sun May 24 22:18:40 2009 +0200
  docs/reference/pygio-classes.xml      |    3 +-
  docs/reference/pygio-outputstream.xml |  140
  +++++++++++++++++++++++++++++++++
- 3 files changed, 144 insertions(+), 1 deletions(-)
+ 3 files changed, 144 insertions(+), 1 deletion(-)
 
 commit 11524cdf6472d9115a812ce431f6767aec5627bc
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11654,7 +20267,7 @@ Date:   Sun May 24 22:12:04 2009 +0200
  gio/goutputstream.override |  58
  +++++++++++++++++++++++++++++++++++++++++++-
  tests/test_gio.py         |   20 +++++++++++++++
- 2 files changed, 77 insertions(+), 1 deletions(-)
+ 2 files changed, 77 insertions(+), 1 deletion(-)
 
 commit 82ad6b8c8ea4d6694126f5e0e67b826717e38f19
 Author: Emilio Pozuelo Monfort <pochu@ubuntu.com>
@@ -11681,8 +20294,8 @@ Date:   Sun May 24 11:44:24 2009 +0200
 
  gio/goutputstream.override |  47
  +++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gio.py         |   11 ++++++++++
- 2 files changed, 57 insertions(+), 1 deletions(-)
+ tests/test_gio.py         |   11 +++++++++++
+ 2 files changed, 57 insertions(+), 1 deletion(-)
 
 commit 84ab6178ed0033f69932df5bc73c86bdff80c953
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11700,7 +20313,7 @@ Date:   Sun May 17 17:29:37 2009 +0200
  docs/reference/pygio-classes.xml     |    1 +
  docs/reference/pygio-filemonitor.xml |  128
  ++++++++++++++++++++++++++++++++++
- 3 files changed, 131 insertions(+), 0 deletions(-)
+ 3 files changed, 131 insertions(+)
 
 commit 629496a5617d30e4dfa494b05a62c85a6af77b9a
 Author: Josselin Mouette <joss@malsain.org>
@@ -11739,8 +20352,8 @@ Date:   Wed May 13 22:06:25 2009 +0300
     METH_NOARGS but actually accepted arguments.  Fixes bug #582427.
 
  glib/pygiochannel.c |  83
- ++++++++++++--------------------------------------
- 1 files changed, 20 insertions(+), 63 deletions(-)
+ +++++++++++++--------------------------------------
+ 1 file changed, 20 insertions(+), 63 deletions(-)
 
 commit 002915e5f458fec5a89766a54e8119a70a80caa7
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11758,7 +20371,7 @@ Date:   Tue May 12 20:37:24 2009 +0200
  docs/reference/pygio-classes.xml  |   1 +
  docs/reference/pygio-fileinfo.xml |  346
  +++++++++++++++++++++++++++++++++++++
- 3 files changed, 349 insertions(+), 0 deletions(-)
+ 3 files changed, 349 insertions(+)
 
 commit 8cd25c871609580425c6c4c9e5bc6ec8d40862a1
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
@@ -11784,7 +20397,7 @@ Date:   Sat May 9 00:03:05 2009 +0200
     use the count argument instead of buffer_size which is always zero
 
  gio/ginputstream.override |   3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit ed6b06315c17441b41c001d38537c904b8fe18de
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11796,7 +20409,7 @@ Date:   Sat May 9 00:02:33 2009 +0200
  docs/reference/pygio-classes.xml     |    1 +
  docs/reference/pygio-inputstream.xml |  730
  ++++++++++++++++++++++++++++++++++
- 3 files changed, 733 insertions(+), 0 deletions(-)
+ 3 files changed, 733 insertions(+)
 
 commit d58322b84d47da7905f95b43e9e0daf9f7c4b507
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11809,7 +20422,7 @@ Date:   Mon May 4 23:40:28 2009 +0200
  gio/ginputstream.override |   50
  ++++++++++++++++++++++++++++++++++++++++++++-
  tests/test_gio.py        |   20 ++++++++++++++++++
- 2 files changed, 69 insertions(+), 1 deletions(-)
+ 2 files changed, 69 insertions(+), 1 deletion(-)
 
 commit 2311187824d1b48a996ee2620fd3c9a63e3edd66
 Author: Siavash Safi <siavash@siavashs.org>
@@ -11820,7 +20433,7 @@ Date:   Mon May 4 15:46:49 2009 +0430
 
     Patch from bug #579275
 
- ChangeLog       |    8 +++
+ ChangeLog       |    8 ++++
  codegen/h2def.py |  133
  ++++++++++++++++++++++++++++++++++++++++++++----------
  2 files changed, 117 insertions(+), 24 deletions(-)
@@ -11834,7 +20447,7 @@ Date:   Sat May 2 23:54:52 2009 +0300
     Fixes bug #581082.
 
  glib/glibmodule.c |   2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f466dca880cc6ea68b9fe236943eea7a07d33520
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11846,7 +20459,7 @@ Date:   Sun May 3 11:03:25 2009 +0200
  docs/reference/pygio-classes.xml      |    1 +
  docs/reference/pygio-loadableicon.xml |  198
  +++++++++++++++++++++++++++++++++
- 3 files changed, 201 insertions(+), 0 deletions(-)
+ 3 files changed, 201 insertions(+)
 
 commit eab4ebf7f6c82580b61205f34e1cfe535aeada60
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11858,7 +20471,7 @@ Date:   Sun May 3 01:21:55 2009 +0200
  docs/reference/pygio-classes.xml    |   1 +
  docs/reference/pygio-themedicon.xml | 204
  +++++++++++++++++++++++++++++++++++
- 3 files changed, 207 insertions(+), 0 deletions(-)
+ 3 files changed, 207 insertions(+)
 
 commit 22d7de8b620055f14b30f9c3c99160c8b4ebe672
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11867,7 +20480,7 @@ Date:   Sat May 2 12:25:19 2009 +0200
     post release version bump to 2.17.1
 
  configure.ac |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 282ac3c76e1e3513bd76f819f320ec56aba15d9e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11876,7 +20489,7 @@ Date:   Fri May 1 23:40:31 2009 +0200
     Fix the class title
 
  docs/reference/pygio-mountoperation.xml |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit d8b70dec1e5c09b73ae277f4f5b246315841fb8e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11889,7 +20502,7 @@ Date:   Fri May 1 22:24:33 2009 +0200
  docs/reference/pygio-constants.xml     |  107 +++++
  docs/reference/pygio-mountoperation.xml |  726
  +++++++++++++++++++++++++++++++
- 4 files changed, 836 insertions(+), 0 deletions(-)
+ 4 files changed, 836 insertions(+)
 
 commit fceea8e843e880f0469e454df23141e7dd2bc0cf
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
@@ -11899,7 +20512,7 @@ Date:   Thu Apr 30 22:13:06 2009 +0200
 
  NEWS |   93
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 93 insertions(+), 0 deletions(-)
+ 1 file changed, 93 insertions(+)
 
 commit 47389217d1a65a8e3f404d486c508cf5d3164756
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
@@ -11911,4 +20524,4 @@ Date:   Thu Apr 30 22:47:19 2009 +0300
     order was used.  Properly decref the objects.
 
  gio/gfile.override |   4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
+ 1 file changed, 4 insertions(+)
diff --git a/MANIFEST.in b/MANIFEST.in
deleted file mode 100644 (file)
index 3781c83..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-include ChangeLog AUTHORS COPYING NEWS README HACKING
-include MANIFEST.in
-include gobject/pygobject.h gobject/pygobject-private.h
-include pygtk.py pygobject-2.0.pc.in
-include dsextras.py
-recursive-include examples *.py
-global-exclude */CVS/* .cvsignore
index b9b9ed3..f21793f 100644 (file)
@@ -1,30 +1,20 @@
-ACLOCAL_AMFLAGS = -I m4
+ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
 AUTOMAKE_OPTIONS = 1.7
 
-SUBDIRS = docs codegen glib gobject gio examples
+SUBDIRS = examples gi tests
 
-if ENABLE_INTROSPECTION
-SUBDIRS += gi
-endif
+PLATFORM_VERSION = 3.0
 
-SUBDIRS += tests
+CLEANFILES = \
+       `find "$(builddir)" -type f -name "*.pyc" -print`
 
-PLATFORM_VERSION = 2.0
-
-CLEANFILES =
-EXTRA_DIST =                           \
-       MANIFEST.in                     \
-       README.win32                    \
+EXTRA_DIST = \
+       ChangeLog.pre-2.18 \
        pygobject-$(PLATFORM_VERSION).pc.in \
-       PKG-INFO                        \
-       PKG-INFO.in                     \
-       setup.py                        \
-       pygobject_postinstall.py        \
-       pygtk.py                        \
-       dsextras.py                     \
-       ChangeLog.pre-2.18              \
-       m4/as-ac-expand.m4              \
-       m4/jhflags.m4                   \
+       PKG-INFO \
+       PKG-INFO.in \
+       m4/as-ac-expand.m4 \
+       m4/jhflags.m4 \
        m4/python.m4
 
 MAINTAINERCLEANFILES = \
@@ -52,41 +42,24 @@ MAINTAINERCLEANFILES = \
        $(srcdir)/m4/ltversion.m4 \
        $(srcdir)/m4/lt~obsolete.m4 \
        `find "$(srcdir)" -type f -name Makefile.in -print` \
-       `find "$(srcdir)" -type f -name "*.pyc" -print`
+       `find "$(builddir)" -type f -name "*.pyc" -print`
 
 BUILT_EXTRA_DIST =             \
        ChangeLog
 
-INCLUDES = -I$(top_srcdir)/gobject $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
-
 # pkg-config files
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = pygobject-$(PLATFORM_VERSION).pc
 
-# python modules
-pkgpyexecdir = $(pyexecdir)/gtk-2.0
-pkgpyexec_PYTHON = dsextras.py
-pkgpyexec_LTLIBRARIES =
-
 # python
-pyexec_PYTHON = pygtk.py
 pyexec_LTLIBRARIES =
 
-# linker flags
-common_ldflags = -module -avoid-version
-if PLATFORM_WIN32
-common_ldflags += -no-undefined
-endif
-
 # install pth file.
 install-data-local:
        $(mkinstalldirs) $(DESTDIR)$(pythondir)
-       echo "gtk-$(PLATFORM_VERSION)" > $(DESTDIR)$(pyexecdir)/pygtk.pth
 install-exec-local:
        $(mkinstalldirs) $(DESTDIR)$(pyexecdir)
-       echo "gtk-$(PLATFORM_VERSION)" > $(DESTDIR)$(pyexecdir)/pygtk.pth
 uninstall-local:
-       rm -f $(DESTDIR)$(pythondir)/pygtk.pth $(DESTDIR)$(pyexecdir)/pygtk.pth
 
 EGG_NAME = $(PACKAGE)-$(PACKAGE_VERSION)-py$(PYTHON_VERSION)-$(PLATFORM).egg
 
@@ -97,11 +70,10 @@ egg: $(top_srcdir)/gobject/gobject.la PKG-INFO
        $(MKDIR_P) $(EGG_TMPDIR)
        $(MKDIR_P) $(EGG_TMPDIR)/EGG-INFO
        $(MAKE) -C gobject install-pkgpyexecLTLIBRARIES pkgpyexecdir=$(EGG_TMPDIR)
-       $(INSTALL) dsextras.py $(EGG_TMPDIR)
        rm -fr $(EGG_TMPDIR)/gobject.la
        $(INSTALL) PKG-INFO $(EGG_TMPDIR)/EGG-INFO
        echo "gobject.so" >> $(EGG_TMPDIR)/EGG-INFO/native_libs.txt
-       ( echo "gobject" ; echo "dsextras.py" ) >> $(EGG_TMPDIR)/EGG-INFO/top_level.txt
+       ( echo "gobject" ) >> $(EGG_TMPDIR)/EGG-INFO/top_level.txt
        cd $(EGG_TMPDIR) && zip -rq $(EGG_NAME) .
        mv $(EGG_TMPDIR)/$(EGG_NAME) .
        rm -fr $(EGG_TMPDIR)
@@ -115,16 +87,26 @@ doc-dist:
        tar cfz $(PACKAGE)-docs.tar.gz pygobject
        rm -fr pygobject
 
-release-tag:
-       @ROOT=`svn info --xml|egrep ^"<url>"|cut -d\> -f2|cut -d\< -f1`; \
-       SVNVERSION=`echo $(VERSION)|sed s/\\\./_/g`;\
-         echo "* Tagging $(VERSION)"; \
-          svn cp -m "Tag $(VERSION)" \
-              $$ROOT \
-              svn+ssh://johan@svn.gnome.org/svn/pygobject/tags/PYGOBJECT_$$SVNVERSION
+release-news:
+       printf "%-8s%s\n" "$(VERSION)" "`LC_TIME=C date '+%d-%b-%Y'`" > NEWS.tmp
 
+       @echo -e "\n\n\nFor blogging, you can copy&paste this HTML formatted news:"
+       @echo "-------------- 8< -------------"
+       @last=`head -n1 NEWS | cut -f1 -d' '`; \
+        echo "<ul>"; \
+       for commit in `git rev-list $$last..`; do \
+          data=`git log --format="format:%s%n%an%n%b" $$commit^..$$commit`; \
+          echo "$$data" | perl -e '$$subj = <>; chomp $$subj; $$author = <>; chomp $$author; while (<>) { if (/bugzilla.gnome.org.*id=([0-9]+)/) { $$bug = $$1 }};  print "  <li>$$subj ($$author)"; if ($$bug) { print " (<a href=\"https://bugzilla.gnome.org/show_bug.cgi?id=$$bug\">#$$bug</a>)"; }; print "</li>\n"'; \
+          echo "$$data" | perl -e '$$subj = <>; chomp $$subj; $$author = <>; chomp $$author; while (<>) { if (/bugzilla.gnome.org.*id=([0-9]+)/) { $$bug = $$1 }};  print "        - $$subj ($$author)"; if ($$bug) { print " (#$$bug)"; }; print "\n"' >> NEWS.tmp; \
+        done
+       @echo "</ul>"
+       @echo "-------------- 8< -------------"
 
-.PHONY: ChangeLog
+       @echo >> NEWS.tmp
+       @cat NEWS >> NEWS.tmp
+       @mv NEWS.tmp NEWS
+
+.PHONY: ChangeLog release-news
 
 ChangeLog:
        @echo Creating $@
@@ -155,8 +137,8 @@ dist-hook: $(BUILT_EXTRA_DIST)
 check.gdb:
        cd tests && $(MAKE) check.gdb
 
+check.nemiver:
+       cd tests && $(MAKE) check.nemiver
+
 check.valgrind:
        cd tests && $(MAKE) check.valgrind
-
-
--include $(top_srcdir)/git.mk
index e20eeca..626c97f 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -35,18 +52,14 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-@ENABLE_INTROSPECTION_TRUE@am__append_1 = gi
-@PLATFORM_WIN32_TRUE@am__append_2 = -no-undefined
 subdir = .
-DIST_COMMON = README $(am__configure_deps) $(pkgpyexec_PYTHON) \
-       $(pyexec_PYTHON) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-       $(srcdir)/PKG-INFO.in $(srcdir)/config.h.in \
-       $(srcdir)/pygobject-2.0-uninstalled.pc.in \
-       $(srcdir)/pygobject-2.0.pc.in $(top_srcdir)/configure \
-       $(top_srcdir)/docs/reference/entities.docbook.in \
-       $(top_srcdir)/docs/xsl/fixxref.py.in AUTHORS COPYING ChangeLog \
-       INSTALL NEWS compile config.guess config.sub depcomp \
-       install-sh ltmain.sh missing py-compile
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(srcdir)/PKG-INFO.in \
+       $(srcdir)/config.h.in \
+       $(srcdir)/pygobject-3.0-uninstalled.pc.in \
+       $(srcdir)/pygobject-3.0.pc.in $(top_srcdir)/configure AUTHORS \
+       COPYING ChangeLog INSTALL NEWS compile config.guess config.sub \
+       depcomp install-sh ltmain.sh missing py-compile
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
        $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
@@ -59,8 +72,8 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = pygobject-2.0.pc pygobject-2.0-uninstalled.pc \
-       docs/reference/entities.docbook docs/xsl/fixxref.py PKG-INFO
+CONFIG_CLEAN_FILES = pygobject-3.0.pc pygobject-3.0-uninstalled.pc \
+       PKG-INFO
 CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
@@ -83,15 +96,19 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pyexecdir)" \
-       "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pyexecdir)" \
-       "$(DESTDIR)$(pkgconfigdir)"
-LTLIBRARIES = $(pkgpyexec_LTLIBRARIES) $(pyexec_LTLIBRARIES)
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pkgconfigdir)"
+LTLIBRARIES = $(pyexec_LTLIBRARIES)
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
 SOURCES =
 DIST_SOURCES =
@@ -102,7 +119,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
        install-pdf-recursive install-ps-recursive install-recursive \
        installcheck-recursive installdirs-recursive pdf-recursive \
        ps-recursive uninstall-recursive
-py_compile = $(top_srcdir)/py-compile
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(pkgconfig_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
@@ -111,14 +132,16 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
        distdir dist dist-all distcheck
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = docs codegen glib gobject gio examples gi tests
+DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
 am__remove_distdir = \
-  { test ! -d "$(distdir)" \
-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr "$(distdir)"; }; }
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
 am__relativize = \
   dir0=`pwd`; \
   sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -144,12 +167,14 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
+DIST_ARCHIVES = $(distdir).tar.xz
 distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = -I m4
+ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
@@ -158,6 +183,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
@@ -178,14 +205,13 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GIOUNIX_CFLAGS = @GIOUNIX_CFLAGS@
-GIOUNIX_LIBS = @GIOUNIX_LIBS@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
 GI_DATADIR = @GI_DATADIR@
 GI_LIBS = @GI_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
 GLIB_MKENUMS = @GLIB_MKENUMS@
@@ -238,6 +264,8 @@ PYTHON = @PYTHON@
 PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
@@ -248,7 +276,6 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-XSLTPROC = @XSLTPROC@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -290,15 +317,12 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
-
-# python modules
-pkgpyexecdir = $(pyexecdir)/gtk-2.0
+pkgpyexecdir = @pkgpyexecdir@
 pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
-pygobject_CODEGEN_DEFINES = @pygobject_CODEGEN_DEFINES@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
@@ -309,22 +333,18 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = 1.7
-SUBDIRS = docs codegen glib gobject gio examples $(am__append_1) tests
-PLATFORM_VERSION = 2.0
-CLEANFILES = 
+SUBDIRS = examples gi tests
+PLATFORM_VERSION = 3.0
+CLEANFILES = \
+       `find "$(builddir)" -type f -name "*.pyc" -print`
+
 EXTRA_DIST = \
-       MANIFEST.in                     \
-       README.win32                    \
+       ChangeLog.pre-2.18 \
        pygobject-$(PLATFORM_VERSION).pc.in \
-       PKG-INFO                        \
-       PKG-INFO.in                     \
-       setup.py                        \
-       pygobject_postinstall.py        \
-       pygtk.py                        \
-       dsextras.py                     \
-       ChangeLog.pre-2.18              \
-       m4/as-ac-expand.m4              \
-       m4/jhflags.m4                   \
+       PKG-INFO \
+       PKG-INFO.in \
+       m4/as-ac-expand.m4 \
+       m4/jhflags.m4 \
        m4/python.m4
 
 MAINTAINERCLEANFILES = \
@@ -352,31 +372,24 @@ MAINTAINERCLEANFILES = \
        $(srcdir)/m4/ltversion.m4 \
        $(srcdir)/m4/lt~obsolete.m4 \
        `find "$(srcdir)" -type f -name Makefile.in -print` \
-       `find "$(srcdir)" -type f -name "*.pyc" -print`
+       `find "$(builddir)" -type f -name "*.pyc" -print`
 
 BUILT_EXTRA_DIST = \
        ChangeLog
 
-INCLUDES = -I$(top_srcdir)/gobject $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
 
 # pkg-config files
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = pygobject-$(PLATFORM_VERSION).pc
-pkgpyexec_PYTHON = dsextras.py
-pkgpyexec_LTLIBRARIES = 
 
 # python
-pyexec_PYTHON = pygtk.py
 pyexec_LTLIBRARIES = 
-
-# linker flags
-common_ldflags = -module -avoid-version $(am__append_2)
 EGG_NAME = $(PACKAGE)-$(PACKAGE_VERSION)-py$(PYTHON_VERSION)-$(PLATFORM).egg
 all: config.h
        $(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
-am--refresh:
+am--refresh: Makefile
        @:
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
@@ -412,10 +425,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-       @if test ! -f $@; then \
-         rm -f stamp-h1; \
-         $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-       else :; fi
+       @if test ! -f $@; then rm -f stamp-h1; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
@@ -427,50 +438,14 @@ $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 
 distclean-hdr:
        -rm -f config.h stamp-h1
-pygobject-2.0.pc: $(top_builddir)/config.status $(srcdir)/pygobject-2.0.pc.in
+pygobject-3.0.pc: $(top_builddir)/config.status $(srcdir)/pygobject-3.0.pc.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
-pygobject-2.0-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/pygobject-2.0-uninstalled.pc.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
-docs/reference/entities.docbook: $(top_builddir)/config.status $(top_srcdir)/docs/reference/entities.docbook.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
-docs/xsl/fixxref.py: $(top_builddir)/config.status $(top_srcdir)/docs/xsl/fixxref.py.in
+pygobject-3.0-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/pygobject-3.0-uninstalled.pc.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
 PKG-INFO: $(top_builddir)/config.status $(srcdir)/PKG-INFO.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
-install-pkgpyexecLTLIBRARIES: $(pkgpyexec_LTLIBRARIES)
-       @$(NORMAL_INSTALL)
-       test -z "$(pkgpyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgpyexecdir)"
-       @list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \
-       list2=; for p in $$list; do \
-         if test -f $$p; then \
-           list2="$$list2 $$p"; \
-         else :; fi; \
-       done; \
-       test -z "$$list2" || { \
-         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgpyexecdir)'"; \
-         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgpyexecdir)"; \
-       }
-
-uninstall-pkgpyexecLTLIBRARIES:
-       @$(NORMAL_UNINSTALL)
-       @list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \
-       for p in $$list; do \
-         $(am__strip_dir) \
-         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgpyexecdir)/$$f'"; \
-         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgpyexecdir)/$$f"; \
-       done
-
-clean-pkgpyexecLTLIBRARIES:
-       -test -z "$(pkgpyexec_LTLIBRARIES)" || rm -f $(pkgpyexec_LTLIBRARIES)
-       @list='$(pkgpyexec_LTLIBRARIES)'; for p in $$list; do \
-         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-         test "$$dir" != "$$p" || dir=.; \
-         echo "rm -f \"$${dir}/so_locations\""; \
-         rm -f "$${dir}/so_locations"; \
-       done
 install-pyexecLTLIBRARIES: $(pyexec_LTLIBRARIES)
        @$(NORMAL_INSTALL)
-       test -z "$(pyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pyexecdir)"
        @list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \
        list2=; for p in $$list; do \
          if test -f $$p; then \
@@ -478,6 +453,8 @@ install-pyexecLTLIBRARIES: $(pyexec_LTLIBRARIES)
          else :; fi; \
        done; \
        test -z "$$list2" || { \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pyexecdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pyexecdir)" || exit 1; \
          echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pyexecdir)'"; \
          $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pyexecdir)"; \
        }
@@ -508,86 +485,13 @@ clean-libtool:
 
 distclean-libtool:
        -rm -f libtool config.lt
-install-pkgpyexecPYTHON: $(pkgpyexec_PYTHON)
-       @$(NORMAL_INSTALL)
-       test -z "$(pkgpyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgpyexecdir)"
-       @list='$(pkgpyexec_PYTHON)'; dlist=; list2=; test -n "$(pkgpyexecdir)" || list=; \
-       for p in $$list; do \
-         if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
-         if test -f $$b$$p; then \
-           $(am__strip_dir) \
-           dlist="$$dlist $$f"; \
-           list2="$$list2 $$b$$p"; \
-         else :; fi; \
-       done; \
-       for file in $$list2; do echo $$file; done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgpyexecdir)'"; \
-         $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgpyexecdir)" || exit $$?; \
-       done || exit $$?; \
-       if test -n "$$dlist"; then \
-         if test -z "$(DESTDIR)"; then \
-           PYTHON=$(PYTHON) $(py_compile) --basedir "$(pkgpyexecdir)" $$dlist; \
-         else \
-           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(pkgpyexecdir)" $$dlist; \
-         fi; \
-       else :; fi
-
-uninstall-pkgpyexecPYTHON:
-       @$(NORMAL_UNINSTALL)
-       @list='$(pkgpyexec_PYTHON)'; test -n "$(pkgpyexecdir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$files" || exit 0; \
-       filesc=`echo "$$files" | sed 's|$$|c|'`; \
-       fileso=`echo "$$files" | sed 's|$$|o|'`; \
-       echo " ( cd '$(DESTDIR)$(pkgpyexecdir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(pkgpyexecdir)" && rm -f $$files || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pkgpyexecdir)' && rm -f" $$filesc ")"; \
-       cd "$(DESTDIR)$(pkgpyexecdir)" && rm -f $$filesc || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pkgpyexecdir)' && rm -f" $$fileso ")"; \
-       cd "$(DESTDIR)$(pkgpyexecdir)" && rm -f $$fileso
-install-pyexecPYTHON: $(pyexec_PYTHON)
-       @$(NORMAL_INSTALL)
-       test -z "$(pyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pyexecdir)"
-       @list='$(pyexec_PYTHON)'; dlist=; list2=; test -n "$(pyexecdir)" || list=; \
-       for p in $$list; do \
-         if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
-         if test -f $$b$$p; then \
-           $(am__strip_dir) \
-           dlist="$$dlist $$f"; \
-           list2="$$list2 $$b$$p"; \
-         else :; fi; \
-       done; \
-       for file in $$list2; do echo $$file; done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pyexecdir)'"; \
-         $(INSTALL_DATA) $$files "$(DESTDIR)$(pyexecdir)" || exit $$?; \
-       done || exit $$?; \
-       if test -n "$$dlist"; then \
-         if test -z "$(DESTDIR)"; then \
-           PYTHON=$(PYTHON) $(py_compile) --basedir "$(pyexecdir)" $$dlist; \
-         else \
-           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(pyexecdir)" $$dlist; \
-         fi; \
-       else :; fi
-
-uninstall-pyexecPYTHON:
-       @$(NORMAL_UNINSTALL)
-       @list='$(pyexec_PYTHON)'; test -n "$(pyexecdir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$files" || exit 0; \
-       filesc=`echo "$$files" | sed 's|$$|c|'`; \
-       fileso=`echo "$$files" | sed 's|$$|o|'`; \
-       echo " ( cd '$(DESTDIR)$(pyexecdir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(pyexecdir)" && rm -f $$files || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pyexecdir)' && rm -f" $$filesc ")"; \
-       cd "$(DESTDIR)$(pyexecdir)" && rm -f $$filesc || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pyexecdir)' && rm -f" $$fileso ")"; \
-       cd "$(DESTDIR)$(pyexecdir)" && rm -f $$fileso
 install-pkgconfigDATA: $(pkgconfig_DATA)
        @$(NORMAL_INSTALL)
-       test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
        @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+       fi; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
@@ -601,9 +505,7 @@ uninstall-pkgconfigDATA:
        @$(NORMAL_UNINSTALL)
        @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$files" || exit 0; \
-       echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
+       dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -774,13 +676,10 @@ distdir: $(DISTFILES)
        done
        @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
-           test -d "$(distdir)/$$subdir" \
-           || $(MKDIR_P) "$(distdir)/$$subdir" \
-           || exit 1; \
-         fi; \
-       done
-       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-         if test "$$subdir" = .; then :; else \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
            dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
            $(am__relativize); \
            new_distdir=$$reldir; \
@@ -815,15 +714,18 @@ dist-gzip: distdir
        $(am__remove_distdir)
 
 dist-bzip2: distdir
-       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+       $(am__remove_distdir)
+
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
        $(am__remove_distdir)
 
 dist-lzma: distdir
        tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
        $(am__remove_distdir)
-
 dist-xz: distdir
-       tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
        $(am__remove_distdir)
 
 dist-tarZ: distdir
@@ -840,7 +742,7 @@ dist-zip: distdir
        $(am__remove_distdir)
 
 dist dist-all: distdir
-       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
        $(am__remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
@@ -854,6 +756,8 @@ distcheck: dist
          bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
        *.tar.lzma*) \
          lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
        *.tar.xz*) \
          xz -dc $(distdir).tar.xz | $(am__untar) ;;\
        *.tar.Z*) \
@@ -863,7 +767,7 @@ distcheck: dist
        *.zip*) \
          unzip $(distdir).zip ;;\
        esac
-       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       chmod -R a-w $(distdir); chmod u+w $(distdir)
        mkdir $(distdir)/_build
        mkdir $(distdir)/_inst
        chmod a-w $(distdir)
@@ -873,6 +777,7 @@ distcheck: dist
          && am__cwd=`pwd` \
          && $(am__cd) $(distdir)/_build \
          && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -901,8 +806,16 @@ distcheck: dist
          list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
          sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-       @$(am__cd) '$(distuninstallcheck_dir)' \
-       && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+       @test -n '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: trying to run $@ with an empty' \
+              '$$(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       $(am__cd) '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
           || { echo "ERROR: files left after uninstall:" ; \
                if test -n "$(DESTDIR)"; then \
                  echo "  (check DESTDIR support)"; \
@@ -923,7 +836,7 @@ check: check-recursive
 all-am: Makefile $(LTLIBRARIES) $(DATA) config.h
 installdirs: installdirs-recursive
 installdirs-am:
-       for dir in "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pkgconfigdir)"; do \
+       for dir in "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pkgconfigdir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-recursive
@@ -936,10 +849,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
@@ -955,8 +873,8 @@ maintainer-clean-generic:
        -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
 clean: clean-recursive
 
-clean-am: clean-generic clean-libtool clean-pkgpyexecLTLIBRARIES \
-       clean-pyexecLTLIBRARIES mostlyclean-am
+clean-am: clean-generic clean-libtool clean-pyexecLTLIBRARIES \
+       mostlyclean-am
 
 distclean: distclean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -982,9 +900,7 @@ install-dvi: install-dvi-recursive
 
 install-dvi-am:
 
-install-exec-am: install-exec-local install-pkgpyexecLTLIBRARIES \
-       install-pkgpyexecPYTHON install-pyexecLTLIBRARIES \
-       install-pyexecPYTHON
+install-exec-am: install-exec-local install-pyexecLTLIBRARIES
 
 install-html: install-html-recursive
 
@@ -1025,45 +941,38 @@ ps: ps-recursive
 ps-am:
 
 uninstall-am: uninstall-local uninstall-pkgconfigDATA \
-       uninstall-pkgpyexecLTLIBRARIES uninstall-pkgpyexecPYTHON \
-       uninstall-pyexecLTLIBRARIES uninstall-pyexecPYTHON
+       uninstall-pyexecLTLIBRARIES
 
 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
        ctags-recursive install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
        all all-am am--refresh check check-am clean clean-generic \
-       clean-libtool clean-pkgpyexecLTLIBRARIES \
-       clean-pyexecLTLIBRARIES ctags ctags-recursive dist dist-all \
-       dist-bzip2 dist-gzip dist-hook dist-lzma dist-shar dist-tarZ \
-       dist-xz dist-zip distcheck distclean distclean-generic \
-       distclean-hdr distclean-libtool distclean-local distclean-tags \
-       distcleancheck distdir distuninstallcheck dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-data-local install-dvi install-dvi-am \
-       install-exec install-exec-am install-exec-local install-html \
+       clean-libtool clean-pyexecLTLIBRARIES ctags ctags-recursive \
+       dist dist-all dist-bzip2 dist-gzip dist-hook dist-lzip \
+       dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
+       distclean distclean-generic distclean-hdr distclean-libtool \
+       distclean-local distclean-tags distcleancheck distdir \
+       distuninstallcheck dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am \
+       install-data-local install-dvi install-dvi-am install-exec \
+       install-exec-am install-exec-local install-html \
        install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-pkgconfigDATA \
-       install-pkgpyexecLTLIBRARIES install-pkgpyexecPYTHON \
-       install-ps install-ps-am install-pyexecLTLIBRARIES \
-       install-pyexecPYTHON install-strip installcheck \
-       installcheck-am installdirs installdirs-am maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-       uninstall uninstall-am uninstall-local uninstall-pkgconfigDATA \
-       uninstall-pkgpyexecLTLIBRARIES uninstall-pkgpyexecPYTHON \
-       uninstall-pyexecLTLIBRARIES uninstall-pyexecPYTHON
+       install-pdf install-pdf-am install-pkgconfigDATA install-ps \
+       install-ps-am install-pyexecLTLIBRARIES install-strip \
+       installcheck installcheck-am installdirs installdirs-am \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags tags-recursive uninstall uninstall-am uninstall-local \
+       uninstall-pkgconfigDATA uninstall-pyexecLTLIBRARIES
 
 
 # install pth file.
 install-data-local:
        $(mkinstalldirs) $(DESTDIR)$(pythondir)
-       echo "gtk-$(PLATFORM_VERSION)" > $(DESTDIR)$(pyexecdir)/pygtk.pth
 install-exec-local:
        $(mkinstalldirs) $(DESTDIR)$(pyexecdir)
-       echo "gtk-$(PLATFORM_VERSION)" > $(DESTDIR)$(pyexecdir)/pygtk.pth
 uninstall-local:
-       rm -f $(DESTDIR)$(pythondir)/pygtk.pth $(DESTDIR)$(pyexecdir)/pygtk.pth
 
 egg: EGG_TMPDIR:=$(TMPDIR)/$(PACKAGE)-$(PACKAGE_VERSION)
 egg: $(top_srcdir)/gobject/gobject.la PKG-INFO
@@ -1072,11 +981,10 @@ egg: $(top_srcdir)/gobject/gobject.la PKG-INFO
        $(MKDIR_P) $(EGG_TMPDIR)
        $(MKDIR_P) $(EGG_TMPDIR)/EGG-INFO
        $(MAKE) -C gobject install-pkgpyexecLTLIBRARIES pkgpyexecdir=$(EGG_TMPDIR)
-       $(INSTALL) dsextras.py $(EGG_TMPDIR)
        rm -fr $(EGG_TMPDIR)/gobject.la
        $(INSTALL) PKG-INFO $(EGG_TMPDIR)/EGG-INFO
        echo "gobject.so" >> $(EGG_TMPDIR)/EGG-INFO/native_libs.txt
-       ( echo "gobject" ; echo "dsextras.py" ) >> $(EGG_TMPDIR)/EGG-INFO/top_level.txt
+       ( echo "gobject" ) >> $(EGG_TMPDIR)/EGG-INFO/top_level.txt
        cd $(EGG_TMPDIR) && zip -rq $(EGG_NAME) .
        mv $(EGG_TMPDIR)/$(EGG_NAME) .
        rm -fr $(EGG_TMPDIR)
@@ -1090,15 +998,26 @@ doc-dist:
        tar cfz $(PACKAGE)-docs.tar.gz pygobject
        rm -fr pygobject
 
-release-tag:
-       @ROOT=`svn info --xml|egrep ^"<url>"|cut -d\> -f2|cut -d\< -f1`; \
-       SVNVERSION=`echo $(VERSION)|sed s/\\\./_/g`;\
-         echo "* Tagging $(VERSION)"; \
-          svn cp -m "Tag $(VERSION)" \
-              $$ROOT \
-              svn+ssh://johan@svn.gnome.org/svn/pygobject/tags/PYGOBJECT_$$SVNVERSION
+release-news:
+       printf "%-8s%s\n" "$(VERSION)" "`LC_TIME=C date '+%d-%b-%Y'`" > NEWS.tmp
+
+       @echo -e "\n\n\nFor blogging, you can copy&paste this HTML formatted news:"
+       @echo "-------------- 8< -------------"
+       @last=`head -n1 NEWS | cut -f1 -d' '`; \
+        echo "<ul>"; \
+       for commit in `git rev-list $$last..`; do \
+          data=`git log --format="format:%s%n%an%n%b" $$commit^..$$commit`; \
+          echo "$$data" | perl -e '$$subj = <>; chomp $$subj; $$author = <>; chomp $$author; while (<>) { if (/bugzilla.gnome.org.*id=([0-9]+)/) { $$bug = $$1 }};  print "  <li>$$subj ($$author)"; if ($$bug) { print " (<a href=\"https://bugzilla.gnome.org/show_bug.cgi?id=$$bug\">#$$bug</a>)"; }; print "</li>\n"'; \
+          echo "$$data" | perl -e '$$subj = <>; chomp $$subj; $$author = <>; chomp $$author; while (<>) { if (/bugzilla.gnome.org.*id=([0-9]+)/) { $$bug = $$1 }};  print "        - $$subj ($$author)"; if ($$bug) { print " (#$$bug)"; }; print "\n"' >> NEWS.tmp; \
+        done
+       @echo "</ul>"
+       @echo "-------------- 8< -------------"
 
-.PHONY: ChangeLog
+       @echo >> NEWS.tmp
+       @cat NEWS >> NEWS.tmp
+       @mv NEWS.tmp NEWS
+
+.PHONY: ChangeLog release-news
 
 ChangeLog:
        @echo Creating $@
@@ -1128,11 +1047,12 @@ dist-hook: $(BUILT_EXTRA_DIST)
 check.gdb:
        cd tests && $(MAKE) check.gdb
 
+check.nemiver:
+       cd tests && $(MAKE) check.nemiver
+
 check.valgrind:
        cd tests && $(MAKE) check.valgrind
 
--include $(top_srcdir)/git.mk
-
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/NEWS b/NEWS
index eeae929..31e214c 100644 (file)
--- a/NEWS
+++ b/NEWS
-2.28.6 11-Jun-1011
+3.4.0   24-Sep-2012
+        - Bump g-i dependency to 1.33.14 (Martin Pitt)
+
+3.3.92  17-Sep-2012
+        - [API add] Add ObjectInfo.get_abstract method (Simon Feltman) (#675581)
+       - Add deprecation warning when setting gpointers to anything other than
+         int. (Simon Feltman) (#683599)
+       - argument: Fix 64bit integer convertion from GValue (Nicolas Dufresne)
+         (#683596)
+        - Improve setting pointer fields/arguments to NULL using None
+         (Simon Feltman) (#683150)
+        - Bump g-i dependency to 1.33.10 (Martin Pitt)
+        - Fix -uninstalled.pc.in file (Thibault Saunier) (#683379)
+       - Various test suite additions and improvements (Martin Pitt)
+
+3.3.91  03-Sep-2012
+        - Fix exception test case for Python 2 (Martin Pitt)
+        - Bump g-i dependency to >= 1.3.9 (Martin Pitt)
+        - Show proper exception when trying to allocate a disguised struct
+          (Martin Pitt) (#639972)
+        - Support marshalling GParamSpec signal arguments (Mark Nauwelaerts)
+          (#683099)
+        - Add test for a signal that returns a GParamSpec (Martin Pitt)
+          (#683265)
+        - [API add] Add Signal class for adding and connecting custom signals.
+          (Simon Feltman) (#434924)
+        - Fix pygtkcompat's Gtk.TreeView.insert_column_with_attributes()
+          (Martin Pitt)
+        - Add override for Gtk.TreeView.insert_column_with_attributes()
+          (Marta Maria Casetti) (#679415)
+        - .gitignore: Add missing built files (Martin Pitt)
+        - Ship tests/gi in tarball (Martin Pitt)
+        - Split test_overrides.py (Martin Pitt) (#683188)
+        - _pygi_argument_to_object(): Clean up array unmarshalling (Martin Pitt)
+        - Fix memory leak in _pygi_argument_to_object() (Alban Browaeys)
+          (#682979)
+        - Fix setting pointer fields/arguments to NULL using None.
+          (Simon Feltman) (#683150)
+        - Fix for python 2.6, officially drop support for < 2.6 (Martin Pitt)
+          (#682422)
+        - Allow overrides in other directories than gi itself
+          (Thibault Saunier) (#680913)
+        - Clean up sys.path handling in tests (Simon Feltman) (#680913)
+        - Fix dynamic creation of enum and flag gi types for Python 3.3
+          (Simon Feltman) (#682323)
+        - [API add] Override g_menu_item_set_attribute (Paolo Borelli) (#682436)
+
+3.3.90  20-Aug-2012
+        - Implement marshalling for GParamSpec (Mathieu Duponchelle) (#681565)
+        - Fix erronous import statements for Python 3.3 (Simon Feltman)
+          (#682051)
+        - Do not fail tests if pyflakes or pep8 are not installed (Martin Pitt)
+        - Fix PEP-8 whitespace checking and issues in the code (Martin Pitt)
+        - Fix unmarshalling of gssize (David Malcolm) (#680693)
+        - Fix various endianess errors (David Malcolm) (#680692)
+        - Gtk overrides: Add TreeModelSort.__init__(self, model)
+         (Simon Feltman) (#681477)
+        - Convert Gtk.CellRendererState in the pygi-convert script
+         (Manuel Quiñones) (#681596)
+
+3.3.5   06-Aug-2012
+        - Fix list marshalling on big-endian machines (Martin Pitt)
+          (#680693)
+        - Beautify class/interface type mismatch error messages (Martin Pitt)
+        - Skip instead of fail tests which need Pango, Atk, Gdk, Gtk (Martin Pitt)
+        - [API add] pygtkcompat: Add more pixbuf creation functions (Simon Feltman)
+          (#680814)
+        - Fix error messages on interface/class type mismatches (Martin Pitt)
+        - Fix crash when returning (False, None) from Gtk.TreeModel.do_get_iter() (Simon Feltman)
+          (#680812)
+        - Add test case for Gtk.TextIter.forward_search() (Martin Pitt)
+          (#679415)
+        - pygi-info.c: Robustify pointer arithmetic (Martin Pitt)
+        - Add set_attributes() override to Gtk.TreeViewColumn (Manuel Quiñones)
+        - Gtk overrides: Add TreePath.__getitem__() (Simon Feltman)
+          (#680353)
+        - Fix property type mapping from int to TYPE_INT for python3. (Simon Feltman)
+          (#679939)
+        - Convert Gtk.DestDefaults constants in pygi-convert.sh script (Manuel Quiñones)
+          (#680259)
+        - Convert all Gdk.WindowState constants in pygi-convert.sh (Manuel Quiñones)
+          (#680257)
+        - [API add] Add API for checking pygobject's version (Joe R. Nassimian)
+          (#680176)
+        - pygi-convert.sh: Add some missing Gdk.CursorTypes (Manuel Quiñones)
+          (#680050)
+        - pygi-convert.sh: convert rsvg.Handle(data=...) (Manuel Kaufmann)
+          (#680092)
+
+3.3.4   16-Jul-2012
+        - pygi-convert.sh: Drop bogus filter_new() conversion (Martin Pitt)
+          (#679999)
+        - Fix help() for GI modules (Martin Pitt) (#679804)
+        - Skip gi.CallbackInfo objects from a module's dir() (Martin Pitt)
+          (#679804)
+        - Fix __path__ module attribute (Martin Pitt)
+        - pygi-convert.sh: Fix some child â†’ getChild() false positives
+         (Joe R. Nassimian) (#680004)
+       - Fix array handling for interfaces, properties, and signals
+         (Mikkel Kamstrup Erlandsen) (#667244)
+       - Add conversion of the Gdk.PropMode constants to pygi-convert.sh
+         script (Manuel Quiñones) (#679775)
+       - Add the same rules for pack_start to convert pack_end (Manuel
+         Quiñones) (#679760)
+        - Add error-checking for the case where _arg_cache_new() fails
+         (Dave Malcolm) (#678914)
+       - Add conversion of the Gdk.NotifyType constants to pygi-convert.sh
+         script (Manuel Quiñones) (#679754)
+       - Fix PyObject_Repr and PyObject_Str reference leaks (Simon Feltman)
+          (#675857)
+       - [API add] Gtk overrides: Add TreePath.__len__() (Martin Pitt)
+          (#679199)
+        - GLib.Variant: Fix repr(), add proper str() (Martin Pitt) (#679336)
+        - m4/python.m4: Update Python version list (Martin Pitt)
+        - Remove "label" property from Gtk.MenuItem if it is not set
+         (Micah Carrick) (#670575)
+
+3.3.3.1 25-Jun-2012
+        - Do not escape enum and flag names that are Python keywords (Martin Pitt)
+
+3.3.3   25-Jun-2012
+        - Remove obsolete release-tag make target (Martin Pitt)
+       - Do not do any python calls when GObjects are destroyed after the
+         python interpreter has been finalized (Simon Schampijer) (#678046)
+        - Do not change constructor-only "type" Window property (Martin Pitt)
+          (#678510)
+        - Escape identifiers which are Python keywords (Martin Pitt) (#676746)
+       - Fix code for PEP-8 violations detected by the latest pep8 checker.
+          (Martin Pitt)
+        - Fix crash in GLib.find_program_in_path() (Martin Pitt) (#678119)
+        - Revert "Do not bind gobject_get_data() and gobject_set_data()" (Martin Pitt)
+         (#641944)
+        - GVariant: Raise proper TypeError on invalid tuple input (David Keijser)
+          (#678317)
+
+3.3.2   05-Jun-2012
+       - foreign: Register cairo.Path and cairo.FontOptions foreign structs
+         (Bastian Winkler) (#677388)
+        - Check types in GBoxed assignments (Marien Zwart) (#676603)
+       - [API add] Gtk overrides: Add TreeModelRow.get_previous()
+         (Bastian Winkler) (#677389)
+       - [API add] Add missing GObject.TYPE_VARIANT (Bastian Winkler) (#677387)
+        - Fix boxed type equality (Jasper St. Pierre) (#677249)
+        - Fix TestProperties.testBoxed test (Jose Rostagno) (#676644)
+       - Fix handling of by-reference structs as out parameters
+         (Carlos Garnacho) (#653151)
+       - tests: Add more vfunc checks for GIMarshallingTestsObject
+         (Martin Pitt)
+        - Test caller-allocated GValue out parameter (Martin Pitt) (#653151)
+        - GObject.bind_property: Support transform functions (Bastian Winkler)
+          (#676169)
+        - Fix lookup of vfuncs in parent classes (Carlos Garnacho) (#672864)
+        - tests/test_properties.py: Fix whitespace (Martin Pitt)
+        - gi: Support zero-terminated arrays with length arguments
+         (Jasper St. Pierre) (#677124)
+        - [API add] Add GObject.bind_property method (Simon Feltman) (#675582)
+        - pygtkcompat: Correctly set flags (Jose Rostagno) (#675911)
+        - Gtk overrides: Implement __delitem__ on TreeModel (Jose Rostagno)
+          (#675892)
+        - Gdk Color override should support red/green/blue_float properties
+         (Simon Feltman) (#675579)
+        - Support marshalling of GVariants for closures (Martin Pitt) (#656554)
+        - _pygi_argument_from_object(): Check for compatible data type
+         (Martin Pitt)
+        - pygtkcompat: Fix color conversion (Martin Pitt)
+        - test_gi: Check setting properties in constructor (Martin Pitt)
+        - Support getting and setting GStrv properties (Martin Pitt)
+        - Support defining GStrv properties from Python (Martin Pitt)
+        - Add GObject.TYPE_STRV constant (Martin Pitt)
+        - Unref GVariants when destroying the wrapper (Martin Pitt) (#675472)
+        - Fix TestArrayGVariant test cases (Martin Pitt)
+        - pygtkcompat: Add gdk.pixbuf_get_formats compat code (Jose Rostagno)
+          (#675489)
+        - pygtkcompat: Add some more compat functions (Jose Rostagno) (#675489)
+        - Fix tests for Python 3 (Martin Pitt)
+        - Fix building with --disable-cairo (Martin Pitt)
+        - tests: Fix deprecated assertions (Martin Pitt)
+        - Run tests with MALLOC_PERTURB_ (Martin Pitt)
+
+3.3.1   30-Apr-2012
+       - GSettings: allow extra keyword arguments (Giovanni Campagna)
+         (#675105)
+       - pygtkcompat: Correct Userlist module use (Jose Rostagno) (#675084)
+       - Add release-news make rule (Martin Pitt)
+       - Add "make check.nemiver" target (Martin Pitt)
+       - Test flags and enums in GHash values (Martin Pitt) (#637466)
+       - tests: Activate test_hash_in and apply workaround (Martin Pitt)
+         (#666636)
+       - Add special case for Gdk.Atom array entries from Python (Martin Pitt)
+         (#661709)
+       - test_gdbus: Call GetConnectionUnixProcessID() with correct signature
+         (Martin Pitt) (#667954)
+       - Add test case for Gtk.ListStore custom sort (Martin Pitt) (#674475)
+       - GTK overrides: Add missing keyword arguments (Martin Pitt) (#660018)
+       - [API change] Add missing override for TreeModel.iter_previous()
+         (Martin Pitt) (#660018)
+       - pygi-convert.py: Drop obsolete drag method conversions (Martin Pitt)
+         (#652860)
+       - tests: Replace deprecated assertEquals() with assertEqual()
+         (Martin Pitt)
+       - Plug tiny leak in constant_info_get_value (Paolo Borelli) (#642754)
+       - Fix len_arg_index for array arguments (Bastian Winkler) (#674271)
+       - Support defining GType properties from Python (Martin Pitt) (#674351)
+       - Handle GType properties correctly (Bastian Winkler) (#674351)
+       - Add missing GObject.TYPE_GTYPE (Martin Pitt)
+       - Fix test_mainloop.py for Python 3 (Martin Pitt)
+       - Make callback exception propagation test stricter (Martin Pitt)
+         (#616279)
+       - [API add] Add context management to freeze_notify() and
+         handler_block(). (Simon Feltman) (#672324)
+       - Add support for GFlags properties (Martin Pitt) (#620943)
+       - [API add] Wrap GLib.Source.is_destroyed() method (Martin Pitt)
+         (#524719)
+       - Fix error message when trying to override a non-GI class
+         (Martin Pitt) (#646667)
+       - Fix segfault when accessing __grefcount__ before creating the GObject
+         (Steve Frécinaux) (#640434)
+       - [API change] Do not bind gobject_get_data() and gobject_set_data()
+         (Steve Frécinaux) (#641944)
+       - Add test case for multiple GLib.MainLoop instances (Martin Pitt)
+         (#663068)
+       - Add a ccallback type which is used to invoke callbacks passed to a
+         vfunc (John (J5) Palmieri) (#644926)
+       - Regression test: marshalling GValues in GHashTable (Alberto Mardegan)
+         (#668903)
+       - Update .gitignore (Martin Pitt)
+       - Fix "distcheck" and tests with out-of-tree builds (Martin Pitt)
+       - Add a pep8 check to the makefile (Johan Dahlin) (#672627)
+       - PEP8 whitespace fixes (Johan Dahlin) (#672627)
+       - PEP8: Remove trailing ; (Johan Dahlin) (#672627)
+       - tests: Replace deprecated Python API (Martin Pitt)
+       - Fail tests if they use or encounter deprecations (Martin Pitt)
+       - Do not run tests in two phases any more (Martin Pitt)
+       - test_overrides: Find local gsettings schema with current glib
+         (Martin Pitt)
+       - Add GtkComboBoxEntry compatibility (Paolo Borelli) (#672589)
+       - Correct review comments from Martin (Johan Dahlin) (#672578)
+       - Correct pyflakes warnings/errors (Johan Dahlin) (#672578)
+       - Make tests fail on CRITICAL logs, too, and apply to all tests
+         (Martin Pitt)
+       - Support marshalling GI_TYPE_TAG_INTERFACE (Alberto Mardegan)
+         (#668903)
+       - Fix warnings on None values in added tree/list store rows
+         (Martin Pitt) (#672463)
+       - pygtkcompat test: Properly clean up PixbufLoader (Martin Pitt)
+
+3.1.92  19-Mar-2012
+        - Correct Gtk.TreePath.__iter__ to work with Python 3 (Johan Dahlin)
+        - Fix test_everything.TestSignals.test_object_param_signal test case
+          (Martin Pitt)
+        - Add a PyGTK compatibility layer (Johan Dahlin)
+        - pygtkcompat: Remove first argument for get_origin() (Johan Dahlin)
+        - Fix pygtkcompat.py to work with Python 3 (Martin Pitt)
+        - GtkViewport: Add a default values for the adjustment constructor
+          parameters (Johan Dahlin)
+        - GtkIconSet: Add a default value for the pixbuf constructor parameter
+          (Johan Dahlin)
+        - PangoLayout: Add a default value for set_markup() (Johan Dahlin)
+        - Gtk[HV]Scrollbar: Add a default value for the adjustment constructor
+          parameter (Johan Dahlin)
+        - GtkToolButton: Add a default value for the stock_id constructor
+          parameter (Johan Dahlin)
+        - GtkIconView: Add a default value for the model constructor parameter
+          (Johan Dahlin)
+        - Add a default value for column in Gtk.TreeView.get_cell_area()
+          (Johan Dahlin)
+        - Atomic inserts in Gtk.{List,Tree}Store overrides (Martin Pitt)
+        - Fix Gtk.Button constructor to accept use_stock parameter
+          (Martin Pitt)
+        - Correct bad rebase, remove duplicate Window (Johan Dahlin)
+        - Add bw-compatible arguments to Gtk.Adjustment (Johan Dahlin)
+        - GtkTreePath: make it iterable (Johan Dahlin)
+        - Add a default argument to TreeModelFilter.set_visible_func()
+          (Johan Dahlin)
+        - Add a default argument to Gtk.TreeView.set_cursor (Johan Dahlin)
+        - Add a default argument to Pango.Context.get_metrics() (Johan Dahlin)
+        - Fix double-freeing GValues in arrays (Martin Pitt)
+        - Renamed "property" class to "Property" (Simon Feltman)
+        - Fix Python to C marshalling of GValue arrays (Martin Pitt)
+        - Correct the Gtk.Window hierarchy (Johan Dahlin)
+        - Renamed getter/setter instance attributes to fget/fset respectively.
+          (Simon Feltman)
+        - Add Gtk.Arrow/Gtk.Window constructor override (Johan Dahlin)
+        - Fix marshalling to/from Python to work on big endian machines.
+          (Michel Dänzer)
+        - Use gi_cclosure_marshal_generic instead of duplicating it.
+          (Michel Dänzer)
+        - Override Gtk.TreeView.get_visible_range to fix return (René Stadler)
+        - Plug memory leak in _is_union_member (Paolo Borelli)
+        - tests: Split TestInterfaces into separate tests (Sebastian Pölsterl)
+        - README: Update current maintainers (Martin Pitt)
+
+3.1.1   20-Feb-2012
+        - Don't use C99 style (Sebastian Pölsterl)
+        - Add test for GPtrArray with transfer full (Martin Pitt)
+        - Drop obsolete g_thread_init() (Martin Pitt)
+        - Fix deprecated g_source_get_current_time() (Martin Pitt)
+        - Fix deprecated g_value_[gs]et_char() (Martin Pitt)
+        - Make pygiconvert.sh correctly convert gtk.gdk.x11_* (Simon Schampijer)
+        - Raise required glib version to 2.31 because of g_value_(get|set)_schar (Sebastian Pölsterl)
+        - Fix cset_first typo (Dieter Verfaillie)
+        - pygi-convert: Handle Clutter and Cogl (Bastian Winkler)
+        - Provide access to gpointer struct values (Cédric Krier)
+        - Add some GType tests (Paolo Borelli)
+        - Split GStrv and array variant tests in their own classes (Paolo Borelli)
+        - Add unit test for builder's connect_after (Paolo Borelli)
+        - fix GtkBuilder signal connection 'after' logic (Ryan Lortie)
+        - test(1) uses '=' to test if strings are identical (Patrick Welche)
+        - pygspawn: improve error checking (Ryan Lortie)
+
+3.1.0   06-Feb-2012
+        - Updated DOAP file to only include people currently actively working on the project (Sebastian Pölsterl)
+        - Revert "Convert all strings to utf-8 encoding when retrieving from TreeModel" (Sebastian Pölsterl)
+        - tests: Fixed issues with python3 (Sebastian Pölsterl)
+        - Properly distinguish between different integer types for properties (Sebastian Pölsterl)
+        - Distinguish between GArray and GPtrArray when cleaning up (Sebastian Pölsterl)
+        - Add null_gerror_callback unit test (Paolo Borelli)
+        - pyglib_error_check: Re-add missing NULL check (Martin Pitt)
+        - Add tests/runtests-windows.py to source tarball (Michael Culbertson)
+        - Don't issue a depreciation warning for GtkDialog's NO_SEPARATOR flag, even when unused (Sebastian Pölsterl)
+        - Fix bool() operations on GLib.Variant objects (Nirbheek Chauhan)
+        - Fix hash() and __eq__() for GLib.Variant objects (Nirbheek Chauhan)
+        - Fix method names of callback tests (Martin Pitt)
+        - Cairo: add missing braces around array-of-struct definition (Will Thompson)
+        - g_instance_init: cast to PyGObject * as needed (Will Thompson)
+        - Fix a few set-but-not-used warnings. (Will Thompson)
+        - pygmainloop: allow for extra arguments in 'quit' method (Stefano Facchini)
+        - Fix bytearray test compatibility with python3 (Alexandre Rostovtsev)
+        - Respect transfer-type when demarshalling GErrors (Alberto Mardegan)
+        - Support GHashTable and GError as callback/closure arguments (Alberto Mardegan)
+        - Don't leak when marshalling GErrors to C (Will Thompson)
+        - Support functions which return GError (Will Thompson)
+        - Fix indentation of _pygi_argument_to_object() (Alberto Mardegan)
+        - Avoid C99 syntax. (Paolo Borelli)
+        - Connect to first action of a radio group. (Paolo Borelli)
+        - Use g_slist_free_full in pygi-closure. (Paolo Borelli)
+        - Avoid O(n^2) behavior when marshalling lists (Paolo Borelli)
+        - Handle NULL as a valid case of a char** array (Paolo Borelli)
+        - Branching, bump version to 3.1.0 (Tomeu Vizoso)
+        - Add notes about branching to HACKING (Tomeu Vizoso)
+        - Fixed bug where GObject.property did not respect minimum and maximum values (Sebastian Pölsterl)
+        - Remove mention of removed option --enable-docs (Tomeu Vizoso)
+        - Fix sebp's name in NEWS (Tomeu Vizoso)
+
+3.0.3   12-Dec-2011
+        - Convert all modifier constants to Gdk.ModifierType (Manuel Quiñones)
+        - Convert all strings to utf-8 encoding when retrieving from TreeModel (Sebastian Pölsterl)
+        - add test for bytearray variants (John (J5) Palmieri)
+        - handle NULL arrays correctly for each array type (John (J5) Palmieri)
+        - Revert "Revert "Fix array termination and size calculation"" (John (J5) Palmieri)
+        - pygmainloop: avoid lockups if multiple glib.MainLoop exist (Owen W. Taylor)
+        - Properly chain up to the class that implements a given vfunc. (Tomeu Vizoso)
+        - Revert "Fix array termination and size calculation" (Tomeu Vizoso)
+        - Fix array termination and size calculation (Holger Berndt)
+        - pygi-convert: fix for Pango.Alignment (Daniel Drake)
+        - pygi-convert: fix for Gtk.Orientation (Daniel Drake)
+        - Add tests for calling closures (Martin Pitt)
+        - fix marshaling of arrays of GVariants (Mikkel Kamstrup Erlandsen)
+
+3.0.2   21-Oct-2011
+        - Add tests for boxed properties. (Ignacio Casal Quinteiro)
+        - Allow GBoxed types as property (Timo Vanwynsberghe)
+        - when converting an object with transfer none, make sure the wrapper owns a ref (John (J5) Palmieri)
+        - unit test for checking ref count of object param in signals (John (J5) Palmieri)
+        - Gdk overrides: Unbreak for Gdk-2.0 (Martin Pitt)
+        - Do union member checks for unions that are parameters (John (J5) Palmieri)
+
+3.0.1   30-Sep-2011
+       - when checking instances union members are same type as parent
+       - add a floating flag to pygobjects
+       - Revert "Fix refcount bug by not creating python wrapper during gobject init stage"
+
+3.0.0   19-Sep-2011
+        - up version required of gobject-introspection to 1.29.0 (John (J5) Palmieri)
+        - fix most warnings (John (J5) Palmieri)
+
+2.90.4  15-Sep-2011 (3.0 pre-release)
+        - do not pass in len(str) to the length argument of gtk_test_buffer_insert* apis (John (J5) Palmieri)
+        - Switch tarball compression format to tar.xz only. (Dieter Verfaillie)
+        - Remove pygtk_version attribute from internal gi._gobject module. (Dieter Verfaillie)
+        - remove overridesdir from the .pc file and add it to the gi module (John (J5) Palmieri)
+        - fix tests to correctly construct a dummy Gtk.TargetEntry (John (J5) Palmieri)
+        - we now assume that C arrays of structs are flat so memcpy them when marshalling (John (J5) Palmieri)
+        - only update the arg counts once if child arg comes before parent arg (John (J5) Palmieri)
+        - Fix refcount bug by not creating python wrapper during gobject init stage (John (J5) Palmieri)
+        - don't destroy just created wrapper when object is created via g_object_new (John (J5) Palmieri)
+        - Remove deprecated API from pygobject.h (Steve Frécinaux)
+        - Convert gtk.TRUE/FALSE to Python True/False. (Marcin Owsiany)
+        - Drop legacy __gobject_init__ method of GObject.Object. (Steve Frécinaux)
+        - AM_CHECK_PYTHON_LIBS does not work for lib64 (Dieter Verfaillie)
+        - Remove common_ldflags from Makefile.am as it is no longer used. (Dieter Verfaillie)
+        - check if object is actually a PyGFlag before trying to access g_type (John (J5) Palmieri)
+        - fix regression - add instance type checks since Py3 no longer does this for us (John (J5) Palmieri)
+        - refactor in/out marshalling to be to_py/from_py (John (J5) Palmieri)
+        - Examples: fix cairo-demo.py imports (Dieter Verfaillie)
+        - Fix paths and add missing overridesdir variable used in uninstalled pkgconfig file (Dieter Verfaillie)
+        - Remove no longer used variables from pkgconfig files (Dieter Verfaillie)
+        - docs/Makefile.am and m4/python.m4: Python3 portability fixes (Dieter Verfaillie)
+        - Refactor and clean Makefile.am files (Dieter Verfaillie)
+        - Remove all PLATFORM_VERSION = 2.0 traces (Dieter Verfaillie)
+        - Remove gi/tests/ directory as all the tests now live in tests/ (Dieter Verfaillie)
+        - autogen.sh: Use autoreconf instead of a custom script and honor ACLOCAL_FLAGS (Dieter Verfaillie)
+        - use improved python.m4 macros to search for Python headers and libs (Dieter Verfaillie)
+        - Make maintiner mode enabled by default (Javier Jardón)
+        - Disable documentation for now since they are completely wrong for GI. (Dieter Verfaillie)
+        - Fix documentation installation directory (Dieter Verfaillie)
+        - Remove distutils based build system. (Dieter Verfaillie)
+        - [gtk-demo] Fix syntax highlighter encoding issue (Dieter Verfaillie)
+        - overrides: add constants for atoms (Ignacio Casal Quinteiro)
+        - Drop pygobject_construct() from public API. (Steve Frécinaux)
+
+2.90.3  31-Aug-2011 (3.0 pre-release)
+        - support skip annotation for return values (John (J5) Palmieri)
+        - Test GPtrArray regression (Xavier Claessens)
+        - Drop support for old constructor style. (Steve Frécinaux)
+        - Drop support for sink functions. (Steve Frécinaux)
+        - Reinstate copying of in-line structs in arrays (Mike Gorse)
+        - fix inline struct array handling (John (J5) Palmieri)
+        - fix on demos (Dieter Verfaillie)
+        - Added support for __setitem__ to TreeModel and support for slices to TreeModelRow (Sebastian Pölsterl)
+        - Convert ACCEL_* constants into Gtk.AccelFlags. (Olav Vitters)
+        - Convert TREE_VIEW_DROP_* constants into Gtk.TreeViewDropPosition (Olav Vitters)
+
+2.90.2  18-Aug-2011 (3.0 pre-release)
+        - remove tests that were removed from gi (John (J5) Palmieri)
+        - don't calculate item_size using is_pointer (John (J5) Palmieri)
+        - Updated signal example to use GObject introspection (Timo Vanwynsberghe)
+        - Updated properties example to use GObject introspection (Timo Vanwynsberghe)
+        - Add override for GLib.Variant.split_signature() (Martin Pitt)
+        - [pygi-convert.sh] Handle the import of pygtk and require Gtk 3.0 (Timo Vanwynsberghe)
+        - Install pygobject.h again. (Ignacio Casal Quinteiro)
+        - update the doap file (John (J5) Palmieri)
+
+2.90.1  14-Aug-2011 (3.0 pre-release)
+       - pass exta keywords to the Box constructor (John (J5) Palmieri)
+        - add (Tree|List)Store set method override (John (J5) Palmieri)
+        - add test for object arrays (John (J5) Palmieri)
+        - only support C pointer arrays for structs and objects (John (J5) Palmieri)
+        - revert Gtk.Window override because it causes issues with subclasses (John (J5) Palmieri)
+        - take GIL in _pygi_invoke_closure_free (bug #647016) (Jonathan Matthew)
+        - Add a default parameter to GtkTreeModel.filter_new (Johan Dahlin)
+        - Add vbox/action_area properties (Johan Dahlin)
+        - Add a couple of constructors (Johan Dahlin)
+        - Do not always pass in user_data to callbacks. (Johan Dahlin)
+        - Add a default detail value for Widget.render_icon (Johan Dahlin)
+        - Add an override for Gdk.color_parse() (Johan Dahlin)
+        - Support function calling with keyword arguments in invoke. (Laszlo Pandy)
+        - remove references to deprecated GI_INFO_TYPE_ERROR_DOMAIN (John (J5) Palmieri)
+        - Fix gobject vs. gi.repository warning (Martin Pitt)
+        - make GObject and GLib able to take overrides (John (J5) Palmieri)
+        - avoid dependency issue by importing the internal gobject (John (J5) Palmieri)
+        - fix tests to use the new GLib module (John (J5) Palmieri)
+        - add DynamicGLibModule which works like DynamicGObjectModule (John (J5) Palmieri)
+        - refactor, add objects and types to the correct internal module (John (J5) Palmieri)
+        - rename the pyglib shared library so we don't load the old one (John (J5) Palmieri)
+        - refactor tests to only use PyGObject 3 syntax (John (J5) Palmieri)
+        - refactor the internal _glib module to import correct modules (John (J5) Palmieri)
+        - refactor to use the new internal _glib and _gobject modules (John (J5) Palmieri)
+        - refactor gi module to import and use internal _gobject module (John (J5) Palmieri)
+        - move the static bits internal to gi and refactor build files (John (J5) Palmieri)
+        - remove pygtk.py (John (J5) Palmieri)
+        - introspection is no longer optional (John (J5) Palmieri)
+        - up platform version to 3.0 (John (J5) Palmieri)
+        - [gi] Handle GVariants from callback return values (Martin Pitt)
+        - Handle GVariants for callback arguments (Martin Pitt)
+        - [gi] Fix crash: check return value of _invoke_state_init_from_callable_cache() before continuing. (Laszlo Pandy)
+        - [gi] Pass gtype as first parameter to vfuncs (instead of using kwargs). (Laszlo Pandy)
+        - remove codegen (John (J5) Palmieri)
+        - remove some left over ifdefs to complete merge of the invoke-rewrite branch (John (J5) Palmieri)
+        - rename pygi-invoke-ng to pygi-invoke (John (J5) Palmieri)
+        - make invoke-ng the only invoker (John (J5) Palmieri)
+        - Merge branch 'master' into invoke-rewrite (John (J5) Palmieri)
+        - Merge branch 'master' into invoke-rewrite (John (J5) Palmieri)
+        - split the marshalling routines into two source files (John (J5) Palmieri)
+        - Ship tests/te_ST@nouppera in release tarballs for tests to succeed (Martin Pitt)
+        - [invoke] break out caller_allocates allocating into its own function (John (J5) Palmieri)
+        - [invoke] missed a bit when removing constructor_class usage (John (J5) Palmieri)
+        - [invoke] don't hold on to the constructor class, just add a TODO (John (J5) Palmieri)
+        - [gi] Port test_properties from static gio to GI Gio (Martin Pitt)
+        - [python3] Fix maketrans import (Martin Pitt)
+        - [caching] remove all inline compiler flags (John (J5) Palmieri)
+        - [caching] refactor function names to be less confusing (John (J5) Palmieri)
+        - [overrides] deprecate the use of type keyword MessageDialog constructor (John (J5) Palmieri)
+        - gdbus tests: Fix hang if test case fails (Martin Pitt)
+        - use an enum instead of booleans to denote function type (John (J5) Palmieri)
+        - rename aux arguments to child arguments to make their purpose clearer (John (J5) Palmieri)
+        - Fixed the cairo example (Timo Vanwynsberghe)
+        - Add override binding for Gtk.ListStore.prepend(). (Adam Dingle)
+        - Fix crash in Gtk.TextIter overrides (Martin Pitt)
+        - use gssize instead of int for arg indexes (John (J5) Palmieri)
+        - [cache] remove refrence to default value as it is not implemented yet (John (J5) Palmieri)
+        - Handle arguments that are flags correctly (Sebastian Pölsterl)
+        - correctly initialize the _gi_cairo_functions array to be zero filled (John (J5) Palmieri)
+        - correctly initialize the _gi_cairo_functions array to be zero filled (John (J5) Palmieri)
+        - pass in the address of the gerror, not the gerror itself (John (J5) Palmieri)
+        - [gi] handle marshalling gerrors arguments for signals (John (J5) Palmieri)
+        - [gi-invoke-ng] fix NULL check to check before we access the cache struct (John (J5) Palmieri)
+        - [gi-tests] add test for PyGObject->PyObject TreeModel storage (John (J5) Palmieri)
+        - [gtk-overrides] special case TreeModel columns of PYGOBJECT types (John (J5) Palmieri)
+        - [gi-invoke-ng] copy structs when transfer is full for array (John (J5) Palmieri)
+        - [gtk-override] print warning if user imports Gtk 2.0 (John (J5) Palmieri)
+        - [gtk-overrides] allow the message_type keyword to be used for MessageDialogs (John (J5) Palmieri)
+        - Add support for enums in gobject.property (Johan Dahlin)
+        - Add support for enums in gobject.property (Johan Dahlin)
+        - [gi-invoke-ng] use g_slice for allocating GValues that are caller allocated (John (J5) Palmieri)
+        - [gi-invoke-ng] Convert Overflow errors to ValueErrors when marshalling integers (John (J5) Palmieri)
+        - [gi-invoke-ng] only cache caller allocates for interfaces as some API are broken (John (J5) Palmieri)
+        - [gi-invoke-ng] handle in pointer array marshalling (John (J5) Palmieri)
+        - Adding GPtrArray tests (Alex Eftimie)
+        - [gi-invoke-ng] fix array element offset calculations (John (J5) Palmieri)
+        - [gi] don't clean up arguments that weren't yet processed during in arg failure (John (J5) Palmieri)
+        - [gi-overrides] use new instead of init when constructing a GLib.VariantBuilder (John (J5) Palmieri)
+        - [gi-invoke-ng] actual code to import overrides (John (J5) Palmieri)
+        - [gi-invoke-ng] import pytypes so we get overrides (John (J5) Palmieri)
+        - [gi-invoke-ng] handle gvariants now that they are not foreign (John (J5) Palmieri)
+        - [gi-invoke-ng] do not try to clean up NULL arguments (John (J5) Palmieri)
+        - Merge branch 'master' into invoke-rewrite (John (J5) Palmieri)
+        - Merge branch 'master' into invoke-rewrite (John (J5) Palmieri)
         - closure: avoid double free crash (Ignacio Casal Quinteiro)
-        - [gi] backport of "GVariant has a GType" fe386a (John (J5) Palmieri)
-        - [gi] fixes to backport commit 6b5a65 - in older glib GVariants are still structs (John (J5) Palmieri)
-        - GVariantType is a boxed struct (Tomeu Vizoso)
-        - Use _gi.Struct to wrap fundamentals (Tomeu Vizoso)
         - Added __eq__ method for Gdk.Color and Gdk.RGBA (Jason Siefken)
-        - Remove useless import (Ignacio Casal Quinteiro)
-        - Revert "[gi] Removed hack to avoid using GLib.Variant.new_variant." (Ignacio Casal Quinteiro)
         - closure: Check the out arg is not null. Fixes bug #651812 (Ignacio Casal Quinteiro)
+        - Use constants instead of literals (Tomeu Vizoso)
+        - GVariant has now a GType, take that into account (Tomeu Vizoso)
+        - GVariantType is a boxed struct (Tomeu Vizoso)
+        - Use _gi.Struct to wrap fundamentals (Tomeu Vizoso)
+        - Merge gi/HACKING into /HACKING (Tomeu Vizoso)
         - Fix GC-related crash during PyGObject deallocation (Daniel Drake)
+        - [gi-invoke-ng] enable invoke-ng by default (John (J5) Palmieri)
+        - [gi-invoke-ng] add code to clean up when input values fail to marshal (John (J5) Palmieri)
+        - [gi-invoke-ng] add hash cleanup routines (John (J5) Palmieri)
+        - [gi-invoke-ng] handle arrays with transfers of GI_TRANSFER_CONTAINER (John (J5) Palmieri)
+        - [gi-invoke-ng] add list cleanup routines (John (J5) Palmieri)
+        - indentation fix (John (J5) Palmieri)
+        - [gi-invoke-ng] add out array cleanup (John (J5) Palmieri)
+        - [gi-invoke-ng] do not allocate null terminator for garray (John (J5) Palmieri)
+        - [gi-invoke-ng] add array cleanup for in arrays (John (J5) Palmieri)
+        - [gi-invoke-ng] remove remaining bits of the invoke stage state machine (John (J5) Palmieri)
+        - [gi-invoke-ng] revamp cleanup framework to be orthogonal to cache setup (John (J5) Palmieri)
+        - [gi-invoke-ng] stub out a cleaner way of cleaning up after ourselves (John (J5) Palmieri)
+        - Doc Extractor: Correct the logic of the --no-since option. (José Alburquerque)
+        - Doc Extractor: Add a --no-since option. (José Alburquerque)
+        - [gi-invoke-ng] tweek cleanup routines (John (J5) Palmieri)
         - Fix symbol names to be locale independent (Martin Pitt)
-        - Updated DOAP file (Sebastian Pölsterl)
-
-2.28.4 18-Apr-2011
-        - Version bump to 2.24.4 (Sebastian Pölsterl)
-        - [gi] Don't create variant twice (Sebastian Pölsterl)
-        - pygi-convert.sh: Make sure the uppercase GObject module is imported instead of the lowercase (Sebastian Pölsterl)
-        - [gi] Removed hack to avoid using GLib.Variant.new_variant. (Sebastian Pölsterl)
-        - [gi] Added additional test case for GVariant handling (Sebastian Pölsterl)
-        - [gi] Added support for GVariant arguments (Sebastian Pölsterl)
-        - Fix ABI break in old static bindings. (Steve Frécinaux)
-        - fetch size from an enum type (Mike Gorse)
+        - [gi] pygi-convert.sh: Convert gtk.gdk.CROSSHAIR (Martin Pitt)
+        - [gi-invoke-ng] handle filename cleanup with the utf8 cleanup function (John (J5) Palmieri)
+        - [gi-invoke-ng] handle caller allocates cleanup (John (J5) Palmieri)
+        - [gi-invoke-ng] refactor the cleanup code and add utf8 cleanup as initial test (John (J5) Palmieri)
+        - use PyCapsule when importing pycairo/require pycairo 1.10.0 for python3 builds (John (J5) Palmieri)
+        - [python3] fix build. PYcairo_IMPORT doesn't exists anymore (Ignacio Casal Quinteiro)
+        - Updated DOAP file (Sebastian Pölsterl)
+        - [gi] Don't create variant twice (Sebastian Pölsterl)
+        - pygi-convert.sh: Make sure the uppercase GObject module is imported instead of the lowercase (Sebastian Pölsterl)
+        - [gi] Removed hack to avoid using GLib.Variant.new_variant. (Sebastian Pölsterl)
+        - [gi] Added additional test case for GVariant handling (Sebastian Pölsterl)
+        - [gi] Added support for GVariant arguments (Sebastian Pölsterl)
+        - fix static ABI for setting string gvalues from python objects (John (J5) Palmieri)
         - dsextras.py: ensure eol characters are preserved when writing template files (so \n does not become \r\n) (Dieter Verfaillie)
+        - dsextras.py: remove \r as wel as \n character (Dieter Verfaillie)
+        - use PyCapsule when importing pycairo/require pycairo 1.10.0 for python3 builds (John (J5) Palmieri)
+        - [python3] fix build. PYcairo_IMPORT doesn't exists anymore (Ignacio Casal Quinteiro)
+        - Updated DOAP file (Sebastian Pölsterl)
+        - [gi] Don't create variant twice (Sebastian Pölsterl)
+        - pygi-convert.sh: Make sure the uppercase GObject module is imported instead of the lowercase (Sebastian Pölsterl)
+        - [gi] Removed hack to avoid using GLib.Variant.new_variant. (Sebastian Pölsterl)
+        - [gi] Added additional test case for GVariant handling (Sebastian Pölsterl)
+        - [gi-invoke-ng] fix prototype (John (J5) Palmieri)
+        - [gi-invoke-ng] create new framework for cleaning up args (John (J5) Palmieri)
+        - [gi] Added support for GVariant arguments (Sebastian Pölsterl)
+        - [gi-invoke-ng] fix marshal header that is no longer part of pygi-arguments.h (John (J5) Palmieri)
+        - [gi-invoke-ng] code style space fixes (John (J5) Palmieri)
+        - [gi-invoke-ng] don't decref value taken from a dict as it is borrowed (John (J5) Palmieri)
+        - [gi-invoke-ng] return None when appropriate so we don't crash (John (J5) Palmieri)
+        - [gi-invoke-ng] fix aux value caching (John (J5) Palmieri)
+        - [gi-invoke-ng] backport handling flags with no gtype (John (J5) Palmieri)
+        - [gi-invoke-ng] backport raw gvalue handling (John (J5) Palmieri)
+        - [gi-invoke-ng] marshal instances seperately since they differ slightly from other args (John (J5) Palmieri)
+        - [gi-invoke-ng] refactor FunctionCache to be more generic CallableCache (John (J5) Palmieri)
+        - [gi-invoke-rewrite] backport glib error handling (John (J5) Palmieri)
+        - [gi-invoke-ng] backport closure passing from invoke (John (J5) Palmieri)
+        - [gi-invoke-ng] handle vfuncs and fix cosntrutors (John (J5) Palmieri)
+        - [gi-invoke-ng] handle foreign types correctly (John (J5) Palmieri)
+        - [gi] remove the class parameter from the argument list of constructors (John (J5) Palmieri)
+        - fix static ABI for setting string gvalues from python objects (John (J5) Palmieri)
+        - dsextras.py: ensure eol characters are preserved when writing template files (so \n does not become \r\n) (Dieter Verfaillie)
+        - dsextras.py: remove \r as wel as \n character (Dieter Verfaillie)
+        - [gi] make new invoke-ng codepath compile correctly (John (J5) Palmieri)
+        - [gi] conditionalize invoke code paths (John (J5) Palmieri)
+        - [gi] revert back to the type.py from master (John (J5) Palmieri)
+        - [gi] revert pygi-argument.h and move the invoke-ng code to pygi-marshal.h (John (J5) Palmieri)
+        - Merge branch 'master' into invoke-rewrite (John (J5) Palmieri)
+        - [gi] foreign types now take interface infos instead of type infos (John (J5) Palmieri)
+        - Fix GSchema tests for separate build tree (Martin Pitt)
+        - [gi] start of merge from master (John (J5) Palmieri)
+        - [gi] marshal raw closures (John (J5) Palmieri)
+        - pygi-convert.sh add GObject.xxx and webkit (John Stowers)
+        - pygi-convert.sh remove gobject tests, GObject works now (John Stowers)
+        - [gi-demos] add pickers demo (John (J5) Palmieri)
+        - [gi-demos] add menu demo (John (J5) Palmieri)
+        - [gi-overrides] fix exception block so it works in Python 2.5 (John (J5) Palmieri)
+        - Revert "Deduce PYTHON_LIBS in addition to PYTHON_INCLUDES" (Martin Pitt)
+        - setup.py: fix user_access_control option (Dieter Verfaillie)
+        - [gi] Respect the MessageType for Gtk.MessageDialog (Martin Pitt)
+        - [gi] Do not require signature for D-BUS methods without arguments (Martin Pitt)
+        - [gi-overrides] TreeViewColumn.set_cell_data_func func_data can be None (John Stowers)
+        - [gi-demos] dont try and run demos that represent directories (John Stowers)
+        - [gi-demos] some python 3 compat fixes (John (J5) Palmieri)
+        - [gi-demos] add liststore demo (John (J5) Palmieri)
+        - [gi-demos] catch the correct error class (John (J5) Palmieri)
+        - Do not leak python references when using the gobject.property() helper. (Steve Frécinaux)
+        - handle uchar as bytes, not strings in python 3 (John (J5) Palmieri)
+        - [gi-overrides] handle unichar gvalues when setting treemodels (John (J5) Palmieri)
+        - [gi-overrides] special case python 2 keywords that crept in (John (J5) Palmieri)
+        - check for the py3 _thread module in configure.ac if thread is not found (John (J5) Palmieri)
+        - [gi-demos] add iconview demo (John (J5) Palmieri)
+        - [gi] wrap the keyword argument in a dict so we don't break Python 2.5 (John (J5) Palmieri)
+        - [gi-demos] add the combobox with string ids section to the demos (John (J5) Palmieri)
+        - [gi-overrides] add an override for Gdk.RGBA (John (J5) Palmieri)
+        - [gi-demos] fix up search-entry to reflect annotations fixed in Gtk+ master (John (J5) Palmieri)
+        - [gi-demos] add search entry demo (John (J5) Palmieri)
+        - [gi] wrap map in a list for Python 3 compat (John (J5) Palmieri)
+        - [gi-demos] fix up the validation combobox (John (J5) Palmieri)
+        - add overridesdir variable in the .pc file for 3rd party overrides (John (J5) Palmieri)
+        - setup.py: Set bdist_wininst user-access-control property (Dieter Verfaillie)
+        - Fix uninitialized variable in gi.require_version() (Martin Pitt)
+        - Run tests with LC_MESSAGES="C" (Martin Pitt)
+        - [gi-overrides] override Gtk.stock_lookup to not return success (John (J5) Palmieri)
 
-2.28.3 23-Mar-2011
-       - fix a typo when converting objects to strings gvalues (John (J5) Palmieri)
-
-2.28.2 22-Mar-2011
-       - fix static ABI for setting string gvalues from python objects (John (J
-       - Fix GSchema tests for separate build tree (Martin Pitt)
-       - GIO tests: Fix remaining test case for separate build tree (Martin Pit
-       - GIO tests: Fix for separate build tree (Martin Pitt)
-
-2.28.1 21-Mar-2011
-       - pygi-convert.sh remove gobject tests, GObject works now (John Stowers)
-       - pygi-convert.sh add GObject.xxx and webkit (John Stowers)
-       - [gi] marshal raw closures (John (J5) Palmieri)
-       - Revert "Deduce PYTHON_LIBS in addition to PYTHON_INCLUDES" (Martin Pit
-       - setup.py: fix user_access_control option (Dieter Verfaillie)
-       - [gi-overrides] fix marshalling pygobjects in treemodels (John (J5) Pal
-       - [gi] Respect the MessageType for Gtk.MessageDialog (Martin Pitt)
-       - [gi] Do not require signature for D-BUS methods without arguments (Mar
-       - [gi-demos] add pickers demo (John (J5) Palmieri)
-       - [gi-demos] add menu demo (John (J5) Palmieri)
-       - [gi-overrides] TreeViewColumn.set_cell_data_func func_data can be None
-       - [gi-demos] dont try and run demos that represent directories (John Sto
-       - [gi-overrides] fix exception block so it works in Python 2.5 (John (J5
-
-2.28.0 08-Mar-2011 (stable)
-       - [gi-demos] some python 3 compat fixes (John (J5) Palmieri)
-       - [gi-demos] catch the correct error class (John (J5) Palmieri)
-       - Try not to sink objects returned by C functions. (Steve Frécinaux)
-       - Do not leak python references when using the gobject.property() helper. (Steve Frécinaux)
-       - [gi] fix try except blocks so they work in Python 2.5 (John (J5) Palmieri)
-       - handle uchar as bytes, not strings in python 3 (John (J5) Palmieri)
-       - [gi-overrides] handle unichar gvalues when setting treemodels (John (J5) Palmieri)
-       - [gi-overrides] special case python 2 keywords that crept in (John (J5) Palmieri)
-       - check for the py3 _thread module in configure.ac if thread is not found (John (J5) Palmieri)
-       - [gi-demos] add iconview demo (John (J5) Palmieri)
-       - [gi] wrap the keyword argument in a dict so we don't break Python 2.5 (John (J5) Palmieri)
-       - [gi-demos] add the combobox with string ids section to the demos (John (J5) Palmieri)
-       - [gi-overrides] add an override for Gdk.RGBA (John (J5) Palmieri)
-       - [gi-demos] fix up search-entry to reflect annotations fixed in Gtk+ master (John (J5) Palmieri)
-       - [gi-demos] add search entry demo (John (J5) Palmieri)
-       - [gi] wrap map in a list for Python 3 compat (John (J5) Palmieri)
-       - [gi-demos] fix up the validation combobox (John (J5) Palmieri)
-       - add overridesdir variable in the .pc file for 3rd party overrides (John (J5) Palmieri)
-       - [gi] remove unref for closures since they are floating objects that get sunk (John (J5) Palmieri)
-       - setup.py: Set bdist_wininst user-access-control property (Dieter Verfaillie)
-       - Fix uninitialized variable in gi.require_version() (Martin Pitt)
-       - Run tests with LC_MESSAGES="C" (Martin Pitt)
-       - [gi-overrides] override Gtk.stock_lookup to not return success (John (J5) Palmieri)
 2.27.91 28-Feb-2011 (2.28 pre-release)
        - [gi-tests] use Gdk.test_simulate_button instead of emitting event ourselves (John (J5) Palmieri)
        - [gi-tests] tests for EventButton override. (Laszlo Pandy)
index bfad894..bf94400 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: PyGObject
-Version: 2.28.6
+Version: 3.4.0
 Summary: Python bindings for GObject
 Home-page: http://www.pygtk.org/
 Author: James Henstridge
@@ -8,8 +8,8 @@ Author-email: james@daa.com.au
 Maintainer: Johan Dahlin
 Maintainer-email: johan@gnome.org
 License: GNU LGPL
-Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/2.28/pygobject-2.28.6.tar.gz
-Description: Python bindings for GLib, GObject and GIO
+Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/3.4/pygobject-3.4.0.tar.gz
+Description: Python bindings for GLib and GObject
 Platform: POSIX, Windows
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Linux
index ac0e2e6..5cffe13 100644 (file)
@@ -9,7 +9,7 @@ Maintainer: Johan Dahlin
 Maintainer-email: johan@gnome.org
 License: GNU LGPL
 Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/@PYGOBJECT_MAJOR_VERSION@.@PYGOBJECT_MINOR_VERSION@/pygobject-@VERSION@.tar.gz
-Description: Python bindings for GLib, GObject and GIO
+Description: Python bindings for GLib and GObject
 Platform: POSIX, Windows
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Linux
diff --git a/README b/README
index c5a7089..9faf852 100644 (file)
--- a/README
+++ b/README
@@ -3,12 +3,14 @@ PyGObject
 Original authors:   James Henstridge <james@daa.com.au>
                     Johan Dahlin <johan@gnome.org>
 
-Current maintainers:  Gustavo J A M Carneiro <gjc@gnome.org>
-                      Paul Pogonyshev <pogonyshev@gmx.net>
-                      Gian Mario Tagliaretti <gianmt@gnome.org>
-                      Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-
-This archive contains bindings for the GLib, GObject and GIO,
+Current maintainers:  Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+                      Martin Pitt <martinpitt@gnome.org>
+                      Paolo Borelli <pborelli@gnome.org>
+                      Ignacio Casal Quinteiro <icq@gnome.org>
+                      Sebastian Pölsterl <sebp@k-d-w.org>
+                     
+
+This archive contains bindings for the GLib, and GObject,
 to be used in Python. It is a fairly complete set of bindings,
 it's already rather useful, and is usable to write moderately
 complex programs.  (see the examples directory for some examples
@@ -45,7 +47,6 @@ Requirements
   * Python 2.3.5 or higher
   * Glib 2.22.4 or higher
   * GIO 2.22.4 or higher
-  * GIO-unix 2.22.4 or higher
   * libffi (optional)
 
 Copyright Information
diff --git a/README.win32 b/README.win32
deleted file mode 100644 (file)
index 5819c8d..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-Windows Setuptools Build Instructions
-======================================
-
-  1. Install gtk+ bundle from gtk.org (to C:\GTK for example)
-  2. Install Python2.6
-  3. Install MinGW and MSYS
-  4. Add the following to your msys environment variables
-     (open and append to C:\msys\1.0\etc\profile) or set for the session
-
-     $ export PATH=/c/GTK/bin:/c/Python26:/c/Python26/Scripts:$PATH
-     $ export PKG_CONFIG_PATH=/c/GTK/lib/pkgconfig:/c/Python26/Lib/pkgconfig:$PKG_CONFIG_PATH
-
-  5. In msys shell, build with
-
-     $ python setup.py build --compiler=mingw32 --enable-threading bdist_wininst --user-access-control=auto
-
-Tested with
-  * gtk+-bundle_2.20.0-20100406_win32.zip
-  * MinGW-5.16.exe
-  * MSYS-1.0.11.exe
-  * python-2.6.5.exe
index 9508e3e..9dafc09 100644 (file)
@@ -1,7 +1,8 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
+# Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
-[m4_warning([this file was generated for autoconf 2.68.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically `autoreconf'.])])
 
-# Configure paths for GLIB
-# Owen Taylor     1997-2001
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
-dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject,
-dnl gthread, or gio is specified in MODULES, pass to pkg-config
-dnl
-AC_DEFUN([AM_PATH_GLIB_2_0],
-[dnl 
-dnl Get the cflags and libraries from pkg-config
-dnl
-AC_ARG_ENABLE(glibtest, [  --disable-glibtest      do not try to compile and run a test GLIB program],
-                   , enable_glibtest=yes)
+# serial 1
 
-  pkg_config_args=glib-2.0
-  for module in . $4
-  do
-      case "$module" in
-         gmodule) 
-             pkg_config_args="$pkg_config_args gmodule-2.0"
-         ;;
-         gmodule-no-export) 
-             pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
-         ;;
-         gobject) 
-             pkg_config_args="$pkg_config_args gobject-2.0"
-         ;;
-         gthread) 
-             pkg_config_args="$pkg_config_args gthread-2.0"
-         ;;
-         gio*) 
-             pkg_config_args="$pkg_config_args $module-2.0"
-         ;;
-      esac
-  done
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.11.6], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
 
-  PKG_PROG_PKG_CONFIG([0.16])
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
 
-  no_glib=""
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.6])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
-  if test "x$PKG_CONFIG" = x ; then
-    no_glib=yes
-    PKG_CONFIG=no
-  fi
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-  min_glib_version=ifelse([$1], ,2.0.0,$1)
-  AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-  if test x$PKG_CONFIG != xno ; then
-    ## don't try to run the test against uninstalled libtool libs
-    if $PKG_CONFIG --uninstalled $pkg_config_args; then
-         echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
-         enable_glibtest=no
-    fi
+# serial 1
 
-    if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
-         :
-    else
-         no_glib=yes
-    fi
-  fi
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
 
-  if test x"$no_glib" = x ; then
-    GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
-    GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
-    GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
 
-    GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
-    GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
-    glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-    glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-    glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-    if test "x$enable_glibtest" = "xyes" ; then
-      ac_save_CFLAGS="$CFLAGS"
-      ac_save_LIBS="$LIBS"
-      CFLAGS="$CFLAGS $GLIB_CFLAGS"
-      LIBS="$GLIB_LIBS $LIBS"
-dnl
-dnl Now check if the installed GLIB is sufficiently new. (Also sanity
-dnl checks the results of pkg-config to some extent)
-dnl
-      rm -f conf.glibtest
-      AC_TRY_RUN([
-#include <glib.h>
-#include <stdio.h>
-#include <stdlib.h>
 
-int 
-main ()
-{
-  unsigned int major, minor, micro;
-  char *tmp_version;
+# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-  fclose (fopen ("conf.glibtest", "w"));
+# serial 4
 
-  /* HP/UX 9 (%@#!) writes to sscanf strings */
-  tmp_version = g_strdup("$min_glib_version");
-  if (sscanf(tmp_version, "%u.%u.%u", &major, &minor, &micro) != 3) {
-     printf("%s, bad version string\n", "$min_glib_version");
-     exit(1);
-   }
+# This was merged into AC_PROG_CC in Autoconf.
 
-  if ((glib_major_version != $glib_config_major_version) ||
-      (glib_minor_version != $glib_config_minor_version) ||
-      (glib_micro_version != $glib_config_micro_version))
-    {
-      printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", 
-             $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
-             glib_major_version, glib_minor_version, glib_micro_version);
-      printf ("*** was found! If pkg-config was correct, then it is best\n");
-      printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
-      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
-      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
-      printf("*** required on your system.\n");
-      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
-      printf("*** to point to the correct configuration files\n");
-    } 
-  else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
-          (glib_minor_version != GLIB_MINOR_VERSION) ||
-           (glib_micro_version != GLIB_MICRO_VERSION))
-    {
-      printf("*** GLIB header files (version %d.%d.%d) do not match\n",
-            GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
-      printf("*** library (version %d.%d.%d)\n",
-            glib_major_version, glib_minor_version, glib_micro_version);
-    }
-  else
-    {
-      if ((glib_major_version > major) ||
-        ((glib_major_version == major) && (glib_minor_version > minor)) ||
-        ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
-      {
-        return 0;
-       }
-     else
-      {
-        printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n",
-               glib_major_version, glib_minor_version, glib_micro_version);
-        printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n",
-              major, minor, micro);
-        printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
-        printf("***\n");
-        printf("*** If you have already installed a sufficiently new version, this error\n");
-        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
-        printf("*** being found. The easiest way to fix this is to remove the old version\n");
-        printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
-        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
-        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
-        printf("*** so that the correct libraries are found at run-time))\n");
-      }
-    }
-  return 1;
-}
-],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
-       CFLAGS="$ac_save_CFLAGS"
-       LIBS="$ac_save_LIBS"
-     fi
-  fi
-  if test "x$no_glib" = x ; then
-     AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version))
-     ifelse([$2], , :, [$2])     
-  else
-     AC_MSG_RESULT(no)
-     if test "$PKG_CONFIG" = "no" ; then
-       echo "*** A new enough version of pkg-config was not found."
-       echo "*** See http://www.freedesktop.org/software/pkgconfig/"
-     else
-       if test -f conf.glibtest ; then
-        :
-       else
-          echo "*** Could not run GLIB test program, checking why..."
-          ac_save_CFLAGS="$CFLAGS"
-          ac_save_LIBS="$LIBS"
-          CFLAGS="$CFLAGS $GLIB_CFLAGS"
-          LIBS="$LIBS $GLIB_LIBS"
-          AC_TRY_LINK([
-#include <glib.h>
-#include <stdio.h>
-],      [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
-        [ echo "*** The test program compiled, but did not run. This usually means"
-          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
-          echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
-          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
-          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
-          echo "*** is required on your system"
-         echo "***"
-          echo "*** If you have an old version installed, it is best to remove it, although"
-          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
-        [ echo "*** The test program failed to compile or link. See the file config.log for the"
-          echo "*** exact error that occured. This usually means GLIB is incorrectly installed."])
-          CFLAGS="$ac_save_CFLAGS"
-          LIBS="$ac_save_LIBS"
-       fi
-     fi
-     GLIB_CFLAGS=""
-     GLIB_LIBS=""
-     GLIB_GENMARSHAL=""
-     GOBJECT_QUERY=""
-     GLIB_MKENUMS=""
-     ifelse([$3], , :, [$3])
-  fi
-  AC_SUBST(GLIB_CFLAGS)
-  AC_SUBST(GLIB_LIBS)
-  AC_SUBST(GLIB_GENMARSHAL)
-  AC_SUBST(GOBJECT_QUERY)
-  AC_SUBST(GLIB_MKENUMS)
-  rm -f conf.glibtest
+AU_DEFUN([AM_PROG_CC_STDC],
+[AC_PROG_CC
+AC_DIAGNOSE([obsolete], [$0:
+       your code should no longer depend upon `am_cv_prog_cc_stdc', but upon
+       `ac_cv_prog_cc_stdc'.  Remove this warning and the assignment when
+       you adjust the code.  You can also remove the above call to
+       AC_PROG_CC if you already called it elsewhere.])
+am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
 ])
+AU_DEFUN([fp_PROG_CC_STDC])
 
-# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-# 
-# Copyright Â© 2004 Scott James Remnant <scott@netsplit.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
 #
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
-AC_DEFUN([PKG_PROG_PKG_CONFIG],
-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
-AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
-AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+# serial 9
 
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
 fi
-if test -n "$PKG_CONFIG"; then
-       _pkg_min_version=m4_default([$1], [0.9.0])
-       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
-       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-               AC_MSG_RESULT([yes])
-       else
-               AC_MSG_RESULT([no])
-               PKG_CONFIG=""
-       fi
-fi[]dnl
-])# PKG_PROG_PKG_CONFIG
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
 
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists.  Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 Free Software Foundation, Inc.
 #
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_EXISTS],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-if test -n "$PKG_CONFIG" && \
-    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
-  m4_default([$2], [:])
-m4_ifvaln([$3], [else
-  $3])dnl
-fi])
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
-m4_define([_PKG_CONFIG],
-[if test -n "$$1"; then
-    pkg_cv_[]$1="$$1"
- elif test -n "$PKG_CONFIG"; then
-    PKG_CHECK_EXISTS([$3],
-                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
-                    [pkg_failed=yes])
- else
-    pkg_failed=untried
-fi[]dnl
-])# _PKG_CONFIG
+# serial 12
 
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
 
 
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
 #
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_MODULES],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
 
-pkg_failed=no
-AC_MSG_CHECKING([for $1])
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
 
-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
 
-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
-and $1[]_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.])
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
 
-if test $pkg_failed = yes; then
-       AC_MSG_RESULT([no])
-        _PKG_SHORT_ERRORS_SUPPORTED
-        if test $_pkg_short_errors_supported = yes; then
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
-        else 
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-       m4_default([$4], [AC_MSG_ERROR(
-[Package requirements ($2) were not met:
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
 
-$$1_PKG_ERRORS
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
 
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
 
-_PKG_TEXT])
-        ])
-elif test $pkg_failed = untried; then
-       AC_MSG_RESULT([no])
-       m4_default([$4], [AC_MSG_FAILURE(
-[The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
 
-_PKG_TEXT
 
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])
-        ])
-else
-       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
-       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
-        AC_MSG_RESULT([yes])
-       $3
-fi[]dnl
-])# PKG_CHECK_MODULES
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.11.1], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
+#serial 5
 
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too.  Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
 
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
+# serial 8
 
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
+# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
 
+# Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
+# serial 16
 
-# This was merged into AC_PROG_CC in Autoconf.
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
 
-AU_DEFUN([AM_PROG_CC_STDC],
-[AC_PROG_CC
-AC_DIAGNOSE([obsolete], [$0:
-       your code should no longer depend upon `am_cv_prog_cc_stdc', but upon
-       `ac_cv_prog_cc_stdc'.  Remove this warning and the assignment when
-       you adjust the code.  You can also remove the above call to
-       AC_PROG_CC if you already called it elsewhere.])
-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                 [_AM_DEPENDENCIES(CC)],
+                 [define([AC_PROG_CC],
+                         defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                 [_AM_DEPENDENCIES(CXX)],
+                 [define([AC_PROG_CXX],
+                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                 [_AM_DEPENDENCIES(OBJC)],
+                 [define([AC_PROG_OBJC],
+                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 ])
-AU_DEFUN([fp_PROG_CC_STDC])
 
-# AM_CONDITIONAL                                            -*- Autoconf -*-
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
+# Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 9
+# serial 1
 
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
 else
-  $1_TRUE='#'
-  $1_FALSE=
+  am__leading_dot=_
 fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
+# 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 10
+# serial 5
 
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
+                         (and sometimes confusing) to the casual installer],
+      [USE_MAINTAINER_MODE=$enableval],
+      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
 
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
 
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
-# We try a few techniques and use that to set a single cache variable.
+# Check to see how 'make' treats includes.                 -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
 #
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
+# serial 4
 
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  am__universal=false
-  m4_case([$1], [CC],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac],
-    [CXX],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac])
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
 ])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
 
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
+# serial 6
 
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
 fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
 ])
 
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-#serial 5
+# serial 6
 
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
   esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`AS_DIRNAME("$mf")`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`AS_DIRNAME(["$file"])`
-      AS_MKDIR_P([$dirpart/$fdir])
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each `.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
 ])
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
+# Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 8
+# serial 1
 
-# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
 
-# Do all the work for Automake.                             -*- Autoconf -*-
+# Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
+# Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 16
-
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-                            [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-                 [_AM_DEPENDENCIES(CC)],
-                 [define([AC_PROG_CC],
-                         defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                 [_AM_DEPENDENCIES(CXX)],
-                 [define([AC_PROG_CXX],
-                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                 [_AM_DEPENDENCIES(OBJC)],
-                 [define([AC_PROG_OBJC],
-                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
-])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
-
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
+# serial 5
 
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
 
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
 
-# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
 
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-AC_SUBST(install_sh)])
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009,
+# 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -979,255 +877,6 @@ AC_SUBST(install_sh)])
 
 # serial 2
 
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
-# From Jim Meyering
-
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 5
-
-# AM_MAINTAINER_MODE([DEFAULT-MODE])
-# ----------------------------------
-# Control maintainer-specific portions of Makefiles.
-# Default is to disable them, unless `enable' is passed literally.
-# For symmetry, `disable' may be passed as well.  Anyway, the user
-# can override the default with the --enable/--disable switch.
-AC_DEFUN([AM_MAINTAINER_MODE],
-[m4_case(m4_default([$1], [disable]),
-       [enable], [m4_define([am_maintainer_other], [disable])],
-       [disable], [m4_define([am_maintainer_other], [enable])],
-       [m4_define([am_maintainer_other], [enable])
-        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
-AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
-  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
-  AC_ARG_ENABLE([maintainer-mode],
-[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
-                         (and sometimes confusing) to the casual installer],
-      [USE_MAINTAINER_MODE=$enableval],
-      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
-  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
-  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
-  MAINT=$MAINTAINER_MODE_TRUE
-  AC_SUBST([MAINT])dnl
-]
-)
-
-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
-
-# Check to see how 'make' treats includes.                 -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-       @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 6
-
-# AM_PROG_CC_C_O
-# --------------
-# Like AC_PROG_CC_C_O, but changed for automake.
-AC_DEFUN([AM_PROG_CC_C_O],
-[AC_REQUIRE([AC_PROG_CC_C_O])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-dnl Make sure AC_PROG_CC is never called again, or it will override our
-dnl setting of CC.
-m4_define([AC_PROG_CC],
-          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
-])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 6
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\    *)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
 # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
 # ---------------------------------------------------------------------------
 # Adds support for distributing Python modules and packages.  To
@@ -1255,8 +904,10 @@ AC_DEFUN([AM_PATH_PYTHON],
   dnl Find a Python interpreter.  Python versions prior to 2.0 are not
   dnl supported. (2.0 was released on October 16, 2000).
   m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-                    [python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 dnl
-python2.1 python2.0])
+[python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl
+ python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
+
+  AC_ARG_VAR([PYTHON], [the Python interpreter])
 
   m4_if([$1],[],[
     dnl No version check is needed.
@@ -1328,9 +979,7 @@ python2.1 python2.0])
   dnl   site-packages directory, not the python standard library
   dnl   directory like in previous automake betas.  This behavior
   dnl   is more consistent with lispdir.m4 for example.
-  dnl Query distutils for this directory.  distutils does not exist in
-  dnl Python 1.5, so we fall back to the hardcoded directory if it
-  dnl doesn't work.
+  dnl Query distutils for this directory.
   AC_CACHE_CHECK([for $am_display_PYTHON script directory],
     [am_cv_python_pythondir],
     [if test "x$prefix" = xNONE
@@ -1339,8 +988,7 @@ python2.1 python2.0])
      else
        am_py_prefix=$prefix
      fi
-     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null ||
-     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
+     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null`
      case $am_cv_python_pythondir in
      $am_py_prefix*)
        am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
@@ -1366,9 +1014,7 @@ python2.1 python2.0])
 
   dnl pyexecdir -- directory for installing python extension modules
   dnl   (shared libraries)
-  dnl Query distutils for this directory.  distutils does not exist in
-  dnl Python 1.5, so we fall back to the hardcoded directory if it
-  dnl doesn't work.
+  dnl Query distutils for this directory.
   AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
     [am_cv_python_pyexecdir],
     [if test "x$exec_prefix" = xNONE
@@ -1377,8 +1023,7 @@ python2.1 python2.0])
      else
        am_py_exec_prefix=$exec_prefix
      fi
-     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null ||
-     echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
+     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null`
      case $am_cv_python_pyexecdir in
      $am_py_exec_prefix*)
        am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
@@ -1426,12 +1071,14 @@ for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
 sys.exit(sys.hexversion < minverhex)"
   AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_RUN_LOG(COMMAND)
 # -------------------
 # Run COMMAND, save the exit status in ac_status, and log it.
@@ -1508,13 +1155,13 @@ Check your system clock])
 fi
 AC_MSG_RESULT(yes)])
 
-# Copyright (C) 2009  Free Software Foundation, Inc.
+# Copyright (C) 2009, 2011  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
+# serial 2
 
 # AM_SILENT_RULES([DEFAULT])
 # --------------------------
@@ -1529,18 +1176,50 @@ yes) AM_DEFAULT_VERBOSITY=0;;
 no)  AM_DEFAULT_VERBOSITY=1;;
 *)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
 esac
+dnl
+dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using `$V' instead of `$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
 AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
 AM_BACKSLASH='\'
 AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_PROG_INSTALL_STRIP
 # ---------------------
 # One issue with vendor `install' (even GNU) is that you can't
@@ -1563,13 +1242,13 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
+# serial 3
 
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
@@ -1578,13 +1257,13 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
 AC_DEFUN([_AM_SUBST_NOTMAKE])
 
 # AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
+# --------------------------
 # Public sister of _AM_SUBST_NOTMAKE.
 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1606,10 +1285,11 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
 AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
 m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
      [m4_case([$1], [ustar],, [pax],,
               [m4_fatal([Unknown tar format])])
 AC_MSG_CHECKING([how to create a $1 tar archive])
@@ -1678,6 +1358,381 @@ AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
+# 
+# Copyright Â© 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=m4_default([$1], [0.9.0])
+       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               PKG_CONFIG=""
+       fi
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# have to call PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_default([$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes ],
+                    [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+       AC_MSG_RESULT([no])
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+        else 
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+       m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+        ])
+elif test $pkg_failed = untried; then
+       AC_MSG_RESULT([no])
+       m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+        ])
+else
+       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+       $3
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Configure paths for GLIB
+# Owen Taylor     1997-2001
+
+dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject,
+dnl gthread, or gio is specified in MODULES, pass to pkg-config
+dnl
+AC_DEFUN([AM_PATH_GLIB_2_0],
+[dnl 
+dnl Get the cflags and libraries from pkg-config
+dnl
+AC_ARG_ENABLE(glibtest, [  --disable-glibtest      do not try to compile and run a test GLIB program],
+                   , enable_glibtest=yes)
+
+  pkg_config_args=glib-2.0
+  for module in . $4
+  do
+      case "$module" in
+         gmodule) 
+             pkg_config_args="$pkg_config_args gmodule-2.0"
+         ;;
+         gmodule-no-export) 
+             pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
+         ;;
+         gobject) 
+             pkg_config_args="$pkg_config_args gobject-2.0"
+         ;;
+         gthread) 
+             pkg_config_args="$pkg_config_args gthread-2.0"
+         ;;
+         gio*) 
+             pkg_config_args="$pkg_config_args $module-2.0"
+         ;;
+      esac
+  done
+
+  PKG_PROG_PKG_CONFIG([0.16])
+
+  no_glib=""
+
+  if test "x$PKG_CONFIG" = x ; then
+    no_glib=yes
+    PKG_CONFIG=no
+  fi
+
+  min_glib_version=ifelse([$1], ,2.0.0,$1)
+  AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
+
+  if test x$PKG_CONFIG != xno ; then
+    ## don't try to run the test against uninstalled libtool libs
+    if $PKG_CONFIG --uninstalled $pkg_config_args; then
+         echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
+         enable_glibtest=no
+    fi
+
+    if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
+         :
+    else
+         no_glib=yes
+    fi
+  fi
+
+  if test x"$no_glib" = x ; then
+    GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+    GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
+    GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+    GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0`
+
+    GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
+    GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
+    glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_glibtest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $GLIB_CFLAGS"
+      LIBS="$GLIB_LIBS $LIBS"
+dnl
+dnl Now check if the installed GLIB is sufficiently new. (Also sanity
+dnl checks the results of pkg-config to some extent)
+dnl
+      rm -f conf.glibtest
+      AC_TRY_RUN([
+#include <glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int 
+main ()
+{
+  unsigned int major, minor, micro;
+  char *tmp_version;
+
+  fclose (fopen ("conf.glibtest", "w"));
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = g_strdup("$min_glib_version");
+  if (sscanf(tmp_version, "%u.%u.%u", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_glib_version");
+     exit(1);
+   }
+
+  if ((glib_major_version != $glib_config_major_version) ||
+      (glib_minor_version != $glib_config_minor_version) ||
+      (glib_micro_version != $glib_config_micro_version))
+    {
+      printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", 
+             $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
+             glib_major_version, glib_minor_version, glib_micro_version);
+      printf ("*** was found! If pkg-config was correct, then it is best\n");
+      printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+      printf("*** to point to the correct configuration files\n");
+    } 
+  else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
+          (glib_minor_version != GLIB_MINOR_VERSION) ||
+           (glib_micro_version != GLIB_MICRO_VERSION))
+    {
+      printf("*** GLIB header files (version %d.%d.%d) do not match\n",
+            GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+      printf("*** library (version %d.%d.%d)\n",
+            glib_major_version, glib_minor_version, glib_micro_version);
+    }
+  else
+    {
+      if ((glib_major_version > major) ||
+        ((glib_major_version == major) && (glib_minor_version > minor)) ||
+        ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n",
+               glib_major_version, glib_minor_version, glib_micro_version);
+        printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n",
+              major, minor, micro);
+        printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
+        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
+}
+],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_glib" = x ; then
+     AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version))
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$PKG_CONFIG" = "no" ; then
+       echo "*** A new enough version of pkg-config was not found."
+       echo "*** See http://www.freedesktop.org/software/pkgconfig/"
+     else
+       if test -f conf.glibtest ; then
+        :
+       else
+          echo "*** Could not run GLIB test program, checking why..."
+          ac_save_CFLAGS="$CFLAGS"
+          ac_save_LIBS="$LIBS"
+          CFLAGS="$CFLAGS $GLIB_CFLAGS"
+          LIBS="$LIBS $GLIB_LIBS"
+          AC_TRY_LINK([
+#include <glib.h>
+#include <stdio.h>
+],      [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
+          echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means GLIB is incorrectly installed."])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     GLIB_CFLAGS=""
+     GLIB_LIBS=""
+     GLIB_GENMARSHAL=""
+     GOBJECT_QUERY=""
+     GLIB_MKENUMS=""
+     GLIB_COMPILE_RESOURCES=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(GLIB_CFLAGS)
+  AC_SUBST(GLIB_LIBS)
+  AC_SUBST(GLIB_GENMARSHAL)
+  AC_SUBST(GOBJECT_QUERY)
+  AC_SUBST(GLIB_MKENUMS)
+  AC_SUBST(GLIB_COMPILE_RESOURCES)
+  rm -f conf.glibtest
+])
+
 m4_include([m4/as-ac-expand.m4])
 m4_include([m4/jhflags.m4])
 m4_include([m4/libtool.m4])
diff --git a/codegen/Makefile.am b/codegen/Makefile.am
deleted file mode 100644 (file)
index f9886eb..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-PLATFORM_VERSION = 2.0
-
-bin_SCRIPTS = pygobject-codegen-$(PLATFORM_VERSION)
-
-codegendir = $(pkgdatadir)/$(PLATFORM_VERSION)/codegen
-
-codegen_SCRIPTS = \
-       code-coverage.py \
-       codegen.py \
-       createdefs.py \
-       defsconvert.py \
-       defsgen.py \
-       docextract_to_xml.py \
-       docgen.py \
-       h2def.py \
-       mergedefs.py \
-       missingdefs.py \
-       mkskel.py \
-       scanvirtuals.py \
-       scmexpr.py
-
-codegen_PYTHON = \
-       __init__.py \
-       argtypes.py \
-       definitions.py \
-       defsparser.py \
-       docextract.py \
-       override.py \
-       reversewrapper.py
-
-EXTRA_DIST = $(codegen_SCRIPTS) README.defs pygobject-codegen-$(PLATFORM_VERSION).in
-
--include $(top_srcdir)/git.mk
diff --git a/codegen/Makefile.in b/codegen/Makefile.in
deleted file mode 100644 (file)
index 12a8cf9..0000000
+++ /dev/null
@@ -1,576 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = codegen
-DIST_COMMON = $(codegen_PYTHON) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in $(srcdir)/pygobject-codegen-2.0.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
-       $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
-       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-       $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = pygobject-codegen-2.0
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(codegendir)" \
-       "$(DESTDIR)$(codegendir)"
-SCRIPTS = $(bin_SCRIPTS) $(codegen_SCRIPTS)
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-py_compile = $(top_srcdir)/py-compile
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DATADIR = @DATADIR@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FFI_CFLAGS = @FFI_CFLAGS@
-FFI_LIBS = @FFI_LIBS@
-FGREP = @FGREP@
-GIOUNIX_CFLAGS = @GIOUNIX_CFLAGS@
-GIOUNIX_LIBS = @GIOUNIX_LIBS@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GI_CFLAGS = @GI_CFLAGS@
-GI_DATADIR = @GI_DATADIR@
-GI_LIBS = @GI_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GOBJECT_QUERY = @GOBJECT_QUERY@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBFFI_PC = @LIBFFI_PC@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PLATFORM = @PLATFORM@
-PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
-PYCAIRO_LIBS = @PYCAIRO_LIBS@
-PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
-PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
-PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
-PYTHON = @PYTHON@
-PYTHON_BASENAME = @PYTHON_BASENAME@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-THREADING_CFLAGS = @THREADING_CFLAGS@
-VERSION = @VERSION@
-XSLTPROC = @XSLTPROC@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pygobject_CODEGEN_DEFINES = @pygobject_CODEGEN_DEFINES@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-PLATFORM_VERSION = 2.0
-bin_SCRIPTS = pygobject-codegen-$(PLATFORM_VERSION)
-codegendir = $(pkgdatadir)/$(PLATFORM_VERSION)/codegen
-codegen_SCRIPTS = \
-       code-coverage.py \
-       codegen.py \
-       createdefs.py \
-       defsconvert.py \
-       defsgen.py \
-       docextract_to_xml.py \
-       docgen.py \
-       h2def.py \
-       mergedefs.py \
-       missingdefs.py \
-       mkskel.py \
-       scanvirtuals.py \
-       scmexpr.py
-
-codegen_PYTHON = \
-       __init__.py \
-       argtypes.py \
-       definitions.py \
-       defsparser.py \
-       docextract.py \
-       override.py \
-       reversewrapper.py
-
-EXTRA_DIST = $(codegen_SCRIPTS) README.defs pygobject-codegen-$(PLATFORM_VERSION).in
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-               && { if test -f $@; then exit 0; else break; fi; }; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign codegen/Makefile'; \
-       $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --foreign codegen/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-pygobject-codegen-2.0: $(top_builddir)/config.status $(srcdir)/pygobject-codegen-2.0.in
-       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-binSCRIPTS: $(bin_SCRIPTS)
-       @$(NORMAL_INSTALL)
-       test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
-       for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
-       done | \
-       sed -e 'p;s,.*/,,;n' \
-           -e 'h;s|.*|.|' \
-           -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
-       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
-         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-           if ($$2 == $$4) { files[d] = files[d] " " $$1; \
-             if (++n[d] == $(am__install_max)) { \
-               print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
-           else { print "f", d "/" $$4, $$1 } } \
-         END { for (d in files) print "f", d, files[d] }' | \
-       while read type dir files; do \
-            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-            test -z "$$files" || { \
-              echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
-              $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
-            } \
-       ; done
-
-uninstall-binSCRIPTS:
-       @$(NORMAL_UNINSTALL)
-       @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
-       files=`for p in $$list; do echo "$$p"; done | \
-              sed -e 's,.*/,,;$(transform)'`; \
-       test -n "$$list" || exit 0; \
-       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(bindir)" && rm -f $$files
-install-codegenSCRIPTS: $(codegen_SCRIPTS)
-       @$(NORMAL_INSTALL)
-       test -z "$(codegendir)" || $(MKDIR_P) "$(DESTDIR)$(codegendir)"
-       @list='$(codegen_SCRIPTS)'; test -n "$(codegendir)" || list=; \
-       for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
-       done | \
-       sed -e 'p;s,.*/,,;n' \
-           -e 'h;s|.*|.|' \
-           -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
-       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
-         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-           if ($$2 == $$4) { files[d] = files[d] " " $$1; \
-             if (++n[d] == $(am__install_max)) { \
-               print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
-           else { print "f", d "/" $$4, $$1 } } \
-         END { for (d in files) print "f", d, files[d] }' | \
-       while read type dir files; do \
-            if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-            test -z "$$files" || { \
-              echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(codegendir)$$dir'"; \
-              $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(codegendir)$$dir" || exit $$?; \
-            } \
-       ; done
-
-uninstall-codegenSCRIPTS:
-       @$(NORMAL_UNINSTALL)
-       @list='$(codegen_SCRIPTS)'; test -n "$(codegendir)" || exit 0; \
-       files=`for p in $$list; do echo "$$p"; done | \
-              sed -e 's,.*/,,;$(transform)'`; \
-       test -n "$$list" || exit 0; \
-       echo " ( cd '$(DESTDIR)$(codegendir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(codegendir)" && rm -f $$files
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-install-codegenPYTHON: $(codegen_PYTHON)
-       @$(NORMAL_INSTALL)
-       test -z "$(codegendir)" || $(MKDIR_P) "$(DESTDIR)$(codegendir)"
-       @list='$(codegen_PYTHON)'; dlist=; list2=; test -n "$(codegendir)" || list=; \
-       for p in $$list; do \
-         if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
-         if test -f $$b$$p; then \
-           $(am__strip_dir) \
-           dlist="$$dlist $$f"; \
-           list2="$$list2 $$b$$p"; \
-         else :; fi; \
-       done; \
-       for file in $$list2; do echo $$file; done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(codegendir)'"; \
-         $(INSTALL_DATA) $$files "$(DESTDIR)$(codegendir)" || exit $$?; \
-       done || exit $$?; \
-       if test -n "$$dlist"; then \
-         if test -z "$(DESTDIR)"; then \
-           PYTHON=$(PYTHON) $(py_compile) --basedir "$(codegendir)" $$dlist; \
-         else \
-           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(codegendir)" $$dlist; \
-         fi; \
-       else :; fi
-
-uninstall-codegenPYTHON:
-       @$(NORMAL_UNINSTALL)
-       @list='$(codegen_PYTHON)'; test -n "$(codegendir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$files" || exit 0; \
-       filesc=`echo "$$files" | sed 's|$$|c|'`; \
-       fileso=`echo "$$files" | sed 's|$$|o|'`; \
-       echo " ( cd '$(DESTDIR)$(codegendir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(codegendir)" && rm -f $$files || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(codegendir)' && rm -f" $$filesc ")"; \
-       cd "$(DESTDIR)$(codegendir)" && rm -f $$filesc || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(codegendir)' && rm -f" $$fileso ")"; \
-       cd "$(DESTDIR)$(codegendir)" && rm -f $$fileso
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       list='$(DISTFILES)'; \
-         dist_files=`for file in $$list; do echo $$file; done | \
-         sed -e "s|^$$srcdirstrip/||;t" \
-             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-       case $$dist_files in \
-         */*) $(MKDIR_P) `echo "$$dist_files" | \
-                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-                          sort -u` ;; \
-       esac; \
-       for file in $$dist_files; do \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-           if test -d "$(distdir)/$$file"; then \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-check-am: all-am
-check: check-am
-all-am: Makefile $(SCRIPTS)
-installdirs:
-       for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(codegendir)" "$(DESTDIR)$(codegendir)"; do \
-         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-       done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-       -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-codegenPYTHON install-codegenSCRIPTS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-binSCRIPTS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binSCRIPTS uninstall-codegenPYTHON \
-       uninstall-codegenSCRIPTS
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       distclean distclean-generic distclean-libtool distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-binSCRIPTS install-codegenPYTHON \
-       install-codegenSCRIPTS install-data install-data-am \
-       install-dvi install-dvi-am install-exec install-exec-am \
-       install-html install-html-am install-info install-info-am \
-       install-man install-pdf install-pdf-am install-ps \
-       install-ps-am install-strip installcheck installcheck-am \
-       installdirs maintainer-clean maintainer-clean-generic \
-       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-       ps ps-am uninstall uninstall-am uninstall-binSCRIPTS \
-       uninstall-codegenPYTHON uninstall-codegenSCRIPTS
-
-
--include $(top_srcdir)/git.mk
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/codegen/README.defs b/codegen/README.defs
deleted file mode 100644 (file)
index 5f7957e..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-   ChangeLog for this draft:
-    - caller-owns-return attribute on functions/methods
-    - include gtk-type-id in the type alias system
-    - c-name for types converted to in-c-name out-c-name inout-c-name
-    - merge unref-func and destroy-func for boxed types into release-func
-
-    - split structs out of boxed types
-    - c-declaration field
-    - special "native" type alias; bail and use C declaration when
-   necessary
-    - defined objects and boxeds automatically create a module
-    - make constructors functions and not methods, in appropriate
-      object/boxed module
-
-   Draft =========================
-
-   The overall syntax is:
-
-        (type-of-thing-being-defined name-used-to-refer-to-this-thing
-          (attribute-name attribute-value-depending-on-the-attribute)
-          (attribute-name attribute-value-depending-on-the-attribute)
-          (attribute-name attribute-value-depending-on-the-attribute))
-
-   Some definitions can have a c-declaration field that gives the C code
-   we parsed to arrive at the definition. The c-declaration is a quoted
-   string because it can contain parentheses and such.
-
-   Defined types and their attributes:
-
-   ===
-   (module module-name
-     (submodule-of module-name)) ;; submodule is optional
-
-   Ex: (module Gtk)
-   Ex: (module Rgb
-         (submodule-of Gdk))
-
-   modules are later referred to with a list of module names, like
-   (Gdk Rgb) or (Gtk)
-
-   Object and boxed type definitions automatically create a submodule.
-   For example, GtkCList creates the module (module CList (submodule-of
-   (Gtk))) which is referred to as module (Gtk CList).
-
-   ===
-
-   (type
-    (alias some-unique-identifier)
-    (in-module module-name) ;; optional, gchar* is not in a module
-    (gtk-type-id gtk-type-system-id) ;; optional, absent if this is not
-                                     ;; in the type system
-    (in-c-name name-of-symbol-in-C)
-    (out-c-name name-of-symbol-in-C)
-    (inout-c-name name-of-symbol-in-C))
-
-   Ex: (type
-        (alias string)
-        (gtk-type-id GTK_TYPE_STRING)
-        (in-c-name const-gchar*)
-        (out-c-name gchar**) ;; actually I'm not sure how strings work
-   out/inout
-        (inout-c-name gchar*))
-
-    ;; This one would be implied by the (object) def for GtkWidget I
-    ;; think - (type) is only required for types that are not implied
-    ;; by other definitions, such as int/boolean/etc.
-
-       (type
-        (alias GtkWidget)
-        (in-module (Gtk))
-        (gtk-type-id GTK_TYPE_WIDGET)
-        (in-c-name GtkWidget*)
-        (inout-c-name GtkWidget*)
-        (out-c-name GtkWidget**))
-
-   "Type" bindings are automatically assumed for objects, boxed types,
-   etc. as defined below.
-
-   The alias field is used to refer to the type later on.
-
-   If the C type has spaces they are converted to hyphens after
-   compressing all syntactically significant whitespace to a single
-   space:
-    (type
-       (alias const-gchar*
-        (c-name const-gchar*)))
-
-   So hyphens have to go back to spaces for binding generators that
-   output C code.
-
-   Whenever a type alias can be used, it is also possible to use the
-   keyword "native", which implies that the type in question is too
-   C-specific to represent. Then a c-declaration will typically be
-   available for use.
-
-   C types containing [] or () are function pointers or arrays. For
-   arrays that don't specify a size, we just treat them as pointers. For
-   function pointers, we need special (type) syntax/attributes of some
-   kind, but since there basically aren't any of these right now in the
-   libs we care about we can just ignore them. For arrays that specify a
-   size ditto, you would handle them by adding an (array-size) attribute
-   or something or using the "native" keyword and skipping the (type)
-   stuff.
-
-   ===
-   (object object-name
-      (in-module module-name-list)
-      (parent object-name optional-module-name-if-different)
-      (abstract boolean-is-abstract-class) ;; omit for default of #f
-      (c-name name-of-the-object-in-C)
-      (field (type-and-name type-alias-of-struct-field
-   name-of-struct-field)
-             (access read-or-write-or-readwrite)))
-
-
-   Ex: (object Widget
-         (in-module (Gtk))
-         (parent Object) ;; could say (parent Object (Gtk))
-         (abstract #t)
-         (c-name GtkWidget)
-         (field (type-and-name GdkWindow* window) (access read)))
-
-   An "object" declaration automatically implies the type definition:
-
-   (type
-     (alias concat-module-elements-and-object-name)
-     (in-c-name pointer-to-c-name)
-     (out-c-name pointer-to-pointer-to-c-name)
-     (inout-c-name pointer-to-c-name))
-
-   Ex:
-    (type (alias GtkWidget)
-          (in-c-name GtkWidget*)
-          (out-c-name GtkWidget**)
-          (inout-c-name GtkWidget*))
-
-   It also implies a module that is the name broken into parts:
-    (module CTree
-      (submodule-of Gtk))
-
-   ===
-
-   (function function-name
-     (in-module module-name-list) ;; "static methods" go in their
-                                  ;; object's module
-     (is-constructor-of object-type-alias) ;; optional, marks a
-   constructor
-     (c-name function-name)
-     (return-type return-value-type) ;; defaults to void
-     (caller-owns-return boolean-value) ;; defaults to #f
-     (parameter in-or-out-or-inout
-         (type-and-name parameter-type-alias parameter-name)
-         (c-declaration "c-type-and-name")) ;; c-declaration only
-   required
-                                            ;; if the type alias is
-   "native"
-     (varargs #t) ;; has varargs at the end
-   )
-
-   Ex:
-     (function init
-       (in-module (Gdk Rgb)
-       (c-name gdk_rgb_init)))
-
-   Ex:
-     (function new
-       (in-module (Gdk Rgb Cmap))
-       (is-constructor-of GdkRgbCmap)
-       (c-name gdk_rgb_cmap_new)
-       (return-type GdkRgbCmap)
-       (caller-owns-return #t) ;; perhaps this could be implied by
-   is-constructor-of
-       (parameter in (type-and-name array-of-guint32 colors))
-       (parameter in (type-and-name gint n_colors)))
-
-   Ex:
-     (function config_set_set_handler
-      (in-module (Gnome))
-      (c-name gnome_config_set_set_handler)
-      (parameter in (type-and-name native func)
-                    (c-declaration "void (*func)(void*)"))
-      (parameter in (type-and-name gpointer data)))
-
-   ===
-   (method method-name
-     (of-object object-name module-name)
-     ;; retval/arg attributes as for (function), but with first parameter
-
-     ;; omitted for non-constructors
-      )
-
-   Ex:
-     (method set_text
-        (of-object Label (Gtk))
-        (parameter (type-and-name const-gchar* str)))
-
-   ===
-   (object-argument arg-name
-      (of-object object-we-are-an-argument-of optional-objects-module)
-      (type argument-type) ;; not sure what to put for type
-      ;; flags all default to #f
-      (readable bool-value)
-      (writeable bool-value)
-      (run-action bool-value)
-      (construct-only bool-value))
-
-   Ex:
-     (object-argument label
-        (of-object Label (Gtk))
-        (type gchar*) ;; ????
-        (readable #t)
-        (writeable #t))
-
-   ===
-   (signal signal-name
-     (of-object object-we-are-a-signal-of optional-objects-module)
-     ;; return value and parameters as for a function, omitting the
-   object
-     ;; and user data parameters
-
-     ;; what other properties matter for a signal?
-   )
-
-   Ex:
-     (signal select_row
-        (of-object CList (Gtk))
-        ;; return type defaults to void
-        (parameter in (type-and-name gint row))
-        (parameter in (type-and-name gint column))
-        (parameter in (type-and-name GdkEvent* event)))
-
-   ===
-   (enum enum-name
-     (in-module modname)
-     (c-name name-in-c)
-     (value (name value-name-noprefixes-hyphen-lowercase) (c-name
-   value-c-name)))
-
-   Ex:
-
-     (enum DirectionType
-       (in-module Gtk)
-       (c-name GtkDirectionType)
-       (value (name tab-forward) (c-name GTK_DIR_TAB_FORWARD))
-       (value (name tab-backward) (c-name GTK_DIR_TAB_BACKWARD))
-       (value (name up) (c-name GTK_DIR_UP))
-       (value (name down) (c-name GTK_DIR_DOWN))
-       (value (name left) (c-name GTK_DIR_LEFT))
-       (value (name right) (c-name GTK_DIR_RIGHT)))
-
-     (enum Pos
-       (in-module (Gtk CTree))
-       (c-name GtkCTreePos)
-       (value (name before) (c-name GTK_CTREE_POS_BEFORE))
-       (value (name as-child) (c-name GTK_CTREE_POS_AS_CHILD))
-       (value (name after) (c-name GTK_CTREE_POS_AFTER)))
-
-   ===
-   (flags) is just like enum, but some bindings may wrap enums and flags
-   differently.
-
-   ===
-
-   (boxed boxed-name
-     (in-module modname)
-     (c-name c-name)
-     (ref-func func-to-increase-refcount)
-     (copy-func func-to-copy)
-     (release-func func-to-destroy-or-decrement-refcount)
-     (field (type-and-name type-alias-of-struct-field
-   name-of-struct-field) (access access-rule)))
-
-   It is never OK to use memcpy() to copy a boxed type, or use
-   malloc()/free() to alloc/free one.
-
-   Ex:
-
-    (boxed Pixmap
-      (in-module (Gdk))
-      (c-name GdkPixmap)
-      (ref-func pixmap_ref)
-      (unref-func pixmap_unref))
-
-   An "object" declaration automatically implies the type definition:
-
-   (type
-     (alias concat-module-elements-and-boxed-name)
-     (in-c-name pointer-to-c-name)
-     (out-c-name pointer-to-pointer-to-c-name)
-     (inout-c-name pointer-to-c-name))
-
-   Ex:
-    (type (alias GdkPixmap)
-          (in-c-name GdkPixmap*)
-          (out-c-name GdkPixmap**)
-          (inout-c-name GdkPixmap*))
-
-   ===
-
-   (struct struct-name
-     (in-module modname)
-     (c-name c-name)
-     (field (type-and-name type-alias-of-struct-field
-   name-of-struct-field) (access access-rule)))
-
-   Ex:
-    (struct Rectangle
-      (in-module (Gdk))
-      (c-name GdkRectangle)
-      (field (type-and-name gint16 x) (access readwrite))
-      (field (type-and-name gint16 y) (access readwrite))
-      (field (type-and-name guint16 width) (access readwrite))
-      (field (type-and-name guint16 height) (access readwrite)))
-
-   Implies GdkRectangle type alias:
-
-    (type (alias GdkRectangle)
-          (in-c-name GdkRectangle*)
-          (out-c-name GdkRectangle*) ;; note - not the same as boxed
-   types
-          (inout-c-name GdkRectangle*))
-
-   ===
-
-   (user-function name
-     (in-module module)
-     (c-name c-typedef-name)
-     ;; return-type and parameters as for (function)
-   )
-
-   Ex:
-
-    (user-function PrintFunc
-       (in-module (Gtk))
-       (parameter in (type-and-name gpointer func_data))
-       (parameter in (type-and-name gchar* str)))
-
-   ===
-
-   (typedef new-name
-     (in-module module)
-     (c-name c-full-name)
-     (orig-type alias-of-orig-type))
-
-   Ex:
-
-    (typedef Type
-      (in-module (Gtk))
-      (c-name GtkType)
-      (orig-type guint))
-
diff --git a/codegen/__init__.py b/codegen/__init__.py
deleted file mode 100644 (file)
index 86188f9..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-
-__all__ = [
-    'argtypes',
-    'codegen',
-    'definitions',
-    'defsparser',
-    'docextract',
-    'docgen',
-    'h2def',
-    'defsgen'
-    'mergedefs',
-    'mkskel',
-    'override',
-    'scmexpr'
-]
diff --git a/codegen/argtypes.py b/codegen/argtypes.py
deleted file mode 100644 (file)
index 46e868e..0000000
+++ /dev/null
@@ -1,1043 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-import string
-import keyword
-import struct
-
-py_ssize_t_clean = False
-
-class ArgTypeError(Exception):
-    pass
-
-class ArgTypeNotFoundError(ArgTypeError):
-    pass
-
-class ArgTypeConfigurationError(ArgTypeError):
-    pass
-
-
-class VarList:
-    """Nicely format a C variable list"""
-    def __init__(self):
-        self.vars = {}
-    def add(self, ctype, name):
-        if self.vars.has_key(ctype):
-            self.vars[ctype] = self.vars[ctype] + (name,)
-        else:
-            self.vars[ctype] = (name,)
-    def __str__(self):
-        ret = []
-        for type in self.vars.keys():
-            ret.append('    ')
-            ret.append(type)
-            ret.append(' ')
-            ret.append(string.join(self.vars[type], ', '))
-            ret.append(';\n')
-        if ret:
-            ret.append('\n')
-            return string.join(ret, '')
-        return ''
-
-class WrapperInfo:
-    """A class that holds information about variable defs, code
-    snippets, etcd for use in writing out the function/method
-    wrapper."""
-    def __init__(self):
-        self.varlist = VarList()
-        self.parsestr = ''
-        self.parselist = ['', 'kwlist']
-        self.codebefore = []
-        self.codeafter = []
-        self.arglist = []
-        self.kwlist = []
-    def get_parselist(self):
-        return string.join(self.parselist, ', ')
-    def get_codebefore(self):
-        return string.join(self.codebefore, '')
-    def get_codeafter(self):
-        return string.join(self.codeafter, '')
-    def get_arglist(self):
-        return string.join(self.arglist, ', ')
-    def get_varlist(self):
-        return str(self.varlist)
-    def get_kwlist(self):
-        ret = '    static char *kwlist[] = { %s };\n' % \
-              string.join(self.kwlist + [ 'NULL' ], ', ')
-        if not self.get_varlist():
-            ret = ret + '\n'
-        return ret
-
-    def add_parselist(self, codes, parseargs, keywords):
-        self.parsestr = self.parsestr + codes
-        for arg in parseargs:
-            self.parselist.append(arg)
-        for kw in keywords:
-            if keyword.iskeyword(kw):
-                kw = kw + '_'
-            self.kwlist.append('"%s"' % kw)
-
-class ArgType:
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        """Add code to the WrapperInfo instance to handle
-        parameter."""
-        raise RuntimeError("write_param not implemented for %s"
-                           % self.__class__.__name__)
-    def write_return(self, ptype, ownsreturn, info):
-        """Adds a variable named ret of the return type to
-        info.varlist, and add any required code to info.codeafter to
-        convert the return value to a python object."""
-        raise RuntimeError("write_return not implemented for %s"
-                           % self.__class__.__name__)
-
-class NoneArg(ArgType):
-    def write_return(self, ptype, ownsreturn, info):
-        info.codeafter.append('    Py_INCREF(Py_None);\n' +
-                              '    return Py_None;')
-
-class StringArg(ArgType):
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt != None:
-            if pdflt != 'NULL': pdflt = '"' + pdflt + '"'
-            info.varlist.add('char', '*' + pname + ' = ' + pdflt)
-        else:
-            info.varlist.add('char', '*' + pname)
-        info.arglist.append(pname)
-        if pnull:
-            info.add_parselist('z', ['&' + pname], [pname])
-        else:
-            info.add_parselist('s', ['&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        if ownsreturn:
-            # have to free result ...
-            info.varlist.add('gchar', '*ret')
-            info.codeafter.append('    if (ret) {\n' +
-                                  '        PyObject *py_ret = PyString_FromString(ret);\n' +
-                                  '        g_free(ret);\n' +
-                                  '        return py_ret;\n' +
-                                  '    }\n' +
-                                  '    Py_INCREF(Py_None);\n' +
-                                  '    return Py_None;')
-        else:
-            info.varlist.add('const gchar', '*ret')
-            info.codeafter.append('    if (ret)\n' +
-                                  '        return PyString_FromString(ret);\n'+
-                                  '    Py_INCREF(Py_None);\n' +
-                                  '    return Py_None;')
-
-class UCharArg(ArgType):
-    # allows strings with embedded NULLs.
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add('guchar', '*' + pname + ' = "' + pdflt + '"')
-        else:
-            info.varlist.add('guchar', '*' + pname)
-        if py_ssize_t_clean:
-            info.varlist.add('Py_ssize_t', pname + '_len')
-        else:
-            info.varlist.add('int', pname + '_len')
-        info.arglist.append(pname)
-        if pnull:
-            info.add_parselist('z#', ['&' + pname, '&' + pname + '_len'],
-                               [pname])
-        else:
-            info.add_parselist('s#', ['&' + pname, '&' + pname + '_len'],
-                               [pname])
-
-class CharArg(ArgType):
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add('char', pname + " = '" + pdflt + "'")
-        else:
-            info.varlist.add('char', pname)
-        info.arglist.append(pname)
-        info.add_parselist('c', ['&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('gchar', 'ret')
-        info.codeafter.append('    return PyString_FromStringAndSize(&ret, 1);')
-class GUniCharArg(ArgType):
-    ret_tmpl = ('#if !defined(Py_UNICODE_SIZE) || Py_UNICODE_SIZE == 2\n'
-                '    if (ret > 0xffff) {\n'
-                '        PyErr_SetString(PyExc_RuntimeError, "returned character can not be represented in 16-bit unicode");\n'
-                '        return NULL;\n'
-                '    }\n'
-                '#endif\n'
-                '    py_ret = (Py_UNICODE)ret;\n'
-                '    return PyUnicode_FromUnicode(&py_ret, 1);\n')
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add('gunichar', pname + " = '" + pdflt + "'")
-        else:
-            info.varlist.add('gunichar', pname)
-        info.arglist.append(pname)
-        info.add_parselist('O&', ['pyg_pyobj_to_unichar_conv', '&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('gunichar', 'ret')
-        info.varlist.add('Py_UNICODE', 'py_ret')
-        info.codeafter.append(self.ret_tmpl)
-
-
-class IntArg(ArgType):
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add('int', pname + ' = ' + pdflt)
-        else:
-            info.varlist.add('int', pname)
-        info.arglist.append(pname)
-        info.add_parselist('i', ['&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('int', 'ret')
-        info.codeafter.append('    return PyInt_FromLong(ret);')
-
-class UIntArg(ArgType):
-    dflt = ('    if (py_%(name)s) {\n'
-            '        if (PyLong_Check(py_%(name)s))\n'
-            '            %(name)s = PyLong_AsUnsignedLong(py_%(name)s);\n'
-            '        else if (PyInt_Check(py_%(name)s))\n'
-            '            %(name)s = PyInt_AsLong(py_%(name)s);\n'
-            '        else\n'
-            '            PyErr_SetString(PyExc_TypeError, "Parameter \'%(name)s\' must be an int or a long");\n'
-            '        if (PyErr_Occurred())\n'
-            '            return NULL;\n'
-            '    }\n')
-    before = ('    if (PyLong_Check(py_%(name)s))\n'
-              '        %(name)s = PyLong_AsUnsignedLong(py_%(name)s);\n'
-              '    else if (PyInt_Check(py_%(name)s))\n'
-              '        %(name)s = PyInt_AsLong(py_%(name)s);\n'
-              '    else\n'
-              '        PyErr_SetString(PyExc_TypeError, "Parameter \'%(name)s\' must be an int or a long");\n'
-              '    if (PyErr_Occurred())\n'
-              '        return NULL;\n')
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if not pdflt:
-            pdflt = '0';
-
-        info.varlist.add(ptype, pname + ' = ' + pdflt)
-        info.codebefore.append(self.dflt % {'name':pname})
-        info.varlist.add('PyObject', "*py_" + pname + ' = NULL')
-        info.arglist.append(pname)
-        info.add_parselist('O', ['&py_' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add(ptype, 'ret')
-        info.codeafter.append('    return PyLong_FromUnsignedLong(ret);')
-
-class SizeArg(ArgType):
-
-    if struct.calcsize('P') <= struct.calcsize('l'):
-        llp64 = True
-    else:
-        llp64 = False
-
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add(ptype, pname + ' = ' + pdflt)
-        else:
-            info.varlist.add(ptype, pname)
-        info.arglist.append(pname)
-        if self.llp64:
-            info.add_parselist('k', ['&' + pname], [pname])
-        else:
-            info.add_parselist('K', ['&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add(ptype, 'ret')
-        if self.llp64:
-            info.codeafter.append('    return PyLong_FromUnsignedLongLong(ret);\n')
-        else:
-            info.codeafter.append('    return PyLong_FromUnsignedLong(ret);\n')
-
-class SSizeArg(ArgType):
-
-    if struct.calcsize('P') <= struct.calcsize('l'):
-        llp64 = True
-    else:
-        llp64 = False
-
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add(ptype, pname + ' = ' + pdflt)
-        else:
-            info.varlist.add(ptype, pname)
-        info.arglist.append(pname)
-        if self.llp64:
-            info.add_parselist('l', ['&' + pname], [pname])
-        else:
-            info.add_parselist('L', ['&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add(ptype, 'ret')
-        if self.llp64:
-            info.codeafter.append('    return PyLong_FromLongLong(ret);\n')
-        else:
-            info.codeafter.append('    return PyLong_FromLong(ret);\n')
-
-class LongArg(ArgType):
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add(ptype, pname + ' = ' + pdflt)
-        else:
-            info.varlist.add(ptype, pname)
-        info.arglist.append(pname)
-        info.add_parselist('l', ['&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add(ptype, 'ret')
-        info.codeafter.append('    return PyInt_FromLong(ret);\n')
-
-class BoolArg(IntArg):
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('int', 'ret')
-        info.codeafter.append('    return PyBool_FromLong(ret);\n')
-
-class TimeTArg(ArgType):
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add('time_t', pname + ' = ' + pdflt)
-        else:
-            info.varlist.add('time_t', pname)
-        info.arglist.append(pname)
-        info.add_parselist('i', ['&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('time_t', 'ret')
-        info.codeafter.append('    return PyInt_FromLong(ret);')
-
-class ULongArg(ArgType):
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add('unsigned long', pname + ' = ' + pdflt)
-        else:
-            info.varlist.add('unsigned long', pname)
-        info.arglist.append(pname)
-        info.add_parselist('k', ['&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add(ptype, 'ret')
-        info.codeafter.append('    return PyLong_FromUnsignedLong(ret);\n')
-
-class UInt32Arg(ULongArg):
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        ULongArg.write_param(self, ptype, pname, pdflt, pnull, info)
-        ## if sizeof(unsigned long) > sizeof(unsigned int), we need to
-        ## check the value is within guint32 range
-        if struct.calcsize('L') > struct.calcsize('I'):
-            info.codebefore.append((
-                '    if (%(pname)s > G_MAXUINT32) {\n'
-                '        PyErr_SetString(PyExc_ValueError,\n'
-                '                        "Value out of range in conversion of"\n'
-                '                        " %(pname)s parameter to unsigned 32 bit integer");\n'
-                '        return NULL;\n'
-                '    }\n') % vars())
-
-class Int64Arg(ArgType):
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add('gint64', pname + ' = ' + pdflt)
-        else:
-            info.varlist.add('gint64', pname)
-        info.arglist.append(pname)
-        info.add_parselist('L', ['&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('gint64', 'ret')
-        info.codeafter.append('    return PyLong_FromLongLong(ret);')
-
-class UInt64Arg(ArgType):
-    dflt = '    if (py_%(name)s)\n' \
-           '        %(name)s = PyLong_AsUnsignedLongLong(py_%(name)s);\n'
-    before = '    %(name)s = PyLong_AsUnsignedLongLong(py_%(name)s);\n'
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add('guint64', pname + ' = ' + pdflt)
-            info.codebefore.append(self.dflt % {'name':pname})
-        else:
-            info.varlist.add('guint64', pname)
-            info.codebefore.append(self.before % {'name':pname})
-        info.varlist.add('PyObject', "*py_" + pname + ' = NULL')
-        info.arglist.append(pname)
-        info.add_parselist('O!', ['&PyLong_Type', '&py_' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('guint64', 'ret')
-        info.codeafter.append('    return PyLong_FromUnsignedLongLong(ret);')
-
-
-class DoubleArg(ArgType):
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add('double', pname + ' = ' + pdflt)
-        else:
-            info.varlist.add('double', pname)
-        info.arglist.append(pname)
-        info.add_parselist('d', ['&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('double', 'ret')
-        info.codeafter.append('    return PyFloat_FromDouble(ret);')
-
-class FileArg(ArgType):
-    nulldflt = ('    if (py_%(name)s == Py_None)\n'
-                '        %(name)s = NULL;\n'
-                '    else if (py_%(name)s && PyFile_Check(py_%(name)s)\n'
-                '        %s = PyFile_AsFile(py_%(name)s);\n'
-                '    else if (py_%(name)s) {\n'
-                '        PyErr_SetString(PyExc_TypeError, "%(name)s should be a file object or None");\n'
-                '        return NULL;\n'
-                '    }')
-    null = ('    if (py_%(name)s && PyFile_Check(py_%(name)s)\n'
-            '        %(name)s = PyFile_AsFile(py_%(name)s);\n'
-            '    else if (py_%(name)s != Py_None) {\n'
-            '        PyErr_SetString(PyExc_TypeError, "%(name)s should be a file object or None");\n'
-            '        return NULL;\n'
-            '    }\n')
-    dflt = ('    if (py_%(name)s)\n'
-            '        %(name)s = PyFile_AsFile(py_%(name)s);\n')
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pnull:
-            if pdflt:
-                info.varlist.add('FILE', '*' + pname + ' = ' + pdflt)
-                info.varlist.add('PyObject', '*py_' + pname + ' = NULL')
-                info.codebefore.append(self.nulldflt % {'name':pname})
-            else:
-                info.varlist.add('FILE', '*' + pname + ' = NULL')
-                info.varlist.add('PyObject', '*py_' + pname)
-                info.codebefore.append(self.null & {'name':pname})
-            info.arglist.appned(pname)
-            info.add_parselist('O', ['&py_' + pname], [pname])
-        else:
-            if pdflt:
-                info.varlist.add('FILE', '*' + pname + ' = ' + pdflt)
-                info.varlist.add('PyObject', '*py_' + pname + ' = NULL')
-                info.codebefore.append(self.dflt % {'name':pname})
-                info.arglist.append(pname)
-            else:
-                info.varlist.add('PyObject', '*' + pname)
-                info.arglist.append('PyFile_AsFile(' + pname + ')')
-            info.add_parselist('O!', ['&PyFile_Type', '&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('FILE', '*ret')
-        info.codeafter.append('    if (ret)\n' +
-                              '        return PyFile_FromFile(ret, "", "", fclose);\n' +
-                              '    Py_INCREF(Py_None);\n' +
-                              '    return Py_None;')
-
-class EnumArg(ArgType):
-    enum = ('    if (pyg_enum_get_value(%(typecode)s, py_%(name)s, (gpointer)&%(name)s))\n'
-            '        return NULL;\n')
-    def __init__(self, enumname, typecode):
-        self.enumname = enumname
-        self.typecode = typecode
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add(self.enumname, pname + ' = ' + pdflt)
-        else:
-            info.varlist.add(self.enumname, pname)
-        info.varlist.add('PyObject', '*py_' + pname + ' = NULL')
-        info.codebefore.append(self.enum % { 'typecode': self.typecode,
-                                             'name': pname})
-        info.arglist.append(pname)
-        info.add_parselist('O', ['&py_' + pname], [pname]);
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('gint', 'ret')
-        info.codeafter.append('    return pyg_enum_from_gtype(%s, ret);' % self.typecode)
-
-class FlagsArg(ArgType):
-    flag = ('    if (%(default)spyg_flags_get_value(%(typecode)s, py_%(name)s, (gpointer)&%(name)s))\n'
-            '        return NULL;\n')
-    def __init__(self, flagname, typecode):
-        self.flagname = flagname
-        self.typecode = typecode
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add(self.flagname, pname + ' = ' + pdflt)
-            default = "py_%s && " % (pname,)
-        else:
-            info.varlist.add(self.flagname, pname)
-            default = ""
-        info.varlist.add('PyObject', '*py_' + pname + ' = NULL')
-        info.codebefore.append(self.flag % {'default':default,
-                                            'typecode':self.typecode,
-                                            'name':pname})
-        info.arglist.append(pname)
-        info.add_parselist('O', ['&py_' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('guint', 'ret')
-        info.codeafter.append('    return pyg_flags_from_gtype(%s, ret);' % self.typecode)
-
-class ObjectArg(ArgType):
-    # should change these checks to more typesafe versions that check
-    # a little further down in the class heirachy.
-    nulldflt = ('    if ((PyObject *)py_%(name)s == Py_None)\n'
-                '        %(name)s = NULL;\n'
-                '    else if (py_%(name)s && pygobject_check(py_%(name)s, &Py%(type)s_Type))\n'
-                '        %(name)s = %(cast)s(py_%(name)s->obj);\n'
-                '    else if (py_%(name)s) {\n'
-                '        PyErr_SetString(PyExc_TypeError, "%(name)s should be a %(type)s or None");\n'
-                '        return NULL;\n'
-                '    }\n')
-    null = ('    if (py_%(name)s && pygobject_check(py_%(name)s, &Py%(type)s_Type))\n'
-            '        %(name)s = %(cast)s(py_%(name)s->obj);\n'
-            '    else if ((PyObject *)py_%(name)s != Py_None) {\n'
-            '        PyErr_SetString(PyExc_TypeError, "%(name)s should be a %(type)s or None");\n'
-            '        return NULL;\n'
-            '    }\n')
-    dflt = '    if (py_%(name)s)\n' \
-           '        %(name)s = %(cast)s(py_%(name)s->obj);\n'
-    def __init__(self, objname, parent, typecode):
-        self.objname = objname
-        self.cast = string.replace(typecode, '_TYPE_', '_', 1)
-        self.parent = parent
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pnull:
-            if pdflt:
-                info.varlist.add(self.objname, '*' + pname + ' = ' + pdflt)
-                info.varlist.add('PyGObject', '*py_' + pname + ' = NULL')
-                info.codebefore.append(self.nulldflt % {'name':pname,
-                                                        'cast':self.cast,
-                                                        'type':self.objname})
-            else:
-                info.varlist.add(self.objname, '*' + pname + ' = NULL')
-                info.varlist.add('PyGObject', '*py_' + pname)
-                info.codebefore.append(self.null % {'name':pname,
-                                                    'cast':self.cast,
-                                                    'type':self.objname})
-            if ptype.endswith('*'):
-                typename = ptype[:-1]
-                try:
-                    const, typename = typename.split('const-')
-                except ValueError:
-                    const = ''
-                if typename != ptype:
-                    info.arglist.append('(%s *) %s' % (ptype[:-1], pname))
-                else:
-                    info.arglist.append(pname)
-
-            info.add_parselist('O', ['&py_' + pname], [pname])
-        else:
-            if pdflt:
-                info.varlist.add(self.objname, '*' + pname + ' = ' + pdflt)
-                info.varlist.add('PyGObject', '*py_' + pname + ' = NULL')
-                info.codebefore.append(self.dflt % {'name':pname,
-                                                    'cast':self.cast})
-                info.arglist.append(pname)
-                info.add_parselist('O!', ['&Py%s_Type' % self.objname,
-                                         '&py_' + pname], [pname])
-            else:
-                info.varlist.add('PyGObject', '*' + pname)
-                info.arglist.append('%s(%s->obj)' % (self.cast, pname))
-                info.add_parselist('O!', ['&Py%s_Type' % self.objname,
-                                          '&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        if ptype.endswith('*'):
-            typename = ptype[:-1]
-            try:
-                const, typename = typename.split('const-')
-            except ValueError:
-                const = ''
-        info.varlist.add(typename, '*ret')
-        if ownsreturn:
-            info.varlist.add('PyObject', '*py_ret')
-            info.codeafter.append('    py_ret = pygobject_new((GObject *)ret);\n'
-                                  '    if (ret != NULL)\n'
-                                  '        g_object_unref(ret);\n'
-                                  '    return py_ret;')
-        else:
-            info.codeafter.append('    /* pygobject_new handles NULL checking */\n' +
-                                  '    return pygobject_new((GObject *)ret);')
-
-class BoxedArg(ArgType):
-    # haven't done support for default args.  Is it needed?
-    check = ('    if (pyg_boxed_check(py_%(name)s, %(typecode)s))\n'
-             '        %(name)s = pyg_boxed_get(py_%(name)s, %(typename)s);\n'
-             '    else {\n'
-             '        PyErr_SetString(PyExc_TypeError, "%(name)s should be a %(typename)s");\n'
-             '        return NULL;\n'
-             '    }\n')
-    null = ('    if (pyg_boxed_check(py_%(name)s, %(typecode)s))\n'
-            '        %(name)s = pyg_boxed_get(py_%(name)s, %(typename)s);\n'
-            '    else if (py_%(name)s != Py_None) {\n'
-            '        PyErr_SetString(PyExc_TypeError, "%(name)s should be a %(typename)s or None");\n'
-            '        return NULL;\n'
-            '    }\n')
-    def __init__(self, ptype, typecode):
-        self.typename = ptype
-        self.typecode = typecode
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pnull:
-            info.varlist.add(self.typename, '*' + pname + ' = NULL')
-            info.varlist.add('PyObject', '*py_' + pname + ' = Py_None')
-            info.codebefore.append(self.null % {'name':  pname,
-                                                'typename': self.typename,
-                                                'typecode': self.typecode})
-        else:
-            info.varlist.add(self.typename, '*' + pname + ' = NULL')
-            info.varlist.add('PyObject', '*py_' + pname)
-            info.codebefore.append(self.check % {'name':  pname,
-                                                 'typename': self.typename,
-                                                 'typecode': self.typecode})
-        if ptype[-1] == '*':
-            typename = ptype[:-1]
-            if typename[:6] == 'const-': typename = typename[6:]
-            if typename != self.typename:
-                info.arglist.append('(%s *)%s' % (ptype[:-1], pname))
-            else:
-                info.arglist.append(pname)
-        else:
-            info.arglist.append(pname)
-        info.add_parselist('O', ['&py_' + pname], [pname])
-    ret_tmpl = '    /* pyg_boxed_new handles NULL checking */\n' \
-               '    return pyg_boxed_new(%(typecode)s, %(ret)s, %(copy)s, TRUE);'
-    def write_return(self, ptype, ownsreturn, info):
-        if ptype[-1] == '*':
-            decl_type = self.typename
-            ret = 'ret'
-            if ptype[:6] == 'const-':
-                decl_type = 'const ' + self.typename
-                ret = '(%s*) ret' % (self.typename,)
-            info.varlist.add(decl_type, '*ret')
-        else:
-            info.varlist.add(self.typename, 'ret')
-            ret = '&ret'
-            ownsreturn = 0 # of course it can't own a ref to a local var ...
-        info.codeafter.append(self.ret_tmpl %
-                              { 'typecode': self.typecode,
-                                'ret': ret,
-                                'copy': ownsreturn and 'FALSE' or 'TRUE'})
-
-class CustomBoxedArg(ArgType):
-    # haven't done support for default args.  Is it needed?
-    null = ('    if (%(check)s(py_%(name)s))\n'
-            '        %(name)s = %(get)s(py_%(name)s);\n'
-            '    else if (py_%(name)s != Py_None) {\n'
-            '        PyErr_SetString(PyExc_TypeError, "%(name)s should be a %(type)s or None");\n'
-            '        return NULL;\n'
-            '    }\n')
-    def __init__(self, ptype, pytype, getter, new):
-        self.pytype = pytype
-        self.getter = getter
-        self.checker = 'Py' + ptype + '_Check'
-        self.new = new
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pnull:
-            info.varlist.add(ptype[:-1], '*' + pname + ' = NULL')
-            info.varlist.add('PyObject', '*py_' + pname + ' = Py_None')
-            info.codebefore.append(self.null % {'name':  pname,
-                                                'get':   self.getter,
-                                                'check': self.checker,
-                                                'type':  ptype[:-1]})
-            info.arglist.append(pname)
-            info.add_parselist('O', ['&py_' + pname], [pname])
-        else:
-            info.varlist.add('PyObject', '*' + pname)
-            info.arglist.append(self.getter + '(' + pname + ')')
-            info.add_parselist('O!', ['&' + self.pytype, '&' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add(ptype[:-1], '*ret')
-        info.codeafter.append('    if (ret)\n' +
-                              '        return ' + self.new + '(ret);\n' +
-                              '    Py_INCREF(Py_None);\n' +
-                              '    return Py_None;')
-
-class PointerArg(ArgType):
-    # haven't done support for default args.  Is it needed?
-    check = ('    if (pyg_pointer_check(py_%(name)s, %(typecode)s))\n'
-             '        %(name)s = pyg_pointer_get(py_%(name)s, %(typename)s);\n'
-             '    else {\n'
-             '        PyErr_SetString(PyExc_TypeError, "%(name)s should be a %(typename)s");\n'
-             '        return NULL;\n'
-             '    }\n')
-    null = ('    if (pyg_pointer_check(py_%(name)s, %(typecode)s))\n'
-            '        %(name)s = pyg_pointer_get(py_%(name)s, %(typename)s);\n'
-            '    else if (py_%(name)s != Py_None) {\n'
-            '        PyErr_SetString(PyExc_TypeError, "%(name)s should be a %(typename)s or None");\n'
-            '        return NULL;\n'
-            '    }\n')
-    def __init__(self, ptype, typecode):
-        self.typename = ptype
-        self.typecode = typecode
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pnull:
-            info.varlist.add(self.typename, '*' + pname + ' = NULL')
-            info.varlist.add('PyObject', '*py_' + pname + ' = Py_None')
-            info.codebefore.append(self.null % {'name':  pname,
-                                                'typename': self.typename,
-                                                'typecode': self.typecode})
-        else:
-            info.varlist.add(self.typename, '*' + pname + ' = NULL')
-            info.varlist.add('PyObject', '*py_' + pname)
-            info.codebefore.append(self.check % {'name':  pname,
-                                                 'typename': self.typename,
-                                                 'typecode': self.typecode})
-        info.arglist.append(pname)
-        info.add_parselist('O', ['&py_' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        if ptype[-1] == '*':
-            info.varlist.add(self.typename, '*ret')
-            info.codeafter.append('    /* pyg_pointer_new handles NULL checking */\n' +
-                                  '    return pyg_pointer_new(' + self.typecode + ', ret);')
-        else:
-            info.varlist.add(self.typename, 'ret')
-            info.codeafter.append('    /* pyg_pointer_new handles NULL checking */\n' +
-                                  '    return pyg_pointer_new(' + self.typecode + ', &ret);')
-
-class AtomArg(IntArg):
-    dflt = '    if (py_%(name)s) {\n' \
-           '        %(name)s = pygdk_atom_from_pyobject(py_%(name)s);\n' \
-           '        if (PyErr_Occurred())\n' \
-           '            return NULL;\n' \
-           '    }\n'
-    atom = ('    %(name)s = pygdk_atom_from_pyobject(py_%(name)s);\n'
-            '    if (PyErr_Occurred())\n'
-            '        return NULL;\n')
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pdflt:
-            info.varlist.add('GdkAtom', pname + ' = ' + pdflt)
-            info.varlist.add('PyObject', '*py_' + pname + ' = NULL')
-            info.codebefore.append(self.dflt % {'name': pname})
-        else:
-            info.varlist.add('GdkAtom', pname)
-            info.varlist.add('PyObject', '*py_' + pname + ' = NULL')
-            info.codebefore.append(self.atom % {'name': pname})
-        info.arglist.append(pname)
-        info.add_parselist('O', ['&py_' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('GdkAtom', 'ret')
-        info.varlist.add('PyObject *', 'py_ret')
-        info.varlist.add('gchar *', 'name')
-        info.codeafter.append('    name = gdk_atom_name(ret);\n'
-                              '    py_ret = PyString_FromString(name);\n'
-                              '    g_free(name);\n'
-                              '    return py_ret;')
-
-class GTypeArg(ArgType):
-    gtype = ('    if ((%(name)s = pyg_type_from_object(py_%(name)s)) == 0)\n'
-             '        return NULL;\n')
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        info.varlist.add('GType', pname)
-        info.varlist.add('PyObject', '*py_' + pname + ' = NULL')
-        info.codebefore.append(self.gtype % {'name': pname})
-        info.arglist.append(pname)
-        info.add_parselist('O', ['&py_' + pname], [pname])
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('GType', 'ret')
-        info.codeafter.append('    return pyg_type_wrapper_new(ret);')
-
-# simple GError handler.
-class GErrorArg(ArgType):
-    handleerror = ('    if (pyg_error_check(&%(name)s))\n'
-                   '        return NULL;\n')
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        info.varlist.add('GError', '*' + pname + ' = NULL')
-        info.arglist.append('&' + pname)
-        info.codeafter.append(self.handleerror % { 'name': pname })
-
-class GtkTreePathArg(ArgType):
-    # haven't done support for default args.  Is it needed?
-    normal = ('    %(name)s = pygtk_tree_path_from_pyobject(py_%(name)s);\n'
-              '    if (!%(name)s) {\n'
-              '        PyErr_SetString(PyExc_TypeError, "could not convert %(name)s to a GtkTreePath");\n'
-              '        return NULL;\n'
-              '    }\n')
-    null = ('    if (py_%(name)s != Py_None) {\n'
-            '        %(name)s = pygtk_tree_path_from_pyobject(py_%(name)s);\n'
-            '        if (!%(name)s) {\n'
-            '            PyErr_SetString(PyExc_TypeError, "could not convert %(name)s to a GtkTreePath");\n'
-            '            return NULL;\n'
-            '        }\n'
-            '    }\n')
-    freepath = ('    if (%(name)s)\n'
-                '        gtk_tree_path_free(%(name)s);\n')
-    def __init__(self):
-        pass
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pnull:
-            info.varlist.add('GtkTreePath', '*' + pname + ' = NULL')
-            info.varlist.add('PyObject', '*py_' + pname + ' = Py_None')
-            info.codebefore.append(self.null % {'name':  pname})
-            info.arglist.append(pname)
-            info.add_parselist('O', ['&py_' + pname], [pname])
-        else:
-            info.varlist.add('GtkTreePath', '*' + pname)
-            info.varlist.add('PyObject', '*py_' + pname)
-            info.codebefore.append(self.normal % {'name': pname})
-            info.arglist.append(pname)
-            info.add_parselist('O', ['&py_' + pname], [pname])
-        info.codeafter.append(self.freepath % {'name': pname})
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('GtkTreePath', '*ret')
-        if ownsreturn:
-            info.codeafter.append('    if (ret) {\n'
-                                  '        PyObject *py_ret = pygtk_tree_path_to_pyobject(ret);\n'
-                                  '        gtk_tree_path_free(ret);\n'
-                                  '        return py_ret;\n'
-                                  '    }\n'
-                                  '    Py_INCREF(Py_None);\n'
-                                  '    return Py_None;')
-        else:
-            info.codeafter.append('    if (ret) {\n'
-                                  '        PyObject *py_ret = pygtk_tree_path_to_pyobject(ret);\n'
-                                  '        return py_ret;\n'
-                                  '    }\n'
-                                  '    Py_INCREF(Py_None);\n'
-                                  '    return Py_None;')
-
-class GdkRectanglePtrArg(ArgType):
-    normal = ('    if (!pygdk_rectangle_from_pyobject(py_%(name)s, &%(name)s))\n'
-              '        return NULL;\n')
-    null =   ('    if (py_%(name)s == Py_None)\n'
-              '        %(name)s = NULL;\n'
-              '    else if (pygdk_rectangle_from_pyobject(py_%(name)s, &%(name)s_rect))\n'
-              '        %(name)s = &%(name)s_rect;\n'
-              '    else\n'
-              '            return NULL;\n')
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        if pnull:
-            info.varlist.add('GdkRectangle', pname + '_rect = { 0, 0, 0, 0 }')
-            info.varlist.add('GdkRectangle', '*' + pname)
-            info.varlist.add('PyObject', '*py_' + pname + ' = Py_None')
-            info.add_parselist('O', ['&py_' + pname], [pname])
-            info.arglist.append(pname)
-            info.codebefore.append(self.null % {'name':  pname})
-        else:
-            info.varlist.add('GdkRectangle', pname + ' = { 0, 0, 0, 0 }')
-            info.varlist.add('PyObject', '*py_' + pname)
-            info.add_parselist('O', ['&py_' + pname], [pname])
-            info.arglist.append('&' + pname)
-            info.codebefore.append(self.normal % {'name':  pname})
-
-class GdkRectangleArg(ArgType):
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add('GdkRectangle', 'ret')
-        info.codeafter.append('    return pyg_boxed_new(GDK_TYPE_RECTANGLE, &ret, TRUE, TRUE);')
-
-class PyObjectArg(ArgType):
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        info.varlist.add('PyObject', '*' + pname)
-        info.add_parselist('O', ['&' + pname], [pname])
-        info.arglist.append(pname)
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add("PyObject", "*ret")
-        if ownsreturn:
-            info.codeafter.append('    if (ret) {\n'
-                                  '       return ret;\n'
-                                  '    }\n'
-                                  '    Py_INCREF(Py_None);\n'
-                                  '    return Py_None;')
-        else:
-            info.codeafter.append('    if (!ret) ret = Py_None;\n'
-                                  '    Py_INCREF(ret);\n'
-                                  '    return ret;')
-
-class CairoArg(ArgType):
-    def write_param(self, ptype, pname, pdflt, pnull, info):
-        info.varlist.add('PycairoContext', '*' + pname)
-        info.add_parselist('O!', ['&PycairoContext_Type', '&' + pname], [pname])
-        info.arglist.append('%s->ctx' % pname)
-    def write_return(self, ptype, ownsreturn, info):
-        info.varlist.add("cairo_t", "*ret")
-        if ownsreturn:
-            info.codeafter.append('    return PycairoContext_FromContext(ret, NULL, NULL);')
-        else:
-            info.codeafter.append('    cairo_reference(ret);\n'
-                                  '    return PycairoContext_FromContext(ret, NULL, NULL);')
-
-
-class ArgMatcher:
-    def __init__(self):
-        self.argtypes = {}
-        self.reverse_argtypes = {}
-        self.reverse_rettypes = {}
-
-    def register(self, ptype, handler, overwrite=False):
-        if not overwrite and ptype in self.argtypes:
-            return
-        self.argtypes[ptype] = handler
-    def register_reverse(self, ptype, handler):
-        self.reverse_argtypes[ptype] = handler
-    def register_reverse_ret(self, ptype, handler):
-        self.reverse_rettypes[ptype] = handler
-
-    def register_enum(self, ptype, typecode):
-        if typecode is None:
-            self.register(ptype, IntArg())
-        else:
-            self.register(ptype, EnumArg(ptype, typecode))
-    def register_flag(self, ptype, typecode):
-        if typecode is None:
-            self.register(ptype, IntArg())
-        else:
-            self.register(ptype, FlagsArg(ptype, typecode))
-    def register_object(self, ptype, parent, typecode):
-        oa = ObjectArg(ptype, parent, typecode)
-        self.register(ptype, oa)  # in case I forget the * in the .defs
-        self.register(ptype+'*', oa)
-        self.register('const-'+ptype+'*', oa)
-        if ptype == 'GdkPixmap':
-            # hack to handle GdkBitmap synonym.
-            self.register('GdkBitmap', oa)
-            self.register('GdkBitmap*', oa)
-    def register_boxed(self, ptype, typecode):
-        if self.argtypes.has_key(ptype): return
-        arg = BoxedArg(ptype, typecode)
-        self.register(ptype, arg)
-        self.register(ptype+'*', arg)
-        self.register('const-'+ptype+'*', arg)
-    def register_custom_boxed(self, ptype, pytype, getter, new):
-        arg = CustomBoxedArg(ptype, pytype, getter, new)
-        self.register(ptype+'*', arg)
-        self.register('const-'+ptype+'*', arg)
-    def register_pointer(self, ptype, typecode):
-        arg = PointerArg(ptype, typecode)
-        self.register(ptype, arg)
-        self.register(ptype+'*', arg)
-        self.register('const-'+ptype+'*', arg)
-
-    def get(self, ptype):
-        try:
-            return self.argtypes[ptype]
-        except KeyError:
-            if ptype[:8] == 'GdkEvent' and ptype[-1] == '*':
-                return self.argtypes['GdkEvent*']
-            raise ArgTypeNotFoundError("No ArgType for %s" % (ptype,))
-    def _get_reverse_common(self, ptype, registry):
-        props = dict(c_type=ptype)
-        try:
-            return registry[ptype], props
-        except KeyError:
-            try:
-                handler = self.argtypes[ptype]
-            except KeyError:
-                if ptype.startswith('GdkEvent') and ptype.endswith('*'):
-                    handler = self.argtypes['GdkEvent*']
-                else:
-                    raise ArgTypeNotFoundError("No ArgType for %s" % (ptype,))
-            if isinstance(handler, ObjectArg):
-                return registry['GObject*'], props
-            elif isinstance(handler, EnumArg):
-                props['typecode'] = handler.typecode
-                props['enumname'] = handler.enumname
-                return registry['GEnum'], props
-            elif isinstance(handler, FlagsArg):
-                props['typecode'] = handler.typecode
-                props['flagname'] = handler.flagname
-                return registry['GFlags'], props
-            elif isinstance(handler, BoxedArg):
-                props['typecode'] = handler.typecode
-                props['typename'] = handler.typename
-                return registry['GBoxed'], props
-            else:
-                raise ArgTypeNotFoundError("No ArgType for %s" % (ptype,))
-
-    def get_reverse(self, ptype):
-        return self._get_reverse_common(ptype, self.reverse_argtypes)
-
-    def get_reverse_ret(self, ptype):
-        ret, props = self._get_reverse_common(ptype, self.reverse_rettypes)
-        if hasattr(ptype, 'optional') and ptype.optional:
-            if ret.supports_optional:
-                props['optional'] = True
-            else:
-                raise ArgTypeNotFoundError("Unsupported 'optional' for %s"
-                                           % (ptype,))
-        return ret, props
-
-    def object_is_a(self, otype, parent):
-        if otype == None: return 0
-        if otype == parent: return 1
-        if not self.argtypes.has_key(otype): return 0
-        return self.object_is_a(self.get(otype).parent, parent)
-
-matcher = ArgMatcher()
-
-arg = NoneArg()
-matcher.register(None, arg)
-matcher.register('none', arg)
-
-arg = StringArg()
-matcher.register('char*', arg)
-matcher.register('gchar*', arg)
-matcher.register('const-char*', arg)
-matcher.register('char-const*', arg)
-matcher.register('const-gchar*', arg)
-matcher.register('gchar-const*', arg)
-matcher.register('string', arg)
-matcher.register('static_string', arg)
-
-arg = UCharArg()
-matcher.register('unsigned-char*', arg)
-matcher.register('const-guchar*', arg)
-matcher.register('const-guint8*', arg)
-matcher.register('guchar*', arg)
-
-arg = CharArg()
-matcher.register('char', arg)
-matcher.register('gchar', arg)
-matcher.register('guchar', arg)
-
-arg = GUniCharArg()
-matcher.register('gunichar', arg)
-
-arg = IntArg()
-matcher.register('int', arg)
-matcher.register('gint', arg)
-matcher.register('short', arg)
-matcher.register('gshort', arg)
-matcher.register('gushort', arg)
-matcher.register('gsize', SizeArg())
-matcher.register('gssize', SSizeArg())
-matcher.register('guint8', arg)
-matcher.register('gint8', arg)
-matcher.register('guint16', arg)
-matcher.register('gint16', arg)
-matcher.register('gint32', arg)
-matcher.register('GTime', arg)
-matcher.register('GSeekType', arg) # Hack, but we have no python wrapper
-
-arg = LongArg()
-matcher.register('long', arg)
-matcher.register('glong', arg)
-
-arg = UIntArg()
-matcher.register('guint', arg)
-
-arg = BoolArg()
-matcher.register('gboolean', arg)
-
-arg = TimeTArg()
-matcher.register('time_t', arg)
-
-matcher.register('guint32', UInt32Arg())
-
-arg = ULongArg()
-matcher.register('gulong', arg)
-
-arg = Int64Arg()
-matcher.register('gint64', arg)
-matcher.register('long-long', arg)
-matcher.register('goffset', arg)
-
-arg = UInt64Arg()
-matcher.register('guint64', arg)
-matcher.register('unsigned-long-long', arg)
-
-arg = DoubleArg()
-matcher.register('double', arg)
-matcher.register('gdouble', arg)
-matcher.register('float', arg)
-matcher.register('gfloat', arg)
-
-arg = FileArg()
-matcher.register('FILE*', arg)
-
-# enums, flags, objects
-
-matcher.register('GdkAtom', AtomArg())
-
-matcher.register('GType', GTypeArg())
-matcher.register('GtkType', GTypeArg())
-
-matcher.register('GError**', GErrorArg())
-matcher.register('GtkTreePath*', GtkTreePathArg())
-matcher.register('GdkRectangle*', GdkRectanglePtrArg())
-matcher.register('GtkAllocation*', GdkRectanglePtrArg())
-matcher.register('GdkRectangle', GdkRectangleArg())
-matcher.register('PyObject*', PyObjectArg())
-
-matcher.register('GdkNativeWindow', ULongArg())
-
-matcher.register_object('GObject', None, 'G_TYPE_OBJECT')
-
-del arg
-
-matcher.register('cairo_t*', CairoArg())
-matcher.register_boxed("GClosure", "G_TYPE_CLOSURE")
diff --git a/codegen/code-coverage.py b/codegen/code-coverage.py
deleted file mode 100755 (executable)
index 1dc54c3..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#! /usr/bin/env python
-
-from __future__ import generators
-import sys, os
-
-def read_symbols(file, type=None, dynamic=0):
-    if dynamic:
-        cmd = 'nm -D %s' % file
-    else:
-        cmd = 'nm %s' % file
-    for line in os.popen(cmd, 'r'):
-        if line[0] != ' ':  # has an address as first bit of line
-            while line[0] != ' ':
-                line = line[1:]
-        while line[0] == ' ':
-            line = line[1:]
-        # we should be up to "type symbolname" now
-        sym_type = line[0]
-        symbol = line[1:].strip()
-
-        if not type or type == sym_type:
-            yield symbol
-
-def main():
-    if len(sys.argv) != 3:
-        sys.stderr.write('usage: coverage-check library.so wrapper.so\n')
-        sys.exit(1)
-    library = sys.argv[1]
-    wrapper = sys.argv[2]
-
-    # first create a dict with all referenced symbols in the wrapper
-    # should really be a set, but a dict will do ...
-    wrapper_symbols = {}
-    for symbol in read_symbols(wrapper, type='U', dynamic=1):
-        wrapper_symbols[symbol] = 1
-
-    # now go through the library looking for matches on the defined symbols:
-    for symbol in read_symbols(library, type='T', dynamic=1):
-        if symbol[0] == '_': continue
-        if symbol not in wrapper_symbols:
-            print symbol
-
-if __name__ == '__main__':
-    main()
diff --git a/codegen/codegen.py b/codegen/codegen.py
deleted file mode 100755 (executable)
index 008f01c..0000000
+++ /dev/null
@@ -1,1722 +0,0 @@
-#! /usr/bin/env python
-
-import getopt
-import keyword
-import os
-import string
-import sys
-
-import argtypes
-import definitions
-import defsparser
-import override
-import reversewrapper
-import warnings
-
-class Coverage(object):
-    def __init__(self, name):
-        self.name = name
-        self.wrapped = 0
-        self.not_wrapped = 0
-
-    def declare_wrapped(self):
-        self.wrapped += 1
-
-    def declare_not_wrapped(self):
-        self.not_wrapped += 1
-
-    def printstats(self):
-        total = self.wrapped + self.not_wrapped
-        fd = sys.stderr
-        if total:
-            fd.write("***INFO*** The coverage of %s is %.2f%% (%i/%i)\n" %
-                     (self.name,
-                      float(self.wrapped*100)/total,
-                      self.wrapped,
-                      total))
-        else:
-            fd.write("***INFO*** There are no declared %s.\n" % self.name)
-
-functions_coverage = Coverage("global functions")
-methods_coverage = Coverage("methods")
-vproxies_coverage = Coverage("virtual proxies")
-vaccessors_coverage = Coverage("virtual accessors")
-iproxies_coverage = Coverage("interface proxies")
-
-def exc_info():
-    warnings.warn("deprecated", DeprecationWarning, stacklevel=2)
-    #traceback.print_exc()
-    etype, value, tb = sys.exc_info()
-    ret = ""
-    try:
-        sval = str(value)
-        if etype == argtypes.ArgTypeError:
-            ret = "No ArgType for %s" % (sval,)
-        else:
-            ret = sval
-    finally:
-        del etype, value, tb
-    return ret
-
-def fixname(name):
-    if keyword.iskeyword(name):
-        return name + '_'
-    return name
-
-class FileOutput:
-    '''Simple wrapper for file object, that makes writing #line
-    statements easier.''' # "
-    def __init__(self, fp, filename=None):
-        self.fp = fp
-        self.lineno = 1
-        if filename:
-            self.filename = filename
-        else:
-            self.filename = self.fp.name
-    # handle writing to the file, and keep track of the line number ...
-    def write(self, str):
-        self.fp.write(str)
-        self.lineno = self.lineno + string.count(str, '\n')
-    def writelines(self, sequence):
-        for line in sequence:
-            self.write(line)
-    def close(self):
-        self.fp.close()
-    def flush(self):
-        self.fp.flush()
-
-    def setline(self, linenum, filename):
-        '''writes out a #line statement, for use by the C
-        preprocessor.''' # "
-        self.write('#line %d "%s"\n' % (linenum, filename))
-    def resetline(self):
-        '''resets line numbering to the original file'''
-        self.setline(self.lineno + 1, self.filename)
-
-class Wrapper:
-    type_tmpl = (
-        'PyTypeObject G_GNUC_INTERNAL Py%(typename)s_Type = {\n'
-        '    PyObject_HEAD_INIT(NULL)\n'
-        '    0,                                 /* ob_size */\n'
-        '    "%(classname)s",                   /* tp_name */\n'
-        '    sizeof(%(tp_basicsize)s),          /* tp_basicsize */\n'
-        '    0,                                 /* tp_itemsize */\n'
-        '    /* methods */\n'
-        '    (destructor)%(tp_dealloc)s,        /* tp_dealloc */\n'
-        '    (printfunc)0,                      /* tp_print */\n'
-        '    (getattrfunc)%(tp_getattr)s,       /* tp_getattr */\n'
-        '    (setattrfunc)%(tp_setattr)s,       /* tp_setattr */\n'
-        '    (cmpfunc)%(tp_compare)s,           /* tp_compare */\n'
-        '    (reprfunc)%(tp_repr)s,             /* tp_repr */\n'
-        '    (PyNumberMethods*)%(tp_as_number)s,     /* tp_as_number */\n'
-        '    (PySequenceMethods*)%(tp_as_sequence)s, /* tp_as_sequence */\n'
-        '    (PyMappingMethods*)%(tp_as_mapping)s,   /* tp_as_mapping */\n'
-        '    (hashfunc)%(tp_hash)s,             /* tp_hash */\n'
-        '    (ternaryfunc)%(tp_call)s,          /* tp_call */\n'
-        '    (reprfunc)%(tp_str)s,              /* tp_str */\n'
-        '    (getattrofunc)%(tp_getattro)s,     /* tp_getattro */\n'
-        '    (setattrofunc)%(tp_setattro)s,     /* tp_setattro */\n'
-        '    (PyBufferProcs*)%(tp_as_buffer)s,  /* tp_as_buffer */\n'
-        '    %(tp_flags)s,                      /* tp_flags */\n'
-        '    %(tp_doc)s,                        /* Documentation string */\n'
-        '    (traverseproc)%(tp_traverse)s,     /* tp_traverse */\n'
-        '    (inquiry)%(tp_clear)s,             /* tp_clear */\n'
-        '    (richcmpfunc)%(tp_richcompare)s,   /* tp_richcompare */\n'
-        '    %(tp_weaklistoffset)s,             /* tp_weaklistoffset */\n'
-        '    (getiterfunc)%(tp_iter)s,          /* tp_iter */\n'
-        '    (iternextfunc)%(tp_iternext)s,     /* tp_iternext */\n'
-        '    (struct PyMethodDef*)%(tp_methods)s, /* tp_methods */\n'
-        '    (struct PyMemberDef*)0,              /* tp_members */\n'
-        '    (struct PyGetSetDef*)%(tp_getset)s,  /* tp_getset */\n'
-        '    NULL,                              /* tp_base */\n'
-        '    NULL,                              /* tp_dict */\n'
-        '    (descrgetfunc)%(tp_descr_get)s,    /* tp_descr_get */\n'
-        '    (descrsetfunc)%(tp_descr_set)s,    /* tp_descr_set */\n'
-        '    %(tp_dictoffset)s,                 /* tp_dictoffset */\n'
-        '    (initproc)%(tp_init)s,             /* tp_init */\n'
-        '    (allocfunc)%(tp_alloc)s,           /* tp_alloc */\n'
-        '    (newfunc)%(tp_new)s,               /* tp_new */\n'
-        '    (freefunc)%(tp_free)s,             /* tp_free */\n'
-        '    (inquiry)%(tp_is_gc)s              /* tp_is_gc */\n'
-        '};\n\n'
-        )
-
-    slots_list = [
-        'tp_getattr', 'tp_setattr', 'tp_getattro', 'tp_setattro',
-        'tp_compare', 'tp_repr',
-        'tp_as_number', 'tp_as_sequence', 'tp_as_mapping', 'tp_hash',
-        'tp_call', 'tp_str', 'tp_as_buffer', 'tp_richcompare', 'tp_iter',
-        'tp_iternext', 'tp_descr_get', 'tp_descr_set', 'tp_init',
-        'tp_alloc', 'tp_new', 'tp_free', 'tp_is_gc',
-        'tp_traverse', 'tp_clear', 'tp_dealloc', 'tp_flags', 'tp_doc'
-        ]
-
-    getter_tmpl = (
-        'static PyObject *\n'
-        '%(funcname)s(PyObject *self, void *closure)\n'
-        '{\n'
-        '%(varlist)s'
-        '    ret = %(field)s;\n'
-        '%(codeafter)s\n'
-        '}\n\n'
-        )
-
-    parse_tmpl = (
-        '    if (!PyArg_ParseTupleAndKeywords(args, kwargs,'
-        '"%(typecodes)s:%(name)s"%(parselist)s))\n'
-        '        return %(errorreturn)s;\n'
-        )
-
-    deprecated_tmpl = (
-        '    if (PyErr_Warn(PyExc_DeprecationWarning, '
-        '"%(deprecationmsg)s") < 0)\n'
-        '        return %(errorreturn)s;\n'
-        )
-
-    methdef_tmpl = (
-        '    { "%(name)s", (PyCFunction)%(cname)s, %(flags)s,\n'
-        '      %(docstring)s },\n'
-        )
-
-    noconstructor = (
-        'static int\n'
-        'pygobject_no_constructor(PyObject *self, PyObject *args, '
-        'PyObject *kwargs)\n'
-        '{\n'
-        '    gchar buf[512];\n'
-        '\n'
-        '    g_snprintf(buf, sizeof(buf), "%s is an abstract widget", '
-        'self->ob_type->tp_name);\n'
-        '    PyErr_SetString(PyExc_NotImplementedError, buf);\n'
-        '    return -1;\n'
-        '}\n\n'
-        )
-
-    function_tmpl = (
-        'static PyObject *\n'
-        '_wrap_%(cname)s(PyObject *self%(extraparams)s)\n'
-        '{\n'
-        '%(varlist)s'
-        '%(parseargs)s'
-        '%(codebefore)s'
-        '    %(begin_allow_threads)s\n'
-        '    %(setreturn)s%(cname)s(%(arglist)s);\n'
-        '    %(end_allow_threads)s\n'
-        '%(codeafter)s\n'
-        '}\n\n'
-        )
-
-    virtual_accessor_tmpl = (
-        'static PyObject *\n'
-        '_wrap_%(cname)s(PyObject *cls%(extraparams)s)\n'
-        '{\n'
-        '    gpointer klass;\n'
-        '%(varlist)s'
-        '%(parseargs)s'
-        '%(codebefore)s'
-        '    klass = g_type_class_ref(pyg_type_from_object(cls));\n'
-        '    if (%(class_cast_macro)s(klass)->%(virtual)s)\n'
-        '        %(setreturn)s%(class_cast_macro)s(klass)->'
-        '%(virtual)s(%(arglist)s);\n'
-        '    else {\n'
-        '        PyErr_SetString(PyExc_NotImplementedError, '
-        '"virtual method %(name)s not implemented");\n'
-        '        g_type_class_unref(klass);\n'
-        '        return NULL;\n'
-        '    }\n'
-        '    g_type_class_unref(klass);\n'
-        '%(codeafter)s\n'
-        '}\n\n'
-        )
-
-    # template for method calls
-    constructor_tmpl = None
-    method_tmpl = None
-
-    def __init__(self, parser, objinfo, overrides, fp=FileOutput(sys.stdout)):
-        self.parser = parser
-        self.objinfo = objinfo
-        self.overrides = overrides
-        self.fp = fp
-
-    def get_lower_name(self):
-        return string.lower(string.replace(self.objinfo.typecode,
-                                           '_TYPE_', '_', 1))
-
-    def get_field_accessor(self, fieldname):
-        raise NotImplementedError
-
-    def get_initial_class_substdict(self): return {}
-
-    def get_initial_constructor_substdict(self, constructor):
-        return { 'name': '%s.__init__' % self.objinfo.py_name,
-                 'errorreturn': '-1' }
-
-    def get_initial_method_substdict(self, method):
-        substdict = { 'name': '%s.%s' % (self.objinfo.py_name, method.name) }
-        if method.unblock_threads:
-            substdict['begin_allow_threads'] = 'pyg_begin_allow_threads;'
-            substdict['end_allow_threads'] = 'pyg_end_allow_threads;'
-        else:
-            substdict['begin_allow_threads'] = ''
-            substdict['end_allow_threads'] = ''
-        return substdict
-
-    def write_class(self):
-        if self.overrides.is_type_ignored(self.objinfo.c_name):
-            return
-        self.fp.write('\n/* ----------- %s ----------- */\n\n' %
-                      self.objinfo.c_name)
-        substdict = self.get_initial_class_substdict()
-        if not substdict.has_key('tp_flags'):
-            substdict['tp_flags'] = 'Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE'
-        substdict['typename'] = self.objinfo.c_name
-        if self.overrides.modulename:
-            substdict['classname'] = '%s.%s' % (self.overrides.modulename,
-                                           self.objinfo.name)
-        else:
-            substdict['classname'] = self.objinfo.name
-        substdict['tp_doc'] = self.objinfo.docstring
-
-        # Maybe this could be done in a nicer way, but I'll leave it as it is
-        # for now: -- Johan
-        if not self.overrides.slot_is_overriden('%s.tp_init' %
-                                                self.objinfo.c_name):
-            substdict['tp_init'] = self.write_constructor()
-        substdict['tp_methods'] = self.write_methods()
-        substdict['tp_getset'] = self.write_getsets()
-
-        # handle slots ...
-        for slot in self.slots_list:
-
-            slotname = '%s.%s' % (self.objinfo.c_name, slot)
-            slotfunc = '_wrap_%s_%s' % (self.get_lower_name(), slot)
-            if slot[:6] == 'tp_as_':
-                slotfunc = '&' + slotfunc
-            if self.overrides.slot_is_overriden(slotname):
-                data = self.overrides.slot_override(slotname)
-                self.write_function(slotname, data)
-                substdict[slot] = slotfunc
-            else:
-                if not substdict.has_key(slot):
-                    substdict[slot] = '0'
-
-        self.fp.write(self.type_tmpl % substdict)
-
-        self.write_virtuals()
-
-    def write_function_wrapper(self, function_obj, template,
-                               handle_return=0, is_method=0, kwargs_needed=0,
-                               substdict=None):
-        '''This function is the guts of all functions that generate
-        wrappers for functions, methods and constructors.'''
-        if not substdict: substdict = {}
-
-        info = argtypes.WrapperInfo()
-
-        substdict.setdefault('errorreturn', 'NULL')
-
-        # for methods, we want the leading comma
-        if is_method:
-            info.arglist.append('')
-
-        if function_obj.varargs:
-            raise argtypes.ArgTypeNotFoundError("varargs functions not supported")
-
-        for param in function_obj.params:
-            if param.pdflt != None and '|' not in info.parsestr:
-                info.add_parselist('|', [], [])
-            handler = argtypes.matcher.get(param.ptype)
-            handler.write_param(param.ptype, param.pname, param.pdflt,
-                                param.pnull, info)
-
-        substdict['setreturn'] = ''
-        if handle_return:
-            if function_obj.ret not in ('none', None):
-                substdict['setreturn'] = 'ret = '
-            handler = argtypes.matcher.get(function_obj.ret)
-            handler.write_return(function_obj.ret,
-                                 function_obj.caller_owns_return, info)
-
-        if function_obj.deprecated != None:
-            deprecated = self.deprecated_tmpl % {
-                'deprecationmsg': function_obj.deprecated,
-                'errorreturn': substdict['errorreturn'] }
-        else:
-            deprecated = ''
-
-        # if name isn't set, set it to function_obj.name
-        substdict.setdefault('name', function_obj.name)
-
-        if function_obj.unblock_threads:
-            substdict['begin_allow_threads'] = 'pyg_begin_allow_threads;'
-            substdict['end_allow_threads'] = 'pyg_end_allow_threads;'
-        else:
-            substdict['begin_allow_threads'] = ''
-            substdict['end_allow_threads'] = ''
-
-        if self.objinfo:
-            substdict['typename'] = self.objinfo.c_name
-        substdict.setdefault('cname',  function_obj.c_name)
-        substdict['varlist'] = info.get_varlist()
-        substdict['typecodes'] = info.parsestr
-        substdict['parselist'] = info.get_parselist()
-        substdict['arglist'] = info.get_arglist()
-        substdict['codebefore'] = deprecated + (
-            string.replace(info.get_codebefore(),
-            'return NULL', 'return ' + substdict['errorreturn'])
-            )
-        substdict['codeafter'] = (
-            string.replace(info.get_codeafter(),
-                           'return NULL',
-                           'return ' + substdict['errorreturn']))
-
-        if info.parsestr or kwargs_needed:
-            substdict['parseargs'] = self.parse_tmpl % substdict
-            substdict['extraparams'] = ', PyObject *args, PyObject *kwargs'
-            flags = 'METH_VARARGS|METH_KEYWORDS'
-
-            # prepend the keyword list to the variable list
-            substdict['varlist'] = info.get_kwlist() + substdict['varlist']
-        else:
-            substdict['parseargs'] = ''
-            substdict['extraparams'] = ''
-            flags = 'METH_NOARGS'
-
-        return template % substdict, flags
-
-    def write_constructor(self):
-        initfunc = '0'
-        constructor = self.parser.find_constructor(self.objinfo,self.overrides)
-        if not constructor:
-            return self.write_default_constructor()
-
-        funcname = constructor.c_name
-        try:
-            if self.overrides.is_overriden(funcname):
-                data = self.overrides.override(funcname)
-                self.write_function(funcname, data)
-                self.objinfo.has_new_constructor_api = (
-                    self.objinfo.typecode in
-                    self.overrides.newstyle_constructors)
-            else:
-                # ok, a hack to determine if we should use
-                # new-style constructores :P
-                property_based = getattr(self,
-                                         'write_property_based_constructor',
-                                         None)
-                if property_based:
-                    if (len(constructor.params) == 0 or
-                        isinstance(constructor.params[0],
-                                   definitions.Property)):
-                        # write_property_based_constructor is only
-                        # implemented in GObjectWrapper
-                        return self.write_property_based_constructor(
-                            constructor)
-                    else:
-                        sys.stderr.write(
-                            "Warning: generating old-style constructor for:" +
-                            constructor.c_name + '\n')
-
-                # write constructor from template ...
-                code = self.write_function_wrapper(constructor,
-                    self.constructor_tmpl,
-                    handle_return=0, is_method=0, kwargs_needed=1,
-                    substdict=self.get_initial_constructor_substdict(
-                    constructor))[0]
-                self.fp.write(code)
-            initfunc = '_wrap_' + funcname
-        except argtypes.ArgTypeError, ex:
-            sys.stderr.write('Could not write constructor for %s: %s\n'
-                             % (self.objinfo.c_name, str(ex)))
-
-            initfunc = self.write_noconstructor()
-        return initfunc
-
-    def write_noconstructor(self):
-        # this is a hack ...
-        if not hasattr(self.overrides, 'no_constructor_written'):
-            self.fp.write(self.noconstructor)
-            self.overrides.no_constructor_written = 1
-        initfunc = 'pygobject_no_constructor'
-        return initfunc
-
-    def write_default_constructor(self):
-        return self.write_noconstructor()
-
-    def get_methflags(self, funcname):
-        if self.overrides.wants_kwargs(funcname):
-            flags = 'METH_VARARGS|METH_KEYWORDS'
-        elif self.overrides.wants_noargs(funcname):
-            flags = 'METH_NOARGS'
-        elif self.overrides.wants_onearg(funcname):
-            flags = 'METH_O'
-        else:
-            flags = 'METH_VARARGS'
-        if self.overrides.is_staticmethod(funcname):
-            flags += '|METH_STATIC'
-        elif self.overrides.is_classmethod(funcname):
-            flags += '|METH_CLASS'
-        return flags
-
-    def write_function(self, funcname, data):
-        lineno, filename = self.overrides.getstartline(funcname)
-        self.fp.setline(lineno, filename)
-        self.fp.write(data)
-        self.fp.resetline()
-        self.fp.write('\n\n')
-
-    def _get_class_virtual_substdict(self, meth, cname, parent):
-        substdict = self.get_initial_method_substdict(meth)
-        substdict['virtual'] = meth.name
-        substdict['cname'] = cname
-        substdict['class_cast_macro'] = parent.typecode.replace(
-            '_TYPE_', '_', 1) + "_CLASS"
-        substdict['typecode'] = self.objinfo.typecode
-        substdict['cast'] = string.replace(parent.typecode, '_TYPE_', '_', 1)
-        return substdict
-
-    def write_methods(self):
-        methods = []
-        klass = self.objinfo.c_name
-        # First, get methods from the defs files
-        for meth in self.parser.find_methods(self.objinfo):
-            method_name = meth.c_name
-            if self.overrides.is_ignored(method_name):
-                continue
-            try:
-                if self.overrides.is_overriden(method_name):
-                    if not self.overrides.is_already_included(method_name):
-                        data = self.overrides.override(method_name)
-                        self.write_function(method_name, data)
-
-                    methflags = self.get_methflags(method_name)
-                else:
-                    # write constructor from template ...
-                    code, methflags = self.write_function_wrapper(meth,
-                        self.method_tmpl, handle_return=1, is_method=1,
-                        substdict=self.get_initial_method_substdict(meth))
-                    self.fp.write(code)
-                methods.append(self.methdef_tmpl %
-                               { 'name':  fixname(meth.name),
-                                 'cname': '_wrap_' + method_name,
-                                 'flags': methflags,
-                                 'docstring': meth.docstring })
-                methods_coverage.declare_wrapped()
-            except argtypes.ArgTypeError, ex:
-                methods_coverage.declare_not_wrapped()
-                sys.stderr.write('Could not write method %s.%s: %s\n'
-                                % (klass, meth.name, str(ex)))
-
-        # Now try to see if there are any defined in the override
-        for method_name in self.overrides.get_defines_for(klass):
-            c_name = override.class2cname(klass, method_name)
-            if self.overrides.is_already_included(method_name):
-                continue
-
-            try:
-                data = self.overrides.define(klass, method_name)
-                self.write_function(method_name, data)
-                methflags = self.get_methflags(method_name)
-
-                methods.append(self.methdef_tmpl %
-                               { 'name':  method_name,
-                                 'cname': '_wrap_' + c_name,
-                                 'flags': methflags,
-                                 'docstring': 'NULL' })
-                methods_coverage.declare_wrapped()
-            except argtypes.ArgTypeError, ex:
-                methods_coverage.declare_not_wrapped()
-                sys.stderr.write('Could not write method %s.%s: %s\n'
-                                % (klass, method_name, str(ex)))
-
-        # Add GObject virtual method accessors, for chaining to parent
-        # virtuals from subclasses
-        methods += self.write_virtual_accessors()
-
-        if methods:
-            methoddefs = '_Py%s_methods' % self.objinfo.c_name
-            # write the PyMethodDef structure
-            methods.append('    { NULL, NULL, 0, NULL }\n')
-            self.fp.write('static const PyMethodDef %s[] = {\n' % methoddefs)
-            self.fp.write(string.join(methods, ''))
-            self.fp.write('};\n\n')
-        else:
-            methoddefs = 'NULL'
-        return methoddefs
-
-    def write_virtual_accessors(self):
-        klass = self.objinfo.c_name
-        methods = []
-        for meth in self.parser.find_virtuals(self.objinfo):
-            method_name = self.objinfo.c_name + "__do_" + meth.name
-            if self.overrides.is_ignored(method_name):
-                continue
-            try:
-                if self.overrides.is_overriden(method_name):
-                    if not self.overrides.is_already_included(method_name):
-                        data = self.overrides.override(method_name)
-                        self.write_function(method_name, data)
-                    methflags = self.get_methflags(method_name)
-                else:
-                    # temporarily add a 'self' parameter as first argument
-                    meth.params.insert(0, definitions.Parameter(
-                        ptype=(self.objinfo.c_name + '*'),
-                        pname='self', pdflt=None, pnull=None))
-                    try:
-                        # write method from template ...
-                        code, methflags = self.write_function_wrapper(
-                            meth, self.virtual_accessor_tmpl,
-                            handle_return=True, is_method=False,
-                            substdict=self._get_class_virtual_substdict(
-                            meth, method_name, self.objinfo))
-                        self.fp.write(code)
-                    finally:
-                        del meth.params[0]
-                methods.append(self.methdef_tmpl %
-                               { 'name':  "do_" + fixname(meth.name),
-                                 'cname': '_wrap_' + method_name,
-                                 'flags': methflags + '|METH_CLASS',
-                                 'docstring': 'NULL'})
-                vaccessors_coverage.declare_wrapped()
-            except argtypes.ArgTypeError, ex:
-                vaccessors_coverage.declare_not_wrapped()
-                sys.stderr.write(
-                    'Could not write virtual accessor method %s.%s: %s\n'
-                    % (klass, meth.name, str(ex)))
-        return methods
-
-    def write_virtuals(self):
-        '''
-        Write _wrap_FooBar__proxy_do_zbr() reverse wrapers for
-        GObject virtuals
-        '''
-        klass = self.objinfo.c_name
-        virtuals = []
-        for meth in self.parser.find_virtuals(self.objinfo):
-            method_name = self.objinfo.c_name + "__proxy_do_" + meth.name
-            if self.overrides.is_ignored(method_name):
-                continue
-            try:
-                if self.overrides.is_overriden(method_name):
-                    if not self.overrides.is_already_included(method_name):
-                        data = self.overrides.override(method_name)
-                        self.write_function(method_name, data)
-                else:
-                    # write virtual proxy ...
-                    ret, props = argtypes.matcher.get_reverse_ret(meth.ret)
-                    wrapper = reversewrapper.ReverseWrapper(
-                        '_wrap_' + method_name, is_static=True)
-                    wrapper.set_return_type(ret(wrapper, **props))
-                    wrapper.add_parameter(reversewrapper.PyGObjectMethodParam(
-                        wrapper, "self", method_name="do_" + meth.name,
-                        c_type=(klass + ' *')))
-                    for param in meth.params:
-                        handler, props = argtypes.matcher.get_reverse(
-                            param.ptype)
-                        props["direction"] = param.pdir
-                        props["nullok"] = param.pnull
-                        wrapper.add_parameter(handler(wrapper,
-                                                      param.pname, **props))
-                    buf = reversewrapper.MemoryCodeSink()
-                    wrapper.generate(buf)
-                    self.fp.write(buf.flush())
-                virtuals.append((fixname(meth.name), '_wrap_' + method_name))
-                vproxies_coverage.declare_wrapped()
-            except argtypes.ArgTypeError, ex:
-                vproxies_coverage.declare_not_wrapped()
-                virtuals.append((fixname(meth.name), None))
-                sys.stderr.write('Could not write virtual proxy %s.%s: %s\n'
-                                % (klass, meth.name, str(ex)))
-        if virtuals:
-            # Write a 'pygtk class init' function for this object,
-            # except when the object type is explicitly ignored (like
-            # GtkPlug and GtkSocket on win32).
-            if self.overrides.is_ignored(self.objinfo.typecode):
-                return
-            class_cast_macro = self.objinfo.typecode.replace(
-                '_TYPE_', '_', 1) + "_CLASS"
-            cast_macro = self.objinfo.typecode.replace('_TYPE_', '_', 1)
-            funcname = "__%s_class_init" % klass
-            self.objinfo.class_init_func = funcname
-            have_implemented_virtuals = not not [True
-                                                 for name, cname in virtuals
-                                                     if cname is not None]
-            self.fp.write(
-            ('\nstatic int\n'
-             '%(funcname)s(gpointer gclass, PyTypeObject *pyclass)\n'
-             '{\n') % vars())
-
-            if have_implemented_virtuals:
-                self.fp.write('    PyObject *o;\n')
-                self.fp.write(
-                    '    %(klass)sClass *klass = '
-                    '%(class_cast_macro)s(gclass);\n'
-                    '    PyObject *gsignals = '
-                    'PyDict_GetItemString(pyclass->tp_dict, "__gsignals__");\n'
-                    % vars())
-
-            for name, cname in virtuals:
-                do_name = 'do_' + name
-                if cname is None:
-                    self.fp.write('\n    /* overriding %(do_name)s '
-                                  'is currently not supported */\n' % vars())
-                else:
-                    self.fp.write('''
-    o = PyObject_GetAttrString((PyObject *) pyclass, "%(do_name)s");
-    if (o == NULL)
-        PyErr_Clear();
-    else {
-        if (!PyObject_TypeCheck(o, &PyCFunction_Type)
-            && !(gsignals && PyDict_GetItemString(gsignals, "%(name)s")))
-            klass->%(name)s = %(cname)s;
-        Py_DECREF(o);
-    }
-''' % vars())
-            self.fp.write('    return 0;\n}\n')
-
-    def write_getsets(self):
-        lower_name = self.get_lower_name()
-        getsets_name = lower_name + '_getsets'
-        getterprefix = '_wrap_' + lower_name + '__get_'
-        setterprefix = '_wrap_' + lower_name + '__set_'
-
-        # no overrides for the whole function.  If no fields,
-        # don't write a func
-        if not self.objinfo.fields:
-            return '0'
-        getsets = []
-        for ftype, cfname in self.objinfo.fields:
-            fname = cfname.replace('.', '_')
-            gettername = '0'
-            settername = '0'
-            attrname = self.objinfo.c_name + '.' + fname
-            if self.overrides.attr_is_overriden(attrname):
-                code = self.overrides.attr_override(attrname)
-                self.write_function(attrname, code)
-                if string.find(code, getterprefix + fname) >= 0:
-                    gettername = getterprefix + fname
-                if string.find(code, setterprefix + fname) >= 0:
-                    settername = setterprefix + fname
-            if gettername == '0':
-                try:
-                    funcname = getterprefix + fname
-                    info = argtypes.WrapperInfo()
-                    handler = argtypes.matcher.get(ftype)
-                    # for attributes, we don't own the "return value"
-                    handler.write_return(ftype, 0, info)
-                    self.fp.write(self.getter_tmpl %
-                                  { 'funcname': funcname,
-                                    'varlist': info.varlist,
-                                    'field': self.get_field_accessor(cfname),
-                                    'codeafter': info.get_codeafter() })
-                    gettername = funcname
-                except argtypes.ArgTypeError, ex:
-                    sys.stderr.write(
-                        "Could not write getter for %s.%s: %s\n"
-                        % (self.objinfo.c_name, fname, str(ex)))
-            if gettername != '0' or settername != '0':
-                getsets.append('    { "%s", (getter)%s, (setter)%s },\n' %
-                               (fixname(fname), gettername, settername))
-
-        if not getsets:
-            return '0'
-        self.fp.write('static const PyGetSetDef %s[] = {\n' % getsets_name)
-        for getset in getsets:
-            self.fp.write(getset)
-        self.fp.write('    { NULL, (getter)0, (setter)0 },\n')
-        self.fp.write('};\n\n')
-
-        return getsets_name
-
-    def _write_get_symbol_names(self, writer, functions):
-        self.fp.write("""static PyObject *
-_wrap__get_symbol_names(PyObject *self)
-{
-    PyObject *pylist = PyList_New(0);
-
-""")
-        for obj, bases in writer.get_classes():
-            self.fp.write('    PyList_Append(pylist, '
-                          'PyString_FromString("%s"));\n' % (obj.name))
-
-        for name, cname, flags, docstring in functions:
-            self.fp.write('    PyList_Append(pylist, '
-                          'PyString_FromString("%s"));\n' % (name))
-
-        for enum in writer.get_enums():
-            self.fp.write('    PyList_Append(pylist, '
-                          'PyString_FromString("%s"));\n' % (enum.name))
-            for nick, value in enum.values:
-                name = value[len(self.overrides.modulename)+1:]
-                self.fp.write('    PyList_Append(pylist, '
-                              'PyString_FromString("%s"));\n' % (name))
-
-        self.fp.write("    return pylist;\n}\n\n");
-
-    def _write_get_symbol(self, writer, functions):
-        self.fp.write("""static PyObject *
-_wrap__get_symbol(PyObject *self, PyObject *args)
-{
-    PyObject *d;
-    char *name;
-    static PyObject *modulename = NULL;
-    static PyObject *module = NULL;
-    static char *strip_prefix = "%s";
-
-    if (!PyArg_ParseTuple(args, "Os", &d, &name))
-        return NULL;
-
-    if (!modulename)
-       modulename = PyString_FromString("%s");
-
-    if (!module)
-       module = PyDict_GetItemString(d, "__module__");
-
-""" % (self.overrides.modulename.upper() + '_',
-       self.overrides.modulename))
-
-        first = True
-        # Classes / GObjects
-        for obj, bases in writer.get_classes():
-            if first:
-                self.fp.write('    if (!strcmp(name, "%s")) {\n' % obj.name)
-                first = False
-            else:
-                self.fp.write('    } else if (!strcmp(name, "%s")) {\n' % obj.name)
-            self.fp.write(
-                '       return (PyObject*)pygobject_lookup_class(%s);\n' %
-                obj.typecode)
-        self.fp.write('    }\n')
-
-        # Functions
-        for name, cname, flags, docstring in functions:
-            self.fp.write('    else if (!strcmp(name, "%s")) {\n' % name)
-            self.fp.write('        static PyMethodDef ml = { '
-                          '"%s", (PyCFunction)%s, %s, "%s"};\n' % (
-                name, cname, flags, docstring))
-            self.fp.write('        return PyCFunction_NewEx(&ml, NULL, modulename);\n')
-            self.fp.write('    }\n')
-
-        # Enums
-        def write_enum(enum, returnobj=False):
-            if returnobj:
-                ret = 'return '
-            else:
-                ret = ''
-            if enum.deftype == 'enum':
-                self.fp.write(
-                    '        %spyg_enum_add(module, "%s", strip_prefix, %s);\n'
-                    % (ret, enum.name, enum.typecode))
-            else:
-                self.fp.write(
-                    '    %spyg_flags_add(module, "%s", strip_prefix, %s);\n'
-                    % (ret, enum.name, enum.typecode))
-
-        strip_len = len(self.overrides.modulename)+1 # GTK_
-        for enum in writer.get_enums():
-            # XXX: Implement without typecodes
-            self.fp.write('    else if (!strcmp(name, "%s")) {\n' % enum.name)
-            write_enum(enum, returnobj=True)
-            self.fp.write('    }\n')
-
-            for nick, value in enum.values:
-                value = value[strip_len:]
-                self.fp.write('    else if (!strcmp(name, "%s")) {\n' % value)
-                write_enum(enum)
-                self.fp.write('        return PyObject_GetAttrString(module, "%s");\n' %
-                              value)
-                self.fp.write('    }\n')
-
-        self.fp.write('    return Py_None;\n}\n\n');
-
-    def _write_function_bodies(self):
-        functions = []
-        # First, get methods from the defs files
-        for func in self.parser.find_functions():
-            funcname = func.c_name
-            if self.overrides.is_ignored(funcname):
-                continue
-            try:
-                if self.overrides.is_overriden(funcname):
-                    data = self.overrides.override(funcname)
-                    self.write_function(funcname, data)
-
-                    methflags = self.get_methflags(funcname)
-                else:
-                    # write constructor from template ...
-                    code, methflags = self.write_function_wrapper(func,
-                        self.function_tmpl, handle_return=1, is_method=0)
-                    self.fp.write(code)
-                functions.append((func.name, '_wrap_' + funcname,
-                                  methflags, func.docstring))
-                functions_coverage.declare_wrapped()
-            except argtypes.ArgTypeError, ex:
-                functions_coverage.declare_not_wrapped()
-                sys.stderr.write('Could not write function %s: %s\n'
-                                 % (func.name, str(ex)))
-
-        # Now try to see if there are any defined in the override
-        for funcname in self.overrides.get_functions():
-            try:
-                data = self.overrides.function(funcname)
-                self.write_function(funcname, data)
-                methflags = self.get_methflags(funcname)
-                functions.append((funcname, '_wrap_' + funcname,
-                                  methflags, 'NULL'))
-                functions_coverage.declare_wrapped()
-            except argtypes.ArgTypeError, ex:
-                functions_coverage.declare_not_wrapped()
-                sys.stderr.write('Could not write function %s: %s\n'
-                                 % (funcname, str(ex)))
-        return functions
-
-    def write_functions(self, writer, prefix):
-        self.fp.write('\n/* ----------- functions ----------- */\n\n')
-        functions = []
-        func_infos = self._write_function_bodies()
-
-        # If we have a dynamic namespace, write symbol and attribute getter
-        if self.overrides.dynamicnamespace:
-            self._write_get_symbol_names(writer, func_infos)
-            self._write_get_symbol(writer, func_infos)
-            for obj, bases in writer.get_classes():
-                self.fp.write("""static PyTypeObject *
-%s_register_type(const gchar *name, PyObject *unused)
-{
-    PyObject *m = PyImport_ImportModule("gtk");
-    PyObject *d = PyModule_GetDict(m);
-""" % obj.c_name)
-                writer.write_class(obj, bases, indent=1)
-                self.fp.write(
-                    '    return (%s)PyDict_GetItemString(d, "%s");\n' % (
-                    'PyTypeObject*', obj.name))
-                self.fp.write("}\n")
-
-            functions.append('    { "_get_symbol_names", '
-                             '(PyCFunction)_wrap__get_symbol_names, '
-                             'METH_NOARGS, NULL },\n')
-            functions.append('    { "_get_symbol", '
-                             '(PyCFunction)_wrap__get_symbol, '
-                             'METH_VARARGS, NULL },\n')
-        else:
-            for name, cname, flags, docstring in func_infos:
-                functions.append(self.methdef_tmpl % dict(name=name,
-                                                          cname=cname,
-                                                          flags=flags,
-                                                          docstring=docstring))
-
-        # write the PyMethodDef structure
-        functions.append('    { NULL, NULL, 0, NULL }\n')
-
-        self.fp.write('const PyMethodDef ' + prefix + '_functions[] = {\n')
-        self.fp.write(string.join(functions, ''))
-        self.fp.write('};\n\n')
-
-class GObjectWrapper(Wrapper):
-    constructor_tmpl = (
-        'static int\n'
-        '_wrap_%(cname)s(PyGObject *self%(extraparams)s)\n'
-        '{\n'
-        '%(varlist)s'
-        '%(parseargs)s'
-        '%(codebefore)s'
-        '    self->obj = (GObject *)%(cname)s(%(arglist)s);\n'
-        '%(codeafter)s\n'
-        '    if (!self->obj) {\n'
-        '        PyErr_SetString(PyExc_RuntimeError, '
-        '"could not create %(typename)s object");\n'
-        '        return -1;\n'
-        '    }\n'
-        '%(aftercreate)s'
-        '    pygobject_register_wrapper((PyObject *)self);\n'
-        '    return 0;\n'
-        '}\n\n'
-        )
-
-    method_tmpl = (
-        'static PyObject *\n'
-        '_wrap_%(cname)s(PyGObject *self%(extraparams)s)\n'
-        '{\n'
-        '%(varlist)s'
-        '%(parseargs)s'
-        '%(codebefore)s'
-        '    %(begin_allow_threads)s\n'
-        '    %(setreturn)s%(cname)s(%(cast)s(self->obj)%(arglist)s);\n'
-        '    %(end_allow_threads)s\n'
-        '%(codeafter)s\n'
-        '}\n\n'
-        )
-    def __init__(self, parser, objinfo, overrides, fp=FileOutput(sys.stdout)):
-        Wrapper.__init__(self, parser, objinfo, overrides, fp)
-        if self.objinfo:
-            self.castmacro = string.replace(self.objinfo.typecode,
-                                            '_TYPE_', '_', 1)
-
-    def get_initial_class_substdict(self):
-        return { 'tp_basicsize'      : 'PyGObject',
-                 'tp_weaklistoffset' : 'offsetof(PyGObject, weakreflist)',
-                 'tp_dictoffset'     : 'offsetof(PyGObject, inst_dict)' }
-
-    def get_field_accessor(self, fieldname):
-        castmacro = string.replace(self.objinfo.typecode, '_TYPE_', '_', 1)
-        return '%s(pygobject_get(self))->%s' % (castmacro, fieldname)
-
-    def get_initial_constructor_substdict(self, constructor):
-        substdict = Wrapper.get_initial_constructor_substdict(self,
-                                                              constructor)
-        if not constructor.caller_owns_return:
-            substdict['aftercreate'] = "    g_object_ref(self->obj);\n"
-        else:
-            substdict['aftercreate'] = ''
-        return substdict
-
-    def get_initial_method_substdict(self, method):
-        substdict = Wrapper.get_initial_method_substdict(self, method)
-        substdict['cast'] = string.replace(self.objinfo.typecode,
-                                           '_TYPE_', '_', 1)
-        return substdict
-
-    def write_default_constructor(self):
-        try:
-            parent = self.parser.find_object(self.objinfo.parent)
-        except ValueError:
-            parent = None
-        if parent is not None:
-            ## just like the constructor is inheritted, we should
-            # inherit the new API compatibility flag
-            self.objinfo.has_new_constructor_api = (
-                parent.has_new_constructor_api)
-        elif self.objinfo.parent == 'GObject':
-            self.objinfo.has_new_constructor_api = True
-        return '0'
-
-    def write_property_based_constructor(self, constructor):
-        self.objinfo.has_new_constructor_api = True
-        out = self.fp
-        print >> out, "static int"
-        print >> out, '_wrap_%s(PyGObject *self, PyObject *args,' \
-              ' PyObject *kwargs)\n{' % constructor.c_name
-        if constructor.params:
-            s = "    GType obj_type = pyg_type_from_object((PyObject *) self);"
-            print >> out, s
-
-        def py_str_list_to_c(arg):
-            if arg:
-                return "{" + ", ".join(
-                    map(lambda s: '"' + s + '"', arg)) + ", NULL }"
-            else:
-                return "{ NULL }"
-
-        classname = '%s.%s' % (self.overrides.modulename,
-                               self.objinfo.name)
-
-        if constructor.params:
-            mandatory_arguments = [param for param in constructor.params
-                                             if not param.optional]
-            optional_arguments = [param for param in constructor.params
-                                            if param.optional]
-            arg_names = py_str_list_to_c(
-            [param.argname
-             for param in mandatory_arguments + optional_arguments])
-
-            prop_names = py_str_list_to_c(
-            [param.pname
-             for param in mandatory_arguments + optional_arguments])
-
-            print >> out, "    GParameter params[%i];" % \
-                  len(constructor.params)
-            print >> out, "    PyObject *parsed_args[%i] = {NULL, };" % \
-                  len(constructor.params)
-            print >> out, "    char *arg_names[] = %s;" % arg_names
-            print >> out, "    char *prop_names[] = %s;" % prop_names
-            print >> out, "    guint nparams, i;"
-            print >> out
-            if constructor.deprecated is not None:
-                out.write(
-                    '    if (PyErr_Warn(PyExc_DeprecationWarning, '
-                    '"%s") < 0)\n' %
-                    constructor.deprecated)
-                print >> out, '        return -1;'
-                print >> out
-            out.write("    if (!PyArg_ParseTupleAndKeywords(args, kwargs, ")
-            template = '"'
-            if mandatory_arguments:
-                template += "O"*len(mandatory_arguments)
-            if optional_arguments:
-                template += "|" + "O"*len(optional_arguments)
-            template += ':%s.__init__"' % classname
-            print >> out, template, ", arg_names",
-            for i in range(len(constructor.params)):
-                print >> out, ", &parsed_args[%i]" % i,
-
-            out.write(
-                "))\n"
-                "        return -1;\n"
-                "\n"
-                "    memset(params, 0, sizeof(GParameter)*%i);\n"
-                "    if (!pyg_parse_constructor_args(obj_type, arg_names,\n"
-                "                                    prop_names, params, \n"
-                "                                    &nparams, parsed_args))\n"
-                "        return -1;\n"
-                "    pygobject_constructv(self, nparams, params);\n"
-                "    for (i = 0; i < nparams; ++i)\n"
-                "        g_value_unset(&params[i].value);\n"
-                % len(constructor.params))
-        else:
-            out.write(
-                "    static char* kwlist[] = { NULL };\n"
-                "\n")
-
-            if constructor.deprecated is not None:
-                out.write(
-                    '    if (PyErr_Warn(PyExc_DeprecationWarning, "%s") < 0)\n'
-                    '        return -1;\n'
-                    '\n' % constructor.deprecated)
-
-            out.write(
-                '    if (!PyArg_ParseTupleAndKeywords(args, kwargs,\n'
-                '                                     ":%s.__init__",\n'
-                '                                     kwlist))\n'
-                '        return -1;\n'
-                '\n'
-                '    pygobject_constructv(self, 0, NULL);\n' % classname)
-        out.write(
-            '    if (!self->obj) {\n'
-            '        PyErr_SetString(\n'
-            '            PyExc_RuntimeError, \n'
-            '            "could not create %s object");\n'
-            '        return -1;\n'
-            '    }\n' % classname)
-
-        if not constructor.caller_owns_return:
-            print >> out, "    g_object_ref(self->obj);\n"
-
-        out.write(
-            '    return 0;\n'
-            '}\n\n')
-
-        return "_wrap_%s" % constructor.c_name
-
-
-class GInterfaceWrapper(GObjectWrapper):
-    virtual_accessor_tmpl = (
-        'static PyObject *\n'
-        '_wrap_%(cname)s(PyObject *cls%(extraparams)s)\n'
-        '{\n'
-        '    %(vtable)s *iface;\n'
-        '%(varlist)s'
-        '%(parseargs)s'
-        '%(codebefore)s'
-        '    iface = g_type_interface_peek('
-        'g_type_class_peek(pyg_type_from_object(cls)), %(typecode)s);\n'
-        '    if (iface->%(virtual)s)\n'
-        '        %(setreturn)siface->%(virtual)s(%(arglist)s);\n'
-        '    else {\n'
-        '        PyErr_SetString(PyExc_NotImplementedError, '
-        '"interface method %(name)s not implemented");\n'
-        '        return NULL;\n'
-        '    }\n'
-        '%(codeafter)s\n'
-        '}\n\n'
-        )
-
-    def get_initial_class_substdict(self):
-        return { 'tp_basicsize'      : 'PyObject',
-                 'tp_weaklistoffset' : '0',
-                 'tp_dictoffset'     : '0'}
-
-    def write_constructor(self):
-        # interfaces have no constructors ...
-        return '0'
-    def write_getsets(self):
-        # interfaces have no fields ...
-        return '0'
-
-    def _get_class_virtual_substdict(self, meth, cname, parent):
-        substdict = self.get_initial_method_substdict(meth)
-        substdict['virtual'] = meth.name
-        substdict['cname'] = cname
-        substdict['typecode'] = self.objinfo.typecode
-        substdict['vtable'] = self.objinfo.vtable
-        return substdict
-
-    def write_virtuals(self):
-        ## Now write reverse method wrappers, which let python code
-        ## implement interface methods.
-        # First, get methods from the defs files
-        klass = self.objinfo.c_name
-        proxies = []
-        for meth in self.parser.find_virtuals(self.objinfo):
-            method_name = self.objinfo.c_name + "__proxy_do_" + meth.name
-            if self.overrides.is_ignored(method_name):
-                continue
-            try:
-                if self.overrides.is_overriden(method_name):
-                    if not self.overrides.is_already_included(method_name):
-                        data = self.overrides.override(method_name)
-                        self.write_function(method_name, data)
-                else:
-                    # write proxy ...
-                    ret, props = argtypes.matcher.get_reverse_ret(meth.ret)
-                    wrapper = reversewrapper.ReverseWrapper(
-                        '_wrap_' + method_name, is_static=True)
-                    wrapper.set_return_type(ret(wrapper, **props))
-                    wrapper.add_parameter(reversewrapper.PyGObjectMethodParam(
-                        wrapper, "self", method_name="do_" + meth.name,
-                        c_type=(klass + ' *')))
-                    for param in meth.params:
-                        handler, props = argtypes.matcher.get_reverse(
-                            param.ptype)
-                        props["direction"] = param.pdir
-                        props["nullok"] = param.pnull
-                        wrapper.add_parameter(
-                            handler(wrapper, param.pname, **props))
-                    buf = reversewrapper.MemoryCodeSink()
-                    wrapper.generate(buf)
-                    self.fp.write(buf.flush())
-                proxies.append((fixname(meth.name), '_wrap_' + method_name))
-                iproxies_coverage.declare_wrapped()
-            except argtypes.ArgTypeError, ex:
-                iproxies_coverage.declare_not_wrapped()
-                proxies.append((fixname(meth.name), None))
-                sys.stderr.write('Could not write interface proxy %s.%s: %s\n'
-                                % (klass, meth.name, str(ex)))
-
-        if not proxies or not [cname for name, cname in proxies if cname]:
-            return
-
-        ## Write an interface init function for this object
-        funcname = "__%s__interface_init" % klass
-        vtable = self.objinfo.vtable
-        self.fp.write(
-            '\nstatic void\n'
-            '%(funcname)s(%(vtable)s *iface, PyTypeObject *pytype)\n'
-            '{\n'
-            '    %(vtable)s *parent_iface = '
-            'g_type_interface_peek_parent(iface);\n'
-            '    PyObject *py_method;\n'
-            '\n'
-            % vars())
-
-        for name, cname in proxies:
-            do_name = 'do_' + name
-            if cname is None:
-                continue
-
-            self.fp.write((
-                '    py_method = pytype? PyObject_GetAttrString('
-                '(PyObject *) pytype, "%(do_name)s") : NULL;\n'
-                '    if (py_method && !PyObject_TypeCheck(py_method, '
-                '&PyCFunction_Type)) {\n'
-                '        iface->%(name)s = %(cname)s;\n'
-                '    } else {\n'
-                '        PyErr_Clear();\n'
-                '        if (parent_iface) {\n'
-                '            iface->%(name)s = parent_iface->%(name)s;\n'
-                '        }\n'
-                '    Py_XDECREF(py_method);\n'
-                '    }\n'
-                ) % vars())
-        self.fp.write('}\n\n')
-        interface_info = "__%s__iinfo" % klass
-        self.fp.write('''
-static const GInterfaceInfo %s = {
-    (GInterfaceInitFunc) %s,
-    NULL,
-    NULL
-};
-''' % (interface_info, funcname))
-        self.objinfo.interface_info = interface_info
-
-class GBoxedWrapper(Wrapper):
-    constructor_tmpl = (
-        'static int\n'
-        '_wrap_%(cname)s(PyGBoxed *self%(extraparams)s)\n'
-        '{\n'
-        '%(varlist)s'
-        '%(parseargs)s'
-        '%(codebefore)s'
-        '    self->gtype = %(typecode)s;\n'
-        '    self->free_on_dealloc = FALSE;\n'
-        '    self->boxed = %(cname)s(%(arglist)s);\n'
-        '%(codeafter)s\n'
-        '    if (!self->boxed) {\n'
-        '        PyErr_SetString(PyExc_RuntimeError, '
-        '"could not create %(typename)s object");\n'
-        '        return -1;\n'
-        '    }\n'
-        '    self->free_on_dealloc = TRUE;\n'
-        '    return 0;\n'
-        '}\n\n'
-        )
-
-    method_tmpl = (
-        'static PyObject *\n'
-        '_wrap_%(cname)s(PyObject *self%(extraparams)s)\n'
-        '{\n'
-        '%(varlist)s'
-        '%(parseargs)s'
-        '%(codebefore)s'
-        '    %(begin_allow_threads)s\n'
-        '    %(setreturn)s%(cname)s(pyg_boxed_get(self, '
-        '%(typename)s)%(arglist)s);\n'
-        '    %(end_allow_threads)s\n'
-        '%(codeafter)s\n'
-        '}\n\n'
-        )
-
-    def get_initial_class_substdict(self):
-        return { 'tp_basicsize'      : 'PyGBoxed',
-                 'tp_weaklistoffset' : '0',
-                 'tp_dictoffset'     : '0' }
-
-    def get_field_accessor(self, fieldname):
-        return 'pyg_boxed_get(self, %s)->%s' % (self.objinfo.c_name, fieldname)
-
-    def get_initial_constructor_substdict(self, constructor):
-        substdict = Wrapper.get_initial_constructor_substdict(
-            self, constructor)
-        substdict['typecode'] = self.objinfo.typecode
-        return substdict
-
-class GPointerWrapper(GBoxedWrapper):
-    constructor_tmpl = (
-        'static int\n'
-        '_wrap_%(cname)s(PyGPointer *self%(extraparams)s)\n'
-        '{\n'
-        '%(varlist)s'
-        '%(parseargs)s'
-        '%(codebefore)s'
-        '    self->gtype = %(typecode)s;\n'
-        '    self->pointer = %(cname)s(%(arglist)s);\n'
-        '%(codeafter)s\n'
-        '    if (!self->pointer) {\n'
-        '        PyErr_SetString(PyExc_RuntimeError, '
-        '"could not create %(typename)s object");\n'
-        '        return -1;\n'
-        '    }\n'
-        '    return 0;\n'
-        '}\n\n'
-        )
-
-    method_tmpl = (
-        'static PyObject *\n'
-        '_wrap_%(cname)s(PyObject *self%(extraparams)s)\n'
-        '{\n'
-        '%(varlist)s'
-        '%(parseargs)s'
-        '%(codebefore)s'
-        '    %(setreturn)s%(cname)s(pyg_pointer_get(self, '
-        '%(typename)s)%(arglist)s);\n'
-        '%(codeafter)s\n'
-        '}\n\n'
-        )
-
-    def get_initial_class_substdict(self):
-        return { 'tp_basicsize'      : 'PyGPointer',
-                 'tp_weaklistoffset' : '0',
-                 'tp_dictoffset'     : '0' }
-
-    def get_field_accessor(self, fieldname):
-        return 'pyg_pointer_get(self, %s)->%s' % (self.objinfo.c_name,
-                                                  fieldname)
-
-    def get_initial_constructor_substdict(self, constructor):
-        substdict = Wrapper.get_initial_constructor_substdict(
-            self, constructor)
-        substdict['typecode'] = self.objinfo.typecode
-        return substdict
-
-class SourceWriter:
-    def __init__(self, parser, overrides, prefix, fp=FileOutput(sys.stdout)):
-        self.parser = parser
-        self.overrides = overrides
-        self.prefix = prefix
-        self.fp = fp
-
-    def write(self, py_ssize_t_clean=False):
-        argtypes.py_ssize_t_clean = py_ssize_t_clean
-
-        self.write_headers(py_ssize_t_clean)
-        self.write_imports()
-        self.write_type_declarations()
-        self.write_body()
-        self.write_classes()
-
-        wrapper = Wrapper(self.parser, None, self.overrides, self.fp)
-        wrapper.write_functions(self, self.prefix)
-
-        if not self.overrides.dynamicnamespace:
-            self.write_enums()
-        self.write_extension_init()
-        self.write_registers()
-        
-        argtypes.py_ssize_t_clean = False
-
-    def write_headers(self, py_ssize_t_clean):
-        self.fp.write('/* -- THIS FILE IS GENERATED - DO NOT EDIT */')
-        self.fp.write('/* -*- Mode: C; c-basic-offset: 4 -*- */\n\n')
-        if py_ssize_t_clean:
-            self.fp.write('#define PY_SSIZE_T_CLEAN\n')
-        self.fp.write('#include <Python.h>\n\n\n')
-        if py_ssize_t_clean:
-            self.fp.write('''
-
-#if PY_VERSION_HEX < 0x02050000
-typedef int Py_ssize_t;
-#define PY_SSIZE_T_MAX INT_MAX
-#define PY_SSIZE_T_MIN INT_MIN
-typedef inquiry lenfunc;
-typedef intargfunc ssizeargfunc;
-typedef intobjargproc ssizeobjargproc;
-#endif
-
-''')
-        self.fp.write(self.overrides.get_headers())
-        self.fp.resetline()
-        self.fp.write('\n\n')
-
-    def write_imports(self):
-        self.fp.write('/* ---------- types from other modules ---------- */\n')
-        for module, pyname, cname, importing_for in self.overrides.get_imports():
-            if importing_for is None or is_registered_object(importing_for):
-                self.fp.write('static PyTypeObject *_%s;\n' % cname)
-                self.fp.write('#define %s (*_%s)\n' % (cname, cname))
-        self.fp.write('\n\n')
-
-    def write_type_declarations(self):
-        #todo use 'static' if used only in one file
-        self.fp.write('/* ---------- forward type declarations ---------- */\n')
-        for obj in self.parser.boxes:
-            if not self.overrides.is_type_ignored(obj.c_name):
-                self.fp.write('PyTypeObject G_GNUC_INTERNAL Py' + obj.c_name + '_Type;\n')
-        for obj in self.parser.objects:
-            if not self.overrides.is_type_ignored(obj.c_name):
-                self.fp.write('PyTypeObject G_GNUC_INTERNAL Py' + obj.c_name + '_Type;\n')
-        for interface in self.parser.interfaces:
-            if not self.overrides.is_type_ignored(interface.c_name):
-                self.fp.write('PyTypeObject G_GNUC_INTERNAL Py' + interface.c_name + '_Type;\n')
-        self.fp.write('\n')
-
-    def write_body(self):
-        self.fp.write(self.overrides.get_body())
-        self.fp.resetline()
-        self.fp.write('\n\n')
-
-    def _sort_parent_children(self, objects):
-        objects = list(objects)
-        modified = True
-        while modified:
-            modified = False
-            parent_index = None
-            child_index = None
-            for i, obj in enumerate(objects):
-                if obj.parent == 'GObject':
-                    continue
-                if obj.parent not in [info.c_name for info in objects[:i]]:
-                    for j, info in enumerate(objects[i+1:]):
-                        if info.c_name == obj.parent:
-                            parent_index = i + 1 + j
-                            child_index = i
-                            break
-                    else:
-                        continue
-                    break
-            if child_index is not None and parent_index is not None:
-                if child_index != parent_index:
-                    objects.insert(child_index, objects.pop(parent_index))
-                    modified = True
-        return objects
-
-    def write_classes(self):
-        ## Sort the objects, so that we generate code for the parent types
-        ## before their children.
-        objects = self._sort_parent_children(self.parser.objects)
-
-        for klass, items in ((GBoxedWrapper, self.parser.boxes),
-                             (GPointerWrapper, self.parser.pointers),
-                             (GObjectWrapper, objects),
-                             (GInterfaceWrapper, self.parser.interfaces)):
-            for item in items:
-                instance = klass(self.parser, item, self.overrides, self.fp)
-                instance.write_class()
-                self.fp.write('\n')
-
-    def get_enums(self):
-        enums = []
-        for enum in self.parser.enums:
-            if self.overrides.is_type_ignored(enum.c_name):
-                continue
-            enums.append(enum)
-        return enums
-
-    def write_enums(self):
-        if not self.parser.enums:
-            return
-
-        self.fp.write('\n/* ----------- enums and flags ----------- */\n\n')
-        self.fp.write(
-            'void\n' + self.prefix +
-            '_add_constants(PyObject *module, const gchar *strip_prefix)\n{\n')
-
-        self.fp.write(
-            '#ifdef VERSION\n'
-            '    PyModule_AddStringConstant(module, "__version__", VERSION);\n'
-            '#endif\n')
-
-        for enum in self.get_enums():
-            if enum.typecode is None:
-                for nick, value in enum.values:
-                    self.fp.write(
-                        '    PyModule_AddIntConstant(module, '
-                        '(char *) pyg_constant_strip_prefix("%s", strip_prefix), %s);\n'
-                        % (value, value))
-            else:
-                if enum.deftype == 'enum':
-                    self.fp.write('  pyg_enum_add(module, "%s", strip_prefix, %s);\n'
-                                  % (enum.name, enum.typecode))
-                else:
-                    self.fp.write('  pyg_flags_add(module, "%s", strip_prefix, %s);\n'
-                                  % (enum.name, enum.typecode))
-
-        self.fp.write('\n')
-        self.fp.write('  if (PyErr_Occurred())\n')
-        self.fp.write('    PyErr_Print();\n')
-        self.fp.write('}\n\n')
-
-    def write_object_imports(self, retval=''):
-        imports = self.overrides.get_imports()[:]
-        if not imports:
-            return
-
-        bymod = {}
-        for module, pyname, cname, importing_for in imports:
-            if importing_for is None or is_registered_object(importing_for):
-                bymod.setdefault(module, []).append((pyname, cname))
-        self.fp.write('    PyObject *module;\n\n')
-        for module in bymod:
-            self.fp.write(
-                '    if ((module = PyImport_ImportModule("%s")) != NULL) {\n'
-                % module)
-            #self.fp.write(
-            #    '        PyObject *moddict = PyModule_GetDict(module);\n\n')
-            for pyname, cname in bymod[module]:
-                #self.fp.write(
-                #    '        _%s = (PyTypeObject *)PyDict_GetItemString('
-                #    'moddict, "%s");\n' % (cname, pyname))
-                self.fp.write(
-                    '        _%s = (PyTypeObject *)PyObject_GetAttrString('
-                    'module, "%s");\n' % (cname, pyname))
-                self.fp.write('        if (_%s == NULL) {\n' % cname)
-                self.fp.write('            PyErr_SetString(PyExc_ImportError,\n')
-                self.fp.write('                "cannot import name %s from %s");\n'
-                         % (pyname, module))
-                self.fp.write('            return %s;\n' % retval)
-                self.fp.write('        }\n')
-            self.fp.write('    } else {\n')
-            self.fp.write('        PyErr_SetString(PyExc_ImportError,\n')
-            self.fp.write('            "could not import %s");\n' % module)
-            self.fp.write('        return %s;\n' % retval)
-            self.fp.write('    }\n')
-        self.fp.write('\n')
-
-    def write_extension_init(self):
-        self.fp.write('/* initialise stuff extension classes */\n')
-        self.fp.write('void\n' + self.prefix + '_register_classes(PyObject *d)\n{\n')
-        self.write_object_imports()
-        self.fp.write(self.overrides.get_init() + '\n')
-        self.fp.resetline()
-
-    def get_classes(self):
-        objects = self.parser.objects[:]
-        pos = 0
-        while pos < len(objects):
-            parent = objects[pos].parent
-            for i in range(pos+1, len(objects)):
-                if objects[i].c_name == parent:
-                    objects.insert(i+1, objects[pos])
-                    del objects[pos]
-                    break
-            else:
-                pos = pos + 1
-
-        retval = []
-        for obj in objects:
-            if self.overrides.is_type_ignored(obj.c_name):
-                continue
-            bases = []
-            if obj.parent != None:
-                bases.append(obj.parent)
-            bases = bases + obj.implements
-            retval.append((obj, bases))
-
-        return retval
-
-    def write_registers(self):
-        for boxed in self.parser.boxes:
-            if not self.overrides.is_type_ignored(boxed.c_name):
-                self.fp.write('    pyg_register_boxed(d, "' + boxed.name +
-                              '", ' + boxed.typecode +
-                              ', &Py' + boxed.c_name +
-                          '_Type);\n')
-        for pointer in self.parser.pointers:
-            if not self.overrides.is_type_ignored(pointer.c_name):
-                self.fp.write('    pyg_register_pointer(d, "' + pointer.name +
-                              '", ' + pointer.typecode +
-                              ', &Py' + pointer.c_name + '_Type);\n')
-        for interface in self.parser.interfaces:
-            if not self.overrides.is_type_ignored(interface.c_name):
-                self.fp.write('    pyg_register_interface(d, "'
-                              + interface.name + '", '+ interface.typecode
-                              + ', &Py' + interface.c_name + '_Type);\n')
-                if interface.interface_info is not None:
-                    self.fp.write('    pyg_register_interface_info(%s, &%s);\n' %
-                                  (interface.typecode, interface.interface_info))
-
-        if not self.overrides.dynamicnamespace:
-            for obj, bases in self.get_classes():
-                self.write_class(obj, bases)
-        else:
-            for obj, bases in self.get_classes():
-                self.fp.write(
-                    '    pyg_type_register_custom_callback("%s", '
-                    '(PyGTypeRegistrationFunction)%s_register_type, d);\n' %
-                    (obj.c_name, obj.c_name))
-
-        self.fp.write('}\n')
-
-    def _can_direct_ref(self, base):
-        if not self.overrides.dynamicnamespace:
-            return True
-        if base == 'GObject':
-            return True
-        obj = get_object_by_name(base)
-        if obj.module.lower() != self.overrides.modulename:
-            return True
-        return False
-
-    def write_class(self, obj, bases, indent=1):
-        indent_str = ' ' * (indent * 4)
-        if bases:
-            bases_str = 'Py_BuildValue("(%s)"' % (len(bases) * 'O')
-
-            for base in bases:
-                if self._can_direct_ref(base):
-                    bases_str += ', &Py%s_Type' % base
-                else:
-                    baseobj = get_object_by_name(base)
-                    bases_str += ', PyObject_GetAttrString(m, "%s")' % baseobj.name
-            bases_str += ')'
-        else:
-            bases_str = 'NULL'
-
-        self.fp.write(
-                '%(indent)spygobject_register_class(d, "%(c_name)s", %(typecode)s, &Py%(c_name)s_Type, %(bases)s);\n'
-                % dict(indent=indent_str, c_name=obj.c_name, typecode=obj.typecode, bases=bases_str))
-
-        if obj.has_new_constructor_api:
-            self.fp.write(
-                indent_str + 'pyg_set_object_has_new_constructor(%s);\n' %
-                obj.typecode)
-        else:
-            print >> sys.stderr, (
-                "Warning: Constructor for %s needs to be updated to new API\n"
-                "         See http://live.gnome.org/PyGTK_2fWhatsNew28"
-                "#update-constructors") % obj.c_name
-
-        if obj.class_init_func is not None:
-            self.fp.write(
-                indent_str + 'pyg_register_class_init(%s, %s);\n' %
-                (obj.typecode, obj.class_init_func))
-
-_objects = {}
-
-def is_registered_object(c_name):
-    return c_name in _objects
-
-def get_object_by_name(c_name):
-    global _objects
-    return _objects[c_name]
-
-def register_types(parser):
-    global _objects
-    for boxed in parser.boxes:
-        argtypes.matcher.register_boxed(boxed.c_name, boxed.typecode)
-        _objects[boxed.c_name] = boxed
-    for pointer in parser.pointers:
-        argtypes.matcher.register_pointer(pointer.c_name, pointer.typecode)
-    for obj in parser.objects:
-        argtypes.matcher.register_object(obj.c_name, obj.parent, obj.typecode)
-        _objects[obj.c_name] = obj
-    for iface in parser.interfaces:
-        argtypes.matcher.register_object(iface.c_name, None, iface.typecode)
-        _objects[iface.c_name] = iface
-    for enum in parser.enums:
-        if enum.deftype == 'flags':
-            argtypes.matcher.register_flag(enum.c_name, enum.typecode)
-        else:
-            argtypes.matcher.register_enum(enum.c_name, enum.typecode)
-
-usage = 'usage: codegen.py [-o overridesfile] [-p prefix] defsfile'
-def main(argv):
-    o = override.Overrides()
-    prefix = 'pygtk'
-    outfilename = None
-    errorfilename = None
-    opts, args = getopt.getopt(argv[1:], "o:p:r:t:D:I:",
-                        ["override=", "prefix=", "register=", "outfilename=",
-                         "load-types=", "errorfilename=", "py_ssize_t-clean"])
-    defines = {} # -Dkey[=val] options
-    py_ssize_t_clean = False
-    for opt, arg in opts:
-        if opt in ('-o', '--override'):
-            o = override.Overrides(arg)
-        elif opt in ('-p', '--prefix'):
-            prefix = arg
-        elif opt in ('-r', '--register'):
-            # Warning: user has to make sure all -D options appear before -r
-            p = defsparser.DefsParser(arg, defines)
-            p.startParsing()
-            register_types(p)
-            del p
-        elif opt == '--outfilename':
-            outfilename = arg
-        elif opt == '--errorfilename':
-            errorfilename = arg
-        elif opt in ('-t', '--load-types'):
-            globals = {}
-            execfile(arg, globals)
-        elif opt == '-D':
-            nameval = arg.split('=')
-            try:
-                defines[nameval[0]] = nameval[1]
-            except IndexError:
-                defines[nameval[0]] = None
-        elif opt == '-I':
-            defsparser.include_path.insert(0, arg)
-        elif opt == '--py_ssize_t-clean':
-            py_ssize_t_clean = True
-    if len(args) < 1:
-        print >> sys.stderr, usage
-        return 1
-    if errorfilename:
-        sys.stderr = open(errorfilename, "w")
-    p = defsparser.DefsParser(args[0], defines)
-    if not outfilename:
-        outfilename = os.path.splitext(args[0])[0] + '.c'
-
-    p.startParsing()
-
-    register_types(p)
-    sw = SourceWriter(p, o, prefix, FileOutput(sys.stdout, outfilename))
-    sw.write(py_ssize_t_clean)
-
-    functions_coverage.printstats()
-    methods_coverage.printstats()
-    vproxies_coverage.printstats()
-    vaccessors_coverage.printstats()
-    iproxies_coverage.printstats()
-
-if __name__ == '__main__':
-    sys.exit(main(sys.argv))
diff --git a/codegen/createdefs.py b/codegen/createdefs.py
deleted file mode 100755 (executable)
index 84d50b1..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env python
-import sys
-
-def main(args):
-    output = args[1]
-    input = args[2:]
-    outfd = open(output, 'w')
-    outfd.write(';; -*- scheme -*-\n')
-    outfd.write(';; THIS FILE IS GENERATED - DO NOT EDIT\n')
-    for filename in input:
-        outfd.write('(include "%s")\n' % filename)
-    outfd.close()
-
-    return 0
-
-if __name__ == '__main__':
-    sys.exit(main(sys.argv))
diff --git a/codegen/definitions.py b/codegen/definitions.py
deleted file mode 100644 (file)
index bfb6faf..0000000
+++ /dev/null
@@ -1,575 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-import copy
-import sys
-
-def get_valid_scheme_definitions(defs):
-    return [x for x in defs if isinstance(x, tuple) and len(x) >= 2]
-
-def unescape(s):
-    s = s.replace('\r\n', '\\r\\n').replace('\t', '\\t')
-    return s.replace('\r', '\\r').replace('\n', '\\n')
-
-def make_docstring(lines):
-    return "(char *) " + '\n'.join(['"%s"' % unescape(s) for s in lines])
-
-# New Parameter class, wich emulates a tuple for compatibility reasons
-class Parameter(object):
-    def __init__(self, ptype, pname, pdflt, pnull, pdir=None):
-        self.ptype = ptype
-        self.pname = pname
-        self.pdflt = pdflt
-        self.pnull = pnull
-        self.pdir = pdir
-
-    def __len__(self): return 4
-    def __getitem__(self, i):
-        return (self.ptype, self.pname, self.pdflt, self.pnull)[i]
-
-    def merge(self, old):
-        if old.pdflt is not None:
-            self.pdflt = old.pdflt
-        if old.pnull is not None:
-            self.pnull = old.pnull
-
-# We currently subclass 'str' to make impact on the rest of codegen as
-# little as possible.  Later we can subclass 'object' instead, but
-# then we must find and adapt all places which expect return types to
-# be strings.
-class ReturnType(str):
-    def __new__(cls, *args, **kwds):
-        return str.__new__(cls, *args[:1])
-    def __init__(self, type_name, optional=False):
-        str.__init__(self)
-        self.optional = optional
-
-# Parameter for property based constructors
-class Property(object):
-    def __init__(self, pname, optional, argname):
-        self.pname = pname
-        self.optional = optional
-        self.argname = argname
-
-    def __len__(self): return 4
-    def __getitem__(self, i):
-        return ('', self.pname, self.optional, self.argname)[i]
-
-    def merge(self, old):
-        if old.optional is not None:
-            self.optional = old.optional
-        if old.argname is not None:
-            self.argname = old.argname
-
-
-class Definition(object):
-    docstring = "NULL"
-
-    def py_name(self):
-        return '%s.%s' % (self.module, self.name)
-
-    py_name = property(py_name)
-
-    def __init__(self, *args):
-        """Create a new defs object of this type.  The arguments are the
-        components of the definition"""
-        raise RuntimeError("this is an abstract class")
-
-    def merge(self, old):
-        """Merge in customisations from older version of definition"""
-        raise RuntimeError("this is an abstract class")
-
-    def write_defs(self, fp=sys.stdout):
-        """write out this definition in defs file format"""
-        raise RuntimeError("this is an abstract class")
-
-    def guess_return_value_ownership(self):
-        "return 1 if caller owns return value"
-        if getattr(self, 'is_constructor_of', False):
-            self.caller_owns_return = True
-        elif self.ret in ('char*', 'gchar*', 'string'):
-            self.caller_owns_return = True
-        else:
-            self.caller_owns_return = False
-
-
-class ObjectDef(Definition):
-    def __init__(self, name, *args):
-        self.name = name
-        self.module = None
-        self.parent = None
-        self.c_name = None
-        self.typecode = None
-        self.fields = []
-        self.implements = []
-        self.class_init_func = None
-        self.has_new_constructor_api = False
-        for arg in get_valid_scheme_definitions(args):
-            if arg[0] == 'in-module':
-                self.module = arg[1]
-            elif arg[0] == 'docstring':
-                self.docstring = make_docstring(arg[1:])
-            elif arg[0] == 'parent':
-                self.parent = arg[1]
-            elif arg[0] == 'c-name':
-                self.c_name = arg[1]
-            elif arg[0] == 'gtype-id':
-                self.typecode = arg[1]
-            elif arg[0] == 'fields':
-                for parg in arg[1:]:
-                    self.fields.append((parg[0], parg[1]))
-            elif arg[0] == 'implements':
-                self.implements.append(arg[1])
-    def merge(self, old):
-        # currently the .h parser doesn't try to work out what fields of
-        # an object structure should be public, so we just copy the list
-        # from the old version ...
-        self.fields = old.fields
-        self.implements = old.implements
-    def write_defs(self, fp=sys.stdout):
-        fp.write('(define-object ' + self.name + '\n')
-        if self.module:
-            fp.write('  (in-module "' + self.module + '")\n')
-        if self.parent != (None, None):
-            fp.write('  (parent "' + self.parent + '")\n')
-        for interface in self.implements:
-            fp.write('  (implements "' + interface + '")\n')
-        if self.c_name:
-            fp.write('  (c-name "' + self.c_name + '")\n')
-        if self.typecode:
-            fp.write('  (gtype-id "' + self.typecode + '")\n')
-        if self.fields:
-            fp.write('  (fields\n')
-            for (ftype, fname) in self.fields:
-                fp.write('    \'("' + ftype + '" "' + fname + '")\n')
-            fp.write('  )\n')
-        fp.write(')\n\n')
-
-class InterfaceDef(Definition):
-    def __init__(self, name, *args):
-        self.name = name
-        self.module = None
-        self.c_name = None
-        self.typecode = None
-        self.vtable = None
-        self.fields = []
-        self.interface_info = None
-        for arg in get_valid_scheme_definitions(args):
-            if arg[0] == 'in-module':
-                self.module = arg[1]
-            elif arg[0] == 'docstring':
-                self.docstring = make_docstring(arg[1:])
-            elif arg[0] == 'c-name':
-                self.c_name = arg[1]
-            elif arg[0] == 'gtype-id':
-                self.typecode = arg[1]
-            elif arg[0] == 'vtable':
-                self.vtable = arg[1]
-        if self.vtable is None:
-            self.vtable = self.c_name + "Iface"
-    def write_defs(self, fp=sys.stdout):
-        fp.write('(define-interface ' + self.name + '\n')
-        if self.module:
-            fp.write('  (in-module "' + self.module + '")\n')
-        if self.c_name:
-            fp.write('  (c-name "' + self.c_name + '")\n')
-        if self.typecode:
-            fp.write('  (gtype-id "' + self.typecode + '")\n')
-        fp.write(')\n\n')
-
-class EnumDef(Definition):
-    def __init__(self, name, *args):
-        self.deftype = 'enum'
-        self.name = name
-        self.in_module = None
-        self.c_name = None
-        self.typecode = None
-        self.values = []
-        for arg in get_valid_scheme_definitions(args):
-            if arg[0] == 'in-module':
-                self.in_module = arg[1]
-            elif arg[0] == 'c-name':
-                self.c_name = arg[1]
-            elif arg[0] == 'gtype-id':
-                self.typecode = arg[1]
-            elif arg[0] == 'values':
-                for varg in arg[1:]:
-                    self.values.append((varg[0], varg[1]))
-    def merge(self, old):
-        pass
-    def write_defs(self, fp=sys.stdout):
-        fp.write('(define-' + self.deftype + ' ' + self.name + '\n')
-        if self.in_module:
-            fp.write('  (in-module "' + self.in_module + '")\n')
-        fp.write('  (c-name "' + self.c_name + '")\n')
-        fp.write('  (gtype-id "' + self.typecode + '")\n')
-        if self.values:
-            fp.write('  (values\n')
-            for name, val in self.values:
-                fp.write('    \'("' + name + '" "' + val + '")\n')
-            fp.write('  )\n')
-        fp.write(')\n\n')
-
-class FlagsDef(EnumDef):
-    def __init__(self, *args):
-        apply(EnumDef.__init__, (self,) + args)
-        self.deftype = 'flags'
-
-class BoxedDef(Definition):
-    def __init__(self, name, *args):
-        self.name = name
-        self.module = None
-        self.c_name = None
-        self.typecode = None
-        self.copy = None
-        self.release = None
-        self.fields = []
-        for arg in get_valid_scheme_definitions(args):
-            if arg[0] == 'in-module':
-                self.module = arg[1]
-            elif arg[0] == 'c-name':
-                self.c_name = arg[1]
-            elif arg[0] == 'gtype-id':
-                self.typecode = arg[1]
-            elif arg[0] == 'copy-func':
-                self.copy = arg[1]
-            elif arg[0] == 'release-func':
-                self.release = arg[1]
-            elif arg[0] == 'fields':
-                for parg in arg[1:]:
-                    self.fields.append((parg[0], parg[1]))
-    def merge(self, old):
-        # currently the .h parser doesn't try to work out what fields of
-        # an object structure should be public, so we just copy the list
-        # from the old version ...
-        self.fields = old.fields
-    def write_defs(self, fp=sys.stdout):
-        fp.write('(define-boxed ' + self.name + '\n')
-        if self.module:
-            fp.write('  (in-module "' + self.module + '")\n')
-        if self.c_name:
-            fp.write('  (c-name "' + self.c_name + '")\n')
-        if self.typecode:
-            fp.write('  (gtype-id "' + self.typecode + '")\n')
-        if self.copy:
-            fp.write('  (copy-func "' + self.copy + '")\n')
-        if self.release:
-            fp.write('  (release-func "' + self.release + '")\n')
-        if self.fields:
-            fp.write('  (fields\n')
-            for (ftype, fname) in self.fields:
-                fp.write('    \'("' + ftype + '" "' + fname + '")\n')
-            fp.write('  )\n')
-        fp.write(')\n\n')
-
-class PointerDef(Definition):
-    def __init__(self, name, *args):
-        self.name = name
-        self.module = None
-        self.c_name = None
-        self.typecode = None
-        self.fields = []
-        for arg in get_valid_scheme_definitions(args):
-            if arg[0] == 'in-module':
-                self.module = arg[1]
-            elif arg[0] == 'c-name':
-                self.c_name = arg[1]
-            elif arg[0] == 'gtype-id':
-                self.typecode = arg[1]
-            elif arg[0] == 'fields':
-                for parg in arg[1:]:
-                    self.fields.append((parg[0], parg[1]))
-    def merge(self, old):
-        # currently the .h parser doesn't try to work out what fields of
-        # an object structure should be public, so we just copy the list
-        # from the old version ...
-        self.fields = old.fields
-    def write_defs(self, fp=sys.stdout):
-        fp.write('(define-pointer ' + self.name + '\n')
-        if self.module:
-            fp.write('  (in-module "' + self.module + '")\n')
-        if self.c_name:
-            fp.write('  (c-name "' + self.c_name + '")\n')
-        if self.typecode:
-            fp.write('  (gtype-id "' + self.typecode + '")\n')
-        if self.fields:
-            fp.write('  (fields\n')
-            for (ftype, fname) in self.fields:
-                fp.write('    \'("' + ftype + '" "' + fname + '")\n')
-            fp.write('  )\n')
-        fp.write(')\n\n')
-
-class MethodDefBase(Definition):
-    def __init__(self, name, *args):
-        dump = 0
-        self.name = name
-        self.ret = None
-        self.caller_owns_return = None
-        self.unblock_threads = None
-        self.c_name = None
-        self.typecode = None
-        self.of_object = None
-        self.params = [] # of form (type, name, default, nullok)
-        self.varargs = 0
-        self.deprecated = None
-        for arg in get_valid_scheme_definitions(args):
-            if arg[0] == 'of-object':
-                self.of_object = arg[1]
-            elif arg[0] == 'docstring':
-                self.docstring = make_docstring(arg[1:])
-            elif arg[0] == 'c-name':
-                self.c_name = arg[1]
-            elif arg[0] == 'gtype-id':
-                self.typecode = arg[1]
-            elif arg[0] == 'return-type':
-                type_name = arg[1]
-                optional = False
-                for prop in arg[2:]:
-                    if prop[0] == 'optional':
-                        optional = True
-                self.ret = ReturnType(type_name, optional)
-            elif arg[0] == 'caller-owns-return':
-                self.caller_owns_return = arg[1] in ('t', '#t')
-            elif arg[0] == 'unblock-threads':
-                self.unblock_threads = arg[1] in ('t', '#t')
-            elif arg[0] == 'parameters':
-                for parg in arg[1:]:
-                    ptype = parg[0]
-                    pname = parg[1]
-                    pdflt = None
-                    pnull = 0
-                    pdir = None
-                    for farg in parg[2:]:
-                        assert isinstance(farg, tuple)
-                        if farg[0] == 'default':
-                            pdflt = farg[1]
-                        elif farg[0] == 'null-ok':
-                            pnull = 1
-                        elif farg[0] == 'direction':
-                            pdir = farg[1]
-                    self.params.append(Parameter(ptype, pname, pdflt, pnull, pdir))
-            elif arg[0] == 'varargs':
-                self.varargs = arg[1] in ('t', '#t')
-            elif arg[0] == 'deprecated':
-                self.deprecated = arg[1]
-            else:
-                sys.stderr.write("Warning: %s argument unsupported.\n"
-                                 % (arg[0]))
-                dump = 1
-        if dump:
-            self.write_defs(sys.stderr)
-
-        if self.caller_owns_return is None and self.ret is not None:
-            self.guess_return_value_ownership()
-
-    def merge(self, old, parmerge):
-        self.caller_owns_return = old.caller_owns_return
-        self.varargs = old.varargs
-        # here we merge extra parameter flags accross to the new object.
-        if not parmerge:
-            self.params = copy.deepcopy(old.params)
-            return
-        for i in range(len(self.params)):
-            ptype, pname, pdflt, pnull = self.params[i]
-            for p2 in old.params:
-                if p2[1] == pname:
-                    self.params[i] = (ptype, pname, p2[2], p2[3])
-                    break
-    def _write_defs(self, fp=sys.stdout):
-        if self.of_object != (None, None):
-            fp.write('  (of-object "' + self.of_object + '")\n')
-        if self.c_name:
-            fp.write('  (c-name "' + self.c_name + '")\n')
-        if self.typecode:
-            fp.write('  (gtype-id "' + self.typecode + '")\n')
-        if self.caller_owns_return:
-            fp.write('  (caller-owns-return #t)\n')
-        if self.unblock_threads:
-            fp.write('  (unblock_threads #t)\n')
-        if self.ret:
-            fp.write('  (return-type "' + self.ret + '")\n')
-        if self.deprecated:
-            fp.write('  (deprecated "' + self.deprecated + '")\n')
-        if self.params:
-            fp.write('  (parameters\n')
-            for ptype, pname, pdflt, pnull in self.params:
-                fp.write('    \'("' + ptype + '" "' + pname +'"')
-                if pdflt: fp.write(' (default "' + pdflt + '")')
-                if pnull: fp.write(' (null-ok)')
-                fp.write(')\n')
-            fp.write('  )\n')
-        if self.varargs:
-            fp.write('  (varargs #t)\n')
-        fp.write(')\n\n')
-
-
-class MethodDef(MethodDefBase):
-    def __init__(self, name, *args):
-        MethodDefBase.__init__(self, name, *args)
-        for item in ('c_name', 'of_object'):
-            if self.__dict__[item] == None:
-                self.write_defs(sys.stderr)
-                raise RuntimeError("definition missing required %s" % (item,))
-
-    def write_defs(self, fp=sys.stdout):
-        fp.write('(define-method ' + self.name + '\n')
-        self._write_defs(fp)
-
-class VirtualDef(MethodDefBase):
-    def write_defs(self, fp=sys.stdout):
-        fp.write('(define-virtual ' + self.name + '\n')
-        self._write_defs(fp)
-
-class FunctionDef(Definition):
-    def __init__(self, name, *args):
-        dump = 0
-        self.name = name
-        self.in_module = None
-        self.is_constructor_of = None
-        self.ret = None
-        self.caller_owns_return = None
-        self.unblock_threads = None
-        self.c_name = None
-        self.typecode = None
-        self.params = [] # of form (type, name, default, nullok)
-        self.varargs = 0
-        self.deprecated = None
-        for arg in get_valid_scheme_definitions(args):
-            if arg[0] == 'in-module':
-                self.in_module = arg[1]
-            elif arg[0] == 'docstring':
-                self.docstring = make_docstring(arg[1:])
-            elif arg[0] == 'is-constructor-of':
-                self.is_constructor_of = arg[1]
-            elif arg[0] == 'c-name':
-                self.c_name = arg[1]
-            elif arg[0] == 'gtype-id':
-                self.typecode = arg[1]
-            elif arg[0] == 'return-type':
-                self.ret = arg[1]
-            elif arg[0] == 'caller-owns-return':
-                self.caller_owns_return = arg[1] in ('t', '#t')
-            elif arg[0] == 'unblock-threads':
-                self.unblock_threads = arg[1] in ('t', '#t')
-            elif arg[0] == 'parameters':
-                for parg in arg[1:]:
-                    ptype = parg[0]
-                    pname = parg[1]
-                    pdflt = None
-                    pnull = 0
-                    for farg in parg[2:]:
-                        if farg[0] == 'default':
-                            pdflt = farg[1]
-                        elif farg[0] == 'null-ok':
-                            pnull = 1
-                    self.params.append(Parameter(ptype, pname, pdflt, pnull))
-            elif arg[0] == 'properties':
-                if self.is_constructor_of is None:
-                    print >> sys.stderr, "Warning: (properties ...) "\
-                          "is only valid for constructors"
-                for prop in arg[1:]:
-                    pname = prop[0]
-                    optional = False
-                    argname = pname
-                    for farg in prop[1:]:
-                        if farg[0] == 'optional':
-                            optional = True
-                        elif farg[0] == 'argname':
-                            argname = farg[1]
-                    self.params.append(Property(pname, optional, argname))
-            elif arg[0] == 'varargs':
-                self.varargs = arg[1] in ('t', '#t')
-            elif arg[0] == 'deprecated':
-                self.deprecated = arg[1]
-            else:
-                sys.stderr.write("Warning: %s argument unsupported\n"
-                                 % (arg[0],))
-                dump = 1
-        if dump:
-            self.write_defs(sys.stderr)
-
-        if self.caller_owns_return is None and self.ret is not None:
-            self.guess_return_value_ownership()
-        for item in ('c_name',):
-            if self.__dict__[item] == None:
-                self.write_defs(sys.stderr)
-                raise RuntimeError("definition missing required %s" % (item,))
-
-    _method_write_defs = MethodDef.__dict__['write_defs']
-
-    def merge(self, old, parmerge):
-        self.caller_owns_return = old.caller_owns_return
-        self.varargs = old.varargs
-        if not parmerge:
-            self.params = copy.deepcopy(old.params)
-            return
-        # here we merge extra parameter flags accross to the new object.
-        def merge_param(param):
-            for old_param in old.params:
-                if old_param.pname == param.pname:
-                    if isinstance(old_param, Property):
-                        # h2def never scans Property's, therefore if
-                        # we have one it was manually written, so we
-                        # keep it.
-                        return copy.deepcopy(old_param)
-                    else:
-                        param.merge(old_param)
-                        return param
-            raise RuntimeError("could not find %s in old_parameters %r" % (
-                param.pname, [p.pname for p in old.params]))
-        try:
-            self.params = map(merge_param, self.params)
-        except RuntimeError:
-            # parameter names changed and we can't find a match; it's
-            # safer to keep the old parameter list untouched.
-            self.params = copy.deepcopy(old.params)
-
-        if not self.is_constructor_of:
-            try:
-                self.is_constructor_of = old.is_constructor_of
-            except AttributeError:
-                pass
-        if isinstance(old, MethodDef):
-            self.name = old.name
-            # transmogrify from function into method ...
-            self.write_defs = self._method_write_defs
-            self.of_object = old.of_object
-            del self.params[0]
-    def write_defs(self, fp=sys.stdout):
-        fp.write('(define-function ' + self.name + '\n')
-        if self.in_module:
-            fp.write('  (in-module "' + self.in_module + '")\n')
-        if self.is_constructor_of:
-            fp.write('  (is-constructor-of "' + self.is_constructor_of +'")\n')
-        if self.c_name:
-            fp.write('  (c-name "' + self.c_name + '")\n')
-        if self.typecode:
-            fp.write('  (gtype-id "' + self.typecode + '")\n')
-        if self.caller_owns_return:
-            fp.write('  (caller-owns-return #t)\n')
-        if self.unblock_threads:
-            fp.write('  (unblock-threads #t)\n')
-        if self.ret:
-            fp.write('  (return-type "' + self.ret + '")\n')
-        if self.deprecated:
-            fp.write('  (deprecated "' + self.deprecated + '")\n')
-        if self.params:
-            if isinstance(self.params[0], Parameter):
-                fp.write('  (parameters\n')
-                for ptype, pname, pdflt, pnull in self.params:
-                    fp.write('    \'("' + ptype + '" "' + pname +'"')
-                    if pdflt: fp.write(' (default "' + pdflt + '")')
-                    if pnull: fp.write(' (null-ok)')
-                    fp.write(')\n')
-                fp.write('  )\n')
-            elif isinstance(self.params[0], Property):
-                fp.write('  (properties\n')
-                for prop in self.params:
-                    fp.write('    \'("' + prop.pname +'"')
-                    if prop.optional: fp.write(' (optional)')
-                    fp.write(')\n')
-                fp.write('  )\n')
-            else:
-                assert False, "strange parameter list %r" % self.params[0]
-        if self.varargs:
-            fp.write('  (varargs #t)\n')
-
-        fp.write(')\n\n')
diff --git a/codegen/defsconvert.py b/codegen/defsconvert.py
deleted file mode 100755 (executable)
index c3c2324..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-#! /usr/bin/env python
-
-import sys
-import string, re
-
-# ------------------ Create typecodes from typenames ---------
-
-_upperstr_pat1 = re.compile(r'([^A-Z])([A-Z])')
-_upperstr_pat2 = re.compile(r'([A-Z][A-Z])([A-Z][0-9a-z])')
-_upperstr_pat3 = re.compile(r'^([A-Z])([A-Z])')
-
-def to_upper_str(name):
-    """Converts a typename to the equivalent upercase and underscores
-    name.  This is used to form the type conversion macros and enum/flag
-    name variables"""
-    name = _upperstr_pat1.sub(r'\1_\2', name)
-    name = _upperstr_pat2.sub(r'\1_\2', name)
-    name = _upperstr_pat3.sub(r'\1_\2', name, count=1)
-    return string.upper(name)
-
-def typecode(typename):
-    """create a typecode (eg. GTK_TYPE_WIDGET) from a typename"""
-    return string.replace(to_upper_str(typename), '_', '_TYPE_', 1)
-
-
-STATE_START = 0
-STATE_OBJECT = 1
-STATE_INTERFACE = 2
-STATE_BOXED = 3
-STATE_ENUM = 4
-STATE_FLAGS = 5
-STATE_METHOD = 6
-STATE_FUNCTION = 7
-
-def convert(infp=sys.stdin, outfp=sys.stdout):
-    state = STATE_START
-    seen_params = 0
-
-    line = infp.readline()
-    while line:
-        if line[:8] == '(object ':
-            state = STATE_OBJECT
-            seen_params = 0
-            outfp.write('(define-object ' + line[8:])
-        elif line[:11] == '(interface ':
-            state = STATE_INTERFACE
-            seen_params = 0
-            outfp.write('(define-interface ' + line[11:])
-        elif line[:7] == '(boxed ':
-            state = STATE_BOXED
-            seen_params = 0
-            outfp.write('(define-boxed ' + line[7:])
-        elif line[:6] == '(enum ':
-            state = STATE_ENUM
-            seen_params = 0
-            outfp.write('(define-enum ' + line[6:])
-        elif line[:7] == '(flags ':
-            state = STATE_FLAGS
-            seen_params = 0
-            outfp.write('(define-flags ' + line[7:])
-        elif line[:8] == '(method ':
-            state = STATE_METHOD
-            seen_params = 0
-            outfp.write('(define-method ' + line[8:])
-        elif line[:10] == '(function ':
-            state = STATE_FUNCTION
-            seen_params = 0
-            outfp.write('(define-function ' + line[10:])
-        elif line[:13] == '  (in-module ':
-            outfp.write(re.sub(r'^(\s+\(in-module\s+)(\w+)(.*)$',
-                               r'\1"\2"\3', line))
-        elif line[:10] == '  (parent ':
-            outfp.write(re.sub(r'^(\s+\(parent\s+)(\w+)(\s+\((\w+)\))?(.*)$',
-                               r'\1"\4\2"\5', line))
-        elif line[:14] == '  (implements ':
-            outfp.write(re.sub(r'^(\s+\(implements\s+)([^\s]+)(\s*\))$',
-                               r'\1"\2"\3', line))
-        elif line[:13] == '  (of-object ':
-            outfp.write(re.sub(r'^(\s+\(of-object\s+)(\w+)(\s+\((\w+)\))?(.*)$',
-                               r'\1"\4\2"\5', line))
-        elif line[:10] == '  (c-name ':
-            outfp.write(re.sub(r'^(\s+\(c-name\s+)([^\s]+)(\s*\))$',
-                               r'\1"\2"\3', line))
-            if state in (STATE_OBJECT, STATE_INTERFACE, STATE_BOXED,
-                         STATE_ENUM, STATE_FLAGS):
-                c_name = re.match(r'^\s+\(c-name\s+([^\s]+)\s*\)$',
-                                  line).group(1)
-                outfp.write('  (gtype-id "%s")\n' % typecode(c_name))
-        elif line[:15] == '  (return-type ':
-            outfp.write(re.sub(r'^(\s+\(return-type\s+)([^\s]+)(\s*\))$',
-                               r'\1"\2"\3', line))
-        elif line[:13] == '  (copy-func ':
-            outfp.write(re.sub(r'^(\s+\(copy-func\s+)(\w+)(.*)$',
-                               r'\1"\2"\3', line))
-        elif line[:16] == '  (release-func ':
-            outfp.write(re.sub(r'^(\s+\(release-func\s+)(\w+)(.*)$',
-                               r'\1"\2"\3', line))
-        elif line[:9] == '  (field ':
-            if not seen_params:
-                outfp.write('  (fields\n')
-            seen_params = 1
-            outfp.write(re.sub(r'^\s+\(field\s+\(type-and-name\s+([^\s]+)\s+([^\s]+)\s*\)\s*\)$',
-                               '    \'("\\1" "\\2")', line))
-        elif line[:9] == '  (value ':
-            if not seen_params:
-                outfp.write('  (values\n')
-            seen_params = 1
-            outfp.write(re.sub(r'^\s+\(value\s+\(name\s+([^\s]+)\)\s+\(c-name\s+([^\s]+)\s*\)\s*\)$',
-                               '    \'("\\1" "\\2")', line))
-        elif line[:13] == '  (parameter ':
-            if not seen_params:
-                outfp.write('  (parameters\n')
-            seen_params = 1
-            outfp.write(re.sub(r'^\s+\(parameter\s+\(type-and-name\s+([^\s]+)\s+([^\s]+)\s*\)(\s*.*)\)$',
-                               '    \'("\\1" "\\2"\\3)', line))
-        elif line[:11] == '  (varargs ':
-            if seen_params:
-                outfp.write('  )\n')
-            seen_params = 0
-            outfp.write('  (varargs #t)\n')
-        elif line[0] == ')':
-            if seen_params:
-                outfp.write('  )\n')
-            seen_params = 0
-            state = STATE_START
-            outfp.write(line)
-        else:
-            outfp.write(line)
-        line = infp.readline()
-
-if __name__ == '__main__':
-    convert()
diff --git a/codegen/defsgen.py b/codegen/defsgen.py
deleted file mode 100755 (executable)
index 6c2e63d..0000000
+++ /dev/null
@@ -1,737 +0,0 @@
-#!/usr/bin/env python
-# -*- Mode: Python; py-indent-offset: 4 -*-
-#
-# Copyright (C) 2006-2009 John Finlay.
-#
-# Scan the given public .h files of a GTK module (or module using
-# GTK object conventions) and generates a set of scheme defs.
-#
-# defsgen uses the ctypes module to extract information from the installed
-# module library (or libraries) to generate the object, interface, function,
-# method, virtual, enum and flags defs. defsgen uses the gobject library
-# g_type_* functions. defsgen will try to open the "libgobject-2.0.so" library
-# if one is not specified on the command line.
-#
-# Basically the operation of defsgen is:
-#
-# - open and initialize the gobject and module libraries
-# - read each .h file into a buffer which is scrubbed of extraneous data
-# - find all *_get_type() functions prototypes
-# - look in the module libraries for the get_type symbols
-# - if found run the get_type() function to retrieve the GType
-# - find the parent type name and save the object info
-# - find each function prototypes in the file and check if it has a symbol in
-#   the module libraries - save the info if found
-# - extract the virtual prototypes from the Class or Iface structs and save
-# - write out the various defs.
-#
-# The command line options are:
-#
-#   -l --modulelib   Adds the given module library name to the list to be used
-#                    for finding symbols. Mor ethan one modulefile may be
-#                    specified. (required)
-#   -L --libgobject  Specifies the name of the gobject library (optional but
-#                    must be specified if "libgobject-2.0.so" is not availble)
-#   -s --separate    Create separate files for objects and function/method defs
-#                    using the given name as the base name (optional). If this
-#                    is not specified the combined object and function defs
-#                    will be output to sys.stdout.
-#   -f --defsfile    Extract defs from the given file to filter the output defs
-#                    that is don't output defs that are defined in the
-#                    defsfile. More than one deffile may be specified.
-#   -D --defines     Include portions of the defsfile defs that are conditional
-#                    on the given define, for example GDK_TARGET_X11. Only
-#                    useful with the --defsfile option
-#   -m --modulename  The prefix to be stripped from the front of function names
-#                    for the given module
-#   -p --useprefix   Use the modulename prefix as a hint to split names into
-#                    module and name for object and enum defs. Also used for
-#                    generating type codes.
-#   --onlyenums      Only produce defs for enums and flags
-#   --onlyobjdefs    Only produce defs for objects
-#   --onlyvirtuals   Only produce defs for virtuals
-#   --genpropgetsets Experimental option to generate prop-getset annotations.
-#                    Not supported by codegen.py and friends.
-#
-# Examples:
-#
-# python defsgen.py -m pango -l libpango-1.0.so \
-#            /usr/local/include/pango-1.0/pango/*.h >/tmp/pango.defs
-#
-# - Outputs all defs for the pango module.using the library module
-#   libpango-1.0.so.
-#
-# python defsgen.py -m gdk -DGDK_TARGET_X11 -l libgdk-x11-2.0.so \
-#            -l libgdk_pixbuf-2.0.so -s /tmp/gdk-2.10 \
-#            -f /usr/tmp/pygtk/gtk/gdk-base.defs \
-#            /usr/local/include/gtk-2.0/gdk/*.h \
-#            /usr/local/include/gtk-2.0/gdk-pixbuf/*.h
-#
-# - Outputs the gdk module defs that are not contained in the defs file
-#   /usr/tmp/pygtk/gtk/gdk-base.defs. Two output files are created:
-#   /tmp/gdk-2.10-types.defs and /tmp/gdk-2.10.defs.
-#
-# Based on the original h2def.py program by
-# Toby D. Reeves <toby@max.rl.plh.af.mil> and
-# modified by James Henstridge <james@daa.com.au> to output stuff in
-# Havoc's new defs format.  Info on this format can be seen at:
-# http://www.gnome.org/mailing-lists/archives/gtk-devel-list/2000-January/0085.shtml
-# Updated to be PEP-8 compatible and refactored to use OOP
-# Extensively modified by John Finlay to use ctypes module to extract GType
-# info from the given library and to create virtual defines.
-#
-
-import getopt
-import os
-import re, string
-import sys
-import ctypes
-import defsparser
-
-#------------------ utility defs -----------------
-
-_upperstr_pat1 = re.compile(r'([^A-Z])([A-Z])')
-_upperstr_pat2 = re.compile(r'([A-Z][A-Z])([A-Z][0-9a-z])')
-_upperstr_pat3 = re.compile(r'^([A-Z])([A-Z])')
-
-def to_upper_str(name):
-    """Converts a typename to the equivalent uppercase and underscores
-    name.  This is used to form the type conversion macros and enum/flag
-    name variables"""
-    name = _upperstr_pat1.sub(r'\1_\2', name)
-    name = _upperstr_pat2.sub(r'\1_\2', name)
-    name = _upperstr_pat3.sub(r'\1_\2', name, count=1)
-    return name.upper()
-
-def typecode(typename, prefix, use_prefix):
-    """create a typecode (eg. GTK_TYPE_WIDGET) from a typename"""
-    tcode = to_upper_str(typename)
-    if (use_prefix and prefix and tcode.lower() != prefix
-        and tcode.lower().startswith(prefix)):
-        l = len(prefix)
-        tcode = tcode[:l] + '_TYPE' + tcode[l:]
-    else:
-        tcode = tcode.replace('_', '_TYPE_', 1)
-    return tcode
-
-_class_iface_pat = re.compile(r'\w+(Class|Iface)')
-
-def class_iface_sub(mobj):
-    '''Returns matched string if it matches a Class or Iface struct
-    otherwise returns the empty string'''
-    if not _class_iface_pat.match(mobj.group(1)):
-        return ''
-    return mobj.group(0)
-
-clean_patterns = [
-    # strip comments
-    (re.compile(r'/\*.*?\*/', re.DOTALL), ''),
-    # compact continued lines
-    (re.compile(r"\\\n", re.MULTILINE), ''),
-    # remove preprocess directives
-    (re.compile(r"""^[#].*?$""", re.MULTILINE), ''),
-    # strip DECLS macros and Windows DLL API macros
-    (re.compile(r"""G_BEGIN_DECLS|BEGIN_LIBGTOP_DECLS|G_END_DECLS|[A-Z]+_API """,
-                re.MULTILINE), ''),
-    # remove extern "C"
-    (re.compile(r'^\s*(extern)\s+"C"\s+{', re.MULTILINE), ''),
-    # remove singleline typedefs of stucts
-    (re.compile(r'^typedef\s+struct\s*[^{;\n]*;\s*$', re.MULTILINE), ''),
-    # remove all struct definitons but those for object classes and interfaces
-    (re.compile(r'^struct\s+(\w+)\s+{[^}]+}\s*;\s*$', re.MULTILINE),
-     class_iface_sub),
-    # compress multiple whitespace
-    (re.compile(r'\s+', re.MULTILINE), ' '),
-    # clean up line ends
-    (re.compile(r';\s*', re.MULTILINE), '\n'),
-    (re.compile(r'^\s*', re.MULTILINE), ''),
-    # associate *, &, and [] with type instead of variable
-    (re.compile(r' \s* ([*|&]+) \s* ([(\w]+)', re.VERBOSE), r'\1 \2'),
-    (re.compile(r'\s+ (\w+) \[ \s* \]', re.VERBOSE), r'[] \1'),
-    # make return types that are const work.
-    (re.compile(r'\s*\*\s*G_CONST_RETURN\s*\*\s*'), '** '),
-    (re.compile(r'G_CONST_RETURN |const '), 'const-'),
-    # remove typedefs of callback types
-    (re.compile(r'^typedef\s+\w+\s*\*?\s*\(\s*\*\s*\w+\)\s*\([^(]*\)\n',
-                re.MULTILINE), ''),
-    #strip GSEAL macros from the middle of function declarations:
-    (re.compile(r"""GSEAL""", re.VERBOSE), '')
-    ]
-
-def clean_buffer(buf):
-    """Cleans out extraneous data leaving function prototypes, Class and Iface
-    structs."""
-    for pat, subst in clean_patterns:
-        buf = pat.sub(subst, buf)
-    return buf
-
-# ------------------ utility classes -------------------------
-
-class ObjDef(object):
-    def __init__(self, name, type_id, parent_name, parent_type, base_name):
-        self.name = name
-        self.type = type_id
-        self.parent_name = parent_name
-        self.parent_type = parent_type
-        self.base_name = base_name
-        self.props = []
-        return
-    def __cmp__(self, other):
-        try:
-            res = cmp(self.name, other.name)
-        except AttributeError:
-            res = cmp(id(self), id(other))
-        return res
-    def set_properties(self, gobj):
-        if self.base_name == 'GObject':
-            self.props = self._get_gobject_properties(gobj)
-        elif self.base_name == 'GInterface':
-            self.props = self._get_ginterface_properties(gobj)
-
-    def _get_gobject_properties(self, gobj):
-        klass = gobj.g_type_class_ref(self.type)
-        num = ctypes.c_uint()
-        plist = gobj.g_object_class_list_properties(klass, ctypes.byref(num))
-        props = [plist[i][0].name for i in range(num.value)
-                 if self.name == gobj.g_type_name(plist[i][0].owner_type)]
-        return props
-    def _get_ginterface_properties(self, gobj):
-        iface = gobj.g_type_default_interface_ref(self.type)
-        num = ctypes.c_uint()
-        plist = gobj.g_object_interface_list_properties(iface,
-                                                        ctypes.byref(num))
-        props = [plist[i][0].name for i in range(num.value)]
-        return props
-
-# ------------------ Find object definitions -----------------
-
-split_prefix_pat = re.compile('([A-Z]+[a-z]*)([A-Za-z0-9]+)')
-
-get_type_pat = re.compile(r'''^\s*(GType|GtkType)\s+
-([a-z]\w+_get_type)\s*(\(void\)|\(\)).*$''', re.VERBOSE | re.MULTILINE)
-
-defkeys = 'GBoxed GInterface GObject gpointer GEnum GFlags'
-
-def find_defs(buf, gobj, modlib, defs):
-    """Find possible gobject, gboxed, interface, gpointer, enum and flags
-    definitions in header files.and find parent type."""
-    #  find all *_get_type() functions that may represent a GObject
-    for m in get_type_pat.findall(buf):
-        func_name = m[1]
-        for lib in modlib:
-            if hasattr(lib, func_name):
-                objtype = apply(getattr(lib, func_name))
-                obj_name = gobj.g_type_name(objtype)
-                parent = gobj.g_type_parent(objtype)
-                parent_name = gobj.g_type_name(parent)
-                base_name = gobj.g_type_name(gobj.g_type_fundamental(parent))
-                #if gobj.g_type_is_a(parent, gobj.GObject):
-                #    base_name = 'GObject'
-                if base_name in defkeys:
-                    obj = ObjDef(obj_name, objtype, parent_name, parent,
-                                 base_name)
-                    obj.set_properties(gobj)
-                    defs[obj.base_name].append(obj)
-                break
-    return
-
-# ------------------ Find function definitions -----------------
-
-arg_split_pat = re.compile("\s*,\s*")
-
-proto_pat=re.compile(r"""^
-\s*((?:-|\w|\&|\*)+)  # return type
-\s+                   # skip whitespace
-([a-z]\w+)\s*[(]      # match the function name until the opening (
-\s*(.*?)\s*[)].*      # group the function arguments
-$""", re.IGNORECASE|re.VERBOSE|re.MULTILINE)
-
-def find_func_defs(buf, modlib, deffile, defs, verbose):
-    '''Find function prototypes in buf that have symbols in modlib
-    and save in defs.'''
-    funcs = defs['funcs'][deffile] = []
-    for m in proto_pat.findall(buf):
-        ret, func, args = m
-        if not True in [hasattr(lib, func) for lib in modlib]:
-            if verbose:
-                sys.stderr.write('no symbol for function: ' + func
-                                 + ' from file' + deffile + '\n')
-        else:
-            args = arg_split_pat.split(args)
-            args = [a.replace(' ','-', a.count(' ')-1) for a in args]
-            funcs.append((func, ret, args))
-    return
-
-virtual_pat = re.compile(r'''^
-\s*((?:-|\w|\&|\*)+)   # return type
-\s*                    # skip whitespace
-\(\s*\*\s*             # opening (
-([a-z]\w+)\)           # match the function name until the closing )
-\s*\(\s*([^)]*)\).*      # group the function arguments
-$''', re.VERBOSE|re.MULTILINE)
-
-class_iface_struct_pat = re.compile(
-    r'^struct\s+_(\w+)(?:Class|Iface)\s+{([^}]+)}\s*$', re.MULTILINE)
-
-def find_virt_defs(buf, deffile, defs):
-    '''Find virtual function prototypes in buf and save in defs.'''
-    virts = defs['virts'][deffile] = []
-    # get the Class or Iface structs
-    for m in class_iface_struct_pat.findall(buf):
-        objname, virtuals  = m
-        for v in virtual_pat.findall(virtuals):
-            ret, func, args = v
-            if 'reserved' in func or args == 'void':
-                continue
-            args = arg_split_pat.split(args)
-            args = [a.replace(' ','-', a.count(' ')-1) for a in args]
-            virts.append((func, ret, args, objname))
-    return
-
-enum_pat = re.compile(r'^\s*typedef enum\s+{\s*([^}]*)}\s*([^\s]*)$',
-                      re.MULTILINE)
-values_splitter = re.compile(r'\s*,\s', re.MULTILINE)
-
-def find_enums(buf, defs):
-    for vals, name in enum_pat.findall(buf):
-        if name != 'GdkCursorType':
-            isflags = '<<' in vals
-            entries = [val.split()[0] for val in values_splitter.split(vals)
-                       if val.strip()]
-            if entries:
-                defs['untypedenums'][name] = (isflags, entries)
-    return
-
-# ------------------ write definitions -----------------
-
-type_pat = re.compile(r'(?:const-)?([A-Za-z0-9]+)\*?\s+')
-pointer_pat = re.compile('(.*)\*$')
-func_new_pat = re.compile('(\w+)_new$')
-getset_pat = re.compile(r'^(?:get|set)_(.*)$')
-
-def split_prefix(cname, prefix, use_prefix):
-    # use the module prefix to split the cname
-    pre = prefix.replace('_', '')
-    if use_prefix and cname.lower().startswith(pre):
-        l = len(pre)
-        module = cname[:l]
-        name = cname[l:]
-    else:
-        m = split_prefix_pat.match(cname)
-        if m:
-            module = m.group(1)
-            name = m.group(2)
-    return module, name
-
-class DefsWriter:
-    def __init__(self, defs, fp=None, prefix=None, verbose=False,
-                 defsfiles=None, defines={}, genpropgetsets=False,
-                 useprefix=False):
-        self.defs = defs
-        self.use_prefix = useprefix
-        self.objnames = reduce(list.__add__,
-                               [[o.name for o in defs[base]]
-                                for base in defkeys.split()[:3]])
-        self.othernames = reduce(list.__add__,
-                                 [[o.name for o in defs[base]]
-                                  for base in defkeys.split()[3:]])
-        self.objifacedefs = dict(reduce(list.__add__,
-                                       [[(o.name, o) for o in defs[base]]
-                                        for base in defkeys.split()[1:3]]))
-        self.fp = (fp, sys.stdout)[not fp]
-        self.prefix = prefix
-        self.verbose = verbose
-        self.genpropgetsets = genpropgetsets
-        self._c_names={}
-        for defsfile in defsfiles:
-            filter = defsparser.DefsParser(defsfile, defines)
-            filter.startParsing()
-            self._c_names.update(filter.c_name)
-            for vdef in filter.virtuals:
-                self._c_names[vdef.of_object + '.' + vdef.name] = None
-        return
-
-    def write_func_defs(self, deffiles, onlyvirts=False):
-        filter = self._c_names
-        for deffile in deffiles:
-            self.fp.write('\n;; From %s\n\n' % os.path.basename(deffile))
-            if not onlyvirts:
-                for func, ret, args in self.defs['funcs'][deffile]:
-                    if not func in filter:
-                        self._write_func(func, ret, args)
-            for virt, ret, args, objname in self.defs['virts'][deffile]:
-                if not objname + '.' + virt in filter:
-                    self._write_virt(objname, virt, ret, args)
-            self.fp.write('\n')
-        return
-
-    def write_enum_defs(self, fp=None):
-        fp = (fp, self.fp)[not fp]
-        klassptrs = {'GEnum':ctypes.POINTER(EnumClass),
-                    'GFlags':ctypes.POINTER(FlagsClass)}
-        filter = self._c_names
-        objs = self.defs['GEnum'] + self.defs ['GFlags']
-        #objs.sort()
-        fp.write(';; Enumerations and Flags ...\n\n')
-        for obj in objs:
-            cname = name = obj.name
-            tcode = typecode(cname, self.prefix, self.use_prefix)
-            if cname in filter:
-                continue
-            if cname in self.defs['untypedenums']:
-                if tcode not in self.defs['typedefines']:
-                    # no type define so skip and print as untyped enum
-                    continue
-                self.defs['untypedenums'].pop(cname, None)
-            parent_name = obj.parent_name
-            klassptr = klassptrs[parent_name]
-            typename = parent_name.lower()[1:]
-            module = None
-            module, name = split_prefix(cname, self.prefix, self.use_prefix)
-            fp.write('(define-' + typename + ' ' + name + '\n')
-            if module:
-                fp.write('  (in-module "' + module + '")\n')
-            fp.write('  (c-name "' + cname + '")\n')
-            fp.write('  (gtype-id "' + tcode + '")\n')
-            fp.write('  (values\n')
-            classref = self.gobj.g_type_class_ref(obj.type)
-            itemclass = ctypes.cast(classref, klassptr).contents
-            for i in range(itemclass.n_values):
-                val = itemclass.values[i]
-                fp.write('    \'("%s" "%s")\n' % (val.value_nick,
-                                                  val.value_name))
-            fp.write('  )\n')
-            fp.write(')\n\n')
-        if self.defs['untypedenums']:
-            self.write_untyped_enum_defs(fp)
-        return
-
-    def write_untyped_enum_defs(self, fp):
-        fp.write(';; Untyped enumerations and flags ...\n\n')
-        filter = self._c_names
-        for cname, (isflags, entries) in self.defs['untypedenums'].items():
-            if filter and cname in filter: continue
-            module, name = split_prefix(cname, self.prefix, self.use_prefix)
-            if isflags:
-                fp.write('(define-flags ' + name + '\n')
-            else:
-                fp.write('(define-enum ' + name + '\n')
-            if module:
-                fp.write('  (in-module "' + module + '")\n')
-            fp.write('  (c-name "' + cname + '")\n')
-            preindex = entries[0].rfind('_')
-            for ent in entries[1:]:
-                while (preindex > 0
-                       and ent[:preindex] != entries[0][:preindex]):
-                    preindex = ent[:preindex].rfind('_')
-            fp.write('  (values\n')
-            for ent in entries:
-                fp.write('    \'("%s" "%s")\n' %
-                         (ent[preindex+1:].lower().replace('_', '-'), ent))
-            fp.write('  )\n')
-            fp.write(')\n\n')
-        
-
-    def _write_obj_helper(self, obj, fp):
-        base_name = obj.base_name.lower()[1:]
-        cmodule = None
-        cname = name = obj.name
-        type_id = obj.type
-        parent_name = obj.parent_name
-        cmodule, name = split_prefix(cname, self.prefix, self.use_prefix)
-        fp.write('(define-' + base_name + ' ' + name + '\n')
-        if cmodule:
-            fp.write('  (in-module "' + cmodule + '")\n')
-        if base_name == 'object':
-            fp.write('  (parent "' + parent_name + '")\n')
-        fp.write('  (c-name "' + cname + '")\n')
-        fp.write('  (gtype-id "'
-                 + typecode(cname, self.prefix, self.use_prefix) + '")\n')
-        n = ctypes.c_uint()
-        ifaces = self.gobj.g_type_interfaces(type_id, ctypes.byref(n))
-        for i in range(n.value):
-            iface_name = self.gobj.g_type_name(ifaces[i])
-            if iface_name in self.interfaces:
-                fp.write('  (implements "%s")\n' % iface_name)
-        if base_name == 'interface':
-            prereq = self.gobj.g_type_interface_prerequisites(type_id,
-                                                              ctypes.byref(n))
-            for i in range(n.value):
-                fp.write('  (prerequisite "%s")\n'
-                         % self.gobj.g_type_name(prereq[i]))
-        # should do something about accessible fields
-        fp.write(')\n\n')
-        return
-
-    def write_obj_defs(self, fp=None):
-        fp = (fp, self.fp)[not fp]
-        fp.write(';; -*- scheme -*-\n')
-        filter = self._c_names
-        for base in defkeys.split()[:4]:
-            base_name = base.lower()[1:]
-            fp.write('; %s definitions ...\n\n' % base_name)
-            for obj in self.defs[base]:
-                if not obj.name in filter:
-                    self._write_obj_helper(obj, fp)
-        return
-
-    def _write_func(self, name, ret, args):
-        if len(args) >= 1:
-            # methods must have at least one argument
-            munged_name = name.replace('_', '')
-            m = type_pat.match(args[0])
-            if m:
-                obj = m.group(1)
-                if munged_name.startswith(obj.lower()):
-                    if obj not in self.othernames:
-                        self._write_method(obj, name, ret, args)
-                        return
-        fname = name
-        if self.prefix:
-            fname = re.sub('^'+self.prefix+'_', '', fname)
-
-        # it is either a constructor or normal function
-        self.fp.write('(define-function ' + fname + '\n')
-        self.fp.write('  (c-name "' + name + '")\n')
-
-        # Asume that a constructor function name
-        # ends with '_new' and it returns an object pointer.
-        m = func_new_pat.match(name)
-        r = pointer_pat.match(ret)
-        if m and r:
-            cname = ''
-            # get the type name by using the _get_type function
-            func = m.group(1) + '_get_type'
-            lib = [l for l in self.modlib if hasattr(l, func)]
-            if lib:
-                cname = self.gobj.g_type_name(apply(getattr(lib[0], func)))
-            if cname and self.gobj.g_type_from_name(r.group(1)):
-                self.fp.write('  (is-constructor-of "' + cname + '")\n')
-        self._write_return(ret)
-        self._write_arguments(args)
-        return
-
-    def _write_method(self, obj, name, ret, args):
-        regex = ''.join([c+'_?' for c in obj.lower()])
-        mname, count = re.subn(regex, '', name, 1)
-        if not count and self.prefix:
-            mname = re.sub('^'+self.prefix+'_', '', mname)
-        self.fp.write('(define-method ' + mname + '\n')
-        self.fp.write('  (of-object "' + obj + '")\n')
-        self.fp.write('  (c-name "' + name + '")\n')
-        m = getset_pat.match(mname)
-        if self.genpropgetsets and m and len(args[1:]) <= 1:
-            prop = m.group(1)
-            if obj in self.objifacedefs:
-                oidef = self.objifacedefs[obj]
-                if prop.replace('_', '-') in oidef.props:
-                    self.fp.write('  (prop-getset "' + prop + '")\n')
-        self._write_return(ret)
-        self._write_arguments(args[1:])
-        return
-
-    def _write_virt(self, obj, name, ret, args):
-        self.fp.write('(define-virtual ' + name + '\n')
-        self.fp.write('  (of-object "' + obj + '")\n')
-        self._write_return(ret)
-        self._write_arguments(args[1:])
-        return
-
-    def _write_return(self, ret):
-        if ret == 'void':
-            ret = 'none'
-        self.fp.write('  (return-type "' + ret + '")\n')
-        return
-
-    def _write_arguments(self, args):
-        if args and not 'void' in args:
-            varargs = ''
-            self.fp.write('  (parameters\n')
-            for arg in args:
-                if arg == '...':
-                    varargs = '  (varargs #t)\n'
-                else:
-                    tupleArg = tuple(arg.split())
-                    if len(tupleArg) == 2:
-                        self.fp.write('    \'("%s" "%s")\n' % tupleArg)
-            self.fp.write('  )\n' + varargs)
-        self.fp.write(')\n\n')
-
-# ---------- ctypes support classes for gobject library functions ----------
-
-GType = ctypes.c_uint
-
-class GTypeClass(ctypes.Structure):
-    _fields_ = [('g_type', GType)]
-
-class GTypeInstance(ctypes.Structure):
-    _fields_ = [('g_class', ctypes.POINTER(GTypeClass))]
-
-class EnumValue(ctypes.Structure):
-    _fields_ = [('value', ctypes.c_int),
-                ('value_name', ctypes.c_char_p),
-                ('value_nick', ctypes.c_char_p)]
-
-class FlagsValue(ctypes.Structure):
-    _fields_ = [('value', ctypes.c_uint),
-                ('value_name', ctypes.c_char_p),
-                ('value_nick', ctypes.c_char_p)]
-
-class EnumClass(ctypes.Structure):
-    _fields_ = [('g_type_class',  GTypeClass),
-                ('minimum', ctypes.c_int),
-                ('maximum', ctypes.c_int),
-                ('n_values', ctypes.c_uint),
-                ('values', ctypes.POINTER(EnumValue))]
-
-class FlagsClass(ctypes.Structure):
-    _fields_ = [('g_type_class', GTypeClass),
-               ('mask', ctypes.c_uint),
-               ('n_values', ctypes.c_uint),
-               ('values', ctypes.POINTER(FlagsValue))]
-
-class GTypeInterface(ctypes.Structure):
-    _fields_ = [('g_type', GType),
-                ('g_instance_type', GType)]
-
-class GParamSpec(ctypes.Structure):
-    _fields_ = [('g_type_instance', GTypeInstance),
-                ('name', ctypes.c_char_p),
-                ('flags', ctypes.c_uint),
-                ('value_type', GType),
-                ('owner_type', GType)]
-
-# ------------------ Main function -----------------
-
-def main(args):
-    verbose = False
-    all = True
-    onlyenums = False
-    onlyobjdefs = False
-    onlyvirtuals = False
-    separate = False
-    modulename = None
-    defsfiles = []
-    libgobject = None
-    modulelibs = []
-    defines = {}
-    genpropgetsets = False
-    use_prefix = False
-    opts, args = getopt.getopt(args[1:], 'vs:m:f:D:L:l:p',
-                               ['onlyenums', 'onlyobjdefs', 'onlyvirtuals',
-                                'modulename=', 'separate=',
-                                'defsfile=', 'defines=', 'genpropgetsets',
-                                'libgobject-', 'modulelib=', 'useprefix'])
-    for o, v in opts:
-        if o == '-v':
-            verbose = True
-        if o == '--onlyenums':
-            onlyenums = True
-            all = False
-        if o == '--onlyvirtuals':
-            onlyvirtuals = True
-            all = False
-        if o == '--onlyobjdefs':
-            onlyobjdefs = True
-            all = False
-        if o in ('-p', '--useprefix'):
-            use_prefix = True
-        if o == '--genpropgetsets':
-            genpropgetsets = True
-        if o in ('-s', '--separate'):
-            separate = v
-        if o in ('-m', '--modulename'):
-            modulename = v
-        if o in ('-L', '--libgobject'):
-            libgobject = v
-        if o in ('-l', '--modulelib'):
-            modulelibs.append(v)
-        if o in ('-f', '--defsfile'):
-            defsfiles.append(v)
-        if o in ('-D', '--defines'):
-            nameval = v.split('=')
-            try:
-                defines[nameval[0]] = nameval[1]
-            except IndexError:
-                defines[nameval[0]] = None
-
-    if not args[0:1]:
-        print 'Must specify at least one input file name'
-        return -1
-    if not modulelibs:
-        print 'Must specify one or more modulelib names'
-        return -1
-
-    # load the gobject and module libraries and init the gtype system
-    if not libgobject:
-        if verbose:
-            sys.stderr.write('Using "libgobject-2.0.so" as the libobject' \
-                             'library name by default\n')
-        gobj = ctypes.cdll.LoadLibrary('libgobject-2.0.so')
-    else:
-        gobj = ctypes.cdll.LoadLibrary(libgobject)
-
-    modlib = [ctypes.cdll.LoadLibrary(lib) for lib in modulelibs]
-
-    gobj.g_type_init()
-    gobj.g_type_name.restype = ctypes.c_char_p
-    gobj.g_type_from_name.argtypes = [ctypes.c_char_p]
-    gobj.g_type_interfaces.restype = ctypes.POINTER(ctypes.c_int)
-    gobj.g_type_interface_prerequisites.restype = ctypes.POINTER(ctypes.c_int)
-    gobj.g_object_class_list_properties.restype = ctypes.POINTER(ctypes.POINTER(GParamSpec))
-    gobj.g_object_interface_list_properties.restype = ctypes.POINTER(ctypes.POINTER(GParamSpec))
-    gobj.GObject = gobj.g_type_from_name('GObject')
-    gobj.g_object_new(gobj.GObject, None)
-
-    defs = {}
-    for key in defkeys.split():
-        defs[key] = []
-    defs['funcs'] = {}
-    defs['virts'] = {}
-    defs['untypedenums'] = {}
-    defs['typedefines'] = []
-
-    # read in all the object and function definitions
-    args.sort()
-    type_define_pat = re.compile(
-        r'^#define\s+([A-Z]\S+_TYPE_\S+)\s+.*[a-z]\w+_get_type.*$',
-        re.MULTILINE)
-    for filename in args:
-        buf = open(filename).read()
-        defs['typedefines'] += type_define_pat.findall(buf)
-        buf = clean_buffer(buf)
-        find_enums(buf, defs)
-        find_defs(buf, gobj, modlib, defs)
-        find_func_defs(buf, modlib, filename, defs, verbose)
-        find_virt_defs(buf, filename, defs)
-
-    for key in defkeys.split():
-        defs[key].sort()
-
-    methods = types = None
-    if separate:
-        methods = file(separate + '.defs', 'w')
-        types = file(separate + '-types.defs', 'w')
-
-    dw = DefsWriter(defs, methods, prefix=modulename, verbose=verbose,
-                    defsfiles=defsfiles, defines=defines,
-                    genpropgetsets=genpropgetsets, useprefix=use_prefix)
-    dw.interfaces = [i.name for i in defs['GInterface']]
-    dw.gobj = gobj
-    dw.modlib = modlib
-
-    if onlyobjdefs or all:
-        dw.write_obj_defs(types)
-        if separate:
-            print "Wrote object defs to %s-types.defs" % separate
-    if onlyenums or all:
-        dw.write_enum_defs(types)
-        if separate:
-            print "Wrote enum and flags defs to %s-types.defs" % separate
-    if onlyvirtuals or all:
-        dw.write_func_defs(args, onlyvirtuals)
-        if separate:
-            print "Wrote function and virtual defs to %s.defs" % separate
-
-if __name__ == '__main__':
-    sys.exit(main(sys.argv))
diff --git a/codegen/defsparser.py b/codegen/defsparser.py
deleted file mode 100644 (file)
index 37ba0a2..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-import os, sys
-import scmexpr
-from definitions import BoxedDef, EnumDef, FlagsDef, FunctionDef, \
-     InterfaceDef, MethodDef, ObjectDef, PointerDef, VirtualDef
-
-include_path = ['.']
-
-class IncludeParser(scmexpr.Parser):
-    """A simple parser that follows include statements automatically"""
-    def include(self, input_filename):
-        global include_path
-        if os.path.isabs(input_filename):
-            filename = input_filename
-            # set self.filename to the include name, to handle recursive includes
-            oldfile = self.filename
-            self.filename = filename
-            self.startParsing()
-            self.filename = oldfile
-        else:
-            inc_path = [os.path.dirname(self.filename)] + include_path
-            for filename in [os.path.join(path_entry, input_filename)
-                             for path_entry in inc_path]:
-                if not os.path.exists(filename):
-                    continue
-                # set self.filename to the include name, to handle recursive includes
-                oldfile = self.filename
-                self.filename = filename
-                self.startParsing()
-                self.filename = oldfile
-                break
-            else:
-                raise IOError("%s not found in include path %s" % (input_filename, inc_path))
-
-class DefsParser(IncludeParser):
-    def __init__(self, arg, defines={}):
-        IncludeParser.__init__(self, arg)
-        self.objects = []
-        self.interfaces = []
-        self.enums = []      # enums and flags
-        self.boxes = []      # boxed types
-        self.pointers = []   # pointer types
-        self.functions = []  # functions and methods
-        self.virtuals = []   # virtual methods
-        self.c_name = {}     # hash of c names of functions
-        self.methods = {}    # hash of methods of particular objects
-        self.defines = defines      # -Dfoo=bar options, as dictionary
-
-    def define_object(self, *args):
-        odef = apply(ObjectDef, args)
-        self.objects.append(odef)
-        self.c_name[odef.c_name] = odef
-    def define_interface(self, *args):
-        idef = apply(InterfaceDef, args)
-        self.interfaces.append(idef)
-        self.c_name[idef.c_name] = idef
-    def define_enum(self, *args):
-        edef = apply(EnumDef, args)
-        self.enums.append(edef)
-        self.c_name[edef.c_name] = edef
-    def define_flags(self, *args):
-        fdef = apply(FlagsDef, args)
-        self.enums.append(fdef)
-        self.c_name[fdef.c_name] = fdef
-    def define_boxed(self, *args):
-        bdef = apply(BoxedDef, args)
-        self.boxes.append(bdef)
-        self.c_name[bdef.c_name] = bdef
-    def define_pointer(self, *args):
-        pdef = apply(PointerDef, args)
-        self.pointers.append(pdef)
-        self.c_name[pdef.c_name] = pdef
-    def define_function(self, *args):
-        fdef = apply(FunctionDef, args)
-        self.functions.append(fdef)
-        self.c_name[fdef.c_name] = fdef
-    def define_method(self, *args):
-        mdef = apply(MethodDef, args)
-        self.functions.append(mdef)
-        self.c_name[mdef.c_name] = mdef
-    def define_virtual(self, *args):
-        vdef = apply(VirtualDef, args)
-        self.virtuals.append(vdef)
-    def merge(self, old, parmerge):
-        for obj in self.objects:
-            if old.c_name.has_key(obj.c_name):
-                obj.merge(old.c_name[obj.c_name])
-        for f in self.functions:
-            if old.c_name.has_key(f.c_name):
-                f.merge(old.c_name[f.c_name], parmerge)
-
-    def printMissing(self, old):
-        for obj in self.objects:
-            if not old.c_name.has_key(obj.c_name):
-                obj.write_defs()
-        for f in self.functions:
-            if not old.c_name.has_key(f.c_name):
-                f.write_defs()
-
-    def write_defs(self, fp=sys.stdout):
-        for obj in self.objects:
-            obj.write_defs(fp)
-        for enum in self.enums:
-            enum.write_defs(fp)
-        for boxed in self.boxes:
-            boxed.write_defs(fp)
-        for pointer in self.pointers:
-            pointer.write_defs(fp)
-        for func in self.functions:
-            func.write_defs(fp)
-
-    def find_object(self, c_name):
-        for obj in self.objects:
-            if obj.c_name == c_name:
-                return obj
-        else:
-            raise ValueError('object %r not found' % c_name)
-
-    def find_constructor(self, obj, overrides):
-        for func in self.functions:
-            if isinstance(func, FunctionDef) and \
-               func.is_constructor_of == obj.c_name and \
-               not overrides.is_ignored(func.c_name):
-                return func
-
-    def find_methods(self, obj):
-        objname = obj.c_name
-        return filter(lambda func, on=objname: isinstance(func, MethodDef) and
-                      func.of_object == on, self.functions)
-
-    def find_virtuals(self, obj):
-        objname = obj.c_name
-        retval = filter(lambda func, on=objname: isinstance(func, VirtualDef) and
-                        func.of_object == on, self.virtuals)
-        return retval
-
-    def find_functions(self):
-        return filter(lambda func: isinstance(func, FunctionDef) and
-                      not func.is_constructor_of, self.functions)
-
-    def ifdef(self, *args):
-        if args[0] in self.defines:
-            for arg in args[1:]:
-                #print >> sys.stderr, "-----> Handling conditional definition (%s): %s" % (args[0], arg)
-                self.handle(arg)
-        else:
-            pass
-            #print >> sys.stderr, "-----> Conditional %s is not true" % (args[0],)
-
-    def ifndef(self, *args):
-        if args[0] not in self.defines:
-            for arg in args[1:]:
-                self.handle(arg)
diff --git a/codegen/docextract.py b/codegen/docextract.py
deleted file mode 100644 (file)
index eff8c5e..0000000
+++ /dev/null
@@ -1,448 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-'''Simple module for extracting GNOME style doc comments from C
-sources, so I can use them for other purposes.'''
-
-import sys, os, string, re
-
-__all__ = ['extract']
-
-class GtkDoc:
-    def __init__(self):
-        self.name = None
-        self.block_type = '' # The block type ('function', 'signal', 'property')
-        self.params = []
-        self.annotations = []
-        self.description = ''
-        self.ret = ('', []) # (return, annotations)
-    def set_name(self, name):
-        self.name = name
-    def set_type(self, block_type):
-        self.block_type = block_type
-    def get_type(self):
-        return self.block_type
-    def add_param(self, name, description, annotations=[]):
-        if name == '...':
-            name = 'Varargs'
-        self.params.append((name, description, annotations))
-    def append_to_last_param(self, extra):
-        self.params[-1] = (self.params[-1][0], self.params[-1][1] + extra,
-            self.params[-1][2])
-    def append_to_named_param(self, name, extra):
-        for i in range(len(self.params)):
-            if self.params[i][0] == name:
-                self.params[i] = (name, self.params[i][1] + extra,
-                    self.params[i][2])
-                return
-        # fall through to adding extra parameter ...
-        self.add_param(name, extra)
-    def add_annotation(self, annotation):
-        self.annotations.append(annotation)
-    def get_annotations(self):
-        return self.annotations
-    def append_to_description(self, extra):
-        self.description = self.description + extra
-    def get_description(self):
-        return self.description
-    def add_return(self, first_line, annotations=[]):
-        self.ret = (first_line, annotations)
-    def append_to_return(self, extra):
-        self.ret = (self.ret[0] + extra, self.ret[1])
-
-comment_start_pattern = re.compile(r'^\s*/\*\*\s')
-comment_end_pattern = re.compile(r'^\s*\*+/')
-comment_line_lead_pattern = re.compile(r'^\s*\*\s*')
-comment_empty_line_pattern = re.compile(r'^\s*\**\s*$')
-function_name_pattern = re.compile(r'^([a-z]\w*)\s*:?(\s*\(.*\)\s*){0,2}\s*$')
-signal_name_pattern = re.compile(r'^([A-Z]\w+::[a-z0-9-]+)\s*:?(\s*\(.*\)\s*){0,2}\s*$')
-property_name_pattern = re.compile(r'^([A-Z]\w+:[a-z0-9-]+)\s*:?(\s*\(.*\)\s*){0,2}\s*$')
-return_pattern = re.compile(r'^@?(returns:|return\s+value:)(.*\n?)$', re.IGNORECASE)
-deprecated_pattern = re.compile(r'^(deprecated\s*:\s*.*\n?)$', re.IGNORECASE)
-rename_to_pattern = re.compile(r'^(rename\s+to)\s*:\s*(.*\n?)$', re.IGNORECASE)
-param_pattern = re.compile(r'^@(\S+)\s*:(.*\n?)$')
-# Used to extract the annotations in the parameter and return descriptions
-# extracted using above [param|return]_pattern patterns.
-annotations_pattern = re.compile(r'^(?:(\s*\(.*\)\s*)*:)')
-# Used to construct the annotation lists.
-annotation_lead_pattern = re.compile(r'^\s*\(\s*(.*?)\s*\)\s*')
-
-# These patterns determine the identifier of the current comment block.  They
-# are grouped in a list for easy determination of block identifiers (in
-# skip_to_identifier).  The function_name_pattern should be tested for last
-# because it always matches signal and property identifiers.
-identifier_patterns = [ signal_name_pattern, property_name_pattern, function_name_pattern ]
-
-# This pattern is to match return sections that forget to have a colon (':')
-# after the initial 'Return' phrase.  It is not included by default in the list
-# of final sections below because a lot of function descriptions begin with
-# 'Returns ...' and the process_description() function would stop right at that
-# first line, thinking it is a return section.
-no_colon_return_pattern = re.compile(r'^@?(returns|return\s+value)\s*(.*\n?)$', re.IGNORECASE)
-since_pattern = re.compile(r'^(since\s*:\s*.*\n?)$', re.IGNORECASE)
-
-# These patterns normally will be encountered after the description.  Knowing
-# the order of their appearance is difficult so this list is used to test when
-# one begins and the other ends when processing the rest of the sections after
-# the description.
-final_section_patterns = [ return_pattern, since_pattern, deprecated_pattern, rename_to_pattern ]
-
-def parse_file(fp, doc_dict):
-    line = fp.readline()
-    while line:
-        cur_doc = GtkDoc()
-        line = skip_to_comment_block(fp, line)
-        line = skip_to_identifier(fp, line, cur_doc)
-        # See if the identifier is found (stored in the current GtkDoc by
-        # skip_to_identifier).  If so, continue reading the rest of the comment
-        # block.
-        if cur_doc.name:
-            line = process_params(fp, line, cur_doc)
-            line = process_description(fp, line, cur_doc)
-            line = process_final_sections(fp, line, cur_doc)
-            # Add the current doc block to the dictionary of doc blocks.
-            doc_dict[cur_doc.name] = cur_doc
-
-# Given a list of annotations as string of the form 
-# '(annotation1) (annotation2) ...' return a list of annotations of the form
-# [ (name1, value1), (name2, value2) ... ].  Not all annotations have values so
-# the values in the list of tuples could be empty ('').
-def get_annotation_list(annotations):
-    annotation_list = []
-    while annotations:
-        match = annotation_lead_pattern.match(annotations)
-        if match:
-            annotation_contents = match.group(1)
-            name, split, value = annotation_contents.strip().partition(' ')
-            annotation_list.append((name, value))
-            # Remove first occurrence to continue processing.
-            annotations = annotation_lead_pattern.sub('', annotations)
-        else:
-            break
-    return annotation_list
-
-# Given a currently read line, test that line and continue reading until the
-# beginning of a comment block is found or eof is reached.  Return the last
-# read line.
-def skip_to_comment_block(fp, line):
-    while line:
-        if comment_start_pattern.match(line):
-            break
-        line = fp.readline()
-    return line
-
-# Given the current line in a comment block, continue skipping lines until a
-# non-blank line in the comment block is found or until the end of the block
-# (or eof) is reached.  Returns the line where reading stopped.
-def skip_to_nonblank(fp, line):
-    while line:
-        if not comment_empty_line_pattern.match(line):
-            break
-        line = fp.readline()
-        # Stop processing if eof or end of comment block is reached.
-        if not line or comment_end_pattern.match(line):
-            break
-    return line
-
-# Given the first line of a comment block (the '/**'), see if the next
-# non-blank line is the identifier of the comment block.  Stop processing if
-# the end of the block or eof is reached.  Store the identifier (if there is
-# one) and its type ('function', 'signal' or 'property') in the given GtkDoc.
-# Return the line where the identifier is found or the line that stops the
-# processing (if eof or the end of the comment block is found first).
-def skip_to_identifier(fp, line, cur_doc):
-    # Skip the initial comment block line ('/**') if not eof.
-    if line: line = fp.readline()
-
-    # Now skip empty lines.
-    line = skip_to_nonblank(fp, line)
-
-    # See if the first non-blank line is the identifier.
-    if line and not comment_end_pattern.match(line):
-        # Remove the initial ' * ' in comment block line and see if there is an
-        # identifier.
-        line = comment_line_lead_pattern.sub('', line)
-        for pattern in identifier_patterns:
-            match = pattern.match(line)
-            if match:
-                # Set the GtkDoc name.
-                cur_doc.set_name(match.group(1))
-                # Get annotations and add them to the GtkDoc.
-                annotations = get_annotation_list(match.group(2))
-                for annotation in annotations:
-                    cur_doc.add_annotation(annotation)
-                # Set the GtkDoc type.
-                if pattern == signal_name_pattern:
-                    cur_doc.set_type('signal')
-                elif pattern == property_name_pattern:
-                    cur_doc.set_type('property')
-                elif pattern == function_name_pattern:
-                    cur_doc.set_type('function')
-                return line
-    return line
-
-# Given a currently read line (presumably the identifier line), read the next
-# lines, testing to see if the lines are part of parameter descriptions.  If
-# so, store the parameter descriptions in the given doc block.  Stop on eof and
-# return the last line that stops the processing.
-def process_params(fp, line, cur_doc):
-    # Skip the identifier line if not eof.  Also skip any blank lines in the
-    # comment block.  Return if eof or the end of the comment block are
-    # encountered.
-    if line: line = fp.readline()
-    line = skip_to_nonblank(fp, line)
-    if not line or comment_end_pattern.match(line):
-        return line
-
-    # Remove initial ' * ' in first non-empty comment block line.
-    line = comment_line_lead_pattern.sub('', line)
-
-    # Now process possible parameters as long as no eof or the end of the
-    # param section is not reached (which could be triggered by anything that
-    # doesn't match a '@param:..." line, even the end of the comment block).
-    match = param_pattern.match(line)
-    while line and match:
-        description = match.group(2)
-
-        # First extract the annotations from the description and save them.
-        annotations = []
-        annotation_match = annotations_pattern.match(description)
-        if annotation_match:
-            annotations = get_annotation_list(annotation_match.group(1))
-            # Remove the annotations from the description
-            description = annotations_pattern.sub('', description)
-
-        # Default to appending lines to current parameter.
-        append_func = cur_doc.append_to_last_param
-
-        # See if the return has been included as part of the parameter
-        # section and make sure that lines are added to the GtkDoc return if
-        # so.
-        if match.group(1).lower() == "returns":
-            cur_doc.add_return(description, annotations)
-            append_func = cur_doc.append_to_return
-        # If not, just add it as a regular parameter.
-        else:
-            cur_doc.add_param(match.group(1), description, annotations)
-
-        # Now read lines and append them until next parameter, beginning of
-        # description (an empty line), the end of the comment block or eof.
-        line = fp.readline()
-        while line:
-            # Stop processing if end of comment block or a blank comment line
-            # is encountered.
-            if comment_empty_line_pattern.match(line) or \
-                    comment_end_pattern.match(line):
-                break
-
-            # Remove initial ' * ' in comment block line.
-            line = comment_line_lead_pattern.sub('', line)
-
-            # Break from current param processing if a new one is
-            # encountered.
-            if param_pattern.match(line): break;
-
-            # Otherwise, just append the current line and get the next line.
-            append_func(line)
-            line = fp.readline()
-
-        # Re-evaluate match for while condition
-        match = param_pattern.match(line)
-
-    # End by returning the current line.
-    return line
-
-# Having processed parameters, read the following lines into the description of
-# the current doc block until the end of the comment block, the end of file or
-# a return section is encountered.
-def process_description(fp, line, cur_doc):
-    # First skip empty lines returning on eof or end of comment block.
-    line = skip_to_nonblank(fp, line)
-    if not line or comment_end_pattern.match(line):
-        return line
-
-    # Remove initial ' * ' in non-empty comment block line.
-    line = comment_line_lead_pattern.sub('', line)
-
-    # Also remove possible 'Description:' prefix.
-    if line[:12] == 'Description:': line = line[12:]
-
-    # Used to tell if the previous line was blank and a return section
-    # uncommonly marked with 'Returns ...' instead of 'Returns: ...'  has
-    # started (assume it is non-empty to begin with).
-    prev_line = 'non-empty'
-
-    # Now read lines until a new section (like a return or a since section) is
-    # encountered.
-    while line:
-        # See if the description section has ended (if the line begins with
-        # 'Returns ...' and the previous line was empty -- this loop replaces
-        # empty lines with a newline).
-        if no_colon_return_pattern.match(line) and prev_line == '\n':
-            return line
-        # Or if one of the patterns of the final sections match
-        for pattern in final_section_patterns:
-            if pattern.match(line):
-                return line
-
-        # If not, append lines to description in the doc comment block.
-        cur_doc.append_to_description(line)
-
-        prev_line = line
-        line = fp.readline()
-
-        # Stop processing on eof or at the end of comment block.
-        if not line or comment_end_pattern.match(line):
-            return line
-
-        # Remove initial ' * ' in line so that the text can be appended to the
-        # description of the comment block and make sure that if the line is
-        # empty it be interpreted as a newline.
-        line = comment_line_lead_pattern.sub('', line)
-        if not line: line = '\n'
-
-# Given the line that ended the description (the first line of one of the final
-# sections) process the final sections ('Returns:', 'Since:', etc.) until the
-# end of the comment block or eof.  Return the line that ends the processing.
-def process_final_sections(fp, line, cur_doc):
-    while line and not comment_end_pattern.match(line):
-        # Remove leading ' * ' from current non-empty comment line.
-        line = comment_line_lead_pattern.sub('', line)
-        # Temporarily append the no colon return pattern to the final section
-        # patterns now that the description has been processed.  It will be
-        # removed after the for loop below executes so that future descriptions
-        # that begin with 'Returns ...' are not interpreted as a return
-        # section.
-        final_section_patterns.append(no_colon_return_pattern)
-        for pattern in final_section_patterns:
-            match = pattern.match(line)
-            if match:
-                if pattern == return_pattern or \
-                        pattern == no_colon_return_pattern:
-                    # Dealing with a 'Returns:' so first extract the
-                    # annotations from the description and save them.
-                    description = match.group(2)
-                    annotations = []
-                    annotation_match = \
-                            annotations_pattern.match(description)
-                    if annotation_match:
-                        annotations = \
-                                get_annotation_list(annotation_match.group(1))
-                        # Remove the annotations from the description
-                        description = annotations_pattern.sub('', description)
-
-                    # Now add the return.
-                    cur_doc.add_return(description, annotations)
-                    # In case more lines need to be appended.
-                    append_func = cur_doc.append_to_return
-                elif pattern == rename_to_pattern:
-                    # Dealing with a 'Rename to:' section (GObjectIntrospection
-                    # annotation) so no further lines will be appended but this
-                    # single one (and only to the annotations).
-                    append_func = None
-                    cur_doc.add_annotation((match.group(1),
-                            match.group(2)))
-                else:
-                    # For all others ('Since:' and 'Deprecated:') just append
-                    # the line to the description for now.
-                    cur_doc.append_to_description(line)
-                    # In case more lines need to be appended.
-                    append_func = cur_doc.append_to_description
-
-                # Stop final section pattern matching for loop since a match
-                # has already been found.
-                break
-
-        # Remove the no colon return pattern (which was temporarily added in
-        # the just executed loop) from the list of final section patterns.
-        final_section_patterns.pop()
-
-        line = fp.readline()
-
-        # Now continue appending lines to current section until a new one is
-        # found or an eof or the end of the comment block is encountered.
-        finished = False
-        while not finished and line and \
-                not comment_end_pattern.match(line):
-            # Remove leading ' * ' from line and make sure that if it is empty,
-            # it be interpreted as a newline.
-            line = comment_line_lead_pattern.sub('', line)
-            if not line: line = '\n'
-
-            for pattern in final_section_patterns:
-                if pattern.match(line):
-                    finished = True
-                    break
-
-            # Break out of loop if a new section is found (determined in above
-            # inner loop).
-            if finished: break
-
-            # Now it's safe to append line.
-            if append_func: append_func(line)
-
-            # Get the next line to continue processing.
-            line = fp.readline()
-
-    return line
-
-def parse_dir(dir, doc_dict):
-    for file in os.listdir(dir):
-        if file in ('.', '..'): continue
-        path = os.path.join(dir, file)
-        if os.path.isdir(path):
-            parse_dir(path, doc_dict)
-        if len(file) > 2 and file[-2:] == '.c':
-            sys.stderr.write("Processing " + path + '\n')
-            parse_file(open(path, 'r'), doc_dict)
-
-def extract(dirs, doc_dict=None):
-    if not doc_dict: doc_dict = {}
-    for dir in dirs:
-        parse_dir(dir, doc_dict)
-    return doc_dict
-
-tmpl_section_pattern = re.compile(r'^<!-- ##### (\w+) (\w+) ##### -->$')
-def parse_tmpl(fp, doc_dict):
-    cur_doc = None
-
-    line = fp.readline()
-    while line:
-        match = tmpl_section_pattern.match(line)
-        if match:
-            cur_doc = None  # new input shouldn't affect the old doc dict
-            sect_type = match.group(1)
-            sect_name = match.group(2)
-
-            if sect_type == 'FUNCTION':
-                cur_doc = doc_dict.get(sect_name)
-                if not cur_doc:
-                    cur_doc = GtkDoc()
-                    cur_doc.set_name(sect_name)
-                    doc_dict[sect_name] = cur_doc
-        elif line == '<!-- # Unused Parameters # -->\n':
-            cur_doc = None # don't worry about unused params.
-        elif cur_doc:
-            if line[:10] == '@Returns: ':
-                if string.strip(line[10:]):
-                    cur_doc.append_to_return(line[10:])
-            elif line[0] == '@':
-                pos = string.find(line, ':')
-                if pos >= 0:
-                    cur_doc.append_to_named_param(line[1:pos], line[pos+1:])
-                else:
-                    cur_doc.append_to_description(line)
-            else:
-                cur_doc.append_to_description(line)
-
-        line = fp.readline()
-
-def extract_tmpl(dirs, doc_dict=None):
-    if not doc_dict: doc_dict = {}
-    for dir in dirs:
-        for file in os.listdir(dir):
-            if file in ('.', '..'): continue
-            path = os.path.join(dir, file)
-            if os.path.isdir(path):
-                continue
-            if len(file) > 2 and file[-2:] == '.sgml':
-                parse_tmpl(open(path, 'r'), doc_dict)
-    return doc_dict
diff --git a/codegen/docextract_to_xml.py b/codegen/docextract_to_xml.py
deleted file mode 100755 (executable)
index f41c839..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/usr/bin/env python
-# -*- Mode: Python; py-indent-offset: 4 -*-
-#
-# This litte script outputs the C doc comments to an XML format.
-# So far it's only used by gtkmm (The C++ bindings). Murray Cumming.
-# Usage example:
-# # ./docextract_to_xml.py -s /gnome/head/cvs/gtk+/gtk/ -s /gnome/head/cvs/gtk+/docs/reference/gtk/tmpl/ > gtk_docs.xml
-
-import getopt
-import re
-import string
-import sys
-
-import docextract
-
-def usage():
-    sys.stderr.write('usage: docextract_to_xml.py ' +
-        '[-s /src/dir | --source-dir=/src/dir] ' +
-        '[-a | --with-annotations] [-p | --with-properties] ' +
-        '[-i | --with-signals ]\n')
-    sys.exit(1)
-
-# Translates special texts to &... HTML acceptable format.  Also replace
-# occurrences of '/*' and '*/' with '/ *' and '* /' respectively to avoid
-# comment errors (note the spaces).  Some function descriptions include C++
-# multi-line comments which cause errors when the description is included in a
-# C++ Doxygen comment block.
-def escape_text(unescaped_text):
-    # Escape every "&" not part of an entity reference
-    escaped_text = re.sub(r'&(?![A-Za-z]+;)', '&amp;', unescaped_text)
-
-    # These weird entities turn up in the output...
-    escaped_text = string.replace(escaped_text, '&mdash;', '&#8212;')
-    escaped_text = string.replace(escaped_text, '&ast;', '*')
-    escaped_text = string.replace(escaped_text, '&percnt;', '%')
-    escaped_text = string.replace(escaped_text, '&commat;', '@')
-    escaped_text = string.replace(escaped_text, '&num;', '&#35;')
-    escaped_text = string.replace(escaped_text, '&nbsp;', '&#160;')
-    # This represents a '/' before or after an '*' so replace with slash but
-    # with spaces.
-    escaped_text = string.replace(escaped_text, '&sol;', ' / ')
-
-    # Escape for both tag contents and attribute values
-    escaped_text = string.replace(escaped_text, '<', '&lt;')
-    escaped_text = string.replace(escaped_text, '>', '&gt;')
-    escaped_text = string.replace(escaped_text, '"', '&quot;')
-
-    # Replace C++ comment begin and ends to ones that don't affect Doxygen.
-    escaped_text = string.replace(escaped_text, '/*', '/ *')
-    escaped_text = string.replace(escaped_text, '*/', '* /')
-
-    return escaped_text
-
-def print_annotations(annotations):
-    for annotation in annotations:
-        print "<annotation name=" + annotation[0] +  ">" + \
-                escape_text(annotation[1]) + "</annotation>"
-
-if __name__ == '__main__':
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "d:s:o:api",
-                                   ["source-dir=", "with-annotations",
-                                     "with-properties", "with-signals"])
-    except getopt.error, e:
-        sys.stderr.write('docextract_to_xml.py: %s\n' % e)
-        usage()
-    source_dirs = []
-    with_annotations = False
-    with_signals = False
-    with_properties = False
-    for opt, arg in opts:
-        if opt in ('-s', '--source-dir'):
-            source_dirs.append(arg)
-        if opt in ('-a', '--with-annotations'):
-            with_annotations = True
-        if opt in ('-p', '--with-properties'):
-            with_properties = True
-        if opt in ('-i', '--with-signals'):
-            with_signals = True
-    if len(args) != 0:
-        usage()
-
-    docs = docextract.extract(source_dirs);
-    docextract.extract_tmpl(source_dirs, docs); #Try the tmpl sgml files too.
-
-    # print d.docs
-
-    if docs:
-
-        print "<root>"
-
-        for name, value in sorted(docs.items()):
-            # Get the type of comment block ('function', 'signal' or
-            # 'property') (the value is a GtkDoc).
-            block_type = value.get_type()
-
-            # Skip signals if the option was not specified.
-            if block_type == 'signal' and not with_signals:
-                continue
-            # Likewise for properties.
-            elif block_type == 'property' and not with_properties:
-                continue
-
-            print "<" + block_type + " name=\"" + escape_text(name) + "\">"
-
-            print "<description>"
-            print escape_text(value.get_description())
-            print "</description>"
-
-            # Loop through the parameters if not dealing with a property:
-            if block_type != 'property':
-                print "<parameters>"
-                for name, description, annotations in value.params:
-                        print "<parameter name=\"" + escape_text(name) + "\">"
-                        print "<parameter_description>" + escape_text(description) + "</parameter_description>"
-
-                        if with_annotations:
-                            print_annotations(annotations)
-
-                        print "</parameter>"
-
-                print "</parameters>"
-
-                # Show the return-type (also if not dealing with a property):
-                if with_annotations:
-                    print "<return>"
-                    print "<return_description>" + escape_text(value.ret[0]) + \
-                            "</return_description>"
-                    print_annotations(value.ret[1])
-                    print "</return>"
-                else:
-                    print "<return>" + escape_text(value.ret[0]) + "</return>"
-
-            if with_annotations:
-                print_annotations(value.get_annotations())
-
-            print "</" + block_type + ">\n"
-
-        print "</root>"
diff --git a/codegen/docgen.py b/codegen/docgen.py
deleted file mode 100755 (executable)
index b9e2f67..0000000
+++ /dev/null
@@ -1,766 +0,0 @@
-#!/usr/bin/env python
-import getopt
-import os
-import re
-import sys
-
-import definitions
-import defsparser
-import docextract
-import override
-
-
-class Node:
-
-    def __init__(self, name, interfaces=[]):
-        self.name = name
-        self.interfaces = interfaces
-        self.subclasses = []
-
-    def add_child(self, node):
-        self.subclasses.append(node)
-
-
-def build_object_tree(parser):
-    # reorder objects so that parent classes come first ...
-    objects = parser.objects[:]
-    pos = 0
-    while pos < len(objects):
-        parent = objects[pos].parent
-        for i in range(pos+1, len(objects)):
-            if objects[i].c_name == parent:
-                objects.insert(i+1, objects[pos])
-                del objects[pos]
-                break
-        else:
-            pos = pos + 1
-
-    root = Node(None)
-    nodes = {None: root}
-    for obj_def in objects:
-        parent_name = obj_def.parent
-        if parent_name == 'GObject':
-            parent_name = None
-        parent_node = nodes[parent_name]
-        node = Node(obj_def.c_name, obj_def.implements)
-        parent_node.add_child(node)
-        nodes[node.name] = node
-
-    if parser.interfaces:
-        interfaces = Node('gobject.GInterface')
-        root.add_child(interfaces)
-        nodes[interfaces.name] = interfaces
-        for obj_def in parser.interfaces:
-            node = Node(obj_def.c_name)
-            interfaces.add_child(node)
-            nodes[node.name] = node
-
-    if parser.boxes:
-        boxed = Node('gobject.GBoxed')
-        root.add_child(boxed)
-        nodes[boxed.name] = boxed
-        for obj_def in parser.boxes:
-            node = Node(obj_def.c_name)
-            boxed.add_child(node)
-            nodes[node.name] = node
-
-    if parser.pointers:
-        pointers = Node('gobject.GPointer')
-        root.add_child(pointers)
-        nodes[pointers.name] = pointers
-        for obj_def in parser.pointers:
-            node = Node(obj_def.c_name)
-            pointers.add_child(node)
-            nodes[node.name] = node
-
-    return root
-
-
-class DocWriter:
-
-    def __init__(self):
-        self._fp = None
-        # parse the defs file
-        self.parser = defsparser.DefsParser(())
-        self.overrides = override.Overrides()
-        self.classmap = {}
-        self.docs = {}
-
-    def add_sourcedirs(self, source_dirs):
-        self.docs = docextract.extract(source_dirs, self.docs)
-
-    def add_tmpldirs(self, tmpl_dirs):
-        self.docs = docextract.extract_tmpl(tmpl_dirs, self.docs)
-
-    def add_docs(self, defs_file, overrides_file, module_name):
-        '''parse information about a given defs file'''
-        self.parser.filename = defs_file
-        self.parser.startParsing(defs_file)
-        if overrides_file:
-            self.overrides.handle_file(overrides_file)
-
-        for obj in (self.parser.objects + self.parser.interfaces +
-                    self.parser.boxes + self.parser.pointers):
-            if not obj.c_name in self.classmap:
-                self.classmap[obj.c_name] = '%s.%s' % (
-                    module_name, obj.name)
-
-    def pyname(self, name):
-        return self.classmap.get(name, name)
-
-    def _compare(self, obja, objb):
-        return cmp(self.pyname(obja.c_name), self.pyname(objb.c_name))
-
-    def output_docs(self, output_prefix):
-        files = {}
-
-        # class hierarchy
-        hierarchy = build_object_tree(self.parser)
-        filename = self.create_filename('hierarchy', output_prefix)
-        self._fp = open(filename, 'w')
-        self.write_full_hierarchy(hierarchy)
-        self._fp.close()
-
-        obj_defs = (self.parser.objects + self.parser.interfaces +
-                    self.parser.boxes + self.parser.pointers)
-        obj_defs.sort(self._compare)
-
-        for obj_def in obj_defs:
-            filename = self.create_filename(obj_def.c_name, output_prefix)
-            self._fp = open(filename, 'w')
-            if isinstance(obj_def, definitions.ObjectDef):
-                self.output_object_docs(obj_def)
-            elif isinstance(obj_def, definitions.InterfaceDef):
-                self.output_interface_docs(obj_def)
-            elif isinstance(obj_def, definitions.BoxedDef):
-                self.output_boxed_docs(obj_def)
-            elif isinstance(obj_def, definitions.PointerDef):
-                self.output_boxed_docs(obj_def)
-            self._fp.close()
-            files[os.path.basename(filename)] = obj_def
-
-        if not files:
-            return
-
-        output_filename = self.create_toc_filename(output_prefix)
-        self._fp = open(output_filename, 'w')
-        self.output_toc(files)
-        self._fp.close()
-
-    def output_object_docs(self, obj_def):
-        self.write_class_header(obj_def.c_name)
-
-        self.write_heading('Synopsis')
-        self.write_synopsis(obj_def)
-        self.close_section()
-
-        # construct the inheritence hierarchy ...
-        ancestry = [(obj_def.c_name, obj_def.implements)]
-        try:
-            parent = obj_def.parent
-            while parent != None:
-                if parent == 'GObject':
-                    ancestry.append(('GObject', []))
-                    parent = None
-                else:
-                    parent_def = self.parser.find_object(parent)
-                    ancestry.append((parent_def.c_name, parent_def.implements))
-                    parent = parent_def.parent
-        except ValueError:
-            pass
-        ancestry.reverse()
-        self.write_heading('Ancestry')
-        self.write_hierarchy(obj_def.c_name, ancestry)
-        self.close_section()
-
-        constructor = self.parser.find_constructor(obj_def, self.overrides)
-        if constructor:
-            self.write_heading('Constructor')
-            self.write_constructor(constructor,
-                                   self.docs.get(constructor.c_name, None))
-            self.close_section()
-
-        methods = self.parser.find_methods(obj_def)
-        methods = filter(lambda meth, self=self:
-                         not self.overrides.is_ignored(meth.c_name), methods)
-        if methods:
-            self.write_heading('Methods')
-            for method in methods:
-                self.write_method(method, self.docs.get(method.c_name, None))
-            self.close_section()
-
-        self.write_class_footer(obj_def.c_name)
-
-    def get_methods_for_object(self, obj_def):
-        methods = []
-        for method in self.parser.find_methods(obj_def):
-            if not self.overrides.is_ignored(method.c_name):
-                methods.append(method)
-        return methods
-
-    def output_interface_docs(self, int_def):
-        self.write_class_header(int_def.c_name)
-
-        self.write_heading('Synopsis')
-        self.write_synopsis(int_def)
-        self.close_section()
-
-        methods = self.get_methods_for_object(int_def)
-        if methods:
-            self.write_heading('Methods')
-            for method in methods:
-                self.write_method(method, self.docs.get(method.c_name, None))
-            self.close_section()
-        self.write_class_footer(int_def.c_name)
-
-    def output_boxed_docs(self, box_def):
-        self.write_class_header(box_def.c_name)
-
-        self.write_heading('Synopsis')
-        self.write_synopsis(box_def)
-        self.close_section()
-
-        constructor = self.parser.find_constructor(box_def, self.overrides)
-        if constructor:
-            self.write_heading('Constructor')
-            self.write_constructor(constructor,
-                                   self.docs.get(constructor.c_name, None))
-            self.close_section()
-
-        methods = self.get_methods_for_object(box_def)
-        if methods:
-            self.write_heading('Methods')
-            for method in methods:
-                self.write_method(method, self.docs.get(method.c_name, None))
-            self.close_section()
-
-        self.write_class_footer(box_def.c_name)
-
-    def output_toc(self, files):
-        self._fp.write('TOC\n\n')
-        for filename in sorted(files):
-            obj_def = files[filename]
-            self._fp.write(obj_def.c_name + ' - ' + filename + '\n')
-
-    # override the following to create a more complex output format
-
-    def create_filename(self, obj_name, output_prefix):
-        '''Create output filename for this particular object'''
-        return output_prefix + '-' + obj_name.lower() + '.txt'
-
-    def create_toc_filename(self, output_prefix):
-        return self.create_filename(self, 'docs', output_prefix)
-
-    def write_full_hierarchy(self, hierarchy):
-
-        def handle_node(node, indent=''):
-            for child in node.subclasses:
-                self._fp.write(indent + node.name)
-                if node.interfaces:
-                    self._fp.write(' (implements ')
-                    self._fp.write(', '.join(node.interfaces))
-                    self._fp.write(')\n')
-                else:
-                    self._fp.write('\n')
-                handle_node(child, indent + '  ')
-        handle_node(hierarchy)
-
-    def serialize_params(self, func_def):
-        params = []
-        for param in func_def.params:
-            params.append(param[1])
-        return ', '.join(params)
-
-    # these need to handle default args ...
-
-    def create_constructor_prototype(self, func_def):
-        return '%s(%s)' % (func_def.is_constructor_of,
-                           self.serialize_params(func_def))
-
-    def create_function_prototype(self, func_def):
-        return '%s(%s)' % (func_def.name,
-                           self.serialize_params(func_def))
-
-    def create_method_prototype(self, meth_def):
-        return '%s.%s(%s)' % (meth_def.of_object,
-                              meth_def.name,
-                              self.serialize_params(meth_def))
-
-    def write_class_header(self, obj_name):
-        self._fp.write('Class %s\n' % obj_name)
-        self._fp.write('======%s\n\n' % ('=' * len(obj_name)))
-
-    def write_class_footer(self, obj_name):
-        pass
-
-    def write_heading(self, text):
-        self._fp.write('\n' + text + '\n' + ('-' * len(text)) + '\n')
-
-    def close_section(self):
-        pass
-
-    def write_synopsis(self, obj_def):
-        self._fp.write('class %s' % obj_def.c_name)
-        if isinstance(obj_def, definitions.ObjectDef):
-            bases = []
-            if obj_def.parent:
-                bases.append(obj_def.parent)
-            bases = bases = obj_def.implements
-            if bases:
-                self._fp.write('(%s)' % ', '.join(bases, ))
-        self._fp.write(':\n')
-
-        constructor = self.parser.find_constructor(obj_def, self.overrides)
-        if constructor:
-            prototype = self.create_constructor_prototype(constructor)
-            self._fp.write('    def %s\n' % prototype)
-
-        for method in self.get_methods_for_object(obj_def):
-            prototype = self.create_method_prototype(method)
-            self._fp.write('    def %s\n' % prototype)
-
-    def write_hierarchy(self, obj_name, ancestry):
-        indent = ''
-        for name, interfaces in ancestry:
-            self._fp.write(indent + '+-- ' + name)
-            if interfaces:
-                self._fp.write(' (implements ')
-                self._fp.write(', '.join(interfaces))
-                self._fp.write(')\n')
-            else:
-                self._fp.write('\n')
-            indent = indent + '  '
-        self._fp.write('\n')
-
-    def write_constructor(self, func_def, func_doc):
-        prototype = self.create_constructor_prototype(func_def)
-        self._fp.write(prototype + '\n\n')
-        for type, name, dflt, null in func_def.params:
-            self.write_parameter(name, func_doc)
-        self.write_return_value(func_def, func_doc)
-        if func_doc and func_doc.description:
-            self._fp.write(func_doc.description)
-        self._fp.write('\n\n\n')
-
-    def write_method(self, meth_def, func_doc):
-        prototype = self.create_method_prototype(meth_def)
-        self._fp.write(prototype + '\n\n')
-        for type, name, dflt, null in meth_def.params:
-            self.write_parameter(name, func_doc)
-        self.write_return_value(meth_def, func_doc)
-        if func_doc and func_doc.description:
-            self._fp.write('\n')
-            self._fp.write(func_doc.description)
-        self._fp.write('\n\n')
-
-    def write_parameter(self, param_name, func_doc):
-        if func_doc:
-            descr = func_doc.get_param_description(param_name)
-        else:
-            descr = 'a ' + type
-        self._fp.write('  ' + param_name + ': ' + descr + '\n')
-
-    def write_return_value(self, meth_def, func_doc):
-        if meth_def.ret and meth_def.ret != 'none':
-            if func_doc and func_doc.ret:
-                descr = func_doc.ret
-            else:
-                descr = 'a ' + meth_def.ret
-            self._fp.write('  Returns: ' + descr + '\n')
-
-CLASS_HEADER_TEMPLATE = """<refentry id="%(entryid)s">
-  <refmeta>
-    <refentrytitle>%(name)s</refentrytitle>
-    <manvolnum>3</manvolnum>
-    <refmiscinfo>%(miscinfo)s</refmiscinfo>
-  </refmeta>
-
-  <refnamediv>
-    <refname>%(name)s</refname><refpurpose></refpurpose>
-  </refnamediv>
-
-"""
-VARIABLE_TEMPLATE = """<varlistentry>
-      <term><parameter>%(parameter)s</parameter>&nbsp;:</term>
-      <listitem><simpara>%(description)s</simpara></listitem>
-    </varlistentry>
-"""
-
-DOCBOOK_HEADER = """<?xml version="1.0" standalone="no"?>
-<!DOCTYPE synopsis PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-"""
-
-
-class DocbookDocWriter(DocWriter):
-
-    def __init__(self):
-        DocWriter.__init__(self)
-
-        self._function_pat = re.compile(r'(\w+)\s*\(\)')
-        self._parameter_pat = re.compile(r'\@(\w+)')
-        self._constant_pat = re.compile(r'\%(-?\w+)')
-        self._symbol_pat = re.compile(r'#([\w-]+)')
-
-        self._transtable = ['-'] * 256
-        # make string -> reference translation func
-        for digit in '0123456789':
-            self._transtable[ord(digit)] = digit
-
-        for letter in 'abcdefghijklmnopqrstuvwxyz':
-            self._transtable[ord(letter)] = letter
-            self._transtable[ord(letter.upper())] = letter
-        self._transtable = ''.join(self._transtable)
-
-    def create_filename(self, obj_name, output_prefix):
-        '''Create output filename for this particular object'''
-        stem = output_prefix + '-' + obj_name.lower()
-        return stem + '.xml'
-
-    def create_toc_filename(self, output_prefix):
-        return self.create_filename('classes', output_prefix)
-
-    def make_class_ref(self, obj_name):
-        return 'class-' + obj_name.translate(self._transtable)
-
-    def make_method_ref(self, meth_def):
-        return 'method-%s--%s' % (
-            meth_def.of_object.translate(self._transtable),
-            meth_def.name.translate(self._transtable))
-
-    def _format_function(self, match):
-        info = self.parser.c_name.get(match.group(1), None)
-        if info:
-            if isinstance(info, defsparser.FunctionDef):
-                return self._format_funcdef(info)
-            if isinstance(info, defsparser.MethodDef):
-                return self._format_method(info)
-
-        # fall through through
-        return '<function>%s()</function>' % (match.group(1), )
-
-    def _format_funcdef(self, info):
-        if info.is_constructor_of is not None:
-            # should have a link here
-            return '<methodname>%s()</methodname>' % (
-                self.pyname(info.is_constructor_of), )
-        else:
-            return '<function>%s()</function>' % (info.name, )
-
-    def _format_param(self, match):
-        return '<parameter>%s</parameterdliteral>' % (match.group(1), )
-
-    def _format_const(self, match):
-        return '<literal>%s</literal>' % (match.group(1), )
-
-    def _format_method(self, info):
-        return ('<link linkend="%s">'
-                '<methodname>%s.%s</methodname>'
-                '</link>') % (self.make_method_ref(info),
-                              self.pyname(info.of_object),
-                              info.name)
-
-    def _format_object(self, info):
-        return ('<link linkend="%s">'
-                '<classname>%s</classname>'
-                '</link>') % (self.make_class_ref(info.c_name),
-                              self.pyname(info.c_name))
-
-    def _format_symbol(self, match):
-        info = self.parser.c_name.get(match.group(1), None)
-        if info:
-            if isinstance(info, defsparser.FunctionDef):
-                return self._format_funcdef(info)
-            elif isinstance(info, defsparser.MethodDef):
-                return self._format_method(info)
-            elif isinstance(info, (defsparser.ObjectDef,
-                                   defsparser.InterfaceDef,
-                                   defsparser.BoxedDef,
-                                   defsparser.PointerDef)):
-                return self._format_object(info)
-
-        # fall through through
-        return '<literal>%s</literal>' % (match.group(1), )
-
-    def reformat_text(self, text, singleline=0):
-        # replace special strings ...
-        text = self._function_pat.sub(self._format_function, text)
-        text = self._parameter_pat.sub(self._format_param, text)
-        text = self._constant_pat.sub(self._format_const, text)
-        text = self._symbol_pat.sub(self._format_symbol, text)
-
-        # don't bother with <para> expansion for single line text.
-        if singleline:
-            return text
-
-        lines = text.strip().split('\n')
-        for index in range(len(lines)):
-            if lines[index].strip() == '':
-                lines[index] = '</para>\n<para>'
-                continue
-        return '<para>%s</para>' % ('\n'.join(lines), )
-
-    # write out hierarchy
-
-    def write_full_hierarchy(self, hierarchy):
-
-        def handle_node(node, indent=''):
-            if node.name:
-                self._fp.write('%s<link linkend="%s">%s</link>' %
-                         (indent, self.make_class_ref(node.name),
-                          self.pyname(node.name)))
-                if node.interfaces:
-                    self._fp.write(' (implements ')
-                    for i in range(len(node.interfaces)):
-                        self._fp.write('<link linkend="%s">%s</link>' %
-                                 (self.make_class_ref(node.interfaces[i]),
-                                  self.pyname(node.interfaces[i])))
-                        if i != len(node.interfaces) - 1:
-                            self._fp.write(', ')
-                    self._fp.write(')\n')
-                else:
-                    self._fp.write('\n')
-
-                indent = indent + '  '
-            node.subclasses.sort(lambda a, b:
-                                 cmp(self.pyname(a.name), self.pyname(b.name)))
-            for child in node.subclasses:
-                handle_node(child, indent)
-
-        self._fp.write(DOCBOOK_HEADER)
-        self._fp.write('<synopsis>')
-        handle_node(hierarchy)
-        self._fp.write('</synopsis>\n')
-
-    # these need to handle default args ...
-
-    def create_constructor_prototype(self, func_def):
-        xml = ['<constructorsynopsis language="python">\n']
-        xml.append('    <methodname>__init__</methodname>\n')
-        for type, name, dflt, null in func_def.params:
-            xml.append('    <methodparam><parameter>')
-            xml.append(name)
-            xml.append('</parameter>')
-            if dflt:
-                xml.append('<initializer>')
-                xml.append(dflt)
-                xml.append('</initializer>')
-            xml.append('</methodparam>\n')
-        if not func_def.params:
-            xml.append('    <methodparam></methodparam>')
-        xml.append('  </constructorsynopsis>')
-        return ''.join(xml)
-
-    def create_function_prototype(self, func_def):
-        xml = ['<funcsynopsis language="python">\n    <funcprototype>\n']
-        xml.append('      <funcdef><function>')
-        xml.append(func_def.name)
-        xml.append('</function></funcdef>\n')
-        for type, name, dflt, null in func_def.params:
-            xml.append('      <paramdef><parameter>')
-            xml.append(name)
-            xml.append('</parameter>')
-            if dflt:
-                xml.append('<initializer>')
-                xml.append(dflt)
-                xml.append('</initializer>')
-            xml.append('</paramdef>\n')
-        if not func_def.params:
-            xml.append('      <paramdef></paramdef')
-        xml.append('    </funcprototype>\n  </funcsynopsis>')
-        return ''.join(xml)
-
-    def create_method_prototype(self, meth_def, addlink=0):
-        xml = ['<methodsynopsis language="python">\n']
-        xml.append('    <methodname>')
-        if addlink:
-            xml.append('<link linkend="%s">' % self.make_method_ref(meth_def))
-        xml.append(self.pyname(meth_def.name))
-        if addlink:
-            xml.append('</link>')
-        xml.append('</methodname>\n')
-        for type, name, dflt, null in meth_def.params:
-            xml.append('    <methodparam><parameter>')
-            xml.append(name)
-            xml.append('</parameter>')
-            if dflt:
-                xml.append('<initializer>')
-                xml.append(dflt)
-                xml.append('</initializer>')
-            xml.append('</methodparam>\n')
-        if not meth_def.params:
-            xml.append('    <methodparam></methodparam>')
-        xml.append('  </methodsynopsis>')
-        return ''.join(xml)
-
-    def write_class_header(self, obj_name):
-        self._fp.write(DOCBOOK_HEADER)
-        self._fp.write(CLASS_HEADER_TEMPLATE % dict(
-            entryid=self.make_class_ref(obj_name),
-            name=self.pyname(obj_name),
-            miscinfo="PyGTK Docs"))
-
-    def write_class_footer(self, obj_name):
-        self._fp.write('</refentry>\n')
-
-    def write_heading(self, text):
-        self._fp.write('  <refsect1>\n')
-        self._fp.write('    <title>' + text + '</title>\n\n')
-
-    def close_section(self):
-        self._fp.write('  </refsect1>\n')
-
-    def write_synopsis(self, obj_def):
-        self._fp.write('<classsynopsis language="python">\n')
-        self._fp.write('  <ooclass><classname>%s</classname></ooclass>\n'
-                 % self.pyname(obj_def.c_name))
-        if isinstance(obj_def, definitions.ObjectDef):
-            if obj_def.parent:
-                self._fp.write('  <ooclass><classname><link linkend="%s">%s'
-                         '</link></classname></ooclass>\n'
-                         % (self.make_class_ref(obj_def.parent),
-                            self.pyname(obj_def.parent)))
-            for base in obj_def.implements:
-                self._fp.write('  <ooclass><classname><link linkend="%s">%s'
-                         '</link></classname></ooclass>\n'
-                         % (self.make_class_ref(base), self.pyname(base)))
-        elif isinstance(obj_def, definitions.InterfaceDef):
-            self._fp.write('  <ooclass><classname>gobject.GInterface'
-                     '</classname></ooclass>\n')
-        elif isinstance(obj_def, definitions.BoxedDef):
-            self._fp.write('  <ooclass><classname>gobject.GBoxed'
-                     '</classname></ooclass>\n')
-        elif isinstance(obj_def, definitions.PointerDef):
-            self._fp.write('  <ooclass><classname>gobject.GPointer'
-                     '</classname></ooclass>\n')
-
-        constructor = self.parser.find_constructor(obj_def, self.overrides)
-        if constructor:
-            self._fp.write(
-                '%s\n' % self.create_constructor_prototype(constructor))
-        for method in self.get_methods_for_object(obj_def):
-            self._fp.write(
-                '%s\n' % self.create_method_prototype(method, addlink=1))
-        self._fp.write('</classsynopsis>\n\n')
-
-    def write_hierarchy(self, obj_name, ancestry):
-        self._fp.write('<synopsis>')
-        indent = ''
-        for name, interfaces in ancestry:
-            self._fp.write(
-                '%s+-- <link linkend="%s">%s</link>' %
-                (indent, self.make_class_ref(name), self.pyname(name)))
-            if interfaces:
-                self._fp.write(' (implements ')
-                for i in range(len(interfaces)):
-                    self._fp.write('<link linkend="%s">%s</link>' %
-                             (self.make_class_ref(interfaces[i]),
-                              self.pyname(interfaces[i])))
-                    if i != len(interfaces) - 1:
-                        self._fp.write(', ')
-                self._fp.write(')\n')
-            else:
-                self._fp.write('\n')
-            indent = indent + '  '
-        self._fp.write('</synopsis>\n\n')
-
-    def write_params(self, params, ret, func_doc):
-        if not params and (not ret or ret == 'none'):
-            return
-        self._fp.write('  <variablelist>\n')
-        for type, name, dflt, null in params:
-            if func_doc:
-                descr = func_doc.get_param_description(name).strip()
-            else:
-                descr = 'a ' + type
-            self._fp.write(VARIABLE_TEMPLATE % dict(
-                parameter=name,
-                description=self.reformat_text(descr, singleline=1)))
-        if ret and ret != 'none':
-            if func_doc and func_doc.ret:
-                descr = func_doc.ret.strip()
-            else:
-                descr = 'a ' + ret
-            self._fp.write(VARIABLE_TEMPLATE % dict(
-                parameter='Returns',
-                description=self.reformat_text(descr, singleline=1)))
-        self._fp.write('  </variablelist>\n')
-
-    def write_constructor(self, func_def, func_doc):
-        prototype = self.create_constructor_prototype(func_def)
-        self._fp.write('<programlisting>%s</programlisting>\n' % prototype)
-        self.write_params(func_def.params, func_def.ret, func_doc)
-
-        if func_doc and func_doc.description:
-            self._fp.write(self.reformat_text(func_doc.description))
-        self._fp.write('\n\n\n')
-
-    def write_method(self, meth_def, func_doc):
-        self._fp.write('  <refsect2 id="%s">\n' % (
-            self.make_method_ref(meth_def), ))
-        self._fp.write('    <title>%s.%s</title>\n\n' % (
-            self.pyname(meth_def.of_object),
-            meth_def.name))
-        prototype = self.create_method_prototype(meth_def)
-        self._fp.write('<programlisting>%s</programlisting>\n' % prototype)
-        self.write_params(meth_def.params, meth_def.ret, func_doc)
-        if func_doc and func_doc.description:
-            self._fp.write(self.reformat_text(func_doc.description))
-        self._fp.write('  </refsect2>\n\n\n')
-
-    def output_toc(self, files, fp=sys.stdout):
-        self._fp.write(DOCBOOK_HEADER)
-
-        #self._fp.write('<reference id="class-reference">\n')
-        #self._fp.write('  <title>Class Documentation</title>\n')
-        #for filename, obj_def in files:
-        #    self._fp.write('&' +
-        #                   obj_def.c_name.translate(self._transtable) + ';\n')
-        #self._fp.write('</reference>\n')
-
-        self._fp.write('<reference id="class-reference" '
-                       'xmlns:xi="http://www.w3.org/2001/XInclude">\n')
-        self._fp.write('  <title>Class Reference</title>\n')
-        for filename in sorted(files):
-            self._fp.write('  <xi:include href="%s"/>\n' % filename)
-        self._fp.write('</reference>\n')
-
-
-def main(args):
-    try:
-        opts, args = getopt.getopt(args[1:], "d:s:o:",
-                                   ["defs-file=", "override=", "source-dir=",
-                                    "output-prefix="])
-    except getopt.error, e:
-        sys.stderr.write('docgen.py: %s\n' % e)
-        sys.stderr.write(
-            'usage: docgen.py -d file.defs [-s /src/dir] [-o output-prefix]\n')
-        return 1
-
-    defs_file = None
-    overrides_file = None
-    source_dirs = []
-    output_prefix = 'docs'
-    for opt, arg in opts:
-        if opt in ('-d', '--defs-file'):
-            defs_file = arg
-        if opt in ('--override', ):
-            overrides_file = arg
-        elif opt in ('-s', '--source-dir'):
-            source_dirs.append(arg)
-        elif opt in ('-o', '--output-prefix'):
-            output_prefix = arg
-    if len(args) != 0 or not defs_file:
-        sys.stderr.write(
-            'usage: docgen.py -d file.defs [-s /src/dir] [-o output-prefix]\n')
-        return 1
-
-    d = DocbookDocWriter()
-    d.add_sourcedirs(source_dirs)
-    d.add_docs(defs_file, overrides_file, 'gio')
-    d.output_docs(output_prefix)
-    return 0
-
-
-if __name__ == '__main__':
-    sys.exit(main(sys.argv))
diff --git a/codegen/h2def.py b/codegen/h2def.py
deleted file mode 100755 (executable)
index 17617fa..0000000
+++ /dev/null
@@ -1,631 +0,0 @@
-#!/usr/bin/env python
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# GPL'ed
-# Toby D. Reeves <toby@max.rl.plh.af.mil>
-#
-# Modified by James Henstridge <james@daa.com.au> to output stuff in
-# Havoc's new defs format.  Info on this format can be seen at:
-#   http://mail.gnome.org/archives/gtk-devel-list/2000-January/msg00070.html
-# Updated to be PEP-8 compatible and refactored to use OOP
-#
-# Scan the given public .h files of a GTK module (or module using
-# GTK object conventions) and generates a set of scheme defs.
-#
-# h2def searches through a header file looking for function prototypes and
-# generates a scheme style defenition for each prototype.
-# Basically the operation of h2def is:
-#
-# - read each .h file into a buffer which is scrubbed of extraneous data
-# - find all object defenitions:
-#   - find all structures that may represent a GtkObject
-#   - find all structures that might represent a class
-#   - find all structures that may represent a GtkObject subclass
-#   - find all structures that might represent a class/Iface inherited from
-#     GTypeInterface
-# - find all enum defenitions
-# - write out the defs
-#
-# The command line options are:
-#
-#   -s --separate    Create separate files for objects and function/method defs
-#                    using the given name as the base name (optional). If this
-#                    is not specified the combined object and function defs
-#                    will be output to sys.stdout.
-#   -f --defsfilter  Extract defs from the given file to filter the output defs
-#                    that is don't output defs that are defined in the
-#                    defsfile. More than one deffile may be specified.
-#   -m --modulename  The prefix to be stripped from the front of function names
-#                    for the given module
-#   -n --namespace   The module or namespace name to be used, for example
-#                    WebKit where h2def is unable to detect the module name
-#                    automatically. it also sets the gtype-id prefix.
-#   --onlyenums      Only produce defs for enums and flags
-#   --onlyobjdefs    Only produce defs for objects
-#   -v               Verbose output
-#
-# Examples:
-#
-# python h2def.py /usr/local/include/pango-1.0/pango/*.h >/tmp/pango.defs
-#
-# - Outputs all defs for the pango module.
-#
-# python h2def.py -m gdk -s /tmp/gdk-2.10 \
-#            -f /usr/tmp/pygtk/gtk/gdk-base.defs \
-#            /usr/local/include/gtk-2.0/gdk/*.h \
-#            /usr/local/include/gtk-2.0/gdk-pixbuf/*.h
-#
-# - Outputs the gdk module defs that are not contained in the defs file
-#   /usr/tmp/pygtk/gtk/gdk-base.defs. Two output files are created:
-#   /tmp/gdk-2.10-types.defs and /tmp/gdk-2.10.defs.
-#
-# python h2def.py -n WebKit /usr/incude/webkit-1.0/webkit/*.h \
-#            >/tmp/webkit.defs
-#
-# - Outputs all the defs for webkit module, setting the module name to WebKit
-#   and the gtype-id prefix to WEBKIT_ which can't be detected automatically.
-#
-
-import getopt
-import os
-import re
-import string
-import sys
-
-import defsparser
-
-# ------------------ Create typecodes from typenames ---------
-
-_upperstr_pat1 = re.compile(r'([^A-Z])([A-Z])')
-_upperstr_pat2 = re.compile(r'([A-Z][A-Z])([A-Z][0-9a-z])')
-_upperstr_pat3 = re.compile(r'^([A-Z])([A-Z])')
-
-def to_upper_str(name):
-    """Converts a typename to the equivalent upercase and underscores
-    name.  This is used to form the type conversion macros and enum/flag
-    name variables"""
-    name = _upperstr_pat1.sub(r'\1_\2', name)
-    name = _upperstr_pat2.sub(r'\1_\2', name)
-    name = _upperstr_pat3.sub(r'\1_\2', name, count=1)
-    return string.upper(name)
-
-def typecode(typename, namespace=None):
-    """create a typecode (eg. GTK_TYPE_WIDGET) from a typename"""
-    if namespace:
-      return string.replace(string.upper(namespace) + "_" + to_upper_str(typename[len(namespace):]), '_', '_TYPE_', 1)
-
-    return string.replace(to_upper_str(typename), '_', '_TYPE_', 1)
-
-
-# ------------------ Find object definitions -----------------
-# Strips the comments from buffer
-def strip_comments(buf):
-    parts = []
-    lastpos = 0
-    while 1:
-        pos = string.find(buf, '/*', lastpos)
-        if pos >= 0:
-            parts.append(buf[lastpos:pos])
-            pos = string.find(buf, '*/', pos)
-            if pos >= 0:
-                lastpos = pos + 2
-            else:
-                break
-        else:
-            parts.append(buf[lastpos:])
-            break
-    return string.join(parts, '')
-
-# Strips the dll API from buffer, for example WEBKIT_API
-def strip_dll_api(buf):
-    pat = re.compile("[A-Z]*_API ")
-    buf = pat.sub("", buf)
-    return buf
-
-obj_name_pat = "[A-Z][a-z]*[A-Z][A-Za-z0-9]*"
-
-split_prefix_pat = re.compile('([A-Z]+[a-z]*)([A-Za-z0-9]+)')
-
-def find_obj_defs(buf, objdefs=[]):
-    """
-    Try to find object definitions in header files.
-    """
-
-    # filter out comments from buffer.
-    buf = strip_comments(buf)
-
-    # filter out dll api
-    buf = strip_dll_api(buf)
-
-    maybeobjdefs = []  # contains all possible objects from file
-
-    # first find all structures that look like they may represent a GtkObject
-    pat = re.compile("struct\s+_(" + obj_name_pat + ")\s*{\s*" +
-                     "(" + obj_name_pat + ")\s+", re.MULTILINE)
-    pos = 0
-    while pos < len(buf):
-        m = pat.search(buf, pos)
-        if not m: break
-        maybeobjdefs.append((m.group(1), m.group(2)))
-        pos = m.end()
-
-    # handle typedef struct { ... } style struct defs.
-    pat = re.compile("typedef struct\s+[_\w]*\s*{\s*" +
-                     "(" + obj_name_pat + ")\s+[^}]*}\s*" +
-                     "(" + obj_name_pat + ")\s*;", re.MULTILINE)
-    pos = 0
-    while pos < len(buf):
-        m = pat.search(buf, pos)
-        if not m: break
-        maybeobjdefs.append((m.group(2), m.group(1)))
-        pos = m.end()
-
-    # now find all structures that look like they might represent a class:
-    pat = re.compile("struct\s+_(" + obj_name_pat + ")Class\s*{\s*" +
-                     "(" + obj_name_pat + ")Class\s+", re.MULTILINE)
-    pos = 0
-    while pos < len(buf):
-        m = pat.search(buf, pos)
-        if not m: break
-        t = (m.group(1), m.group(2))
-        # if we find an object structure together with a corresponding
-        # class structure, then we have probably found a GtkObject subclass.
-        if t in maybeobjdefs:
-            objdefs.append(t)
-        pos = m.end()
-
-    pat = re.compile("typedef struct\s+[_\w]*\s*{\s*" +
-                     "(" + obj_name_pat + ")Class\s+[^}]*}\s*" +
-                     "(" + obj_name_pat + ")Class\s*;", re.MULTILINE)
-    pos = 0
-    while pos < len(buf):
-        m = pat.search(buf, pos)
-        if not m: break
-        t = (m.group(2), m.group(1))
-        # if we find an object structure together with a corresponding
-        # class structure, then we have probably found a GtkObject subclass.
-        if t in maybeobjdefs:
-            objdefs.append(t)
-        pos = m.end()
-
-    # now find all structures that look like they might represent
-    # a class inherited from GTypeInterface:
-    pat = re.compile("struct\s+_(" + obj_name_pat + ")Class\s*{\s*" +
-                     "GTypeInterface\s+", re.MULTILINE)
-    pos = 0
-    while pos < len(buf):
-        m = pat.search(buf, pos)
-        if not m: break
-        t = (m.group(1), '')
-        t2 = (m.group(1)+'Class', 'GTypeInterface')
-        # if we find an object structure together with a corresponding
-        # class structure, then we have probably found a GtkObject subclass.
-        if t2 in maybeobjdefs:
-            objdefs.append(t)
-        pos = m.end()
-
-    # now find all structures that look like they might represent
-    # an Iface inherited from GTypeInterface:
-    pat = re.compile("struct\s+_(" + obj_name_pat + ")Iface\s*{\s*" +
-                     "GTypeInterface\s+", re.MULTILINE)
-    pos = 0
-    while pos < len(buf):
-        m = pat.search(buf, pos)
-        if not m: break
-        t = (m.group(1), '')
-        t2 = (m.group(1)+'Iface', 'GTypeInterface')
-        # if we find an object structure together with a corresponding
-        # class structure, then we have probably found a GtkObject subclass.
-        if t2 in maybeobjdefs:
-            objdefs.append(t)
-        pos = m.end()
-
-def sort_obj_defs(objdefs):
-    objdefs.sort()  # not strictly needed, but looks nice
-    pos = 0
-    while pos < len(objdefs):
-        klass,parent = objdefs[pos]
-        for i in range(pos+1, len(objdefs)):
-            # parent below subclass ... reorder
-            if objdefs[i][0] == parent:
-                objdefs.insert(i+1, objdefs[pos])
-                del objdefs[pos]
-                break
-        else:
-            pos = pos + 1
-    return objdefs
-
-# ------------------ Find enum definitions -----------------
-
-def find_enum_defs(buf, enums=[]):
-    # strip comments
-    # bulk comments
-    buf = strip_comments(buf)
-
-    # strip dll api macros
-    buf = strip_dll_api(buf)
-
-    # strip # directives
-    pat = re.compile(r"""^[#].*?$""", re.MULTILINE)
-    buf = pat.sub('', buf)
-
-    buf = re.sub('\n', ' ', buf)
-
-    enum_pat = re.compile(r'enum\s*{([^}]*)}\s*([A-Z][A-Za-z]*)(\s|;)')
-    splitter = re.compile(r'\s*,\s', re.MULTILINE)
-    pos = 0
-    while pos < len(buf):
-        m = enum_pat.search(buf, pos)
-        if not m: break
-
-        name = m.group(2)
-        vals = m.group(1)
-        isflags = string.find(vals, '<<') >= 0
-        entries = []
-        for val in splitter.split(vals):
-            if not string.strip(val): continue
-            entries.append(string.split(val)[0])
-        if name != 'GdkCursorType':
-            enums.append((name, isflags, entries))
-
-        pos = m.end()
-
-# ------------------ Find function definitions -----------------
-
-def clean_func(buf):
-    """
-    Ideally would make buf have a single prototype on each line.
-    Actually just cuts out a good deal of junk, but leaves lines
-    where a regex can figure prototypes out.
-    """
-    # bulk comments
-    buf = strip_comments(buf)
-
-    # dll api
-    buf = strip_dll_api(buf)
-
-    # compact continued lines
-    pat = re.compile(r"""\\\n""", re.MULTILINE)
-    buf = pat.sub('', buf)
-
-    # Preprocess directives
-    pat = re.compile(r"""^[#].*?$""", re.MULTILINE)
-    buf = pat.sub('', buf)
-
-    #typedefs, stucts, and enums
-    pat = re.compile(r"""^(typedef|struct|enum)(\s|.|\n)*?;\s*""",
-                     re.MULTILINE)
-    buf = pat.sub('', buf)
-
-    #strip DECLS macros
-    pat = re.compile(r"""G_BEGIN_DECLS|BEGIN_LIBGTOP_DECLS""", re.MULTILINE)
-    buf = pat.sub('', buf)
-
-    #extern "C"
-    pat = re.compile(r"""^\s*(extern)\s+\"C\"\s+{""", re.MULTILINE)
-    buf = pat.sub('', buf)
-
-    #multiple whitespace
-    pat = re.compile(r"""\s+""", re.MULTILINE)
-    buf = pat.sub(' ', buf)
-
-    #clean up line ends
-    pat = re.compile(r""";\s*""", re.MULTILINE)
-    buf = pat.sub('\n', buf)
-    buf = buf.lstrip()
-
-    #associate *, &, and [] with type instead of variable
-    #pat = re.compile(r'\s+([*|&]+)\s*(\w+)')
-    pat = re.compile(r' \s* ([*|&]+) \s* (\w+)', re.VERBOSE)
-    buf = pat.sub(r'\1 \2', buf)
-    pat = re.compile(r'\s+ (\w+) \[ \s* \]', re.VERBOSE)
-    buf = pat.sub(r'[] \1', buf)
-
-    # make return types that are const work.
-    buf = re.sub(r'\s*\*\s*G_CONST_RETURN\s*\*\s*', '** ', buf)
-    buf = string.replace(buf, 'G_CONST_RETURN ', 'const-')
-    buf = string.replace(buf, 'const ', 'const-')
-
-    #strip GSEAL macros from the middle of function declarations:
-    pat = re.compile(r"""GSEAL""", re.VERBOSE)
-    buf = pat.sub('', buf)
-
-    return buf
-
-proto_pat=re.compile(r"""
-(?P<ret>(-|\w|\&|\*)+\s*)  # return type
-\s+                   # skip whitespace
-(?P<func>\w+)\s*[(]   # match the function name until the opening (
-\s*(?P<args>.*?)\s*[)]     # group the function arguments
-""", re.IGNORECASE|re.VERBOSE)
-#"""
-arg_split_pat = re.compile("\s*,\s*")
-
-get_type_pat = re.compile(r'(const-)?([A-Za-z0-9]+)\*?\s+')
-pointer_pat = re.compile('.*\*$')
-func_new_pat = re.compile('(\w+)_new$')
-
-class DefsWriter:
-    def __init__(self, fp=None, prefix=None, ns=None, verbose=False,
-                 defsfilter=None):
-        if not fp:
-            fp = sys.stdout
-
-        self.fp = fp
-        self.prefix = prefix
-        self.namespace = ns
-        self.verbose = verbose
-
-        self._enums = {}
-        self._objects = {}
-        self._functions = {}
-        if defsfilter:
-            filter = defsparser.DefsParser(defsfilter)
-            filter.startParsing()
-            for func in filter.functions + filter.methods.values():
-                self._functions[func.c_name] = func
-            for obj in filter.objects + filter.boxes + filter.interfaces:
-                self._objects[obj.c_name] = obj
-            for obj in filter.enums:
-                self._enums[obj.c_name] = obj
-
-    def write_def(self, deffile):
-        buf = open(deffile).read()
-
-        self.fp.write('\n;; From %s\n\n' % os.path.basename(deffile))
-        self._define_func(buf)
-        self.fp.write('\n')
-
-    def write_enum_defs(self, enums, fp=None):
-        if not fp:
-            fp = self.fp
-
-        fp.write(';; Enumerations and flags ...\n\n')
-        trans = string.maketrans(string.uppercase + '_',
-                                 string.lowercase + '-')
-        filter = self._enums
-        for cname, isflags, entries in enums:
-            if filter:
-                if cname in filter:
-                    continue
-            name = cname
-            module = None
-            if self.namespace:
-                module = self.namespace
-                name = cname[len(self.namespace):]
-            else:
-                m = split_prefix_pat.match(cname)
-                if m:
-                    module = m.group(1)
-                    name = m.group(2)
-            if isflags:
-                fp.write('(define-flags ' + name + '\n')
-            else:
-                fp.write('(define-enum ' + name + '\n')
-            if module:
-                fp.write('  (in-module "' + module + '")\n')
-            fp.write('  (c-name "' + cname + '")\n')
-            fp.write('  (gtype-id "' + typecode(cname, self.namespace) + '")\n')
-            prefix = entries[0]
-            for ent in entries:
-                # shorten prefix til we get a match ...
-                # and handle GDK_FONT_FONT, GDK_FONT_FONTSET case
-                while ((len(prefix) and prefix[-1] != '_') or ent[:len(prefix)] != prefix
-                       or len(prefix) >= len(ent)):
-                    prefix = prefix[:-1]
-            prefix_len = len(prefix)
-            fp.write('  (values\n')
-            for ent in entries:
-                fp.write('    \'("%s" "%s")\n' %
-                         (string.translate(ent[prefix_len:], trans), ent))
-            fp.write('  )\n')
-            fp.write(')\n\n')
-
-    def write_obj_defs(self, objdefs, fp=None):
-        if not fp:
-            fp = self.fp
-
-        fp.write(';; -*- scheme -*-\n')
-        fp.write('; object definitions ...\n')
-
-        filter = self._objects
-        for klass, parent in objdefs:
-            if filter:
-                if klass in filter:
-                    continue
-            if self.namespace:
-                cname = klass[len(self.namespace):]
-                cmodule = self.namespace
-            else:
-                m = split_prefix_pat.match(klass)
-                cname = klass
-                cmodule = None
-                if m:
-                    cmodule = m.group(1)
-                    cname = m.group(2)
-            fp.write('(define-object ' + cname + '\n')
-            if cmodule:
-                fp.write('  (in-module "' + cmodule + '")\n')
-            if parent:
-                fp.write('  (parent "' + parent + '")\n')
-            fp.write('  (c-name "' + klass + '")\n')
-            fp.write('  (gtype-id "' + typecode(klass, self.namespace) + '")\n')
-            # should do something about accessible fields
-            fp.write(')\n\n')
-
-    def _define_func(self, buf):
-        buf = clean_func(buf)
-        buf = string.split(buf,'\n')
-        filter = self._functions
-        for p in buf:
-            if not p:
-                continue
-            m = proto_pat.match(p)
-            if m == None:
-                if self.verbose:
-                    sys.stderr.write('No match:|%s|\n' % p)
-                continue
-            func = m.group('func')
-            if func[0] == '_':
-                continue
-            if filter:
-                if func in filter:
-                    continue
-            ret = m.group('ret')
-            args = m.group('args')
-            args = arg_split_pat.split(args)
-            for i in range(len(args)):
-                spaces = string.count(args[i], ' ')
-                if spaces > 1:
-                    args[i] = string.replace(args[i], ' ', '-', spaces - 1)
-
-            self._write_func(func, ret, args)
-
-    def _write_func(self, name, ret, args):
-        if len(args) >= 1:
-            # methods must have at least one argument
-            munged_name = name.replace('_', '')
-            m = get_type_pat.match(args[0])
-            if m:
-                obj = m.group(2)
-                if munged_name[:len(obj)] == obj.lower():
-                    self._write_method(obj, name, ret, args)
-                    return
-
-        if self.prefix:
-            l = len(self.prefix)
-            if name[:l] == self.prefix and name[l] == '_':
-                fname = name[l+1:]
-            else:
-                fname = name
-        else:
-            fname = name
-
-        # it is either a constructor or normal function
-        self.fp.write('(define-function ' + fname + '\n')
-        self.fp.write('  (c-name "' + name + '")\n')
-
-        # Hmmm... Let's asume that a constructor function name
-        # ends with '_new' and it returns a pointer.
-        m = func_new_pat.match(name)
-        if pointer_pat.match(ret) and m:
-            cname = ''
-            for s in m.group(1).split ('_'):
-                cname += s.title()
-            if cname != '':
-                self.fp.write('  (is-constructor-of "' + cname + '")\n')
-
-        self._write_return(ret)
-        self._write_arguments(args)
-
-    def _write_method(self, obj, name, ret, args):
-        regex = string.join(map(lambda x: x+'_?', string.lower(obj)),'')
-        mname = re.sub(regex, '', name, 1)
-        if self.prefix:
-            l = len(self.prefix) + 1
-            if mname[:l] == self.prefix and mname[l+1] == '_':
-                mname = mname[l+1:]
-        self.fp.write('(define-method ' + mname + '\n')
-        self.fp.write('  (of-object "' + obj + '")\n')
-        self.fp.write('  (c-name "' + name + '")\n')
-        self._write_return(ret)
-        self._write_arguments(args[1:])
-
-    def _write_return(self, ret):
-        if ret != 'void':
-            self.fp.write('  (return-type "' + ret + '")\n')
-        else:
-            self.fp.write('  (return-type "none")\n')
-
-    def _write_arguments(self, args):
-        is_varargs = 0
-        has_args = len(args) > 0
-        for arg in args:
-            if arg == '...':
-                is_varargs = 1
-            elif arg in ('void', 'void '):
-                has_args = 0
-        if has_args:
-            self.fp.write('  (parameters\n')
-            for arg in args:
-                if arg != '...':
-                    tupleArg = tuple(string.split(arg))
-                    if len(tupleArg) == 2:
-                        self.fp.write('    \'("%s" "%s")\n' % tupleArg)
-            self.fp.write('  )\n')
-        if is_varargs:
-            self.fp.write('  (varargs #t)\n')
-        self.fp.write(')\n\n')
-
-# ------------------ Main function -----------------
-
-def main(args):
-    verbose = False
-    onlyenums = False
-    onlyobjdefs = False
-    separate = False
-    modulename = None
-    namespace = None
-    defsfilter = None
-    opts, args = getopt.getopt(args[1:], 'vs:m:n:f:',
-                               ['onlyenums', 'onlyobjdefs',
-                                'modulename=', 'namespace=',
-                                'separate=', 'defsfilter='])
-    for o, v in opts:
-        if o == '-v':
-            verbose = True
-        if o == '--onlyenums':
-            onlyenums = True
-        if o == '--onlyobjdefs':
-            onlyobjdefs = True
-        if o in ('-s', '--separate'):
-            separate = v
-        if o in ('-m', '--modulename'):
-            modulename = v
-        if o in ('-n', '--namespace'):
-            namespace = v
-        if o in ('-f', '--defsfilter'):
-            defsfilter = v
-
-    if not args[0:1]:
-        print 'Must specify at least one input file name'
-        return -1
-
-    # read all the object definitions in
-    objdefs = []
-    enums = []
-    for filename in args:
-        buf = open(filename).read()
-        find_obj_defs(buf, objdefs)
-        find_enum_defs(buf, enums)
-    objdefs = sort_obj_defs(objdefs)
-
-    if separate:
-        methods = file(separate + '.defs', 'w')
-        types = file(separate + '-types.defs', 'w')
-
-        dw = DefsWriter(methods, prefix=modulename, ns=namespace,
-                        verbose=verbose, defsfilter=defsfilter)
-        dw.write_obj_defs(objdefs, types)
-        dw.write_enum_defs(enums, types)
-        print "Wrote %s-types.defs" % separate
-
-        for filename in args:
-            dw.write_def(filename)
-        print "Wrote %s.defs" % separate
-    else:
-        dw = DefsWriter(prefix=modulename, ns=namespace,
-                        verbose=verbose, defsfilter=defsfilter)
-
-        if onlyenums:
-            dw.write_enum_defs(enums)
-        elif onlyobjdefs:
-            dw.write_obj_defs(objdefs)
-        else:
-            dw.write_obj_defs(objdefs)
-            dw.write_enum_defs(enums)
-
-            for filename in args:
-                dw.write_def(filename)
-
-if __name__ == '__main__':
-    sys.exit(main(sys.argv))
diff --git a/codegen/mergedefs.py b/codegen/mergedefs.py
deleted file mode 100755 (executable)
index 773e499..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env python
-# -*- Mode: Python; py-indent-offset: 4 -*-
-
-import optparse
-
-import defsparser
-
-parser = optparse.OptionParser(
-    usage="usage: %prog [options] generated-defs old-defs")
-parser.add_option("-p", "--merge-parameters",
-                  help="Merge changes in function/methods parameter lists",
-                  action="store_true", dest="parmerge", default=False)
-(options, args) = parser.parse_args()
-
-if len(args) != 2:
-    parser.error("wrong number of arguments")
-
-newp = defsparser.DefsParser(args[0])
-oldp = defsparser.DefsParser(args[1])
-
-newp.startParsing()
-oldp.startParsing()
-
-newp.merge(oldp, options.parmerge)
-
-newp.write_defs()
diff --git a/codegen/missingdefs.py b/codegen/missingdefs.py
deleted file mode 100755 (executable)
index f0017e7..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env python
-# -*- Mode: Python; py-indent-offset: 4 -*-
-
-import sys
-import defsparser
-
-if len(sys.argv) < 3:
-    sys.stderr.write("Usage: missingdefs.py generated-defs old-defs\n")
-    sys.exit(1)
-
-newp = defsparser.DefsParser(sys.argv[1])
-oldp = defsparser.DefsParser(sys.argv[2])
-
-newp.startParsing()
-oldp.startParsing()
-
-newp.printMissing(oldp)
diff --git a/codegen/mkskel.py b/codegen/mkskel.py
deleted file mode 100755 (executable)
index 61f520b..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/env python
-# -*- Mode: Python; py-indent-offset: 4 -*-
-
-import sys, os, getopt
-
-module_init_template = \
-'/* -*- Mode: C; c-basic-offset: 4 -*- */\n' + \
-'#ifdef HAVE_CONFIG_H\n' + \
-'#  include "config.h"\n' + \
-'#endif\n' + \
-'#include <Python.h>\n' + \
-'#include <pygtk.h>\n' + \
-'\n' + \
-'/* include any extra headers needed here */\n' + \
-'\n' + \
-'void %(prefix)s_register_classes(PyObject *d);\n' + \
-'extern PyMethodDef %(prefix)s_functions[];\n' + \
-'\n' + \
-'DL_EXPORT(void)\n' + \
-'init%(module)s(void)\n' + \
-'{\n' + \
-'    PyObject *m, *d;\n' + \
-'\n' + \
-'    /* perform any initialisation required by the library here */\n' + \
-'\n' + \
-'    m = Py_InitModule("%(module)s", %(prefix)s_functions);\n' + \
-'    d = PyModule_GetDict(m);\n' + \
-'\n' + \
-'    init_pygtk();\n' + \
-'\n' + \
-'    %(prefix)s_register_classes(d);\n' + \
-'\n' + \
-'    /* add anything else to the module dictionary (such as constants) */\n' +\
-'\n' + \
-'    if (PyErr_Occurred())\n' + \
-'        Py_FatalError("could not initialise module %(module)s");\n' + \
-'}\n'
-
-override_template = \
-'/* -*- Mode: C; c-basic-offset: 4 -*- */\n' + \
-'%%%%\n' + \
-'headers\n' + \
-'/* include any required headers here */\n' + \
-'%%%%\n' + \
-'init\n' + \
-'    /* include any code here that needs to be executed before the\n' + \
-'     * extension classes get initialised */\n' + \
-'%%%%\n' + \
-'\n' + \
-'/* you should add appropriate ignore, ignore-glob and\n' + \
-' * override sections here */\n'
-
-def open_with_backup(file):
-    if os.path.exists(file):
-        try:
-            os.rename(file, file+'~')
-        except OSError:
-            # fail silently if we can't make a backup
-            pass
-    return open(file, 'w')
-
-def write_skels(fileprefix, prefix, module):
-    fp = open_with_backup(fileprefix+'module.c')
-    fp.write(module_init_template % { 'prefix': prefix, 'module': module })
-    fp.close()
-    fp = open_with_backup(fileprefix+'.override')
-    fp.write(override_template % { 'prefix': prefix, 'module': module })
-    fp.close()
-
-if __name__ == '__main__':
-    opts, args = getopt.getopt(sys.argv[1:], 'f:p:m:h',
-                               ['file-prefix=', 'prefix=', 'module=', 'help'])
-    fileprefix = None
-    prefix = None
-    module = None
-    for opt, arg in opts:
-        if opt in ('-f', '--file-prefix'):
-            fileprefix = arg
-        elif opt in ('-p', '--prefix'):
-            prefix = arg
-        elif opt in ('-m', '--module'):
-            module = arg
-        elif opt in ('-h', '--help'):
-            print 'usage: mkskel.py -f fileprefix -p prefix -m module'
-            sys.exit(0)
-    if not fileprefix or not prefix or not module:
-        print 'usage: mkskel.py -f fileprefix -p prefix -m module'
-        sys.exit(1)
-    write_skels(fileprefix, prefix, module)
diff --git a/codegen/override.py b/codegen/override.py
deleted file mode 100644 (file)
index bba5e42..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-
-# this file contains code for loading up an override file.  The override file
-# provides implementations of functions where the code generator could not
-# do its job correctly.
-
-import fnmatch
-import os
-import re
-import string
-import sys
-
-def class2cname(klass, method):
-    c_name = ''
-    for c in klass:
-        if c.isupper():
-            c_name += '_' + c.lower()
-        else:
-            c_name += c
-    return c_name[1:] + '_'  + method
-
-# import python_type as c_name [for arg_type]
-# Last ('for') clause is optional.  If present, the type will be
-# imported only if given 'arg_type' is registered.
-import_pat = re.compile(r'\s*import\s+(\S+)\.([^\s.]+)\s+as\s+(\S+)(\s+for\s+(\S+))?')
-
-class Overrides:
-    def __init__(self, filename=None):
-        self.modulename = None
-        self.ignores = {}
-        self.glob_ignores = []
-        self.type_ignores = {}
-        self.overrides = {}
-        self.overridden = {}
-        self.kwargs = {}
-        self.noargs = {}
-        self.onearg = {}
-        self.staticmethod = {}
-        self.classmethod = {}
-        self.startlines = {}
-        self.override_attrs = {}
-        self.override_slots = {}
-        self.headers = ''
-        self.body = ''
-        self.init = ''
-        self.imports = []
-        self.defines = {}
-        self.functions = {}
-        self.newstyle_constructors = {}
-        self.dynamicnamespace = False
-        if filename:
-            self.handle_file(filename)
-
-    def handle_file(self, filename):
-        oldpath = os.getcwd()
-
-        fp = open(filename, 'r')
-        dirname = os.path.dirname(os.path.abspath(filename))
-
-        if dirname != oldpath:
-            os.chdir(dirname)
-
-        # read all the components of the file ...
-        bufs = []
-        startline = 1
-        lines = []
-        line = fp.readline()
-        linenum = 1
-        while line:
-            if line == '%%\n' or line == '%%':
-                if lines:
-                    bufs.append((string.join(lines, ''), startline))
-                startline = linenum + 1
-                lines = []
-            else:
-                lines.append(line)
-            line = fp.readline()
-            linenum = linenum + 1
-        if lines:
-            bufs.append((string.join(lines, ''), startline))
-        if not bufs: return
-
-        for buf, startline in bufs:
-            self.__parse_override(buf, startline, filename)
-
-        os.chdir(oldpath)
-
-    def __parse_override(self, buffer, startline, filename):
-        pos = string.find(buffer, '\n')
-        if pos >= 0:
-            line = buffer[:pos]
-            rest = buffer[pos+1:]
-        else:
-            line = buffer ; rest = ''
-        words = string.split(line)
-        command = words[0]
-        if (command == 'ignore' or
-            command == 'ignore-' + sys.platform):
-            "ignore/ignore-platform [functions..]"
-            for func in words[1:]:
-                self.ignores[func] = 1
-            for func in string.split(rest):
-                self.ignores[func] = 1
-        elif (command == 'ignore-glob' or
-              command == 'ignore-glob-' + sys.platform):
-            "ignore-glob/ignore-glob-platform [globs..]"
-            for func in words[1:]:
-                self.glob_ignores.append(func)
-            for func in string.split(rest):
-                self.glob_ignores.append(func)
-        elif (command == 'ignore-type' or
-              command == 'ignore-type-' + sys.platform):
-            "ignore-type/ignore-type-platform [typenames..]"
-            for typename in words[1:]:
-                self.type_ignores[typename] = 1
-            for typename in string.split(rest):
-                self.type_ignores[typename] = 1
-        elif command == 'override':
-            "override function/method [kwargs|noargs|onearg] [staticmethod|classmethod]"
-            func = words[1]
-            if 'kwargs' in words[1:]:
-                self.kwargs[func] = 1
-            elif 'noargs' in words[1:]:
-                self.noargs[func] = 1
-            elif 'onearg' in words[1:]:
-                self.onearg[func] = True
-
-            if 'staticmethod' in words[1:]:
-                self.staticmethod[func] = True
-            elif 'classmethod' in words[1:]:
-                self.classmethod[func] = True
-            if func in self.overrides:
-                raise RuntimeError("Function %s is being overridden more than once" % (func,))
-            self.overrides[func] = rest
-            self.startlines[func] = (startline + 1, filename)
-        elif command == 'override-attr':
-            "override-slot Class.attr"
-            attr = words[1]
-            self.override_attrs[attr] = rest
-            self.startlines[attr] = (startline + 1, filename)
-        elif command == 'override-slot':
-            "override-slot Class.slot"
-            slot = words[1]
-            self.override_slots[slot] = rest
-            self.startlines[slot] = (startline + 1, filename)
-        elif command == 'headers':
-            "headers"
-            self.headers = '%s\n#line %d "%s"\n%s' % \
-                           (self.headers, startline + 1, filename, rest)
-        elif command == 'body':
-            "body"
-            self.body = '%s\n#line %d "%s"\n%s' % \
-                           (self.body, startline + 1, filename, rest)
-        elif command == 'init':
-            "init"
-            self.init = '%s\n#line %d "%s"\n%s' % \
-                        (self.init, startline + 1, filename, rest)
-        elif command == 'modulename':
-            "modulename name"
-            self.modulename = words[1]
-        elif command == 'include':
-            "include filename"
-            for filename in words[1:]:
-                self.handle_file(filename)
-            for filename in string.split(rest):
-                self.handle_file(filename)
-        elif command == 'import':
-            "import module1 [\n module2, \n module3 ...]"
-            for line in string.split(buffer, '\n'):
-                match = import_pat.match(line)
-                if match:
-                    module, pyname, cname, conditional, importing_for = match.groups()
-                    self.imports.append((module, pyname, cname, importing_for or None))
-        elif command == 'define':
-            "define funcname [kwargs|noargs|onearg] [classmethod|staticmethod]"
-            "define Class.method [kwargs|noargs|onearg] [classmethod|staticmethod]"
-            func = words[1]
-            klass = None
-            if func.find('.') != -1:
-                klass, func = func.split('.', 1)
-
-                if not self.defines.has_key(klass):
-                    self.defines[klass] = {}
-                self.defines[klass][func] = rest
-            else:
-                self.functions[func] = rest
-
-            if 'kwargs' in words[1:]:
-                self.kwargs[func] = 1
-            elif 'noargs' in words[1:]:
-                self.noargs[func] = 1
-            elif 'onearg' in words[1:]:
-                self.onearg[func] = 1
-
-            if 'staticmethod' in words[1:]:
-                self.staticmethod[func] = True
-            elif 'classmethod' in words[1:]:
-                self.classmethod[func] = True
-
-            self.startlines[func] = (startline + 1, filename)
-
-        elif command == 'new-constructor':
-            "new-constructor GType"
-            gtype, = words[1:]
-            self.newstyle_constructors[gtype] = True
-        elif command == 'options':
-            for option in words[1:]:
-                if option == 'dynamicnamespace':
-                    self.dynamicnamespace = True
-
-    def is_ignored(self, name):
-        if self.ignores.has_key(name):
-            return 1
-        for glob in self.glob_ignores:
-            if fnmatch.fnmatchcase(name, glob):
-                return 1
-        return 0
-
-    def is_type_ignored(self, name):
-        return name in self.type_ignores
-
-    def is_overriden(self, name):
-        return self.overrides.has_key(name)
-
-    def is_already_included(self, name):
-        return self.overridden.has_key(name)
-
-    def override(self, name):
-        self.overridden[name] = 1
-        return self.overrides[name]
-
-    def define(self, klass, name):
-        self.overridden[class2cname(klass, name)] = 1
-        return self.defines[klass][name]
-
-    def function(self, name):
-        return self.functions[name]
-
-    def getstartline(self, name):
-        return self.startlines[name]
-
-    def wants_kwargs(self, name):
-        return self.kwargs.has_key(name)
-
-    def wants_noargs(self, name):
-        return self.noargs.has_key(name)
-
-    def wants_onearg(self, name):
-        return self.onearg.has_key(name)
-
-    def is_staticmethod(self, name):
-        return self.staticmethod.has_key(name)
-
-    def is_classmethod(self, name):
-        return self.classmethod.has_key(name)
-
-    def attr_is_overriden(self, attr):
-        return self.override_attrs.has_key(attr)
-
-    def attr_override(self, attr):
-        return self.override_attrs[attr]
-
-    def slot_is_overriden(self, slot):
-        return self.override_slots.has_key(slot)
-
-    def slot_override(self, slot):
-        return self.override_slots[slot]
-
-    def get_headers(self):
-        return self.headers
-
-    def get_body(self):
-        return self.body
-
-    def get_init(self):
-        return self.init
-
-    def get_imports(self):
-        return self.imports
-
-    def get_defines_for(self, klass):
-        return self.defines.get(klass, {})
-
-    def get_functions(self):
-        return self.functions
diff --git a/codegen/pygobject-codegen-2.0.in b/codegen/pygobject-codegen-2.0.in
deleted file mode 100644 (file)
index c5c912e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-prefix=@prefix@
-datarootdir=@datarootdir@
-datadir=@datadir@
-codegendir=${datadir}/pygobject/2.0/codegen
-
-PYTHONPATH=$codegendir
-export PYTHONPATH
-
-exec @PYTHON@ $codegendir/codegen.py "$@"
diff --git a/codegen/reversewrapper.py b/codegen/reversewrapper.py
deleted file mode 100644 (file)
index b96e12e..0000000
+++ /dev/null
@@ -1,912 +0,0 @@
-### -*- python -*-
-### Code to generate "Reverse Wrappers", i.e. C->Python wrappers
-### (C) 2004 Gustavo Carneiro <gjc@gnome.org>
-import argtypes
-import os
-
-DEBUG_MODE = ('PYGTK_CODEGEN_DEBUG' in os.environ)
-
-def join_ctype_name(ctype, name):
-    '''Joins a C type and a variable name into a single string'''
-    if ctype[-1] != '*':
-        return " ".join((ctype, name))
-    else:
-        return "".join((ctype, name))
-
-
-class CodeSink(object):
-    def __init__(self):
-        self.indent_level = 0 # current indent level
-        self.indent_stack = [] # previous indent levels
-
-    def _format_code(self, code):
-        assert isinstance(code, str)
-        l = []
-        for line in code.split('\n'):
-            l.append(' '*self.indent_level + line)
-        if l[-1]:
-            l.append('')
-        return '\n'.join(l)
-
-    def writeln(self, line=''):
-        raise NotImplementedError
-
-    def indent(self, level=4):
-        '''Add a certain ammount of indentation to all lines written
-        from now on and until unindent() is called'''
-        self.indent_stack.append(self.indent_level)
-        self.indent_level += level
-
-    def unindent(self):
-        '''Revert indentation level to the value before last indent() call'''
-        self.indent_level = self.indent_stack.pop()
-
-
-class FileCodeSink(CodeSink):
-    def __init__(self, fp):
-        CodeSink.__init__(self)
-        assert isinstance(fp, file)
-        self.fp = fp
-
-    def writeln(self, line=''):
-        self.fp.write(self._format_code(line))
-
-class MemoryCodeSink(CodeSink):
-    def __init__(self):
-        CodeSink.__init__(self)
-        self.lines = []
-
-    def writeln(self, line=''):
-        self.lines.append(self._format_code(line))
-
-    def flush_to(self, sink):
-        assert isinstance(sink, CodeSink)
-        for line in self.lines:
-            sink.writeln(line.rstrip())
-        self.lines = []
-
-    def flush(self):
-        l = []
-        for line in self.lines:
-            l.append(self._format_code(line))
-        self.lines = []
-        return "".join(l)
-
-class ReverseWrapper(object):
-    '''Object that generates a C->Python wrapper'''
-    def __init__(self, cname, is_static=True):
-        assert isinstance(cname, str)
-
-        self.cname = cname
-        ## function object we will call, or object whose method we will call
-        self.called_pyobj = None
-        ## name of method of self.called_pyobj we will call
-        self.method_name = None
-        self.is_static = is_static
-
-        self.parameters = []
-        self.declarations = MemoryCodeSink()
-        self.post_return_code = MemoryCodeSink()
-        self.body = MemoryCodeSink()
-        self.check_exception_code = MemoryCodeSink()
-        self.cleanup_actions = []
-        self.pyargv_items = []
-        self.pyargv_optional_items = []
-        self.pyret_parse_items = [] # list of (format_spec, parameter)
-        self.code_sinks_stack = [self.body]
-
-    def set_call_target(self, called_pyobj, method_name=None):
-        assert called_pyobj is not None
-        assert self.called_pyobj is None
-        self.called_pyobj = called_pyobj
-        self.method_name = method_name
-
-    def set_return_type(self, return_type):
-        assert isinstance(return_type, ReturnType)
-        self.return_type = return_type
-
-    def add_parameter(self, param):
-        assert isinstance(param, Parameter)
-        self.parameters.append(param)
-
-    def add_declaration(self, decl_code):
-        self.declarations.writeln(decl_code)
-
-    def add_pyargv_item(self, variable, optional=False):
-        if optional:
-            self.pyargv_optional_items.append(variable)
-        else:
-            self.pyargv_items.append(variable)
-
-    def add_pyret_parse_item(self, format_specifier, parameter, prepend=False):
-        if prepend:
-            self.pyret_parse_items.insert(0, (format_specifier, parameter))
-        else:
-            self.pyret_parse_items.append((format_specifier, parameter))
-
-
-    def push_code_sink(self, code_sink):
-        self.code_sinks_stack.insert(0, code_sink)
-
-    def pop_code_sink(self):
-        return self.code_sinks_stack.pop(0)
-
-
-    def write_code(self, code,
-                   cleanup=None,
-                   failure_expression=None,
-                   failure_cleanup=None,
-                   failure_exception=None,
-                   code_sink=None):
-        '''Add a chunk of code with cleanup and error handling
-
-        This method is to be used by TypeHandlers when generating code
-
-        Keywork arguments:
-        code -- code to add
-        cleanup -- code to cleanup any dynamic resources created by @code
-                   (except in case of failure) (default None)
-        failure_expression -- C boolean expression to indicate
-                              if anything failed (default None)
-        failure_cleanup -- code to cleanup any dynamic resources
-                           created by @code in case of failure (default None)
-        failure_exception -- code to raise an exception in case of
-                             failure (which will be immediately
-                             printed and cleared), (default None)
-        code_sink -- "code sink" to use; by default,
-                      ReverseWrapper.body is used, which writes the
-                      main body of the wrapper, before calling the
-                      python method.  Alternatively,
-                      ReverseWrapper.after_pyret_parse can be used, to
-                      write code after the PyArg_ParseTuple that
-                      parses the python method return value.
-        '''
-        if code_sink is None:
-            code_sink = self.code_sinks_stack[0]
-        if code is not None:
-            code_sink.writeln(code)
-        if failure_expression is not None:
-            code_sink.writeln("if (%s) {" % (failure_expression,))
-            code_sink.indent()
-            if failure_exception is None:
-                code_sink.writeln("if (PyErr_Occurred())")
-                code_sink.indent()
-                code_sink.writeln("PyErr_Print();")
-                code_sink.unindent()
-            else:
-                code_sink.writeln(failure_exception)
-                code_sink.writeln("PyErr_Print();")
-            if failure_cleanup is not None:
-                code_sink.writeln(failure_cleanup)
-            for cleanup_action in self.cleanup_actions:
-                code_sink.writeln(cleanup_action)
-
-            self.push_code_sink(code_sink)
-            try:
-                self.return_type.write_error_return()
-            finally:
-                self.pop_code_sink()
-
-            code_sink.unindent()
-            code_sink.writeln("}")
-        if cleanup is not None:
-            self.cleanup_actions.insert(0, cleanup)
-
-    def generate(self, sink):
-        '''Generate the code into a CodeSink object'''
-        assert isinstance(sink, CodeSink)
-
-        if DEBUG_MODE:
-            self.declarations.writeln("/* begin declarations */")
-            self.body.writeln("/* begin main body */")
-            self.post_return_code.writeln("/* begin post-return code */")
-
-        self.add_declaration("PyGILState_STATE __py_state;")
-        self.write_code(code="__py_state = pyg_gil_state_ensure();",
-                        cleanup="pyg_gil_state_release(__py_state);")
-
-        for param in self.parameters:
-            param.convert_c2py()
-
-        assert self.called_pyobj is not None,\
-               "Parameters failed to provide a target function or method."
-
-        if self.is_static:
-            sink.writeln('static %s' % self.return_type.get_c_type())
-        else:
-            sink.writeln(self.return_type.get_c_type())
-        c_proto_params = map(Parameter.format_for_c_proto, self.parameters)
-        sink.writeln("%s(%s)\n{" % (self.cname, ", ".join(c_proto_params)))
-
-        self.return_type.write_decl()
-        self.add_declaration("PyObject *py_retval;")
-
-        ## Handle number of arguments
-        if self.pyargv_items:
-            self.add_declaration("PyObject *py_args;")
-            py_args = "py_args"
-            if self.pyargv_optional_items:
-                self.add_declaration("int argc = %i;" % len(self.pyargv_items))
-                argc = "argc"
-                for arg in self.pyargv_optional_items:
-                    self.body.writeln("if (%s)" % arg)
-                    self.body.indent()
-                    self.body.writeln("++argc;")
-                    self.body.unindent()
-            else:
-                argc = str(len(self.pyargv_items))
-        else:
-            if self.pyargv_optional_items:
-                self.add_declaration("PyObject *py_args;")
-                py_args = "py_args"
-                self.add_declaration("int argc = 0;")
-                argc = "argc"
-                for arg in self.pyargv_optional_items:
-                    self.body.writeln("if (%s)" % arg)
-                    self.body.indent()
-                    self.body.writeln("++argc;")
-                    self.body.unindent()
-            else:
-                py_args = "NULL"
-                argc = None
-
-        self.body.writeln()
-
-        if py_args != "NULL":
-            self.write_code("py_args = PyTuple_New(%s);" % argc,
-                            cleanup="Py_DECREF(py_args);")
-            pos = 0
-            for arg in self.pyargv_items:
-                try: # try to remove the Py_DECREF cleanup action, if we can
-                    self.cleanup_actions.remove("Py_DECREF(%s);" % arg)
-                except ValueError: # otherwise we have to Py_INCREF..
-                    self.body.writeln("Py_INCREF(%s);" % arg)
-                self.body.writeln("PyTuple_SET_ITEM(%s, %i, %s);" % (py_args, pos, arg))
-                pos += 1
-            for arg in self.pyargv_optional_items:
-                self.body.writeln("if (%s) {" % arg)
-                self.body.indent()
-                try: # try to remove the Py_DECREF cleanup action, if we can
-                    self.cleanup_actions.remove("Py_XDECREF(%s);" % arg)
-                except ValueError: # otherwise we have to Py_INCREF..
-                    self.body.writeln("Py_INCREF(%s);" % arg)
-                self.body.writeln("PyTuple_SET_ITEM(%s, %i, %s);" % (py_args, pos, arg))
-                self.body.unindent()
-                self.body.writeln("}")
-                pos += 1
-
-        self.body.writeln()
-
-        ## Call the python method
-        if self.method_name is None:
-            self.write_code("py_retval = PyObject_Call(%s, %s);"
-                            % (self.called_pyobj, py_args),
-                            cleanup="Py_XDECREF(py_retval);")
-            self.check_exception_code.flush_to(self.body)
-            self.write_code(None, failure_expression="!py_retval")
-
-        else:
-            self.add_declaration("PyObject *py_method;")
-            self.write_code("py_method = PyObject_GetAttrString(%s, \"%s\");"
-                            % (self.called_pyobj, self.method_name),
-                            cleanup="Py_DECREF(py_method);",
-                            failure_expression="!py_method")
-            self.write_code("py_retval = PyObject_CallObject(py_method, %s);"
-                            % (py_args,),
-                            cleanup="Py_XDECREF(py_retval);")
-            self.check_exception_code.flush_to(self.body)
-            self.write_code(None, failure_expression="!py_retval")
-
-        ## -- Handle the return value --
-
-        ## we need to check if the return_type object is prepared to cooperate with multiple return values
-        len_before = len(self.pyret_parse_items)
-        self.return_type.write_conversion()
-        len_after = len(self.pyret_parse_items)
-        assert (self.return_type.get_c_type() == 'void'
-                or not (len_before == len_after and len_after > 0)),\
-               ("Bug in reverse wrappers: return type handler %s"
-                " is not prepared to cooperate multiple return values") % (type(self.return_type),)
-
-        sink.indent()
-
-        if self.pyret_parse_items == [("", "")]:
-            ## special case when there are no return parameters
-            self.write_code(
-                code=None,
-                failure_expression='py_retval != Py_None',
-                failure_exception=('PyErr_SetString(PyExc_TypeError, '
-                                   '"virtual method should return None");'))
-        else:    
-            if len(self.pyret_parse_items) == 1:
-                ## if retval is one item only, pack it in a tuple so we
-                ## can use PyArg_ParseTuple as usual..
-                self.write_code('py_retval = Py_BuildValue("(N)", py_retval);')
-            if len(self.pyret_parse_items) > 0:
-                ## Parse return values using PyArg_ParseTuple
-                params = ["py_retval",
-                          '"%s"' % "".join([format for format, param in self.pyret_parse_items])]
-                params.extend([param for format, param in self.pyret_parse_items if param])
-                self.write_code(code=None, failure_expression=(
-                    '!PyArg_ParseTuple(%s)' % (', '.join(params),)))
-
-        if DEBUG_MODE:
-            self.declarations.writeln("/* end declarations */")
-        self.declarations.flush_to(sink)
-        sink.writeln()
-        if DEBUG_MODE:
-            self.body.writeln("/* end main body */")
-        self.body.flush_to(sink)
-        sink.writeln()
-        if DEBUG_MODE:
-            self.post_return_code.writeln("/* end post-return code */")
-        self.post_return_code.flush_to(sink)
-        sink.writeln()
-
-        for cleanup_action in self.cleanup_actions:
-            sink.writeln(cleanup_action)
-        if self.return_type.get_c_type() != 'void':
-            sink.writeln()
-            sink.writeln("return retval;")
-        sink.unindent()
-        sink.writeln("}")
-
-class TypeHandler(object):
-    def __init__(self, wrapper, **props):
-        assert isinstance(wrapper, ReverseWrapper)
-        self.wrapper = wrapper
-        self.props = props
-
-class ReturnType(TypeHandler):
-
-    supports_optional = False
-
-    def get_c_type(self):
-        raise NotImplementedError
-
-    def write_decl(self):
-        raise NotImplementedError
-
-    def write_error_return(self):
-        '''Write "return <value>" code in case of error'''
-        raise NotImplementedError
-
-    def write_conversion(self):
-        '''Writes code to convert Python return value in 'py_retval'
-        into C 'retval'.  Returns a string with C boolean expression
-        that determines if anything went wrong. '''
-        raise NotImplementedError
-
-class Parameter(TypeHandler):
-
-    def __init__(self, wrapper, name, **props):
-        TypeHandler.__init__(self, wrapper, **props)
-        self.name = name
-
-    def get_c_type(self):
-        raise NotImplementedError
-
-    def convert_c2py(self):
-        '''Write some code before calling the Python method.'''
-        pass
-
-    def format_for_c_proto(self):
-        return join_ctype_name(self.get_c_type(), self.name)
-
-
-###---
-class StringParam(Parameter):
-
-    def get_c_type(self):
-        return self.props.get('c_type', 'char *').replace('const-', 'const ')
-
-    def convert_c2py(self):
-        if self.props.get('optional', False):
-            self.wrapper.add_declaration("PyObject *py_%s = NULL;" % self.name)
-            self.wrapper.write_code(code=("if (%s)\n"
-                                          "    py_%s = PyString_FromString(%s);\n"
-                                          % (self.name, self.name, self.name)),
-                                    cleanup=("Py_XDECREF(py_%s);" % self.name))
-            self.wrapper.add_pyargv_item("py_%s" % self.name, optional=True)
-        elif self.props.get('nullok', False):
-            self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
-            self.wrapper.write_code(code=("if (%s)\n"
-                                          "    py_%s = PyString_FromString(%s);\n"
-                                          "else {\n"
-                                          "    Py_INCREF(Py_None);\n"
-                                          "    py_%s = Py_None;\n"
-                                          "}\n"
-                                          % (self.name, self.name, self.name, self.name)),
-                                    cleanup=("Py_DECREF(py_%s);" % self.name))
-            self.wrapper.add_pyargv_item("py_%s" % self.name)
-        else:
-            self.wrapper.add_declaration("PyObject *py_%s = NULL;" % self.name)
-            self.wrapper.write_code(code=("if (%s)\n"
-                                          "    py_%s = PyString_FromString(%s);\n" %
-                                          (self.name, self.name, self.name)),
-                                    cleanup=("Py_DECREF(py_%s);" % self.name),
-                                    failure_expression=("!py_%s" % self.name))
-            self.wrapper.add_pyargv_item("py_%s" % self.name)
-
-for ctype in ('char*', 'gchar*', 'const-char*', 'char-const*', 'const-gchar*',
-              'gchar-const*', 'string', 'static_string'):
-    argtypes.matcher.register_reverse(ctype, StringParam)
-del ctype
-
-class StringReturn(ReturnType):
-
-    def get_c_type(self):
-        return self.props.get('c_type', 'char *').replace('const-', 'const ')
-    #return "char *"
-
-    def write_decl(self):
-        self.wrapper.add_declaration("%s retval;" % self.get_c_type())
-        #self.wrapper.add_declaration("char *retval;")
-
-    def write_error_return(self):
-        self.wrapper.write_code("return NULL;")
-
-    def write_conversion(self):
-        self.wrapper.add_pyret_parse_item("s", "&retval", prepend=True)
-        self.wrapper.write_code("retval = g_strdup(retval);", code_sink=self.wrapper.post_return_code)
-
-for ctype in ('char*', 'gchar*', 'const-gchar*'):
-    argtypes.matcher.register_reverse_ret(ctype, StringReturn)
-del ctype
-
-
-class VoidReturn(ReturnType):
-
-    def get_c_type(self):
-        return "void"
-
-    def write_decl(self):
-        pass
-
-    def write_error_return(self):
-        self.wrapper.write_code("return;")
-
-    def write_conversion(self):
-        self.wrapper.add_pyret_parse_item("", "", prepend=True)
-
-argtypes.matcher.register_reverse_ret('void', VoidReturn)
-argtypes.matcher.register_reverse_ret('none', VoidReturn)
-
-class GObjectParam(Parameter):
-
-    def get_c_type(self):
-        return self.props.get('c_type', 'GObject *')
-
-    def convert_c2py(self):
-        self.wrapper.add_declaration("PyObject *py_%s = NULL;" % self.name)
-        self.wrapper.write_code(code=("if (%s)\n"
-                                      "    py_%s = pygobject_new((GObject *) %s);\n"
-                                      "else {\n"
-                                      "    Py_INCREF(Py_None);\n"
-                                      "    py_%s = Py_None;\n"
-                                      "}"
-                                      % (self.name, self.name, self.name, self.name)),
-                                cleanup=("Py_DECREF(py_%s);" % self.name))
-        self.wrapper.add_pyargv_item("py_%s" % self.name)
-
-argtypes.matcher.register_reverse('GObject*', GObjectParam)
-
-class GObjectReturn(ReturnType):
-
-    supports_optional = True
-
-    def get_c_type(self):
-        return self.props.get('c_type', 'GObject *')
-
-    def write_decl(self):
-        if not self.props.get('optional'):
-            self.wrapper.add_declaration("%s retval;" % self.get_c_type())
-        else:
-            self.wrapper.add_declaration("%s retval = NULL;" % self.get_c_type())
-
-    def write_error_return(self):
-        self.wrapper.write_code("return NULL;")
-
-    def write_conversion(self):
-        if not self.props.get('optional'):
-            self.wrapper.write_code(
-                code=None,
-                failure_expression="!PyObject_TypeCheck(py_retval, &PyGObject_Type)",
-                failure_exception='PyErr_SetString(PyExc_TypeError, "retval should be a GObject");')
-            self.wrapper.write_code("retval = (%s) pygobject_get(py_retval);"
-                                    % self.get_c_type())
-            self.wrapper.write_code("g_object_ref((GObject *) retval);")
-        else:
-            self.wrapper.write_code(
-                code=None,
-                failure_expression="py_retval != Py_None && !PyObject_TypeCheck(py_retval, &PyGObject_Type)",
-                failure_exception='PyErr_SetString(PyExc_TypeError, "retval should be None or a GObject");')
-            self.wrapper.write_code("if (py_retval != Py_None) {\n"
-                                    "    retval = (%s) pygobject_get(py_retval);\n"
-                                    "    g_object_ref((GObject *) retval);\n"
-                                    "}\n"
-                                    % self.get_c_type())
-
-argtypes.matcher.register_reverse_ret('GObject*', GObjectReturn)
-
-
-
-class IntParam(Parameter):
-
-    def get_c_type(self):
-        return self.props.get('c_type', 'int')
-
-    def convert_c2py(self):
-        self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
-        self.wrapper.write_code(code=("py_%s = PyInt_FromLong(%s);" %
-                                      (self.name, self.name)),
-                                cleanup=("Py_DECREF(py_%s);" % self.name))
-        self.wrapper.add_pyargv_item("py_%s" % self.name)
-
-class IntReturn(ReturnType):
-    def get_c_type(self):
-        return self.props.get('c_type', 'int')
-    def write_decl(self):
-        self.wrapper.add_declaration("%s retval;" % self.get_c_type())
-    def write_error_return(self):
-        self.wrapper.write_code("return -G_MAXINT;")
-    def write_conversion(self):
-        self.wrapper.add_pyret_parse_item("i", "&retval", prepend=True)
-
-for argtype in ('int', 'gint', 'guint', 'short', 'gshort', 'gushort', 'long',
-                'glong', 'gsize', 'gssize', 'guint8', 'gint8', 'guint16',
-                'gint16', 'gint32', 'GTime'):
-    argtypes.matcher.register_reverse(argtype, IntParam)
-    argtypes.matcher.register_reverse_ret(argtype, IntReturn)
-del argtype
-
-class IntPtrParam(Parameter):
-    def __init__(self, wrapper, name, **props):
-        if "direction" not in props:
-            raise argtypes.ArgTypeConfigurationError(
-                "cannot use int* parameter without direction")
-        if props["direction"] not in ("out", "inout"):
-            raise argtypes.ArgTypeConfigurationError(
-                "cannot use int* parameter with direction '%s'"
-                % (props["direction"],))
-        Parameter.__init__(self, wrapper, name, **props)
-    def get_c_type(self):
-        return self.props.get('c_type', 'int*')
-    def convert_c2py(self):
-        if self.props["direction"] == "inout":
-            self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
-            self.wrapper.write_code(code=("py_%s = PyInt_FromLong(*%s);" %
-                                          (self.name, self.name)),
-                                    cleanup=("Py_DECREF(py_%s);" % self.name))
-            self.wrapper.add_pyargv_item("py_%s" % self.name)
-        self.wrapper.add_pyret_parse_item("i", self.name)
-for argtype in ('int*', 'gint*'):
-    argtypes.matcher.register_reverse(argtype, IntPtrParam)
-del argtype
-
-
-class GEnumReturn(IntReturn):
-    def write_conversion(self):
-        self.wrapper.write_code(
-            code=None,
-            failure_expression=(
-            "pyg_enum_get_value(%s, py_retval, (gint *)&retval)"
-            % (self.props['typecode'],)))
-
-argtypes.matcher.register_reverse_ret("GEnum", GEnumReturn)
-
-class GEnumParam(IntParam):
-    def convert_c2py(self):
-        self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
-        self.wrapper.write_code(code=("py_%s = pyg_enum_from_gtype(%s, %s);" %
-                                (self.name, self.props['typecode'], self.name)),
-                        cleanup=("Py_DECREF(py_%s);" % self.name),
-                        failure_expression=("!py_%s" % self.name))
-        self.wrapper.add_pyargv_item("py_%s" % self.name)
-
-argtypes.matcher.register_reverse("GEnum", GEnumParam)
-
-class GFlagsReturn(IntReturn):
-    def write_conversion(self):
-        self.wrapper.write_code(
-            code=None,
-            failure_expression=(
-            "pyg_flags_get_value(%s, py_retval, (gint *)&retval)" %
-            self.props['typecode']))
-
-argtypes.matcher.register_reverse_ret("GFlags", GFlagsReturn)
-
-class GFlagsParam(IntParam):
-    def convert_c2py(self):
-        self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
-        self.wrapper.write_code(code=(
-            "py_%s = pyg_flags_from_gtype(%s, %s);" %
-            (self.name, self.props['typecode'], self.name)),
-                                cleanup=("Py_DECREF(py_%s);" % self.name),
-                                failure_expression=("!py_%s" % self.name))
-        self.wrapper.add_pyargv_item("py_%s" % self.name)
-
-argtypes.matcher.register_reverse("GFlags", GFlagsParam)
-
-
-class GtkTreePathParam(IntParam):
-    def convert_c2py(self):
-        self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
-        self.wrapper.write_code(code=(
-            "py_%s = pygtk_tree_path_to_pyobject(%s);" %
-            (self.name, self.name)),
-                                cleanup=("Py_DECREF(py_%s);" % self.name),
-                                failure_expression=("!py_%s" % self.name))
-        self.wrapper.add_pyargv_item("py_%s" % self.name)
-
-argtypes.matcher.register_reverse("GtkTreePath*", GtkTreePathParam)
-
-
-class GtkTreePathReturn(ReturnType):
-    def get_c_type(self):
-        return self.props.get('c_type', 'GtkTreePath *')
-    def write_decl(self):
-        self.wrapper.add_declaration("GtkTreePath * retval;")
-    def write_error_return(self):
-        self.wrapper.write_code("return NULL;")
-    def write_conversion(self):
-        self.wrapper.write_code(
-            "retval = pygtk_tree_path_from_pyobject(py_retval);\n",
-            failure_expression=('!retval'),
-            failure_exception=(
-    'PyErr_SetString(PyExc_TypeError, "retval should be a GtkTreePath");'))
-
-argtypes.matcher.register_reverse_ret("GtkTreePath*", GtkTreePathReturn)
-
-
-class BooleanReturn(ReturnType):
-    def get_c_type(self):
-        return "gboolean"
-    def write_decl(self):
-        self.wrapper.add_declaration("gboolean retval;")
-        self.wrapper.add_declaration("PyObject *py_main_retval;")
-    def write_error_return(self):
-        self.wrapper.write_code("return FALSE;")
-    def write_conversion(self):
-        self.wrapper.add_pyret_parse_item("O", "&py_main_retval", prepend=True)
-        self.wrapper.write_code(
-            "retval = PyObject_IsTrue(py_main_retval)? TRUE : FALSE;",
-            code_sink=self.wrapper.post_return_code)
-argtypes.matcher.register_reverse_ret("gboolean", BooleanReturn)
-
-class BooleanParam(Parameter):
-    def get_c_type(self):
-        return "gboolean"
-    def convert_c2py(self):
-        self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
-        self.wrapper.write_code("py_%s = %s? Py_True : Py_False;"
-                                % (self.name, self.name))
-        self.wrapper.add_pyargv_item("py_%s" % self.name)
-
-argtypes.matcher.register_reverse("gboolean", BooleanParam)
-
-
-class DoubleParam(Parameter):
-    def get_c_type(self):
-        return self.props.get('c_type', 'gdouble')
-    def convert_c2py(self):
-        self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
-        self.wrapper.write_code(code=("py_%s = PyFloat_FromDouble(%s);" %
-                                      (self.name, self.name)),
-                                cleanup=("Py_DECREF(py_%s);" % self.name))
-        self.wrapper.add_pyargv_item("py_%s" % self.name)
-
-class DoublePtrParam(Parameter):
-    def __init__(self, wrapper, name, **props):
-        if "direction" not in props:
-            raise argtypes.ArgTypeConfigurationError(
-                "cannot use double* parameter without direction")
-        if props["direction"] not in ("out", ): # inout not yet implemented
-            raise argtypes.ArgTypeConfigurationError(
-                "cannot use double* parameter with direction '%s'"
-                % (props["direction"],))
-        Parameter.__init__(self, wrapper, name, **props)
-    def get_c_type(self):
-        return self.props.get('c_type', 'double*')
-    def convert_c2py(self):
-        self.wrapper.add_pyret_parse_item("d", self.name)
-for argtype in ('double*', 'gdouble*'):
-    argtypes.matcher.register_reverse(argtype, DoublePtrParam)
-del argtype
-
-class DoubleReturn(ReturnType):
-    def get_c_type(self):
-        return self.props.get('c_type', 'gdouble')
-    def write_decl(self):
-        self.wrapper.add_declaration("%s retval;" % self.get_c_type())
-    def write_error_return(self):
-        self.wrapper.write_code("return -G_MAXFLOAT;")
-    def write_conversion(self):
-        self.wrapper.add_pyret_parse_item("d", "&retval", prepend=True)
-
-for argtype in ('float', 'double', 'gfloat', 'gdouble'):
-    argtypes.matcher.register_reverse(argtype, DoubleParam)
-    argtypes.matcher.register_reverse_ret(argtype, DoubleReturn)
-
-
-class GBoxedParam(Parameter):
-    def get_c_type(self):
-        return self.props.get('c_type').replace('const-', 'const ')
-    def convert_c2py(self):
-        self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
-        ctype = self.get_c_type()
-        if ctype.startswith('const '):
-            ctype_no_const = ctype[len('const '):]
-            self.wrapper.write_code(
-                code=('py_%s = pyg_boxed_new(%s, (%s) %s, TRUE, TRUE);' %
-                      (self.name, self.props['typecode'],
-                       ctype_no_const, self.name)),
-                cleanup=("Py_DECREF(py_%s);" % self.name))
-        else:
-            self.wrapper.write_code(
-                code=('py_%s = pyg_boxed_new(%s, %s, FALSE, FALSE);' %
-                      (self.name, self.props['typecode'], self.name)),
-                cleanup=("Py_DECREF(py_%s);" % self.name))
-        self.wrapper.add_pyargv_item("py_%s" % self.name)
-
-argtypes.matcher.register_reverse("GBoxed", GBoxedParam)
-
-
-class GBoxedReturn(ReturnType):
-    def get_c_type(self):
-        return self.props.get('c_type')
-    def write_decl(self):
-        self.wrapper.add_declaration("%s retval;" % self.get_c_type())
-    def write_error_return(self):
-        self.wrapper.write_code("return retval;")
-    def write_conversion(self):
-        self.wrapper.write_code(code = None,
-            failure_expression=("!pyg_boxed_check(py_retval, %s)" %
-                                (self.props['typecode'],)),
-            failure_exception=(
-            'PyErr_SetString(PyExc_TypeError, "retval should be a %s");'
-            % (self.props['typename'],)))
-        self.wrapper.write_code('retval = pyg_boxed_get(py_retval, %s);' %
-                                self.props['typename'])
-
-argtypes.matcher.register_reverse_ret("GBoxed", GBoxedReturn)
-
-
-class GdkRegionPtrReturn(GBoxedReturn):
-    def write_error_return(self):
-        self.wrapper.write_code("return gdk_region_new();")
-    def write_conversion(self):
-        self.props['typecode'] = 'PYGDK_TYPE_REGION'
-        self.props['typename'] = 'GdkRegion'
-        super(GdkRegionPtrReturn, self).write_conversion()
-
-argtypes.matcher.register_reverse_ret("GdkRegion*", GdkRegionPtrReturn)
-
-
-class PangoFontDescriptionReturn(GBoxedReturn):
-    def write_error_return(self):
-        self.wrapper.write_code("return pango_font_description_new();")
-    def write_conversion(self):
-        self.props['typecode'] = 'PANGO_TYPE_FONT_DESCRIPTION'
-        self.props['typename'] = 'PangoFontDescription'
-        super(PangoFontDescriptionReturn, self).write_conversion()
-
-argtypes.matcher.register_reverse_ret("PangoFontDescription*",
-                                      PangoFontDescriptionReturn)
-
-
-class PangoFontMetricsReturn(GBoxedReturn):
-    def write_error_return(self):
-        self.wrapper.write_code("return pango_font_metrics_new();")
-    def write_conversion(self):
-        self.props['typecode'] = 'PANGO_TYPE_FONT_METRICS'
-        self.props['typename'] = 'PangoFontMetrics'
-        super(PangoFontMetricsReturn, self).write_conversion()
-
-argtypes.matcher.register_reverse_ret("PangoFontMetrics*",
-                                      PangoFontMetricsReturn)
-
-
-class PangoLanguageReturn(GBoxedReturn):
-    def write_error_return(self):
-        self.wrapper.write_code("return pango_language_from_string(\"\");")
-    def write_conversion(self):
-        self.props['typecode'] = 'PANGO_TYPE_LANGUAGE'
-        self.props['typename'] = 'PangoLanguage'
-        super(PangoLanguageReturn, self).write_conversion()
-
-argtypes.matcher.register_reverse_ret("PangoLanguage*", PangoLanguageReturn)
-
-
-class GdkRectanglePtrParam(Parameter):
-    def get_c_type(self):
-        return self.props.get('c_type').replace('const-', 'const ')
-    def convert_c2py(self):
-        self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
-        self.wrapper.write_code(
-            code=('py_%s = pyg_boxed_new(GDK_TYPE_RECTANGLE, %s, TRUE, TRUE);' %
-                  (self.name, self.name)),
-            cleanup=("Py_DECREF(py_%s);" % self.name))
-        self.wrapper.add_pyargv_item("py_%s" % self.name)
-
-argtypes.matcher.register_reverse("GdkRectangle*", GdkRectanglePtrParam)
-argtypes.matcher.register_reverse('GtkAllocation*', GdkRectanglePtrParam)
-
-
-class GErrorParam(Parameter):
-    def get_c_type(self):
-        return self.props.get('c_type').replace('**', ' **')
-    def convert_c2py(self):
-        self.wrapper.write_code(code=None,
-            failure_expression=("pyg_gerror_exception_check(%s)" % self.name),
-                                code_sink=self.wrapper.check_exception_code)
-
-argtypes.matcher.register_reverse('GError**', GErrorParam)
-
-
-class PyGObjectMethodParam(Parameter):
-    def __init__(self, wrapper, name, method_name, **props):
-        Parameter.__init__(self, wrapper, name, **props)
-        self.method_name = method_name
-
-    def get_c_type(self):
-        return self.props.get('c_type', 'GObject *')
-
-    def convert_c2py(self):
-        self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
-        self.wrapper.write_code(code=("py_%s = pygobject_new((GObject *) %s);" %
-                                      (self.name, self.name)),
-                                cleanup=("Py_DECREF(py_%s);" % self.name),
-                                failure_expression=("!py_%s" % self.name))
-        self.wrapper.set_call_target("py_%s" % self.name, self.method_name)
-
-
-class CallbackInUserDataParam(Parameter):
-    def __init__(self, wrapper, name, free_it, **props):
-        Parameter.__init__(self, wrapper, name, **props)
-        self.free_it = free_it
-
-    def get_c_type(self):
-        return "gpointer"
-
-    def convert_c2py(self):
-        self.wrapper.add_declaration("PyObject **_user_data;")
-        cleanup = self.free_it and ("g_free(%s);" % self.name) or None
-        self.wrapper.write_code(code=("_real_user_data = (PyObject **) %s;"
-                                      % self.name),
-                                cleanup=cleanup)
-
-        self.wrapper.add_declaration("PyObject *py_func;")
-        cleanup = self.free_it and "Py_DECREF(py_func);" or None
-        self.wrapper.write_code(code="py_func = _user_data[0];",
-                                cleanup=cleanup)
-        self.wrapper.set_call_target("py_func")
-
-        self.wrapper.add_declaration("PyObject *py_user_data;")
-        cleanup = self.free_it and "Py_XDECREF(py_user_data);" or None
-        self.wrapper.write_code(code="py_user_data = _user_data[1];",
-                                cleanup=cleanup)
-        self.wrapper.add_pyargv_item("py_user_data", optional=True)
-
-def _test():
-    import sys
-
-    if 1:
-        wrapper = ReverseWrapper("this_is_the_c_function_name", is_static=True)
-        wrapper.set_return_type(StringReturn(wrapper))
-        wrapper.add_parameter(PyGObjectMethodParam(wrapper, "self", method_name="do_xxx"))
-        wrapper.add_parameter(StringParam(wrapper, "param2", optional=True))
-        wrapper.add_parameter(GObjectParam(wrapper, "param3"))
-        #wrapper.add_parameter(InoutIntParam(wrapper, "param4"))
-        wrapper.generate(FileCodeSink(sys.stderr))
-
-    if 0:
-        wrapper = ReverseWrapper("this_a_callback_wrapper")
-        wrapper.set_return_type(VoidReturn(wrapper))
-        wrapper.add_parameter(StringParam(wrapper, "param1", optional=False))
-        wrapper.add_parameter(GObjectParam(wrapper, "param2"))
-        wrapper.add_parameter(CallbackInUserDataParam(wrapper, "data", free_it=True))
-        wrapper.generate(FileCodeSink(sys.stderr))
-
-if __name__ == '__main__':
-    _test()
diff --git a/codegen/scanvirtuals.py b/codegen/scanvirtuals.py
deleted file mode 100755 (executable)
index c108737..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/env python
-import re
-import sys
-
-
-def main():
-    rx = re.compile(r'^\s*([\w\s\*]+)\(\s*\*\s*(\w+)\s*\)\s*\(([^()]*)\);',
-                    re.DOTALL|re.MULTILINE)
-    for f in sys.argv[1:]:
-        #print ";; From", f
-        buf = file(f).read()
-        for m in rx.findall(buf):
-            return_type =  m[0].strip()
-            if 'typedef' in return_type:
-                continue
-            if return_type == 'void':
-                return_type = 'none'
-            return_type = return_type.replace(' ', '')
-            virtual_name =  m[1]
-            if 'reserved' in virtual_name:
-                continue
-            params = []
-            if not m[2]:
-                print >> sys.stderr, repr(m)
-                continue
-            for param in map(str.strip, m[2].split(',')):
-                if '*' in param:
-                    tokens = param.split('*')
-                    ptype = tokens[0].strip() + '*'*(len(tokens) - 1)
-                    pname = tokens[-1].strip()
-                else:
-                    if param == 'void':
-                        continue
-                    ptype, pname = map(str.strip, param.split())
-                ptype = ptype.replace('const ', 'const-')
-                while '[]' in pname:
-                    pname = pname.replace('[]', '')
-                    ptype += '[]'
-                params.append((ptype, pname))
-            if not params:
-                continue
-            objname = params[0][0].replace('*', '')
-            print '(define-virtual', virtual_name
-            print '  (of-object "%s")' % objname
-            print '  (return-type "%s")' % return_type
-            if len(params) > 1:
-                print '  (parameters'
-                for param in params[1:]:
-                    print '    \'("%s" "%s")' % param
-                print '  )'
-            print ')'
-
-if __name__ == '__main__':
-    main()
diff --git a/codegen/scmexpr.py b/codegen/scmexpr.py
deleted file mode 100755 (executable)
index 02f2e4b..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/env python
-# -*- Mode: Python; py-indent-offset: 4 -*-
-from __future__ import generators
-
-import string
-from cStringIO import StringIO
-
-class error(Exception):
-    def __init__(self, filename, lineno, msg):
-        Exception.__init__(self, msg)
-        self.filename = filename
-        self.lineno = lineno
-        self.msg = msg
-    def __str__(self):
-        return '%s:%d: error: %s' % (self.filename, self.lineno, self.msg)
-
-trans = [' '] * 256
-for i in range(256):
-    if chr(i) in string.letters + string.digits + '_':
-        trans[i] = chr(i)
-    else:
-        trans[i] = '_'
-trans = string.join(trans, '')
-
-def parse(filename):
-    if isinstance(filename, str):
-        fp = open(filename, 'r')
-    else: # if not string, assume it is some kind of iterator
-        fp = filename
-        filename = getattr(fp, 'name', '<unknown>')
-    whitespace = ' \t\n\r\x0b\x0c'
-    nonsymbol = whitespace + '();\'"'
-    stack = []
-    openlines = []
-    lineno = 0
-    for line in fp:
-        pos = 0
-        lineno += 1
-        while pos < len(line):
-            if line[pos] in whitespace: # ignore whitespace
-                pass
-            elif line[pos] == ';': # comment
-                break
-            elif line[pos:pos+2] == "'(":
-                pass # the open parenthesis will be handled next iteration
-            elif line[pos] == '(':
-                stack.append(())
-                openlines.append(lineno)
-            elif line[pos] == ')':
-                if len(stack) == 0:
-                    raise error(filename, lineno, 'close parenthesis found when none open')
-                closed = stack[-1]
-                del stack[-1]
-                del openlines[-1]
-                if stack:
-                    stack[-1] += (closed,)
-                else:
-                    yield closed
-            elif line[pos] == '"': # quoted string
-                if not stack:
-                    raise error(filename, lineno,
-                                'string found outside of s-expression')
-                endpos = pos + 1
-                chars = []
-                while endpos < len(line):
-                    if endpos+1 < len(line) and line[endpos] == '\\':
-                        endpos += 1
-                        if line[endpos] == 'n':
-                            chars.append('\n')
-                        elif line[endpos] == 'r':
-                            chars.append('\r')
-                        elif line[endpos] == 't':
-                            chars.append('\t')
-                        else:
-                            chars.append('\\')
-                            chars.append(line[endpos])
-                    elif line[endpos] == '"':
-                        break
-                    else:
-                        chars.append(line[endpos])
-                    endpos += 1
-                if endpos >= len(line):
-                    raise error(filename, lineno, "unclosed quoted string")
-                pos = endpos
-                stack[-1] += (''.join(chars),)
-            else: # symbol/number
-                if not stack:
-                    raise error(filename, lineno,
-                                'identifier found outside of s-expression')
-                endpos = pos
-                while endpos < len(line) and line[endpos] not in nonsymbol:
-                    endpos += 1
-                symbol = line[pos:endpos]
-                pos = max(pos, endpos-1)
-                try: symbol = int(symbol)
-                except ValueError:
-                    try: symbol = float(symbol)
-                    except ValueError: pass
-                stack[-1] += (symbol,)
-            pos += 1
-    if len(stack) != 0:
-        msg = '%d unclosed parentheses found at end of ' \
-              'file (opened on line(s) %s)' % (len(stack),
-                                               ', '.join(map(str, openlines)))
-        raise error(filename, lineno, msg)
-
-class Parser:
-    def __init__(self, filename):
-        """Argument is either a string, a parse tree, or file object"""
-        self.filename = filename
-    def startParsing(self, filename=None):
-        statements = parse(filename or self.filename)
-        for statement in statements:
-            self.handle(statement)
-    def handle(self, tup):
-        cmd = string.translate(tup[0], trans)
-        if hasattr(self, cmd):
-            getattr(self, cmd)(*tup[1:])
-        else:
-            self.unknown(tup)
-    def unknown(self, tup):
-        pass
-
-_testString = """; a scheme file
-(define-func gdk_font_load    ; a comment at end of line
-  GdkFont
-  ((string name)))
-
-(define-boxed GdkEvent
-  gdk_event_copy
-  gdk_event_free
-  "sizeof(GdkEvent)")
-"""
-
-if __name__ == '__main__':
-    import sys
-    if sys.argv[1:]:
-        fp = open(sys.argv[1])
-    else:
-        fp = StringIO(_testString)
-    statements = parse(fp)
-    for s in statements:
-        print `s`
diff --git a/compile b/compile
index c0096a7..862a14e 100755 (executable)
--- a/compile
+++ b/compile
@@ -1,10 +1,10 @@
 #! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
+# Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2009-10-06.20; # UTC
+scriptversion=2012-03-05.13; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009  Free Software
-# Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
+# Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -29,21 +29,219 @@ scriptversion=2009-10-06.20; # UTC
 # bugs to <bug-automake@gnu.org> or send patches to
 # <automake-patches@gnu.org>.
 
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""       $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin/*)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine/*)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+       -o)
+         # configure might choose to run compile as 'compile cc -o foo foo.c'.
+         eat=1
+         case $2 in
+           *.o | *.[oO][bB][jJ])
+             func_file_conv "$2"
+             set x "$@" -Fo"$file"
+             shift
+             ;;
+           *)
+             func_file_conv "$2"
+             set x "$@" -Fe"$file"
+             shift
+             ;;
+         esac
+         ;;
+       -I)
+         eat=1
+         func_file_conv "$2" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -I*)
+         func_file_conv "${1#-I}" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -l)
+         eat=1
+         func_cl_dashl "$2"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -l*)
+         func_cl_dashl "${1#-l}"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -L)
+         eat=1
+         func_cl_dashL "$2"
+         ;;
+       -L*)
+         func_cl_dashL "${1#-L}"
+         ;;
+       -static)
+         shared=false
+         ;;
+       -Wl,*)
+         arg=${1#-Wl,}
+         save_ifs="$IFS"; IFS=','
+         for flag in $arg; do
+           IFS="$save_ifs"
+           linker_opts="$linker_opts $flag"
+         done
+         IFS="$save_ifs"
+         ;;
+       -Xlinker)
+         eat=1
+         linker_opts="$linker_opts $2"
+         ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
+       *)
+         set x "$@" "$1"
+         shift
+         ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
 case $1 in
   '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
      exit 1;
      ;;
   -h | --h*)
     cat <<\EOF
 Usage: compile [--help] [--version] PROGRAM [ARGS]
 
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
 arguments, and rename the output as expected.
 
 If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
+right script to run: please start by reading the file 'INSTALL'.
 
 Report bugs to <bug-automake@gnu.org>.
 EOF
@@ -53,11 +251,13 @@ EOF
     echo "compile $scriptversion"
     exit $?
     ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
 esac
 
 ofile=
 cfile=
-eat=
 
 for arg
 do
@@ -66,8 +266,8 @@ do
   else
     case $1 in
       -o)
-       # configure might choose to run compile as `compile cc -o foo foo.c'.
-       # So we strip `-o arg' only if arg is an object.
+       # configure might choose to run compile as 'compile cc -o foo foo.c'.
+       # So we strip '-o arg' only if arg is an object.
        eat=1
        case $2 in
          *.o | *.obj)
@@ -94,10 +294,10 @@ do
 done
 
 if test -z "$ofile" || test -z "$cfile"; then
-  # If no `-o' option was seen then we might have been invoked from a
+  # If no '-o' option was seen then we might have been invoked from a
   # pattern rule where we don't need one.  That is ok -- this is a
   # normal compilation that the losing compiler can handle.  If no
-  # `.c' file was seen then we are probably linking.  That is also
+  # '.c' file was seen then we are probably linking.  That is also
   # ok.
   exec "$@"
 fi
@@ -106,7 +306,7 @@ fi
 cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
 
 # Create the lock directory.
-# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
 # that we are using for the .o file.  Also, base the name on the expected
 # object file name, since that is what matters with a parallel build.
 lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
index dc84c68..d622a44 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-#   Free Software Foundation, Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2009-11-20'
+timestamp='2012-02-10'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -17,9 +17,7 @@ timestamp='2009-11-20'
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -56,8 +54,9 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -144,7 +143,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:NetBSD:*:*)
        # NetBSD (nbsd) targets should (where applicable) match one or
-       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
        # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
        # switched to ELF, *-*-netbsd* would select the old
        # object file format.  This provides both forward
@@ -180,7 +179,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                fi
                ;;
            *)
-               os=netbsd
+               os=netbsd
                ;;
        esac
        # The OS release
@@ -223,7 +222,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
                ;;
        *5.*)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
                ;;
        esac
        # According to Compaq, /usr/sbin/psrinfo has been available on
@@ -269,7 +268,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        # A Xn.n version is an unreleased experimental baselevel.
        # 1.2 uses "1.2" for uname -r.
        echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-       exit ;;
+       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+       exitcode=$?
+       trap '' 0
+       exit $exitcode ;;
     Alpha\ *:Windows_NT*:*)
        # How do we know it's Interix rather than the generic POSIX subsystem?
        # Should we change UNAME_MACHINE based on the output of uname instead
@@ -295,7 +297,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        echo s390-ibm-zvmoe
        exit ;;
     *:OS400:*:*)
-        echo powerpc-ibm-os400
+       echo powerpc-ibm-os400
        exit ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
        echo arm-acorn-riscix${UNAME_RELEASE}
@@ -394,23 +396,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+       echo m68k-atari-mint${UNAME_RELEASE}
        exit ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
        echo m68k-atari-mint${UNAME_RELEASE}
-        exit ;;
+       exit ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+       echo m68k-atari-mint${UNAME_RELEASE}
        exit ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-        echo m68k-milan-mint${UNAME_RELEASE}
-        exit ;;
+       echo m68k-milan-mint${UNAME_RELEASE}
+       exit ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-        echo m68k-hades-mint${UNAME_RELEASE}
-        exit ;;
+       echo m68k-hades-mint${UNAME_RELEASE}
+       exit ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-        echo m68k-unknown-mint${UNAME_RELEASE}
-        exit ;;
+       echo m68k-unknown-mint${UNAME_RELEASE}
+       exit ;;
     m68k:machten:*:*)
        echo m68k-apple-machten${UNAME_RELEASE}
        exit ;;
@@ -480,8 +482,8 @@ EOF
        echo m88k-motorola-sysv3
        exit ;;
     AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
+       # DG/UX returns AViiON for all architectures
+       UNAME_PROCESSOR=`/usr/bin/uname -p`
        if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
        then
            if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -494,7 +496,7 @@ EOF
        else
            echo i586-dg-dgux${UNAME_RELEASE}
        fi
-       exit ;;
+       exit ;;
     M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
        echo m88k-dolphin-sysv3
        exit ;;
@@ -551,7 +553,7 @@ EOF
                echo rs6000-ibm-aix3.2
        fi
        exit ;;
-    *:AIX:*:[456])
+    *:AIX:*:[4567])
        IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
        if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
                IBM_ARCH=rs6000
@@ -594,52 +596,52 @@ EOF
            9000/[678][0-9][0-9])
                if [ -x /usr/bin/getconf ]; then
                    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                    case "${sc_cpu_version}" in
-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                      532)                      # CPU_PA_RISC2_0
-                        case "${sc_kernel_bits}" in
-                          32) HP_ARCH="hppa2.0n" ;;
-                          64) HP_ARCH="hppa2.0w" ;;
+                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                   case "${sc_cpu_version}" in
+                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                     532)                      # CPU_PA_RISC2_0
+                       case "${sc_kernel_bits}" in
+                         32) HP_ARCH="hppa2.0n" ;;
+                         64) HP_ARCH="hppa2.0w" ;;
                          '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                        esac ;;
-                    esac
+                       esac ;;
+                   esac
                fi
                if [ "${HP_ARCH}" = "" ]; then
                    eval $set_cc_for_build
-                   sed 's/^              //' << EOF >$dummy.c
+                   sed 's/^            //' << EOF >$dummy.c
 
-              #define _HPUX_SOURCE
-              #include <stdlib.h>
-              #include <unistd.h>
+               #define _HPUX_SOURCE
+               #include <stdlib.h>
+               #include <unistd.h>
 
-              int main ()
-              {
-              #if defined(_SC_KERNEL_BITS)
-                  long bits = sysconf(_SC_KERNEL_BITS);
-              #endif
-                  long cpu  = sysconf (_SC_CPU_VERSION);
+               int main ()
+               {
+               #if defined(_SC_KERNEL_BITS)
+                   long bits = sysconf(_SC_KERNEL_BITS);
+               #endif
+                   long cpu  = sysconf (_SC_CPU_VERSION);
 
-                  switch (cpu)
-               {
-               case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-               case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-               case CPU_PA_RISC2_0:
-              #if defined(_SC_KERNEL_BITS)
-                   switch (bits)
-                       {
-                       case 64: puts ("hppa2.0w"); break;
-                       case 32: puts ("hppa2.0n"); break;
-                       default: puts ("hppa2.0"); break;
-                       } break;
-              #else  /* !defined(_SC_KERNEL_BITS) */
-                   puts ("hppa2.0"); break;
-              #endif
-               default: puts ("hppa1.0"); break;
-               }
-                  exit (0);
-              }
+                   switch (cpu)
+                       {
+                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+                       case CPU_PA_RISC2_0:
+               #if defined(_SC_KERNEL_BITS)
+                           switch (bits)
+                               {
+                               case 64: puts ("hppa2.0w"); break;
+                               case 32: puts ("hppa2.0n"); break;
+                               default: puts ("hppa2.0"); break;
+                               } break;
+               #else  /* !defined(_SC_KERNEL_BITS) */
+                           puts ("hppa2.0"); break;
+               #endif
+                       default: puts ("hppa1.0"); break;
+                       }
+                   exit (0);
+               }
 EOF
                    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
                    test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -730,22 +732,22 @@ EOF
        exit ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
        echo c1-convex-bsd
-        exit ;;
+       exit ;;
     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
        if getsysinfo -f scalar_acc
        then echo c32-convex-bsd
        else echo c2-convex-bsd
        fi
-        exit ;;
+       exit ;;
     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
        echo c34-convex-bsd
-        exit ;;
+       exit ;;
     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
        echo c38-convex-bsd
-        exit ;;
+       exit ;;
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
        echo c4-convex-bsd
-        exit ;;
+       exit ;;
     CRAY*Y-MP:*:*:*)
        echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit ;;
@@ -769,14 +771,14 @@ EOF
        exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
        FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit ;;
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
     5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
        exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
        echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -788,13 +790,12 @@ EOF
        echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
        exit ;;
     *:FreeBSD:*:*)
-       case ${UNAME_MACHINE} in
-           pc98)
-               echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+       UNAME_PROCESSOR=`/usr/bin/uname -p`
+       case ${UNAME_PROCESSOR} in
            amd64)
                echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
            *)
-               echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+               echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
        esac
        exit ;;
     i*:CYGWIN*:*)
@@ -803,15 +804,18 @@ EOF
     *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
+    i*:MSYS*:*)
+       echo ${UNAME_MACHINE}-pc-msys
+       exit ;;
     i*:windows32*:*)
-       # uname -m includes "-pc" on this system.
-       echo ${UNAME_MACHINE}-mingw32
+       # uname -m includes "-pc" on this system.
+       echo ${UNAME_MACHINE}-mingw32
        exit ;;
     i*:PW*:*)
        echo ${UNAME_MACHINE}-pc-pw32
        exit ;;
     *:Interix*:*)
-       case ${UNAME_MACHINE} in
+       case ${UNAME_MACHINE} in
            x86)
                echo i586-pc-interix${UNAME_RELEASE}
                exit ;;
@@ -857,6 +861,13 @@ EOF
     i*86:Minix:*:*)
        echo ${UNAME_MACHINE}-pc-minix
        exit ;;
+    aarch64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    aarch64_be:Linux:*:*)
+       UNAME_MACHINE=aarch64_be
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
     alpha:Linux:*:*)
        case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
          EV5)   UNAME_MACHINE=alphaev5 ;;
@@ -866,7 +877,7 @@ EOF
          EV6)   UNAME_MACHINE=alphaev6 ;;
          EV67)  UNAME_MACHINE=alphaev67 ;;
          EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
+       esac
        objdump --private-headers /bin/sh | grep -q ld.so.1
        if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
        echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
@@ -878,20 +889,29 @@ EOF
        then
            echo ${UNAME_MACHINE}-unknown-linux-gnu
        else
-           echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+               | grep -q __ARM_PCS_VFP
+           then
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+           else
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+           fi
        fi
        exit ;;
     avr32*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     cris:Linux:*:*)
-       echo cris-axis-linux-gnu
+       echo ${UNAME_MACHINE}-axis-linux-gnu
        exit ;;
     crisv32:Linux:*:*)
-       echo crisv32-axis-linux-gnu
+       echo ${UNAME_MACHINE}-axis-linux-gnu
        exit ;;
     frv:Linux:*:*)
-       echo frv-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    hexagon:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     i*86:Linux:*:*)
        LIBC=gnu
@@ -933,7 +953,7 @@ EOF
        test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
        ;;
     or32:Linux:*:*)
-       echo or32-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     padre:Linux:*:*)
        echo sparc-unknown-linux-gnu
@@ -959,7 +979,7 @@ EOF
        echo ${UNAME_MACHINE}-ibm-linux
        exit ;;
     sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     sh*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -967,14 +987,17 @@ EOF
     sparc:Linux:*:* | sparc64:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
+    tile*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
     vax:Linux:*:*)
        echo ${UNAME_MACHINE}-dec-linux-gnu
        exit ;;
     x86_64:Linux:*:*)
-       echo x86_64-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     i*86:DYNIX/ptx:4*:*)
        # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -983,11 +1006,11 @@ EOF
        echo i386-sequent-sysv4
        exit ;;
     i*86:UNIX_SV:4.2MP:2.*)
-        # Unixware is an offshoot of SVR4, but it has its own version
-        # number series starting with 2...
-        # I am not positive that other SVR4 systems won't match this,
+       # Unixware is an offshoot of SVR4, but it has its own version
+       # number series starting with 2...
+       # I am not positive that other SVR4 systems won't match this,
        # I just have to hope.  -- rms.
-        # Use sysv4.2uw... so that sysv4* matches it.
+       # Use sysv4.2uw... so that sysv4* matches it.
        echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
        exit ;;
     i*86:OS/2:*:*)
@@ -1019,7 +1042,7 @@ EOF
        fi
        exit ;;
     i*86:*:5:[678]*)
-       # UnixWare 7.x, OpenUNIX and OpenServer 6.
+       # UnixWare 7.x, OpenUNIX and OpenServer 6.
        case `/bin/uname -X | grep "^Machine"` in
            *486*)           UNAME_MACHINE=i486 ;;
            *Pentium)        UNAME_MACHINE=i586 ;;
@@ -1047,13 +1070,13 @@ EOF
        exit ;;
     pc:*:*:*)
        # Left here for compatibility:
-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i586.
+       # uname -m prints for DJGPP always 'pc', but it prints nothing about
+       # the processor, so we play safe by assuming i586.
        # Note: whatever this is, it MUST be the same as what config.sub
        # prints for the "djgpp" host, or else GDB configury will decide that
        # this is a cross-build.
        echo i586-pc-msdosdjgpp
-        exit ;;
+       exit ;;
     Intel:Mach:3*:*)
        echo i386-pc-mach3
        exit ;;
@@ -1088,8 +1111,8 @@ EOF
        /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
          && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && { echo i486-ncr-sysv4; exit; } ;;
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && { echo i486-ncr-sysv4; exit; } ;;
     NCR*:*:4.2:* | MPRAS*:*:4.2:*)
        OS_REL='.3'
        test -r /etc/.relid \
@@ -1132,10 +1155,10 @@ EOF
                echo ns32k-sni-sysv
        fi
        exit ;;
-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                      # says <Richard.M.Bartel@ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit ;;
+    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                       # says <Richard.M.Bartel@ccMail.Census.GOV>
+       echo i586-unisys-sysv4
+       exit ;;
     *:UNIX_System_V:4*:FTX*)
        # From Gerald Hewes <hewes@openmarket.com>.
        # How about differentiating between stratus architectures? -djm
@@ -1161,11 +1184,11 @@ EOF
        exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
        if [ -d /usr/nec ]; then
-               echo mips-nec-sysv${UNAME_RELEASE}
+               echo mips-nec-sysv${UNAME_RELEASE}
        else
-               echo mips-unknown-sysv${UNAME_RELEASE}
+               echo mips-unknown-sysv${UNAME_RELEASE}
        fi
-        exit ;;
+       exit ;;
     BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
        echo powerpc-be-beos
        exit ;;
@@ -1230,6 +1253,9 @@ EOF
     *:QNX:*:4*)
        echo i386-pc-qnx
        exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+       echo neo-tandem-nsk${UNAME_RELEASE}
+       exit ;;
     NSE-?:NONSTOP_KERNEL:*:*)
        echo nse-tandem-nsk${UNAME_RELEASE}
        exit ;;
@@ -1275,13 +1301,13 @@ EOF
        echo pdp10-unknown-its
        exit ;;
     SEI:*:*:SEIUX)
-        echo mips-sei-seiux${UNAME_RELEASE}
+       echo mips-sei-seiux${UNAME_RELEASE}
        exit ;;
     *:DragonFly:*:*)
        echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit ;;
     *:*VMS:*:*)
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
+       UNAME_MACHINE=`(uname -p) 2>/dev/null`
        case "${UNAME_MACHINE}" in
            A*) echo alpha-dec-vms ; exit ;;
            I*) echo ia64-dec-vms ; exit ;;
@@ -1299,6 +1325,9 @@ EOF
     i*86:AROS:*:*)
        echo ${UNAME_MACHINE}-pc-aros
        exit ;;
+    x86_64:VMkernel:*:*)
+       echo ${UNAME_MACHINE}-unknown-esx
+       exit ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1321,11 +1350,11 @@ main ()
 #include <sys/param.h>
   printf ("m68k-sony-newsos%s\n",
 #ifdef NEWSOS4
-          "4"
+       "4"
 #else
-         ""
+       ""
 #endif
-         ); exit (0);
+       ); exit (0);
 #endif
 #endif
 
index 5ac6e15..fa098f6 100644 (file)
@@ -1,14 +1,8 @@
 /* config.h.in.  Generated from configure.ac by autoheader.  */
 
-/* Use introspection information */
-#undef ENABLE_INTROSPECTION
-
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
-/* Have libffi include files */
-#undef HAVE_FFI_H
-
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
index 2a55a50..6205f84 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-#   Free Software Foundation, Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2009-11-20'
+timestamp='2012-04-18'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -21,9 +21,7 @@ timestamp='2009-11-20'
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -75,8 +73,9 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -123,13 +122,18 @@ esac
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
     ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
   *)
     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
     if [ $basic_machine != $1 ]
@@ -156,8 +160,8 @@ case $os in
                os=
                basic_machine=$1
                ;;
-        -bluegene*)
-               os=-cnk
+       -bluegene*)
+               os=-cnk
                ;;
        -sim | -cisco | -oki | -wec | -winbond)
                os=
@@ -173,10 +177,10 @@ case $os in
                os=-chorusos
                basic_machine=$1
                ;;
-       -chorusrdb)
-               os=-chorusrdb
+       -chorusrdb)
+               os=-chorusrdb
                basic_machine=$1
-               ;;
+               ;;
        -hiux*)
                os=-hiuxwe2
                ;;
@@ -221,6 +225,12 @@ case $os in
        -isc*)
                basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
                ;;
+       -lynx*178)
+               os=-lynxos178
+               ;;
+       -lynx*5)
+               os=-lynxos5
+               ;;
        -lynx*)
                os=-lynxos
                ;;
@@ -245,17 +255,22 @@ case $basic_machine in
        # Some are omitted here because they have special meanings below.
        1750a | 580 \
        | a29k \
+       | aarch64 | aarch64_be \
        | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
        | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
        | am33_2.0 \
        | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+        | be32 | be64 \
        | bfin \
        | c4x | clipper \
        | d10v | d30v | dlx | dsp16xx \
+       | epiphany \
        | fido | fr30 | frv \
        | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
+       | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
        | maxq | mb | microblaze | mcore | mep | metag \
@@ -281,29 +296,39 @@ case $basic_machine in
        | moxie \
        | mt \
        | msp430 \
+       | nds32 | nds32le | nds32be \
        | nios | nios2 \
        | ns16k | ns32k \
+       | open8 \
        | or32 \
        | pdp10 | pdp11 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+       | powerpc | powerpc64 | powerpc64le | powerpcle \
        | pyramid \
-       | rx \
+       | rl78 | rx \
        | score \
        | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
        | sh64 | sh64le \
        | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
        | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-       | spu | strongarm \
-       | tahoe | thumb | tic4x | tic80 | tron \
+       | spu \
+       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
        | ubicom32 \
-       | v850 | v850e \
+       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
        | we32k \
-       | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+       | x86 | xc16x | xstormy16 | xtensa \
        | z8k | z80)
                basic_machine=$basic_machine-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | picochip)
-               # Motorola 68HC11/12.
+       c54x)
+               basic_machine=tic54x-unknown
+               ;;
+       c55x)
+               basic_machine=tic55x-unknown
+               ;;
+       c6x)
+               basic_machine=tic6x-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
@@ -313,6 +338,21 @@ case $basic_machine in
                basic_machine=mt-unknown
                ;;
 
+       strongarm | thumb | xscale)
+               basic_machine=arm-unknown
+               ;;
+       xgate)
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       xscaleeb)
+               basic_machine=armeb-unknown
+               ;;
+
+       xscaleel)
+               basic_machine=armel-unknown
+               ;;
+
        # We use `pc' rather than `unknown'
        # because (1) that's what they normally are, and
        # (2) the word "unknown" tends to confuse beginning users.
@@ -327,21 +367,25 @@ case $basic_machine in
        # Recognize the basic CPU types with company name.
        580-* \
        | a29k-* \
+       | aarch64-* | aarch64_be-* \
        | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
        | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
        | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
        | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
        | avr-* | avr32-* \
+       | be32-* | be64-* \
        | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* \
        | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
        | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
        | h8300-* | h8500-* \
        | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
+       | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
        | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
@@ -367,25 +411,29 @@ case $basic_machine in
        | mmix-* \
        | mt-* \
        | msp430-* \
+       | nds32-* | nds32le-* | nds32be-* \
        | nios-* | nios2-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
+       | open8-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
        | pyramid-* \
-       | romp-* | rs6000-* | rx-* \
+       | rl78-* | romp-* | rs6000-* | rx-* \
        | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
        | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
        | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
        | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
-       | tahoe-* | thumb-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+       | tahoe-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tile*-* \
        | tron-* \
        | ubicom32-* \
-       | v850-* | v850e-* | vax-* \
+       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+       | vax-* \
        | we32k-* \
-       | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+       | x86-* | x86_64-* | xc16x-* | xps100-* \
        | xstormy16-* | xtensa*-* \
        | ymp-* \
        | z8k-* | z80-*)
@@ -410,7 +458,7 @@ case $basic_machine in
                basic_machine=a29k-amd
                os=-udi
                ;;
-       abacus)
+       abacus)
                basic_machine=abacus-unknown
                ;;
        adobe68k)
@@ -480,11 +528,20 @@ case $basic_machine in
                basic_machine=powerpc-ibm
                os=-cnk
                ;;
+       c54x-*)
+               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c55x-*)
+               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c6x-*)
+               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
        c90)
                basic_machine=c90-cray
                os=-unicos
                ;;
-        cegcc)
+       cegcc)
                basic_machine=arm-unknown
                os=-cegcc
                ;;
@@ -516,7 +573,7 @@ case $basic_machine in
                basic_machine=craynv-cray
                os=-unicosmp
                ;;
-       cr16)
+       cr16 | cr16-*)
                basic_machine=cr16-unknown
                os=-elf
                ;;
@@ -674,7 +731,6 @@ case $basic_machine in
        i370-ibm* | ibm*)
                basic_machine=i370-ibm
                ;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
        i*86v32)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv32
@@ -732,7 +788,7 @@ case $basic_machine in
                basic_machine=ns32k-utek
                os=-sysv
                ;;
-        microblaze)
+       microblaze)
                basic_machine=microblaze-xilinx
                ;;
        mingw32)
@@ -771,10 +827,18 @@ case $basic_machine in
        ms1-*)
                basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
                ;;
+       msys)
+               basic_machine=i386-pc
+               os=-msys
+               ;;
        mvs)
                basic_machine=i370-ibm
                os=-mvs
                ;;
+       nacl)
+               basic_machine=le32-unknown
+               os=-nacl
+               ;;
        ncr3000)
                basic_machine=i486-ncr
                os=-sysv4
@@ -839,6 +903,12 @@ case $basic_machine in
        np1)
                basic_machine=np1-gould
                ;;
+       neo-tandem)
+               basic_machine=neo-tandem
+               ;;
+       nse-tandem)
+               basic_machine=nse-tandem
+               ;;
        nsr-tandem)
                basic_machine=nsr-tandem
                ;;
@@ -921,9 +991,10 @@ case $basic_machine in
                ;;
        power)  basic_machine=power-ibm
                ;;
-       ppc)    basic_machine=powerpc-unknown
+       ppc | ppcbe)    basic_machine=powerpc-unknown
                ;;
-       ppc-*)  basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+       ppc-* | ppcbe-*)
+               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        ppcle | powerpclittle | ppc-le | powerpc-little)
                basic_machine=powerpcle-unknown
@@ -1017,6 +1088,9 @@ case $basic_machine in
                basic_machine=i860-stratus
                os=-sysv4
                ;;
+       strongarm-* | thumb-*)
+               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
        sun2)
                basic_machine=m68000-sun
                ;;
@@ -1073,20 +1147,8 @@ case $basic_machine in
                basic_machine=t90-cray
                os=-unicos
                ;;
-       tic54x | c54x*)
-               basic_machine=tic54x-unknown
-               os=-coff
-               ;;
-       tic55x | c55x*)
-               basic_machine=tic55x-unknown
-               os=-coff
-               ;;
-       tic6x | c6x*)
-               basic_machine=tic6x-unknown
-               os=-coff
-               ;;
        tile*)
-               basic_machine=tile-unknown
+               basic_machine=$basic_machine-unknown
                os=-linux-gnu
                ;;
        tx39)
@@ -1156,6 +1218,9 @@ case $basic_machine in
        xps | xps100)
                basic_machine=xps100-honeywell
                ;;
+       xscale-* | xscalee[bl]-*)
+               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+               ;;
        ymp)
                basic_machine=ymp-cray
                os=-unicos
@@ -1253,11 +1318,11 @@ esac
 if [ x"$os" != x"" ]
 then
 case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
+       # First match some system type aliases
+       # that might get confused with valid system types.
        # -solaris* is a basic system type, with this one exception.
-        -auroraux)
-               os=-auroraux
+       -auroraux)
+               os=-auroraux
                ;;
        -solaris1 | -solaris1.*)
                os=`echo $os | sed -e 's|solaris1|sunos4|'`
@@ -1293,8 +1358,9 @@ case $os in
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -chorusos* | -chorusrdb* | -cegcc* \
-             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux-gnu* | -linux-android* \
+             | -linux-newlib* | -linux-uclibc* \
              | -uxpv* | -beos* | -mpeix* | -udk* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1341,7 +1407,7 @@ case $os in
        -opened*)
                os=-openedition
                ;;
-        -os400*)
+       -os400*)
                os=-os400
                ;;
        -wince*)
@@ -1390,7 +1456,7 @@ case $os in
        -sinix*)
                os=-sysv4
                ;;
-        -tpf*)
+       -tpf*)
                os=-tpf
                ;;
        -triton*)
@@ -1435,6 +1501,8 @@ case $os in
        -dicos*)
                os=-dicos
                ;;
+       -nacl*)
+               ;;
        -none)
                ;;
        *)
@@ -1457,10 +1525,10 @@ else
 # system, and we'll never get to this point.
 
 case $basic_machine in
-        score-*)
+       score-*)
                os=-elf
                ;;
-        spu-*)
+       spu-*)
                os=-elf
                ;;
        *-acorn)
@@ -1472,8 +1540,20 @@ case $basic_machine in
        arm*-semi)
                os=-aout
                ;;
-        c4x-* | tic4x-*)
-               os=-coff
+       c4x-* | tic4x-*)
+               os=-coff
+               ;;
+       hexagon-*)
+               os=-elf
+               ;;
+       tic54x-*)
+               os=-coff
+               ;;
+       tic55x-*)
+               os=-coff
+               ;;
+       tic6x-*)
+               os=-coff
                ;;
        # This must come before the *-dec entry.
        pdp10-*)
@@ -1493,14 +1573,11 @@ case $basic_machine in
                ;;
        m68000-sun)
                os=-sunos3
-               # This also exists in the configure program, but was not the
-               # default.
-               # os=-sunos4
                ;;
        m68*-cisco)
                os=-aout
                ;;
-        mep-*)
+       mep-*)
                os=-elf
                ;;
        mips*-cisco)
@@ -1527,7 +1604,7 @@ case $basic_machine in
        *-ibm)
                os=-aix
                ;;
-       *-knuth)
+       *-knuth)
                os=-mmixware
                ;;
        *-wec)
index 927e918..a49d64b 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,13 +1,11 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for pygobject 2.28.6.
+# Generated by GNU Autoconf 2.69 for pygobject 3.4.0.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject>.
 #
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -136,6 +134,31 @@ export LANGUAGE
 # CDPATH.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
   as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
@@ -169,7 +192,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
 else
   exitcode=1; echo positional parameters were not saved.
 fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -222,21 +246,25 @@ IFS=$as_save_IFS
 
 
       if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-       # neutralization value for shells without unset; and this also
-       # works around shells that cannot unset nonexistent variables.
-       # Preserve -v and -x to the replacement shell.
-       BASH_ENV=/dev/null
-       ENV=/dev/null
-       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-       export CONFIG_SHELL
-       case $- in # ((((
-         *v*x* | *x*v* ) as_opts=-vx ;;
-         *v* ) as_opts=-v ;;
-         *x* ) as_opts=-x ;;
-         * ) as_opts= ;;
-       esac
-       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
 fi
 
     if test x$as_have_required = xno; then :
@@ -340,6 +368,14 @@ $as_echo X"$as_dir" |
 
 
 } # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -461,6 +497,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
   chmod +x "$as_me.lineno" ||
     { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
   # original and so on.  Autoconf is especially sensitive to this).
@@ -495,16 +535,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -516,28 +556,8 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-       test -d "$1/.";
-      else
-       case $1 in #(
-       -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -571,12 +591,12 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='pygobject'
 PACKAGE_TARNAME='pygobject'
-PACKAGE_VERSION='2.28.6'
-PACKAGE_STRING='pygobject 2.28.6'
+PACKAGE_VERSION='3.4.0'
+PACKAGE_STRING='pygobject 3.4.0'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject'
 PACKAGE_URL=''
 
-ac_unique_file="gobject/gobjectmodule.c"
+ac_unique_file="gi/gimodule.c"
 # Factoring default headers for most tests.
 ac_includes_default="\
 #include <stdio.h>
@@ -621,19 +641,13 @@ INTROSPECTION_COMPILER
 INTROSPECTION_SCANNER
 ENABLE_CAIRO_FALSE
 ENABLE_CAIRO_TRUE
-ENABLE_INTROSPECTION_FALSE
-ENABLE_INTROSPECTION_TRUE
 PYCAIRO_LIBS
 PYCAIRO_CFLAGS
 GI_DATADIR
 GI_LIBS
 GI_CFLAGS
-BUILD_GIOUNIX_FALSE
-BUILD_GIOUNIX_TRUE
-GIOUNIX_LIBS
-GIOUNIX_CFLAGS
-BUILD_GIO_FALSE
-BUILD_GIO_TRUE
+CAIRO_LIBS
+CAIRO_CFLAGS
 GIO_LIBS
 GIO_CFLAGS
 LIBFFI_PC
@@ -642,8 +656,8 @@ HAVE_LIBFFI_TRUE
 FFI_LIBS
 FFI_CFLAGS
 DATADIR
-pygobject_CODEGEN_DEFINES
 PYTHON_BASENAME
+GLIB_COMPILE_RESOURCES
 GLIB_MKENUMS
 GOBJECT_QUERY
 GLIB_GENMARSHAL
@@ -653,10 +667,9 @@ PKG_CONFIG_LIBDIR
 PKG_CONFIG_PATH
 PKG_CONFIG
 THREADING_CFLAGS
-ENABLE_DOCS_FALSE
-ENABLE_DOCS_TRUE
-XSLTPROC
 PLATFORM
+PYTHON_LIB_LOC
+PYTHON_LIBS
 PYTHON_INCLUDES
 pkgpyexecdir
 pyexecdir
@@ -689,6 +702,7 @@ SED
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
 CCDEPMODE
+am__nodep
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
@@ -746,6 +760,8 @@ INSTALL_SCRIPT
 INSTALL_PROGRAM
 AM_BACKSLASH
 AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
 PYGOBJECT_MICRO_VERSION
 PYGOBJECT_MINOR_VERSION
 PYGOBJECT_MAJOR_VERSION
@@ -802,11 +818,9 @@ with_gnu_ld
 with_sysroot
 enable_libtool_lock
 enable_thread
-enable_docs
 enable_glibtest
 with_ffi
 enable_cairo
-enable_introspection
 '
       ac_precious_vars='build_alias
 host_alias
@@ -817,6 +831,7 @@ LDFLAGS
 LIBS
 CPPFLAGS
 CPP
+PYTHON
 PKG_CONFIG
 PKG_CONFIG_PATH
 PKG_CONFIG_LIBDIR
@@ -824,8 +839,8 @@ FFI_CFLAGS
 FFI_LIBS
 GIO_CFLAGS
 GIO_LIBS
-GIOUNIX_CFLAGS
-GIOUNIX_LIBS
+CAIRO_CFLAGS
+CAIRO_LIBS
 GI_CFLAGS
 GI_LIBS
 PYCAIRO_CFLAGS
@@ -1285,8 +1300,6 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1372,7 +1385,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures pygobject 2.28.6 to adapt to many kinds of systems.
+\`configure' configures pygobject 3.4.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1442,7 +1455,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of pygobject 2.28.6:";;
+     short | recursive ) echo "Configuration of pygobject 3.4.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1452,7 +1465,7 @@ Optional Features:
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-silent-rules          less verbose build output (undo: `make V=1')
   --disable-silent-rules         verbose build output (undo: `make V=0')
-  --enable-maintainer-mode  enable make rules and dependencies not useful
+  --disable-maintainer-mode  disable make rules and dependencies not useful
                          (and sometimes confusing) to the casual installer
   --enable-static[=PKGS]  build static libraries [default=no]
   --enable-shared[=PKGS]  build shared libraries [default=yes]
@@ -1462,16 +1475,14 @@ Optional Features:
   --enable-dependency-tracking   do not reject slow dependency extractors
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-thread        Disable pygobject threading support
-  --enable-docs           Enable documentation building
   --disable-glibtest      do not try to compile and run a test GLIB program
   --enable-cairo          Enable Cairo bindings using introspection
                           information
-  --enable-introspection  Use introspection information
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic              try to use only PIC/non-PIC objects [default=use
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                           both]
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
   --with-sysroot=DIR Search for dependent libraries within DIR
@@ -1487,6 +1498,7 @@ Some influential environment variables:
   CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
+  PYTHON      the Python interpreter
   PKG_CONFIG  path to pkg-config utility
   PKG_CONFIG_PATH
               directories to add to pkg-config's search path
@@ -1496,10 +1508,9 @@ Some influential environment variables:
   FFI_LIBS    linker flags for FFI, overriding pkg-config
   GIO_CFLAGS  C compiler flags for GIO, overriding pkg-config
   GIO_LIBS    linker flags for GIO, overriding pkg-config
-  GIOUNIX_CFLAGS
-              C compiler flags for GIOUNIX, overriding pkg-config
-  GIOUNIX_LIBS
-              linker flags for GIOUNIX, overriding pkg-config
+  CAIRO_CFLAGS
+              C compiler flags for CAIRO, overriding pkg-config
+  CAIRO_LIBS  linker flags for CAIRO, overriding pkg-config
   GI_CFLAGS   C compiler flags for GI, overriding pkg-config
   GI_LIBS     linker flags for GI, overriding pkg-config
   PYCAIRO_CFLAGS
@@ -1573,10 +1584,10 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-pygobject configure 2.28.6
-generated by GNU Autoconf 2.68
+pygobject configure 3.4.0
+generated by GNU Autoconf 2.69
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1652,7 +1663,7 @@ $as_echo "$ac_try_echo"; } >&5
         test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
         test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
+        test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -1851,8 +1862,8 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by pygobject $as_me 2.28.6, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+It was created by pygobject $as_me 3.4.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
 
@@ -2205,19 +2216,19 @@ ACLOCAL_AMFLAGS="-I m4 -I ."
 
 
 
-$as_echo "#define PYGOBJECT_MAJOR_VERSION 2" >>confdefs.h
+$as_echo "#define PYGOBJECT_MAJOR_VERSION 3" >>confdefs.h
 
-PYGOBJECT_MAJOR_VERSION=2
+PYGOBJECT_MAJOR_VERSION=3
 
 
-$as_echo "#define PYGOBJECT_MINOR_VERSION 28" >>confdefs.h
+$as_echo "#define PYGOBJECT_MINOR_VERSION 4" >>confdefs.h
 
-PYGOBJECT_MINOR_VERSION=28
+PYGOBJECT_MINOR_VERSION=4
 
 
-$as_echo "#define PYGOBJECT_MICRO_VERSION 6" >>confdefs.h
+$as_echo "#define PYGOBJECT_MICRO_VERSION 0" >>confdefs.h
 
-PYGOBJECT_MICRO_VERSION=6
+PYGOBJECT_MICRO_VERSION=0
 
 
 ac_config_headers="$ac_config_headers config.h"
@@ -2232,6 +2243,33 @@ yes) AM_DEFAULT_VERBOSITY=0;;
 no)  AM_DEFAULT_VERBOSITY=1;;
 *)   AM_DEFAULT_VERBOSITY=0;;
 esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
 AM_BACKSLASH='\'
 
 am__api_version='1.11'
@@ -2302,7 +2340,7 @@ case $as_dir/ in #((
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
          if test $ac_prog = install &&
            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
            # AIX install.  It has an incompatible calling convention.
@@ -2471,7 +2509,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2511,7 +2549,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2562,7 +2600,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_prog in mkdir gmkdir; do
         for ac_exec_ext in '' $ac_executable_extensions; do
-          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
           case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
             'mkdir (GNU coreutils) '* | \
             'mkdir (coreutils) '* | \
@@ -2615,7 +2653,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2701,7 +2739,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='pygobject'
- VERSION='2.28.6'
+ VERSION='3.4.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2731,11 +2769,11 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
 
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
@@ -2748,7 +2786,7 @@ $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles
 if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
-  USE_MAINTAINER_MODE=no
+  USE_MAINTAINER_MODE=yes
 fi
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
@@ -2935,7 +2973,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AS="${ac_tool_prefix}as"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2975,7 +3013,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_AS="as"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3027,7 +3065,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3067,7 +3105,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DLLTOOL="dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3119,7 +3157,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3159,7 +3197,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OBJDUMP="objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3225,8 +3263,8 @@ esac
 
 
 
-macro_version='2.4'
-macro_revision='1.3293'
+macro_version='2.4.2'
+macro_revision='1.3337'
 
 
 
@@ -3363,6 +3401,7 @@ fi
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
  if test "x$enable_dependency_tracking" != xno; then
   AMDEP_TRUE=
@@ -3395,7 +3434,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3435,7 +3474,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3488,7 +3527,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3529,7 +3568,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -3587,7 +3626,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3631,7 +3670,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4077,8 +4116,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -4176,6 +4214,7 @@ else
   # instance it was reported that on HP-UX the gcc test will end up
   # making a dummy file named `D' -- because `-MD' means `put the output
   # in D'.
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -4235,7 +4274,7 @@ else
        break
       fi
       ;;
-    msvisualcpp | msvcmsys)
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
       # This compiler won't grok `-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
@@ -4312,7 +4351,7 @@ do
     for ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+      as_fn_executable_p "$ac_path_SED" || continue
 # Check for GNU ac_path_SED and select it if it is found.
   # Check for GNU $ac_path_SED
 case `"$ac_path_SED" --version 2>&1` in
@@ -4388,7 +4427,7 @@ do
     for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+      as_fn_executable_p "$ac_path_GREP" || continue
 # Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
 case `"$ac_path_GREP" --version 2>&1` in
@@ -4454,7 +4493,7 @@ do
     for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+      as_fn_executable_p "$ac_path_EGREP" || continue
 # Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
 case `"$ac_path_EGREP" --version 2>&1` in
@@ -4521,7 +4560,7 @@ do
     for ac_prog in fgrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+      as_fn_executable_p "$ac_path_FGREP" || continue
 # Check for GNU ac_path_FGREP and select it if it is found.
   # Check for GNU $ac_path_FGREP
 case `"$ac_path_FGREP" --version 2>&1` in
@@ -4777,7 +4816,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4821,7 +4860,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4979,6 +5018,11 @@ else
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -5018,7 +5062,7 @@ else
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
                 = "X$teststring$teststring"; } >/dev/null 2>&1 &&
              test $i != 17 # 1/2 MB should be enough
       do
@@ -5240,7 +5284,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5280,7 +5324,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OBJDUMP="objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5444,12 +5488,12 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
   else
@@ -5583,7 +5627,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5623,7 +5667,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DLLTOOL="dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5724,7 +5768,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5768,7 +5812,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_AR="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5893,7 +5937,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5933,7 +5977,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5992,7 +6036,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6032,7 +6076,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6082,13 +6126,13 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
 case $host_os in
@@ -6235,6 +6279,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK '"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -6623,7 +6668,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -6634,7 +6679,20 @@ sparc*-*solaris*)
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
       *)
        if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
          LD="${LD-ld} -64"
@@ -6667,7 +6725,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6707,7 +6765,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6787,7 +6845,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6827,7 +6885,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6879,7 +6937,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6919,7 +6977,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_NMEDIT="nmedit"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6971,7 +7029,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7011,7 +7069,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_LIPO="lipo"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7063,7 +7121,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7103,7 +7161,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OTOOL="otool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7155,7 +7213,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7195,7 +7253,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OTOOL64="otool64"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7274,7 +7332,13 @@ else
        $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
          -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=$?
-       if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+       # If there is a non-empty error log, and "single_module"
+       # appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+         cat conftest.err >&5
+       # Otherwise, if the output was created with a 0 exit code from
+       # the compiler, it worked.
+       elif test -f libconftest.dylib && test $_lt_result -eq 0; then
          lt_cv_apple_cc_single_mod=yes
        else
          cat conftest.err >&5
@@ -7285,6 +7349,7 @@ else
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
 $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
 if ${lt_cv_ld_exported_symbols_list+:} false; then :
@@ -7317,6 +7382,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
 $as_echo_n "checking for -force_load linker flag... " >&6; }
 if ${lt_cv_ld_force_load+:} false; then :
@@ -7338,7 +7404,9 @@ _LT_EOF
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+       cat conftest.err >&5
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
        lt_cv_ld_force_load=yes
       else
        cat conftest.err >&5
@@ -7711,7 +7779,22 @@ fi
 
 # Check whether --with-pic was given.
 if test "${with_pic+set}" = set; then :
-  withval=$with_pic; pic_mode="$withval"
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+       IFS="$lt_save_ifs"
+       if test "X$lt_pkg" = "X$lt_p"; then
+         pic_mode=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
 else
   pic_mode=default
 fi
@@ -7789,6 +7872,10 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+
+
+
+
 test -z "$LN_S" && LN_S="ln -s"
 
 
@@ -8248,7 +8335,9 @@ lt_prog_compiler_static=
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       lt_prog_compiler_wl='-Xlinker '
-      lt_prog_compiler_pic='-Xcompiler -fPIC'
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
       ;;
     esac
   else
@@ -8339,18 +8428,33 @@ lt_prog_compiler_static=
        ;;
       *)
        case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ F* | *Sun*Fortran*)
+       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
          # Sun Fortran 8.3 passes all unrecognized flags to the linker
          lt_prog_compiler_pic='-KPIC'
          lt_prog_compiler_static='-Bstatic'
          lt_prog_compiler_wl=''
          ;;
+       *Sun\ F* | *Sun*Fortran*)
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl='-Qoption ld '
+         ;;
        *Sun\ C*)
          # Sun C 5.9
          lt_prog_compiler_pic='-KPIC'
          lt_prog_compiler_static='-Bstatic'
          lt_prog_compiler_wl='-Wl,'
          ;;
+        *Intel*\ [CF]*Compiler*)
+         lt_prog_compiler_wl='-Wl,'
+         lt_prog_compiler_pic='-fPIC'
+         lt_prog_compiler_static='-static'
+         ;;
+       *Portland\ Group*)
+         lt_prog_compiler_wl='-Wl,'
+         lt_prog_compiler_pic='-fpic'
+         lt_prog_compiler_static='-Bstatic'
+         ;;
        esac
        ;;
       esac
@@ -8712,7 +8816,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   hardcode_direct=no
   hardcode_direct_absolute=no
   hardcode_libdir_flag_spec=
-  hardcode_libdir_flag_spec_ld=
   hardcode_libdir_separator=
   hardcode_minus_L=no
   hardcode_shlibpath_var=unsupported
@@ -8756,6 +8859,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   openbsd*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
+    ;;
   esac
 
   ld_shlibs=yes
@@ -8962,8 +9068,7 @@ _LT_EOF
        xlf* | bgf* | bgxlf* | mpixlf*)
          # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
          whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-         hardcode_libdir_flag_spec=
-         hardcode_libdir_flag_spec_ld='-rpath $libdir'
+         hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
          archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
          if test "x$supports_anon_versioning" = xyes; then
            archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
@@ -8978,7 +9083,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
        archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
        wlarc=
@@ -9155,6 +9260,7 @@ _LT_EOF
        if test "$aix_use_runtimelinking" = yes; then
          shared_flag="$shared_flag "'${wl}-G'
        fi
+       link_all_deplibs=no
       else
        # not using gcc
        if test "$host_cpu" = ia64; then
@@ -9342,6 +9448,7 @@ fi
        # The linker will not automatically build a static lib if we build a DLL.
        # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
        enable_shared_with_static_runtimes=yes
+       exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
        export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
        # Don't use ranlib
        old_postinstall_cmds='chmod 644 $oldlib'
@@ -9387,6 +9494,7 @@ fi
   hardcode_shlibpath_var=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
   else
     whole_archive_flag_spec=''
   fi
@@ -9415,10 +9523,6 @@ fi
       hardcode_shlibpath_var=no
       ;;
 
-    freebsd1*)
-      ld_shlibs=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -9431,7 +9535,7 @@ fi
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct=yes
       hardcode_minus_L=yes
@@ -9470,7 +9574,6 @@ fi
       fi
       if test "$with_gnu_ld" = no; then
        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-       hardcode_libdir_flag_spec_ld='+b $libdir'
        hardcode_libdir_separator=:
        hardcode_direct=yes
        hardcode_direct_absolute=yes
@@ -9611,7 +9714,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
       link_all_deplibs=yes
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
        archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -10094,11 +10197,6 @@ esac
 
 
 
-
-
-
-
-
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
@@ -10188,7 +10286,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -10197,7 +10295,7 @@ aix3*)
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -10262,7 +10360,7 @@ beos*)
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -10401,7 +10499,7 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -10409,10 +10507,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -10420,7 +10514,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -10438,7 +10532,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -10458,17 +10552,18 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -10529,7 +10624,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -10545,7 +10640,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
        if test "$lt_cv_prog_gnu_ld" = yes; then
-               version_type=linux
+               version_type=linux # correct to gnu/linux during the next big refactor
        else
                version_type=irix
        fi ;;
@@ -10582,9 +10677,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Add ABI-specific directories to the system library path.
-  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
-
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
-
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -10670,7 +10773,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -10739,7 +10842,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -10764,7 +10867,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -10788,7 +10891,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -10819,7 +10922,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -10829,7 +10932,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -11611,6 +11714,8 @@ CC="$lt_save_CC"
 
 
 
+
+
         ac_config_commands="$ac_config_commands libtool"
 
 
@@ -11906,16 +12011,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -11975,28 +12080,16 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-       test -d "$1/.";
-      else
-       case $1 in #(
-       -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -12037,10 +12130,10 @@ Usage: $0 [OPTIONS]
 Report bugs to <bug-libtool@gnu.org>."
 
 lt_cl_version="\
-pygobject config.lt 2.28.6
-configured by $0, generated by GNU Autoconf 2.68.
+pygobject config.lt 3.4.0
+configured by $0, generated by GNU Autoconf 2.69.
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
@@ -12091,6 +12184,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
 host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
 host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
 host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
@@ -12171,7 +12265,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
 allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
 no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
 hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
@@ -12230,6 +12323,7 @@ DLLTOOL \
 OBJDUMP \
 SHELL \
 ECHO \
+PATH_SEPARATOR \
 SED \
 GREP \
 EGREP \
@@ -12278,7 +12372,6 @@ with_gnu_ld \
 allow_undefined_flag \
 no_undefined_flag \
 hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
 hardcode_libdir_separator \
 exclude_expsyms \
 include_expsyms \
@@ -12376,8 +12469,8 @@ $as_echo "$as_me: creating $ofile" >&6;}
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -12440,6 +12533,9 @@ SHELL=$lt_SHELL
 # An echo program that protects backslashes.
 ECHO=$lt_ECHO
 
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
 # The host system.
 host_alias=$host_alias
 host=$host
@@ -12735,10 +12831,6 @@ no_undefined_flag=$lt_no_undefined_flag
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
@@ -13083,7 +13175,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -13123,7 +13215,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -13176,7 +13268,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -13217,7 +13309,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -13275,7 +13367,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -13319,7 +13411,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -13515,8 +13607,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -13614,6 +13705,7 @@ else
   # instance it was reported that on HP-UX the gcc test will end up
   # making a dummy file named `D' -- because `-MD' means `put the output
   # in D'.
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -13673,7 +13765,7 @@ else
        break
       fi
       ;;
-    msvisualcpp | msvcmsys)
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
       # This compiler won't grok `-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
@@ -13750,7 +13842,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -13790,7 +13882,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -13843,7 +13935,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -13884,7 +13976,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -13942,7 +14034,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -13986,7 +14078,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -14182,8 +14274,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -14281,6 +14372,7 @@ else
   # instance it was reported that on HP-UX the gcc test will end up
   # making a dummy file named `D' -- because `-MD' means `put the output
   # in D'.
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -14340,7 +14432,7 @@ else
        break
       fi
       ;;
-    msvisualcpp | msvcmsys)
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
       # This compiler won't grok `-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
 
         if test -n "$PYTHON"; then
       # If the user set $PYTHON, use it and don't search something else.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version >= 2.5.2" >&5
-$as_echo_n "checking whether $PYTHON version >= 2.5.2... " >&6; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version >= 2.6" >&5
+$as_echo_n "checking whether $PYTHON version >= 2.6... " >&6; }
       prog="import sys
 # split strings by '.' and convert to numeric.  Append some zeros
 # because we need at least 4 digits for the hex conversion.
 # map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5.2'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '2.6'.split('.'))) + [0, 0, 0]
 minverhex = 0
 # xrange is not present in Python 3.0 and range returns an iterator
 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
     else
       # Otherwise, try each interpreter until we find one that satisfies
       # VERSION.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.5.2" >&5
-$as_echo_n "checking for a Python interpreter with version >= 2.5.2... " >&6; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.6" >&5
+$as_echo_n "checking for a Python interpreter with version >= 2.6... " >&6; }
 if ${am_cv_pathless_PYTHON+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-       for am_cv_pathless_PYTHON in python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
+       for am_cv_pathless_PYTHON in python python2 python2.7 python2.6 python3 python3.2 python3.1 none; do
          test "$am_cv_pathless_PYTHON" = none && break
          prog="import sys
 # split strings by '.' and convert to numeric.  Append some zeros
 # because we need at least 4 digits for the hex conversion.
 # map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5.2'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '2.6'.split('.'))) + [0, 0, 0]
 minverhex = 0
 # xrange is not present in Python 3.0 and range returns an iterator
 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
@@ -14607,7 +14699,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
 
 
 
+
+
         # Find any Python interpreter.
     if test -z "$PYTHON"; then
-      for ac_prog in python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0
+      for ac_prog in python python2 python2.7 python2.6 python3 python3.2 python3.1
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -14782,7 +14876,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -14850,7 +14944,7 @@ $as_echo "$am_cv_python_platform" >&6; }
 
 
 
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
 $as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
 if ${am_cv_python_pythondir+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -14861,8 +14955,7 @@ else
      else
        am_py_prefix=$prefix
      fi
-     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null ||
-     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
+     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null`
      case $am_cv_python_pythondir in
      $am_py_prefix*)
        am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
@@ -14888,7 +14981,7 @@ $as_echo "$am_cv_python_pythondir" >&6; }
   pkgpythondir=\${pythondir}/$PACKAGE
 
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
 $as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
 if ${am_cv_python_pyexecdir+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -14899,8 +14992,7 @@ else
      else
        am_py_exec_prefix=$exec_prefix
      fi
-     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null ||
-     echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
+     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null`
      case $am_cv_python_pyexecdir in
      $am_py_exec_prefix*)
        am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
@@ -14933,16 +15025,18 @@ $as_echo "$am_cv_python_pyexecdir" >&6; }
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for headers required to compile python extensions" >&5
 $as_echo_n "checking for headers required to compile python extensions... " >&6; }
-py_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
-py_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
-PYTHON_CONFIG=`which $PYTHON`-config
-if test -x "$PYTHON_CONFIG"; then
-PYTHON_INCLUDES=`$PYTHON_CONFIG --includes 2>/dev/null`
-else
-PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
-if test "$py_prefix" != "$py_exec_prefix"; then
-  PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
-fi
+if test "x$PYTHON_INCLUDES" = x; then
+  PYTHON_CONFIG=`which $PYTHON`-config
+  if test -x "$PYTHON_CONFIG"; then
+    PYTHON_INCLUDES=`$PYTHON_CONFIG --includes 2>/dev/null`
+  else
+    py_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+    py_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+    PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+    if test "$py_prefix" != "$py_exec_prefix"; then
+      PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+    fi
+  fi
 fi
 
 save_CPPFLAGS="$CPPFLAGS"
@@ -14958,11 +15052,56 @@ $as_echo "found" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
 $as_echo "not found" >&6; }
-as_fn_error $? "could not find Python headers" "$LINENO" 5
+as_fn_error $? "Python headers not found" "$LINENO" 5
 fi
 rm -f conftest.err conftest.i conftest.$ac_ext
 CPPFLAGS="$save_CPPFLAGS"
 
+if test "x$os_win32" = "xyes"; then
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libraries required to embed python" >&5
+$as_echo_n "checking for libraries required to embed python... " >&6; }
+py_exec_prefix=`$PYTHON -c "import sys; print(sys.exec_prefix)"`
+if test "x$PYTHON_LIBS" = x; then
+       PYTHON_LIBS="-L${py_prefix}/lib -lpython${PYTHON_VERSION}"
+fi
+if test "x$PYTHON_LIB_LOC" = x; then
+       PYTHON_LIB_LOC="${py_prefix}/lib"
+fi
+
+
+save_LIBS="$LIBS"
+LIBS="$LIBS $PYTHON_LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char Py_Initialize ();
+int
+main ()
+{
+return Py_Initialize ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+           LIBS="$save_LIBS"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; };
+else
+           LIBS="$save_LIBS"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }; as_fn_error $? "Python libs not found. Windows requires Python modules to be explicitly linked to libpython." "$LINENO" 5
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+
+fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PySignal_SetWakeupFd in Python.h" >&5
 $as_echo_n "checking for PySignal_SetWakeupFd in Python.h... " >&6; }
@@ -15005,69 +15144,6 @@ else
 fi
 
 
-# Check whether --enable-docs was given.
-if test "${enable_docs+set}" = set; then :
-  enableval=$enable_docs; enable_docs=$enableval
-else
-  enable_docs=no
-fi
-
-if test "${enable_docs}" != no; then
-        # Extract the first word of "xsltproc", so it can be a program name with args.
-set dummy xsltproc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_XSLTPROC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $XSLTPROC in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_XSLTPROC="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-XSLTPROC=$ac_cv_path_XSLTPROC
-if test -n "$XSLTPROC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5
-$as_echo "$XSLTPROC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  if test -z "$XSLTPROC"; then
-    enable_docs=no
-  fi
-
-          fi
-
- if test x$enable_docs != xno; then
-  ENABLE_DOCS_TRUE=
-  ENABLE_DOCS_FALSE='#'
-else
-  ENABLE_DOCS_TRUE='#'
-  ENABLE_DOCS_FALSE=
-fi
-
-
 
 py_mod_var=`echo thread'_' | sed 'y%./+-%__p_%'`
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python module thread" >&5
@@ -15197,6 +15273,7 @@ fi
 
 
 
+
 if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
        if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
@@ -15217,7 +15294,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -15260,7 +15337,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -15318,7 +15395,7 @@ fi
     PKG_CONFIG=no
   fi
 
-  min_glib_version=2.24.0
+  min_glib_version=2.31.0
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5
 $as_echo_n "checking for GLIB - version >= $min_glib_version... " >&6; }
 
@@ -15340,6 +15417,7 @@ $as_echo_n "checking for GLIB - version >= $min_glib_version... " >&6; }
     GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
     GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
     GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+    GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0`
 
     GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
     GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
@@ -15504,6 +15582,7 @@ rm -f core conftest.err conftest.$ac_objext \
      GLIB_GENMARSHAL=""
      GOBJECT_QUERY=""
      GLIB_MKENUMS=""
+     GLIB_COMPILE_RESOURCES=""
      as_fn_error $? "maybe you want the pygobject-2-4 branch?" "$LINENO" 5
   fi
 
@@ -15511,6 +15590,7 @@ rm -f core conftest.err conftest.$ac_objext \
 
 
 
+
   rm -f conf.glibtest
 
 if test -n "$export_dynamic"; then
@@ -15519,9 +15599,6 @@ fi
 PYTHON_BASENAME=`basename $PYTHON`
 
 
-pygobject_CODEGEN_DEFINES=""
-
-
 
   EXP_VAR=DATADIR
   FROM_VAR=$datadir
@@ -15579,6 +15656,7 @@ if test -n "$FFI_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_FFI_CFLAGS=`$PKG_CONFIG --cflags "libffi >= 3.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -15595,6 +15673,7 @@ if test -n "$FFI_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_FFI_LIBS=`$PKG_CONFIG --libs "libffi >= 3.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -15614,9 +15693,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               FFI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libffi >= 3.0" 2>&1`
+               FFI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libffi >= 3.0" 2>&1`
         else
-               FFI_PKG_ERRORS=`$PKG_CONFIG --print-errors "libffi >= 3.0" 2>&1`
+               FFI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libffi >= 3.0" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$FFI_PKG_ERRORS" >&5
@@ -15638,9 +15717,6 @@ if test x"$with_libffi" = xyes && test x"$have_libffi" = xno ; then
   as_fn_error $? "ffi requested, but not found" "$LINENO" 5
 fi
 if test x"$have_libffi" = xyes; then
-
-$as_echo "#define HAVE_FFI_H 1" >>confdefs.h
-
   LIBFFI_PC=libffi
 fi
  if test "$have_libffi" = "yes"; then
@@ -15664,12 +15740,13 @@ if test -n "$GIO_CFLAGS"; then
     pkg_cv_GIO_CFLAGS="$GIO_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.24.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.24.0") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.31.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.31.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_GIO_CFLAGS=`$PKG_CONFIG --cflags "gio-2.0 >= 2.24.0" 2>/dev/null`
+  pkg_cv_GIO_CFLAGS=`$PKG_CONFIG --cflags "gio-2.0 >= 2.31.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -15680,12 +15757,13 @@ if test -n "$GIO_LIBS"; then
     pkg_cv_GIO_LIBS="$GIO_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.24.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.24.0") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.31.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.31.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_GIO_LIBS=`$PKG_CONFIG --libs "gio-2.0 >= 2.24.0" 2>/dev/null`
+  pkg_cv_GIO_LIBS=`$PKG_CONFIG --libs "gio-2.0 >= 2.31.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -15705,74 +15783,80 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gio-2.0 >= 2.24.0" 2>&1`
+               GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gio-2.0 >= 2.31.0" 2>&1`
         else
-               GIO_PKG_ERRORS=`$PKG_CONFIG --print-errors "gio-2.0 >= 2.24.0" 2>&1`
+               GIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gio-2.0 >= 2.31.0" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$GIO_PKG_ERRORS" >&5
 
-       have_gio=false
+       as_fn_error $? "Package requirements (gio-2.0 >= 2.31.0) were not met:
+
+$GIO_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GIO_CFLAGS
+and GIO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
 elif test $pkg_failed = untried; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-       have_gio=false
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GIO_CFLAGS
+and GIO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
 else
        GIO_CFLAGS=$pkg_cv_GIO_CFLAGS
        GIO_LIBS=$pkg_cv_GIO_LIBS
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-       have_gio=true
-fi
-
-
 
-# Do not build GIO if the python version >= 3.0
-# We use GI to access GIO in python 3
- if test $have_gio = true -a $build_py3k = false; then
-  BUILD_GIO_TRUE=
-  BUILD_GIO_FALSE='#'
-else
-  BUILD_GIO_TRUE='#'
-  BUILD_GIO_FALSE=
-fi
-
-
-if test -n "$export_dynamic"; then
-  GIO_LIBS=`echo $GIO_LIBS | sed -e "s/$export_dynamic//"`
 fi
 
+# we always need cairo (not pycairo) for building the tests
 
 pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIOUNIX" >&5
-$as_echo_n "checking for GIOUNIX... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5
+$as_echo_n "checking for CAIRO... " >&6; }
 
-if test -n "$GIOUNIX_CFLAGS"; then
-    pkg_cv_GIOUNIX_CFLAGS="$GIOUNIX_CFLAGS"
+if test -n "$CAIRO_CFLAGS"; then
+    pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-unix-2.0 >= 2.22.4\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gio-unix-2.0 >= 2.22.4") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo cairo-gobject\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "cairo cairo-gobject") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_GIOUNIX_CFLAGS=`$PKG_CONFIG --cflags "gio-unix-2.0 >= 2.22.4" 2>/dev/null`
+  pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo cairo-gobject" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
  else
     pkg_failed=untried
 fi
-if test -n "$GIOUNIX_LIBS"; then
-    pkg_cv_GIOUNIX_LIBS="$GIOUNIX_LIBS"
+if test -n "$CAIRO_LIBS"; then
+    pkg_cv_CAIRO_LIBS="$CAIRO_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-unix-2.0 >= 2.22.4\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gio-unix-2.0 >= 2.22.4") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo cairo-gobject\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "cairo cairo-gobject") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_GIOUNIX_LIBS=`$PKG_CONFIG --libs "gio-unix-2.0 >= 2.22.4" 2>/dev/null`
+  pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo cairo-gobject" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -15792,37 +15876,44 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               GIOUNIX_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gio-unix-2.0 >= 2.22.4" 2>&1`
+               CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cairo cairo-gobject" 2>&1`
         else
-               GIOUNIX_PKG_ERRORS=`$PKG_CONFIG --print-errors "gio-unix-2.0 >= 2.22.4" 2>&1`
+               CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cairo cairo-gobject" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
-       echo "$GIOUNIX_PKG_ERRORS" >&5
+       echo "$CAIRO_PKG_ERRORS" >&5
+
+       as_fn_error $? "Package requirements (cairo cairo-gobject) were not met:
 
-       have_giounix=false
+$CAIRO_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables CAIRO_CFLAGS
+and CAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
 elif test $pkg_failed = untried; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-       have_giounix=false
-else
-       GIOUNIX_CFLAGS=$pkg_cv_GIOUNIX_CFLAGS
-       GIOUNIX_LIBS=$pkg_cv_GIOUNIX_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-       have_giounix=true
-fi
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
 
+Alternatively, you may set the environment variables CAIRO_CFLAGS
+and CAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
 
- if test $have_giounix = true -a $build_py3k = false; then
-  BUILD_GIOUNIX_TRUE=
-  BUILD_GIOUNIX_FALSE='#'
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
 else
-  BUILD_GIOUNIX_TRUE='#'
-  BUILD_GIOUNIX_FALSE=
-fi
+       CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS
+       CAIRO_LIBS=$pkg_cv_CAIRO_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 
-if test -n "$export_dynamic"; then
-  GIOUNIX_LIBS=`echo $GIOUNIX_LIBS | sed -e "s/$export_dynamic//"`
 fi
 
 # Check whether --enable-cairo was given.
@@ -15833,17 +15924,6 @@ else
 fi
 
 
-# Check whether --enable-introspection was given.
-if test "${enable_introspection+set}" = set; then :
-  enableval=$enable_introspection; enable_introspection=$enableval
-else
-  enable_introspection=yes
-fi
-
-if test "$enable_introspection" != no; then
-
-$as_echo "#define ENABLE_INTROSPECTION 1" >>confdefs.h
-
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GI" >&5
@@ -15853,18 +15933,19 @@ if test -n "$GI_CFLAGS"; then
     pkg_cv_GI_CFLAGS="$GI_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.24.0
-        gobject-introspection-1.0 >= 0.10.2
-    \""; } >&5
-  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.24.0
-        gobject-introspection-1.0 >= 0.10.2
-    ") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.33.14
+\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.33.14
+") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_GI_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.24.0
-        gobject-introspection-1.0 >= 0.10.2
-    " 2>/dev/null`
+  pkg_cv_GI_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.33.14
+" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -15875,18 +15956,19 @@ if test -n "$GI_LIBS"; then
     pkg_cv_GI_LIBS="$GI_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.24.0
-        gobject-introspection-1.0 >= 0.10.2
-    \""; } >&5
-  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.24.0
-        gobject-introspection-1.0 >= 0.10.2
-    ") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.33.14
+\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.33.14
+") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_GI_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.24.0
-        gobject-introspection-1.0 >= 0.10.2
-    " 2>/dev/null`
+  pkg_cv_GI_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.33.14
+" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -15906,20 +15988,20 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               GI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glib-2.0 >= 2.24.0
-        gobject-introspection-1.0 >= 0.10.2
-    " 2>&1`
+               GI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.33.14
+" 2>&1`
         else
-               GI_PKG_ERRORS=`$PKG_CONFIG --print-errors "glib-2.0 >= 2.24.0
-        gobject-introspection-1.0 >= 0.10.2
-    " 2>&1`
+               GI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.33.14
+" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$GI_PKG_ERRORS" >&5
 
-       as_fn_error $? "Package requirements (glib-2.0 >= 2.24.0
-        gobject-introspection-1.0 >= 0.10.2
-    ) were not met:
+       as_fn_error $? "Package requirements (glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.33.14
+) were not met:
 
 $GI_PKG_ERRORS
 
@@ -15929,7 +16011,6 @@ installed software in a non-standard prefix.
 Alternatively, you may set the environment variables GI_CFLAGS
 and GI_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details." "$LINENO" 5
-
 elif test $pkg_failed = untried; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -15945,7 +16026,6 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details" "$LINENO" 5; }
-
 else
        GI_CFLAGS=$pkg_cv_GI_CFLAGS
        GI_LIBS=$pkg_cv_GI_LIBS
@@ -15954,10 +16034,112 @@ $as_echo "yes" >&6; }
 
 fi
 
-    GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
+GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
+
+
+if test "$enable_cairo" != no; then
+    if test $build_py3k = true; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PYCAIRO" >&5
+$as_echo_n "checking for PYCAIRO... " >&6; }
+
+if test -n "$PYCAIRO_CFLAGS"; then
+    pkg_cv_PYCAIRO_CFLAGS="$PYCAIRO_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"py3cairo >= 1.10.0
+        \""; } >&5
+  ($PKG_CONFIG --exists --print-errors "py3cairo >= 1.10.0
+        ") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_PYCAIRO_CFLAGS=`$PKG_CONFIG --cflags "py3cairo >= 1.10.0
+        " 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$PYCAIRO_LIBS"; then
+    pkg_cv_PYCAIRO_LIBS="$PYCAIRO_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"py3cairo >= 1.10.0
+        \""; } >&5
+  ($PKG_CONFIG --exists --print-errors "py3cairo >= 1.10.0
+        ") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_PYCAIRO_LIBS=`$PKG_CONFIG --libs "py3cairo >= 1.10.0
+        " 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "py3cairo >= 1.10.0
+        " 2>&1`
+        else
+               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "py3cairo >= 1.10.0
+        " 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$PYCAIRO_PKG_ERRORS" >&5
+
+       as_fn_error $? "Package requirements (py3cairo >= 1.10.0
+        ) were not met:
 
+$PYCAIRO_PKG_ERRORS
 
-    if test "$enable_cairo" != no; then
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables PYCAIRO_CFLAGS
+and PYCAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables PYCAIRO_CFLAGS
+and PYCAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+       PYCAIRO_CFLAGS=$pkg_cv_PYCAIRO_CFLAGS
+       PYCAIRO_LIBS=$pkg_cv_PYCAIRO_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+    else
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PYCAIRO" >&5
@@ -15976,6 +16158,7 @@ if test -n "$PYCAIRO_CFLAGS"; then
   test $ac_status = 0; }; then
   pkg_cv_PYCAIRO_CFLAGS=`$PKG_CONFIG --cflags "pycairo >= 1.2.0
         " 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -15995,6 +16178,7 @@ if test -n "$PYCAIRO_LIBS"; then
   test $ac_status = 0; }; then
   pkg_cv_PYCAIRO_LIBS=`$PKG_CONFIG --libs "pycairo >= 1.2.0
         " 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -16014,10 +16198,10 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "pycairo >= 1.2.0
+               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pycairo >= 1.2.0
         " 2>&1`
         else
-               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors "pycairo >= 1.2.0
+               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pycairo >= 1.2.0
         " 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
@@ -16034,7 +16218,6 @@ installed software in a non-standard prefix.
 Alternatively, you may set the environment variables PYCAIRO_CFLAGS
 and PYCAIRO_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details." "$LINENO" 5
-
 elif test $pkg_failed = untried; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -16050,7 +16233,6 @@ See the pkg-config man page for more details.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details" "$LINENO" 5; }
-
 else
        PYCAIRO_CFLAGS=$pkg_cv_PYCAIRO_CFLAGS
        PYCAIRO_LIBS=$pkg_cv_PYCAIRO_LIBS
@@ -16060,14 +16242,6 @@ $as_echo "yes" >&6; }
 fi
     fi
 fi
- if test "$enable_introspection" = "yes"; then
-  ENABLE_INTROSPECTION_TRUE=
-  ENABLE_INTROSPECTION_FALSE='#'
-else
-  ENABLE_INTROSPECTION_TRUE='#'
-  ENABLE_INTROSPECTION_FALSE=
-fi
-
  if test "$enable_cairo" = "yes"; then
   ENABLE_CAIRO_TRUE=
   ENABLE_CAIRO_FALSE='#'
@@ -16117,6 +16291,172 @@ $as_echo "$jh_has_option" >&6; }
   fi
   ;;
 esac
+  #JH_ADD_CFLAG([-Werror=missing-prototypes])
+
+case " $CFLAGS " in
+*[\    \ ]-Werror=implicit-function-declaration[\      \ ]*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -Werror=implicit-function-declaration" >&5
+$as_echo_n "checking whether $CC understands -Werror=implicit-function-declaration... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  jh_has_option=yes
+else
+  jh_has_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jh_has_option" >&5
+$as_echo "$jh_has_option" >&6; }
+  if test $jh_has_option = no; then
+    CFLAGS="$save_CFLAGS"
+  fi
+  ;;
+esac
+
+case " $CFLAGS " in
+*[\    \ ]-Werror=pointer-arith[\      \ ]*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Werror=pointer-arith"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -Werror=pointer-arith" >&5
+$as_echo_n "checking whether $CC understands -Werror=pointer-arith... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  jh_has_option=yes
+else
+  jh_has_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jh_has_option" >&5
+$as_echo "$jh_has_option" >&6; }
+  if test $jh_has_option = no; then
+    CFLAGS="$save_CFLAGS"
+  fi
+  ;;
+esac
+
+case " $CFLAGS " in
+*[\    \ ]-Werror=format-security[\    \ ]*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Werror=format-security"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -Werror=format-security" >&5
+$as_echo_n "checking whether $CC understands -Werror=format-security... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  jh_has_option=yes
+else
+  jh_has_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jh_has_option" >&5
+$as_echo "$jh_has_option" >&6; }
+  if test $jh_has_option = no; then
+    CFLAGS="$save_CFLAGS"
+  fi
+  ;;
+esac
+
+case " $CFLAGS " in
+*[\    \ ]-Werror=missing-include-dirs[\       \ ]*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Werror=missing-include-dirs"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -Werror=missing-include-dirs" >&5
+$as_echo_n "checking whether $CC understands -Werror=missing-include-dirs... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  jh_has_option=yes
+else
+  jh_has_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jh_has_option" >&5
+$as_echo "$jh_has_option" >&6; }
+  if test $jh_has_option = no; then
+    CFLAGS="$save_CFLAGS"
+  fi
+  ;;
+esac
+
+case " $CFLAGS " in
+*[\    \ ]-Werror=format[\     \ ]*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Werror=format"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -Werror=format" >&5
+$as_echo_n "checking whether $CC understands -Werror=format... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  jh_has_option=yes
+else
+  jh_has_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jh_has_option" >&5
+$as_echo "$jh_has_option" >&6; }
+  if test $jh_has_option = no; then
+    CFLAGS="$save_CFLAGS"
+  fi
+  ;;
+esac
 
 case " $CFLAGS " in
 *[\    \ ]-fno-strict-aliasing[\       \ ]*)
@@ -16193,7 +16533,7 @@ esac
 
 fi
 
-ac_config_files="$ac_config_files Makefile pygobject-2.0.pc pygobject-2.0-uninstalled.pc codegen/Makefile codegen/pygobject-codegen-2.0 docs/Makefile docs/reference/entities.docbook docs/xsl/fixxref.py gi/Makefile gi/repository/Makefile gi/overrides/Makefile glib/Makefile gobject/Makefile gio/Makefile examples/Makefile tests/Makefile PKG-INFO"
+ac_config_files="$ac_config_files Makefile pygobject-3.0.pc pygobject-3.0-uninstalled.pc gi/Makefile gi/repository/Makefile gi/overrides/Makefile gi/_glib/Makefile gi/_gobject/Makefile examples/Makefile tests/Makefile PKG-INFO"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -16340,26 +16680,10 @@ if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
   as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${ENABLE_DOCS_TRUE}" && test -z "${ENABLE_DOCS_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_DOCS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${HAVE_LIBFFI_TRUE}" && test -z "${HAVE_LIBFFI_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_LIBFFI\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${BUILD_GIO_TRUE}" && test -z "${BUILD_GIO_FALSE}"; then
-  as_fn_error $? "conditional \"BUILD_GIO\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${BUILD_GIOUNIX_TRUE}" && test -z "${BUILD_GIOUNIX_FALSE}"; then
-  as_fn_error $? "conditional \"BUILD_GIOUNIX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${ENABLE_INTROSPECTION_TRUE}" && test -z "${ENABLE_INTROSPECTION_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_INTROSPECTION\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${ENABLE_CAIRO_TRUE}" && test -z "${ENABLE_CAIRO_FALSE}"; then
   as_fn_error $? "conditional \"ENABLE_CAIRO\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -16662,16 +16986,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -16731,28 +17055,16 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-       test -d "$1/.";
-      else
-       case $1 in #(
-       -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -16773,8 +17085,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by pygobject $as_me 2.28.6, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+This file was extended by pygobject $as_me 3.4.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -16839,11 +17151,11 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-pygobject config.status 2.28.6
-configured by $0, generated by GNU Autoconf 2.68,
+pygobject config.status 3.4.0
+configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -16934,7 +17246,7 @@ fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
@@ -16979,6 +17291,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
 host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
 host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
 host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
@@ -17059,7 +17372,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
 allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
 no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
 hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
@@ -17118,6 +17430,7 @@ DLLTOOL \
 OBJDUMP \
 SHELL \
 ECHO \
+PATH_SEPARATOR \
 SED \
 GREP \
 EGREP \
@@ -17166,7 +17479,6 @@ with_gnu_ld \
 allow_undefined_flag \
 no_undefined_flag \
 hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
 hardcode_libdir_separator \
 exclude_expsyms \
 include_expsyms \
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "pygobject-2.0.pc") CONFIG_FILES="$CONFIG_FILES pygobject-2.0.pc" ;;
-    "pygobject-2.0-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES pygobject-2.0-uninstalled.pc" ;;
-    "codegen/Makefile") CONFIG_FILES="$CONFIG_FILES codegen/Makefile" ;;
-    "codegen/pygobject-codegen-2.0") CONFIG_FILES="$CONFIG_FILES codegen/pygobject-codegen-2.0" ;;
-    "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
-    "docs/reference/entities.docbook") CONFIG_FILES="$CONFIG_FILES docs/reference/entities.docbook" ;;
-    "docs/xsl/fixxref.py") CONFIG_FILES="$CONFIG_FILES docs/xsl/fixxref.py" ;;
+    "pygobject-3.0.pc") CONFIG_FILES="$CONFIG_FILES pygobject-3.0.pc" ;;
+    "pygobject-3.0-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES pygobject-3.0-uninstalled.pc" ;;
     "gi/Makefile") CONFIG_FILES="$CONFIG_FILES gi/Makefile" ;;
     "gi/repository/Makefile") CONFIG_FILES="$CONFIG_FILES gi/repository/Makefile" ;;
     "gi/overrides/Makefile") CONFIG_FILES="$CONFIG_FILES gi/overrides/Makefile" ;;
-    "glib/Makefile") CONFIG_FILES="$CONFIG_FILES glib/Makefile" ;;
-    "gobject/Makefile") CONFIG_FILES="$CONFIG_FILES gobject/Makefile" ;;
-    "gio/Makefile") CONFIG_FILES="$CONFIG_FILES gio/Makefile" ;;
+    "gi/_glib/Makefile") CONFIG_FILES="$CONFIG_FILES gi/_glib/Makefile" ;;
+    "gi/_gobject/Makefile") CONFIG_FILES="$CONFIG_FILES gi/_gobject/Makefile" ;;
     "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
     "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
     "PKG-INFO") CONFIG_FILES="$CONFIG_FILES PKG-INFO" ;;
@@ -17979,8 +18285,8 @@ $as_echo X"$file" |
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -18043,6 +18349,9 @@ SHELL=$lt_SHELL
 # An echo program that protects backslashes.
 ECHO=$lt_ECHO
 
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
 # The host system.
 host_alias=$host_alias
 host=$host
@@ -18338,10 +18647,6 @@ no_undefined_flag=$lt_no_undefined_flag
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
@@ -18633,5 +18938,4 @@ fi
 
 echo
 echo "libffi support: $have_libffi"
-echo "introspection support: $enable_introspection"
 echo
index 1b923b4..879b739 100644 (file)
@@ -6,27 +6,27 @@ AC_PREREQ(2.52)
 # Python 3 as python3 to configure to compile pygobject under Python 3
 # you would do this:
 # $> PYTHON=python3 ./configure
-m4_define(python_min_ver, 2.5.2)
+m4_define(python_min_ver, 2.6)
 m4_define(python3_min_ver, 3.1)
 
 dnl the pygobject version number
-m4_define(pygobject_major_version, 2)
-m4_define(pygobject_minor_version, 28)
-m4_define(pygobject_micro_version, 6)
+m4_define(pygobject_major_version, 3)
+m4_define(pygobject_minor_version, 4)
+m4_define(pygobject_micro_version, 0)
 m4_define(pygobject_version, pygobject_major_version.pygobject_minor_version.pygobject_micro_version)
 
 dnl versions of packages we require ...
-m4_define(introspection_required_version, 0.10.2)
-m4_define(pycairo_required_version, 1.2.0)
-m4_define(glib_required_version, 2.24.0)
-m4_define(gio_required_version, 2.24.0)
-m4_define(giounix_required_version, 2.22.4)
+m4_define(introspection_required_version, 1.33.14)
+m4_define(py2cairo_required_version, 1.2.0)
+m4_define(py3cairo_required_version, 1.10.0)
+m4_define(glib_required_version, 2.31.0)
+m4_define(gio_required_version, 2.31.0)
 
 AC_INIT(pygobject, pygobject_version,
         [http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject])
 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I .")
 AC_CONFIG_MACRO_DIR([m4])
-AC_CONFIG_SRCDIR([gobject/gobjectmodule.c])
+AC_CONFIG_SRCDIR([gi/gimodule.c])
 
 AC_DEFINE(PYGOBJECT_MAJOR_VERSION, pygobject_major_version, [pygobject major version])
 AC_SUBST(PYGOBJECT_MAJOR_VERSION, pygobject_major_version)
@@ -37,8 +37,8 @@ AC_SUBST(PYGOBJECT_MICRO_VERSION, pygobject_micro_version)
 
 AM_CONFIG_HEADER(config.h)
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)])
-AM_INIT_AUTOMAKE(foreign)
-AM_MAINTAINER_MODE
+AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz])
+AM_MAINTAINER_MODE([enable])
 
 dnl put the ACLOCAL flags in the makefile
 ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
@@ -101,7 +101,10 @@ if test $build_py3k = true ; then
                          [AC_MSG_ERROR(too old)])
 fi
 
-AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)])
+AM_CHECK_PYTHON_HEADERS(, AC_MSG_ERROR([Python headers not found]))
+if test "x$os_win32" = "xyes"; then
+  AM_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows requires Python modules to be explicitly linked to libpython.]))
+fi
 
 AC_MSG_CHECKING([for PySignal_SetWakeupFd in Python.h])
 old_CPPFLAGS=$CPPFLAGS
@@ -124,28 +127,6 @@ AC_ARG_ENABLE(thread,
   AC_HELP_STRING([--disable-thread], [Disable pygobject threading support]),,
   enable_thread=yes)
 
-dnl Building documentation
-AC_ARG_ENABLE(docs,
-  AC_HELP_STRING([--enable-docs], [Enable documentation building]),enable_docs=$enableval,
-  enable_docs=no)
-if test "${enable_docs}" != no; then
-  dnl
-  dnl Check for xsltproc
-  dnl
-  AC_PATH_PROG([XSLTPROC], [xsltproc])
-  if test -z "$XSLTPROC"; then
-    enable_docs=no
-  fi
-
-  dnl check for DocBook DTD and stylesheets in the local catalog.
-  dnl JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
-  dnl   [DocBook XML DTD V4.1.2],,enable_docs=no)
-  dnl JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
-  dnl   [DocBook XSL Stylesheets],,enable_docs=no)
-fi
-
-AM_CONDITIONAL(ENABLE_DOCS, test x$enable_docs != xno)
-
 AM_CHECK_PYMOD(thread,,,enable_thread=check_for_py3_module)
 if test "x$enable_thread" = xcheck_for_py3_module; then
   dnl Python 3 uses the _thread module so check for that
@@ -176,9 +157,6 @@ fi
 PYTHON_BASENAME=`basename $PYTHON`
 AC_SUBST([PYTHON_BASENAME])
 
-pygobject_CODEGEN_DEFINES=""
-AC_SUBST([pygobject_CODEGEN_DEFINES])
-
 AS_AC_EXPAND(DATADIR, $datadir)
 
 dnl libffi
@@ -196,7 +174,6 @@ if test x"$with_libffi" = xyes && test x"$have_libffi" = xno ; then
   AC_MSG_ERROR([ffi requested, but not found])
 fi
 if test x"$have_libffi" = xyes; then
-  AC_DEFINE(HAVE_FFI_H,1,[Have libffi include files])
   LIBFFI_PC=libffi
 fi
 AM_CONDITIONAL(HAVE_LIBFFI, test "$have_libffi" = "yes")
@@ -205,55 +182,35 @@ AC_SUBST(FFI_LIBS)
 AC_SUBST(LIBFFI_PC)
 
 dnl gio
-PKG_CHECK_MODULES(GIO, gio-2.0 >= gio_required_version,
-       have_gio=true, have_gio=false)
-AC_SUBST(GIO_CFLAGS)
-AC_SUBST(GIO_LIBS)
-
-# Do not build GIO if the python version >= 3.0
-# We use GI to access GIO in python 3
-AM_CONDITIONAL(BUILD_GIO, test $have_gio = true -a $build_py3k = false)
+PKG_CHECK_MODULES(GIO, gio-2.0 >= gio_required_version)
 
-if test -n "$export_dynamic"; then
-  GIO_LIBS=`echo $GIO_LIBS | sed -e "s/$export_dynamic//"`
-fi
-
-dnl giounix
-PKG_CHECK_MODULES(GIOUNIX, gio-unix-2.0 >= giounix_required_version,
-       have_giounix=true, have_giounix=false)
-AC_SUBST(GIOUNIX_CFLAGS)
-AC_SUBST(GIOUNIX_LIBS)
-AM_CONDITIONAL(BUILD_GIOUNIX, test $have_giounix = true -a $build_py3k = false)
-if test -n "$export_dynamic"; then
-  GIOUNIX_LIBS=`echo $GIOUNIX_LIBS | sed -e "s/$export_dynamic//"`
-fi
+# we always need cairo (not pycairo) for building the tests
+PKG_CHECK_MODULES(CAIRO, cairo cairo-gobject)
 
 AC_ARG_ENABLE(cairo,
     AC_HELP_STRING([--enable-cairo], [Enable Cairo bindings using introspection information]),
     enable_cairo=$enableval,
     enable_cairo=yes)
 
-AC_ARG_ENABLE(introspection,
-  AC_HELP_STRING([--enable-introspection], [Use introspection information]),
-  enable_introspection=$enableval,
-  enable_introspection=yes)
-if test "$enable_introspection" != no; then
-    AC_DEFINE(ENABLE_INTROSPECTION,1,Use introspection information)
-    PKG_CHECK_MODULES(GI,
-        glib-2.0 >= glib_required_version
-        gobject-introspection-1.0 >= introspection_required_version
-    )
-
-    GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
-    AC_SUBST(GI_DATADIR)
-
-    if test "$enable_cairo" != no; then
+PKG_CHECK_MODULES(GI,
+    glib-2.0 >= glib_required_version
+    gobject-introspection-1.0 >= introspection_required_version
+)
+
+GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
+AC_SUBST(GI_DATADIR)
+
+if test "$enable_cairo" != no; then
+    if test $build_py3k = true; then
+        PKG_CHECK_MODULES(PYCAIRO,
+            py3cairo >= py3cairo_required_version
+        )
+    else
         PKG_CHECK_MODULES(PYCAIRO,
-            pycairo >= pycairo_required_version
+            pycairo >= py2cairo_required_version
         )
     fi
 fi
-AM_CONDITIONAL(ENABLE_INTROSPECTION, test "$enable_introspection" = "yes")
 AM_CONDITIONAL(ENABLE_CAIRO, test "$enable_cairo" = "yes")
 
 INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
@@ -265,6 +222,12 @@ AC_SUBST(INTROSPECTION_COMPILER)
 dnl add required cflags ...
 if test "x$GCC" = "xyes"; then
   JH_ADD_CFLAG([-Wall])
+  #JH_ADD_CFLAG([-Werror=missing-prototypes])
+  JH_ADD_CFLAG([-Werror=implicit-function-declaration])
+  JH_ADD_CFLAG([-Werror=pointer-arith])
+  JH_ADD_CFLAG([-Werror=format-security])
+  JH_ADD_CFLAG([-Werror=missing-include-dirs])
+  JH_ADD_CFLAG([-Werror=format])
   JH_ADD_CFLAG([-fno-strict-aliasing])
 
   case $host_os in
@@ -279,19 +242,13 @@ fi
 
 AC_CONFIG_FILES(
   Makefile
-  pygobject-2.0.pc
-  pygobject-2.0-uninstalled.pc
-  codegen/Makefile
-  codegen/pygobject-codegen-2.0
-  docs/Makefile
-  docs/reference/entities.docbook
-  docs/xsl/fixxref.py
+  pygobject-3.0.pc
+  pygobject-3.0-uninstalled.pc
   gi/Makefile
   gi/repository/Makefile
   gi/overrides/Makefile
-  glib/Makefile
-  gobject/Makefile
-  gio/Makefile
+  gi/_glib/Makefile
+  gi/_gobject/Makefile
   examples/Makefile
   tests/Makefile
   PKG-INFO)
@@ -299,5 +256,4 @@ AC_OUTPUT
 
 echo
 echo "libffi support: $have_libffi"
-echo "introspection support: $enable_introspection"
 echo
diff --git a/depcomp b/depcomp
index df8eea7..25a39e6 100755 (executable)
--- a/depcomp
+++ b/depcomp
@@ -1,10 +1,10 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-03-27.16; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,7 +28,7 @@ scriptversion=2009-04-28.21; # UTC
 
 case $1 in
   '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
      exit 1;
      ;;
   -h | --h*)
@@ -40,11 +40,11 @@ as side-effects.
 
 Environment variables:
   depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
   DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
+  tmpdepfile  Temporary file to use when outputting dependencies.
   libtool     Whether libtool is used (yes/no).
 
 Report bugs to <bug-automake@gnu.org>.
@@ -57,6 +57,12 @@ EOF
     ;;
 esac
 
+# A tabulation character.
+tab='  '
+# A newline character.
+nl='
+'
+
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
   exit 1
@@ -90,10 +96,24 @@ if test "$depmode" = msvcmsys; then
    # This is just like msvisualcpp but w/o cygpath translation.
    # Just convert the backslash-escaped backslashes to single forward
    # slashes to satisfy depend.m4
-   cygpath_u="sed s,\\\\\\\\,/,g"
+   cygpath_u='sed s,\\\\,/,g'
    depmode=msvisualcpp
 fi
 
+if test "$depmode" = msvc7msys; then
+   # This is just like msvc7 but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
+   gccflag=-qmakedep=gcc,-MF
+   depmode=gcc
+fi
+
 case "$depmode" in
 gcc3)
 ## gcc 3 implements dependency tracking that does exactly what
@@ -148,20 +168,21 @@ gcc)
 ## The second -e expression handles DOS-style file names with drive letters.
   sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
 ## The problem is that when a header file which appears in a .P file
 ## is deleted, the dependency causes make to die (because there is
 ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
+  tr ' ' "$nl" < "$tmpdepfile" |
+## Some versions of gcc put a space before the ':'.  On the theory
 ## that the space means something, we add a space to the output as
-## well.
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+      | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -193,18 +214,15 @@ sgi)
     # clever and replace this with sed code, as IRIX sed won't handle
     # lines with more than a fixed number of characters (4096 in
     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
+    # the IRIX cc adds comments like '#:fec' to the end of the
     # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
+    tr ' ' "$nl" < "$tmpdepfile" \
     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> "$depfile"
+    tr "$nl" ' ' >> "$depfile"
     echo >> "$depfile"
 
     # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
+    tr ' ' "$nl" < "$tmpdepfile" \
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
    >> "$depfile"
   else
@@ -216,10 +234,17 @@ sgi)
   rm -f "$tmpdepfile"
   ;;
 
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 aix)
   # The C for AIX Compiler uses -M and outputs the dependencies
   # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
   # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.
   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
@@ -249,12 +274,11 @@ aix)
     test -f "$tmpdepfile" && break
   done
   if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
+    # Each line is of the form 'foo.o: dependent.h'.
     # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
+    # '$object: dependent.h' and one to simply 'dependent.h:'.
     sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    # That's a tab and a space in the [].
-    sed -e 's,^.*\.[a-z]*:[     ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
   else
     # The sourcefile does not contain any dependencies, so just
     # store a dummy comment line, to avoid errors with the Makefile
@@ -265,23 +289,26 @@ aix)
   ;;
 
 icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
+  # However on
+  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
   # ICC 7.0 will fill foo.d with something like
   #    foo.o: sub/foo.c
   #    foo.o: sub/foo.h
-  # which is wrong.  We want:
+  # which is wrong.  We want
   #    sub/foo.o: sub/foo.c
   #    sub/foo.o: sub/foo.h
   #    sub/foo.c:
   #    sub/foo.h:
   # ICC 7.1 will output
   #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using :
+  # and will wrap long lines using '\':
   #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \
   #     ...
-
+  # tcc 0.9.26 (FIXME still under development at the moment of writing)
+  # will emit a similar output, but also prepend the continuation lines
+  # with horizontal tabulation characters.
   "$@" -MD -MF "$tmpdepfile"
   stat=$?
   if test $stat -eq 0; then :
@@ -290,15 +317,21 @@ icc)
     exit $stat
   fi
   rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Each line is of the form 'foo.o: dependent.h',
+  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
   # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
+  # '$object: dependent.h' and one to simply 'dependent.h:'.
+  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
+    < "$tmpdepfile" > "$depfile"
+  sed '
+    s/[ '"$tab"'][ '"$tab"']*/ /g
+    s/^ *//
+    s/ *\\*$//
+    s/^[^:]*: *//
+    /^$/d
+    /:$/d
+    s/$/ :/
+  ' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -334,7 +367,7 @@ hp2)
   done
   if test -f "$tmpdepfile"; then
     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
+    # Add 'dependent.h:' lines.
     sed -ne '2,${
               s/^ *//
               s/ \\*$//
@@ -349,9 +382,9 @@ hp2)
 
 tru64)
    # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
    # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
+   # dependencies in 'foo.d' instead, so we check for that too.
    # Subdirectories are respected.
    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
    test "x$dir" = "x$object" && dir=
@@ -397,14 +430,59 @@ tru64)
    done
    if test -f "$tmpdepfile"; then
       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[   ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
    else
       echo "#dummy" > "$depfile"
    fi
    rm -f "$tmpdepfile"
    ;;
 
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test "$stat" = 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 #nosideeffect)
   # This comment above is used by automake to tell side-effect
   # dependency tracking mechanisms from slower ones.
@@ -422,7 +500,7 @@ dashmstdout)
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -442,15 +520,14 @@ dashmstdout)
   done
 
   test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
+  # Require at least two characters before searching for ':'
   # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
   "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
   rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
+  tr ' ' "$nl" < "$tmpdepfile" | \
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -503,9 +580,10 @@ makedepend)
   touch "$tmpdepfile"
   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -525,7 +603,7 @@ cpp)
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -594,8 +672,8 @@ msvisualcpp)
   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::     \1 \\:p' >> "$depfile"
-  echo "       " >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
diff --git a/docs/Makefile.am b/docs/Makefile.am
deleted file mode 100644 (file)
index 418df8a..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-REF_VERSION = $(PYGOBJECT_MAJOR_VERSION).$(PYGOBJECT_MINOR_VERSION)
-FULL_VERSION = $(REF_VERSION).$(PYGOBJECT_MICRO_VERSION)
-
-BUILDDIR = $(top_builddir)/docs
-
-CSS_FILES = style.css
-
-HTML_FILES =                                   \
-       html/class-gobjectgboxed.html           \
-       html/class-gobjectginterface.html       \
-       html/class-gobjectgpointer.html         \
-       html/class-gobject.html                 \
-       html/class-glibmaincontext.html         \
-       html/class-glibmainloop.html            \
-       html/glib-constants.html                \
-       html/glib-functions.html                \
-       html/gobject-class-reference.html       \
-       html/glib-class-reference.html          \
-       html/class-gioapplaunchcontext.html     \
-       html/class-gioappinfo.html              \
-       html/class-gioasyncresult.html          \
-       html/class-giobufferedinputstream.html  \
-       html/class-giobufferedoutputstream.html \
-       html/class-giocancellable.html          \
-       html/class-giodatainputstream.html      \
-       html/class-giodataoutputstream.html     \
-       html/class-giodrive.html                \
-       html/class-gioemblem.html               \
-       html/class-gioemblemedicon.html         \
-       html/class-giofile.html                 \
-       html/class-giofileattributeinfo.html    \
-       html/class-giofileenumerator.html       \
-       html/class-giofileicon.html             \
-       html/class-giofileinfo.html             \
-       html/class-giofileinputstream.html      \
-       html/class-giofilemonitor.html          \
-       html/class-giofileoutputstream.html     \
-       html/class-giofilterinputstream.html    \
-       html/class-giofilteroutputstream.html   \
-       html/class-gioicon.html                 \
-       html/class-gioinputstream.html          \
-       html/class-gioloadableicon.html         \
-       html/class-giomemoryinputstream.html    \
-       html/class-giomemoryoutputstream.html   \
-       html/class-giomount.html                \
-       html/class-giomountoperation.html       \
-       html/class-giooutputstream.html         \
-       html/class-gioseekable.html             \
-       html/class-giosimpleasyncresult.html    \
-       html/class-giothemedicon.html           \
-       html/class-giounixinputstream.html      \
-       html/class-giounixoutputstream.html     \
-       html/class-giovolume.html               \
-       html/class-giovolumemonitor.html        \
-       html/gio-constants.html                 \
-       html/gio-functions.html                 \
-       html/gio-class-reference.html           \
-       html/giounix-class-reference.html       \
-       html/gobject-constants.html             \
-       html/gobject-functions.html             \
-       html/index.html                         \
-       html/index.sgml                         \
-       html/pygobject.devhelp                  \
-       html/pygobject-introduction.html
-
-
-XML_FILES =                                            \
-       reference/pygobject.xml                         \
-       reference/pygobject-introduction.xml            \
-       reference/pygobject-classes.xml                 \
-       reference/pygobject-constants.xml               \
-       reference/pygobject-ref.xml                     \
-       reference/pygobject-functions.xml               \
-       reference/pygobject-gboxed.xml                  \
-       reference/pygobject-ginterface.xml              \
-       reference/pygobject-gpointer.xml                \
-       reference/pyglib-classes.xml                    \
-       reference/pyglib-constants.xml                  \
-       reference/pyglib-functions.xml                  \
-       reference/pyglib-maincontext.xml                \
-       reference/pyglib-mainloop.xml                   \
-       reference/pygio-classes.xml                     \
-       reference/pygiounix-classes.xml                 \
-       reference/pygio-constants.xml                   \
-       reference/pygio-functions.xml                   \
-       reference/pygio-applaunchcontext.xml            \
-       reference/pygio-appinfo.xml                     \
-       reference/pygio-asyncresult.xml                 \
-       reference/pygio-bufferedinputstream.xml         \
-       reference/pygio-bufferedoutputstream.xml        \
-       reference/pygio-cancellable.xml                 \
-       reference/pygio-datainputstream.xml             \
-       reference/pygio-dataoutputstream.xml            \
-       reference/pygio-drive.xml                       \
-       reference/pygio-emblem.xml                      \
-       reference/pygio-emblemedicon.xml                \
-       reference/pygio-file.xml                        \
-       reference/pygio-fileattributeinfo.xml           \
-       reference/pygio-fileenumerator.xml              \
-       reference/pygio-fileicon.xml                    \
-       reference/pygio-fileinfo.xml                    \
-       reference/pygio-fileinputstream.xml             \
-       reference/pygio-filemonitor.xml                 \
-       reference/pygio-fileoutputstream.xml            \
-       reference/pygio-filterinputstream.xml           \
-       reference/pygio-filteroutputstream.xml          \
-       reference/pygio-icon.xml                        \
-       reference/pygio-inputstream.xml                 \
-       reference/pygio-loadableicon.xml                \
-       reference/pygio-memoryinputstream.xml           \
-       reference/pygio-memoryoutputstream.xml          \
-       reference/pygio-mount.xml                       \
-       reference/pygio-mountoperation.xml              \
-       reference/pygio-outputstream.xml                \
-       reference/pygio-seekable.xml                    \
-       reference/pygio-simpleasyncresult.xml           \
-       reference/pygio-themedicon.xml                  \
-       reference/pygio-unixinputstream.xml             \
-       reference/pygio-unixoutputstream.xml            \
-       reference/pygio-volume.xml                      \
-       reference/pygio-volumemonitor.xml
-
-XSL_FILES =                    \
-       xsl/common.xsl          \
-       xsl/devhelp.xsl         \
-       xsl/html.xsl            \
-       xsl/pdf-style.xsl       \
-       xsl/pdf.xsl             \
-       xsl/ref-html-style.xsl
-
-# fixxref cannot be included in XSL_FILES, because automake is touching it
-# so the date is newer then the files in HTML_FILES
-FIXXREF = xsl/fixxref.py
-
-TARGET_DIR = $(datadir)/gtk-doc/html/pygobject
-CSSdir = $(TARGET_DIR)
-CSS_DATA = $(CSS_FILES)
-
-
-install-data-local:
-       installfiles=`echo $(srcdir)/html/*`; \
-       if test "$$installfiles" = '$(srcdir)/html/*'; \
-       then echo '-- Nothing to install' ; \
-       else \
-         $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
-         for i in $$installfiles; do \
-           echo '-- Installing '$$i ; \
-           $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
-         done; \
-         echo '-- Installing $(srcdir)/html/index.sgml' ; \
-         $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
-       fi
-
-uninstall-local:
-       rm -f $(DESTDIR)$(TARGET_DIR)/*
-
-
-XSLdir = $(datadir)/pygobject/xsl
-XSL_DATA = $(XSL_FILES) $(FIXXREF)
-
-EXTRA_DIST =           \
-       $(HTML_FILES)   \
-       $(XML_FILES)    \
-       $(XSL_FILES)    \
-       $(FIXXREF)      \
-       $(CSS_FILES)
-
-reference/builddate.xml:
-       @$(PYTHON) -c 'import datetime; print datetime.date.today()' > $@
-
-
-if ENABLE_DOCS
-
-BUILT_SOURCES = reference/builddate.xml $(HTML_FILES)
-CLEANFILES = reference/builddate.xml $(HTML_FILES)
-
-
-# Do not add a builddate.xml dependency here, because the generated html 
-# documentation will be included in the tarball so xsltproc is not needed to 
-# install the documentation. Adding a builddate.xml dependency will force 
-# the documentation to be rebuilt when it doesn't need to be.
-$(HTML_FILES): $(XML_FILES) $(XSL_FILES)
-       @xsltproc --nonet --xinclude -o $(BUILDDIR)/html/ \
-                --path $(BUILDDIR)/reference:$(srcdir)/reference \
-                 --stringparam gtkdoc.bookname "pygobject" \
-                 --stringparam gtkdoc.version ${REF_VERSION} \
-                 $(srcdir)/xsl/ref-html-style.xsl \
-                 $(srcdir)/reference/pygobject-ref.xml
-
-# pdf: $(REFERENCE_DEPS) reference/builddate.xml
-#      xsltproc --nonet --xinclude -o pygobject-ref.fo xsl/pdf-style.xsl \
-#              reference/pygobject-ref.xml
-#      pdfxmltex pygobject-ref.fo >output </dev/null
-
-endif
-
--include $(top_srcdir)/git.mk
diff --git a/docs/Makefile.in b/docs/Makefile.in
deleted file mode 100644 (file)
index acb75a7..0000000
+++ /dev/null
@@ -1,662 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = docs
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
-       $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
-       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-       $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(CSSdir)" "$(DESTDIR)$(XSLdir)"
-DATA = $(CSS_DATA) $(XSL_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DATADIR = @DATADIR@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FFI_CFLAGS = @FFI_CFLAGS@
-FFI_LIBS = @FFI_LIBS@
-FGREP = @FGREP@
-GIOUNIX_CFLAGS = @GIOUNIX_CFLAGS@
-GIOUNIX_LIBS = @GIOUNIX_LIBS@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GI_CFLAGS = @GI_CFLAGS@
-GI_DATADIR = @GI_DATADIR@
-GI_LIBS = @GI_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GOBJECT_QUERY = @GOBJECT_QUERY@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBFFI_PC = @LIBFFI_PC@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PLATFORM = @PLATFORM@
-PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
-PYCAIRO_LIBS = @PYCAIRO_LIBS@
-PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
-PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
-PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
-PYTHON = @PYTHON@
-PYTHON_BASENAME = @PYTHON_BASENAME@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-THREADING_CFLAGS = @THREADING_CFLAGS@
-VERSION = @VERSION@
-XSLTPROC = @XSLTPROC@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pygobject_CODEGEN_DEFINES = @pygobject_CODEGEN_DEFINES@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-REF_VERSION = $(PYGOBJECT_MAJOR_VERSION).$(PYGOBJECT_MINOR_VERSION)
-FULL_VERSION = $(REF_VERSION).$(PYGOBJECT_MICRO_VERSION)
-BUILDDIR = $(top_builddir)/docs
-CSS_FILES = style.css
-HTML_FILES = \
-       html/class-gobjectgboxed.html           \
-       html/class-gobjectginterface.html       \
-       html/class-gobjectgpointer.html         \
-       html/class-gobject.html                 \
-       html/class-glibmaincontext.html         \
-       html/class-glibmainloop.html            \
-       html/glib-constants.html                \
-       html/glib-functions.html                \
-       html/gobject-class-reference.html       \
-       html/glib-class-reference.html          \
-       html/class-gioapplaunchcontext.html     \
-       html/class-gioappinfo.html              \
-       html/class-gioasyncresult.html          \
-       html/class-giobufferedinputstream.html  \
-       html/class-giobufferedoutputstream.html \
-       html/class-giocancellable.html          \
-       html/class-giodatainputstream.html      \
-       html/class-giodataoutputstream.html     \
-       html/class-giodrive.html                \
-       html/class-gioemblem.html               \
-       html/class-gioemblemedicon.html         \
-       html/class-giofile.html                 \
-       html/class-giofileattributeinfo.html    \
-       html/class-giofileenumerator.html       \
-       html/class-giofileicon.html             \
-       html/class-giofileinfo.html             \
-       html/class-giofileinputstream.html      \
-       html/class-giofilemonitor.html          \
-       html/class-giofileoutputstream.html     \
-       html/class-giofilterinputstream.html    \
-       html/class-giofilteroutputstream.html   \
-       html/class-gioicon.html                 \
-       html/class-gioinputstream.html          \
-       html/class-gioloadableicon.html         \
-       html/class-giomemoryinputstream.html    \
-       html/class-giomemoryoutputstream.html   \
-       html/class-giomount.html                \
-       html/class-giomountoperation.html       \
-       html/class-giooutputstream.html         \
-       html/class-gioseekable.html             \
-       html/class-giosimpleasyncresult.html    \
-       html/class-giothemedicon.html           \
-       html/class-giounixinputstream.html      \
-       html/class-giounixoutputstream.html     \
-       html/class-giovolume.html               \
-       html/class-giovolumemonitor.html        \
-       html/gio-constants.html                 \
-       html/gio-functions.html                 \
-       html/gio-class-reference.html           \
-       html/giounix-class-reference.html       \
-       html/gobject-constants.html             \
-       html/gobject-functions.html             \
-       html/index.html                         \
-       html/index.sgml                         \
-       html/pygobject.devhelp                  \
-       html/pygobject-introduction.html
-
-XML_FILES = \
-       reference/pygobject.xml                         \
-       reference/pygobject-introduction.xml            \
-       reference/pygobject-classes.xml                 \
-       reference/pygobject-constants.xml               \
-       reference/pygobject-ref.xml                     \
-       reference/pygobject-functions.xml               \
-       reference/pygobject-gboxed.xml                  \
-       reference/pygobject-ginterface.xml              \
-       reference/pygobject-gpointer.xml                \
-       reference/pyglib-classes.xml                    \
-       reference/pyglib-constants.xml                  \
-       reference/pyglib-functions.xml                  \
-       reference/pyglib-maincontext.xml                \
-       reference/pyglib-mainloop.xml                   \
-       reference/pygio-classes.xml                     \
-       reference/pygiounix-classes.xml                 \
-       reference/pygio-constants.xml                   \
-       reference/pygio-functions.xml                   \
-       reference/pygio-applaunchcontext.xml            \
-       reference/pygio-appinfo.xml                     \
-       reference/pygio-asyncresult.xml                 \
-       reference/pygio-bufferedinputstream.xml         \
-       reference/pygio-bufferedoutputstream.xml        \
-       reference/pygio-cancellable.xml                 \
-       reference/pygio-datainputstream.xml             \
-       reference/pygio-dataoutputstream.xml            \
-       reference/pygio-drive.xml                       \
-       reference/pygio-emblem.xml                      \
-       reference/pygio-emblemedicon.xml                \
-       reference/pygio-file.xml                        \
-       reference/pygio-fileattributeinfo.xml           \
-       reference/pygio-fileenumerator.xml              \
-       reference/pygio-fileicon.xml                    \
-       reference/pygio-fileinfo.xml                    \
-       reference/pygio-fileinputstream.xml             \
-       reference/pygio-filemonitor.xml                 \
-       reference/pygio-fileoutputstream.xml            \
-       reference/pygio-filterinputstream.xml           \
-       reference/pygio-filteroutputstream.xml          \
-       reference/pygio-icon.xml                        \
-       reference/pygio-inputstream.xml                 \
-       reference/pygio-loadableicon.xml                \
-       reference/pygio-memoryinputstream.xml           \
-       reference/pygio-memoryoutputstream.xml          \
-       reference/pygio-mount.xml                       \
-       reference/pygio-mountoperation.xml              \
-       reference/pygio-outputstream.xml                \
-       reference/pygio-seekable.xml                    \
-       reference/pygio-simpleasyncresult.xml           \
-       reference/pygio-themedicon.xml                  \
-       reference/pygio-unixinputstream.xml             \
-       reference/pygio-unixoutputstream.xml            \
-       reference/pygio-volume.xml                      \
-       reference/pygio-volumemonitor.xml
-
-XSL_FILES = \
-       xsl/common.xsl          \
-       xsl/devhelp.xsl         \
-       xsl/html.xsl            \
-       xsl/pdf-style.xsl       \
-       xsl/pdf.xsl             \
-       xsl/ref-html-style.xsl
-
-
-# fixxref cannot be included in XSL_FILES, because automake is touching it
-# so the date is newer then the files in HTML_FILES
-FIXXREF = xsl/fixxref.py
-TARGET_DIR = $(datadir)/gtk-doc/html/pygobject
-CSSdir = $(TARGET_DIR)
-CSS_DATA = $(CSS_FILES)
-XSLdir = $(datadir)/pygobject/xsl
-XSL_DATA = $(XSL_FILES) $(FIXXREF)
-EXTRA_DIST = \
-       $(HTML_FILES)   \
-       $(XML_FILES)    \
-       $(XSL_FILES)    \
-       $(FIXXREF)      \
-       $(CSS_FILES)
-
-@ENABLE_DOCS_TRUE@BUILT_SOURCES = reference/builddate.xml $(HTML_FILES)
-@ENABLE_DOCS_TRUE@CLEANFILES = reference/builddate.xml $(HTML_FILES)
-all: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-               && { if test -f $@; then exit 0; else break; fi; }; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \
-       $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --foreign docs/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-install-CSSDATA: $(CSS_DATA)
-       @$(NORMAL_INSTALL)
-       test -z "$(CSSdir)" || $(MKDIR_P) "$(DESTDIR)$(CSSdir)"
-       @list='$(CSS_DATA)'; test -n "$(CSSdir)" || list=; \
-       for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         echo "$$d$$p"; \
-       done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(CSSdir)'"; \
-         $(INSTALL_DATA) $$files "$(DESTDIR)$(CSSdir)" || exit $$?; \
-       done
-
-uninstall-CSSDATA:
-       @$(NORMAL_UNINSTALL)
-       @list='$(CSS_DATA)'; test -n "$(CSSdir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$files" || exit 0; \
-       echo " ( cd '$(DESTDIR)$(CSSdir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(CSSdir)" && rm -f $$files
-install-XSLDATA: $(XSL_DATA)
-       @$(NORMAL_INSTALL)
-       test -z "$(XSLdir)" || $(MKDIR_P) "$(DESTDIR)$(XSLdir)"
-       @list='$(XSL_DATA)'; test -n "$(XSLdir)" || list=; \
-       for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         echo "$$d$$p"; \
-       done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(XSLdir)'"; \
-         $(INSTALL_DATA) $$files "$(DESTDIR)$(XSLdir)" || exit $$?; \
-       done
-
-uninstall-XSLDATA:
-       @$(NORMAL_UNINSTALL)
-       @list='$(XSL_DATA)'; test -n "$(XSLdir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$files" || exit 0; \
-       echo " ( cd '$(DESTDIR)$(XSLdir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(XSLdir)" && rm -f $$files
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       list='$(DISTFILES)'; \
-         dist_files=`for file in $$list; do echo $$file; done | \
-         sed -e "s|^$$srcdirstrip/||;t" \
-             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-       case $$dist_files in \
-         */*) $(MKDIR_P) `echo "$$dist_files" | \
-                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-                          sort -u` ;; \
-       esac; \
-       for file in $$dist_files; do \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-           if test -d "$(distdir)/$$file"; then \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-check-am: all-am
-check: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(DATA)
-installdirs:
-       for dir in "$(DESTDIR)$(CSSdir)" "$(DESTDIR)$(XSLdir)"; do \
-         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-       done
-install: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-       -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-CSSDATA install-XSLDATA install-data-local
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-CSSDATA uninstall-XSLDATA uninstall-local
-
-.MAKE: all check install install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       distclean distclean-generic distclean-libtool distdir dvi \
-       dvi-am html html-am info info-am install install-CSSDATA \
-       install-XSLDATA install-am install-data install-data-am \
-       install-data-local install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-pdf install-pdf-am \
-       install-ps install-ps-am install-strip installcheck \
-       installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall \
-       uninstall-CSSDATA uninstall-XSLDATA uninstall-am \
-       uninstall-local
-
-
-install-data-local:
-       installfiles=`echo $(srcdir)/html/*`; \
-       if test "$$installfiles" = '$(srcdir)/html/*'; \
-       then echo '-- Nothing to install' ; \
-       else \
-         $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
-         for i in $$installfiles; do \
-           echo '-- Installing '$$i ; \
-           $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
-         done; \
-         echo '-- Installing $(srcdir)/html/index.sgml' ; \
-         $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
-       fi
-
-uninstall-local:
-       rm -f $(DESTDIR)$(TARGET_DIR)/*
-
-reference/builddate.xml:
-       @$(PYTHON) -c 'import datetime; print datetime.date.today()' > $@
-
-# Do not add a builddate.xml dependency here, because the generated html 
-# documentation will be included in the tarball so xsltproc is not needed to 
-# install the documentation. Adding a builddate.xml dependency will force 
-# the documentation to be rebuilt when it doesn't need to be.
-@ENABLE_DOCS_TRUE@$(HTML_FILES): $(XML_FILES) $(XSL_FILES)
-@ENABLE_DOCS_TRUE@     @xsltproc --nonet --xinclude -o $(BUILDDIR)/html/ \
-@ENABLE_DOCS_TRUE@              --path $(BUILDDIR)/reference:$(srcdir)/reference \
-@ENABLE_DOCS_TRUE@                 --stringparam gtkdoc.bookname "pygobject" \
-@ENABLE_DOCS_TRUE@                 --stringparam gtkdoc.version ${REF_VERSION} \
-@ENABLE_DOCS_TRUE@                 $(srcdir)/xsl/ref-html-style.xsl \
-@ENABLE_DOCS_TRUE@                 $(srcdir)/reference/pygobject-ref.xml
-
-# pdf: $(REFERENCE_DEPS) reference/builddate.xml
-#      xsltproc --nonet --xinclude -o pygobject-ref.fo xsl/pdf-style.xsl \
-#              reference/pygobject-ref.xml
-#      pdfxmltex pygobject-ref.fo >output </dev/null
-
--include $(top_srcdir)/git.mk
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/docs/html/class-gioappinfo.html b/docs/html/class-gioappinfo.html
deleted file mode 100644 (file)
index e8d134f..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.AppInfo</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="next" href="class-gioapplaunchcontext.html" title="gio.AppLaunchContext"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.AppInfo</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="gio-class-reference.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-gioapplaunchcontext.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.AppInfo"><a name="class-gioappinfo"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.AppInfo</h2><p>gio.AppInfo â€” Information about an installed application and methods to launch it (with file arguments).</p></div><div class="refsect1" title="Synopsis"><a name="id509673"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.AppInfo</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-gioappinfo.html#constructor-gioappinfo" title="Constructor">gio.AppInfo</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>commandline</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>application_name</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.APP_INFO_CREATE_NONE</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--add-supports-type" title="gio.AppInfo.add_supports_type">add_supports_type</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--can-delete" title="gio.AppInfo.can_delete">can_delete</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--can-remove-supports-type" title="gio.AppInfo.can_remove_supports_type">can_remove_supports_type</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--delete" title="gio.AppInfo.delete">delete</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--dup" title="gio.AppInfo.dup">dup</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--equal" title="gio.AppInfo.equal">equal</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>appinfo2</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--get-commandline" title="gio.AppInfo.get_commandline">get_commandline</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--get-description" title="gio.AppInfo.get_description">get_description</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--get-executable" title="gio.AppInfo.get_executable">get_executable</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--get-icon" title="gio.AppInfo.get_icon">get_icon</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--get-id" title="gio.AppInfo.get_id">get_id</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--get-name" title="gio.AppInfo.get_name">get_name</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--launch" title="gio.AppInfo.launch">launch</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>files</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>launch_context</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--launch-uris" title="gio.AppInfo.launch_uris">launch_uris</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>uris</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>launch_context</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--remove-supports-type" title="gio.AppInfo.remove_supports_type">remove_supports_type</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--set-as-default-for-extension" title="gio.AppInfo.set_as_default_for_extension">set_as_default_for_extension</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>extension</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--set-as-default-for-type" title="gio.AppInfo.set_as_default_for_type">set_as_default_for_type</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--should-show" title="gio.AppInfo.should_show">should_show</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--supports-files" title="gio.AppInfo.supports_files">supports_files</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--supports-uris" title="gio.AppInfo.supports_uris">supports_uris</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table><pre class="programlisting">
-<span class="bold"><strong>Functions</strong></span>
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#function-gio--app-info-get-all" title="gio.app_info_get_all">gio.app_info_get_all</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#function-gio--app-info-get-all-for-type" title="gio.app_info_get_all_for_type">gio.app_info_get_all_for_type</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#function-gio--app-info-get-default-for-type" title="gio.app_info_get_default_for_type">gio.app_info_get_default_for_type</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>must_support_uris</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#function-gio--app-info-get-default-for-uri-scheme" title="gio.app_info_get_default_for_uri_scheme">gio.app_info_get_default_for_uri_scheme</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>uri_scheme</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioappinfo.html#function-gio--app-info-reset-type-association" title="gio.app_info_reset_type_association">gio.app_info_reset_type_association</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>)</code></pre></div><div class="refsect1" title="Ancestry"><a name="id509140"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a>
-  +-- <a class="link" href="class-gioappinfo.html" title="gio.AppInfo">gio.AppInfo</a>
-</pre></div><div class="refsect1" title="Known Implementation"><a name="id509121"></a><h2>Known Implementation</h2><p>
-            <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a> is implemented by
-            <PYGTKDOCLINK HREF="class-giodesktopappinfo"><code class="classname">gio.DesktopAppInfo</code></PYGTKDOCLINK>
-        </p></div><div class="refsect1" title="Description"><a name="id509100"></a><h2>Description</h2><p>
-            <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-            and <a class="link" href="class-gioapplaunchcontext.html" title="gio.AppLaunchContext"><code class="classname">gio.AppLaunchContext</code></a>
-            are used for describing and launching applications installed on the system.
-        </p><p>
-            As of GLib 2.20, URIs will always be converted to POSIX paths (using
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-path" title="gio.File.get_path">gio.File.get_path</a></code>()) when using
-            <code class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--launch" title="gio.AppInfo.launch">gio.AppInfo.launch</a></code>()
-            even if the application requested an URI and not a POSIX path. For example for an desktop-file
-            based application with Exec key totem %U and a single URI, sftp://foo/file.avi, then /home/user/.gvfs/sftp
-            on foo/file.avi will be passed. This will only work if a set of suitable GIO extensions (such as gvfs 2.26
-            compiled with FUSE support), is available and operational; if this is not the case, the URI will be passed
-            unmodified to the application. Some URIs, such as mailto:, of course cannot be mapped to a POSIX path
-            (in gvfs there's no FUSE mount for it); such URIs will be passed unmodified to the application. 
-        </p><p>
-            Specifically for gvfs 2.26 and later, the POSIX URI will be mapped back to the GIO URI in the
-            <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> constructors
-            (since gvfs implements the GVfs extension point). As such, if the application needs to examine the URI,
-            it needs to use
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-uri" title="gio.File.get_uri">gio.File.get_uri</a></code>()
-            or similar on
-            <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-            In other words, an application cannot assume that the URI passed to e.g.
-            <code class="methodname"><a class="link" href="class-giofile.html#constructor-giofile" title="Constructor">gio.File</a></code>() constructor
-            is equal to the result of
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-uri" title="gio.File.get_uri">gio.File.get_uri</a></code>().
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-gioappinfo"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.AppInfo</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>commandline</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>application_name</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.APP_INFO_CREATE_NONE</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>commandline</code></em> :</span></p></td><td>the commandline to use 
-                </td></tr><tr><td><p><span class="term"><em class="parameter"><code>application_name</code></em> :</span></p></td><td>the application name, or <code class="literal">None</code> to use commandline.
-                </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>flags that can specify details of the created,
-                from <a class="xref" href="gio-constants.html#gio-app-info-constants" title="Gio AppInfo Create Flags Constants">Gio AppInfo Create Flags Constants</a>
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-                for given command.
-                </td></tr></tbody></table><p>
-            Creates a new <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-            from the given information.
-        </p></div><div class="refsect1" title="Methods"><a name="id508887"></a><h2>Methods</h2><div class="refsect2" title="gio.AppInfo.add_supports_type"><a name="method-gioappinfo--add-supports-type"></a><h3>gio.AppInfo.add_supports_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">add_supports_type</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>content_type</code></em> :</span></p></td><td>A string.</td></tr></tbody></table><p>
-                The <code class="methodname">add_supports_type</code>() method adds a content type
-                to the application information to indicate the application is capable of
-                opening files with the given content type.
-            </p></div><div class="refsect2" title="gio.AppInfo.can_delete"><a name="method-gioappinfo--can-delete"></a><h3>gio.AppInfo.can_delete</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">can_delete</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if appinfo can be deleted.
-                   </td></tr></tbody></table><p>
-                The <code class="methodname">can_delete</code>() method obtains the information
-               whether the <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-               can be deleted. See
-               <code class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--delete" title="gio.AppInfo.delete">gio.AppInfo.delete</a></code>().
-            </p></div><div class="refsect2" title="gio.AppInfo.can_remove_supports_type"><a name="method-gioappinfo--can-remove-supports-type"></a><h3>gio.AppInfo.can_remove_supports_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">can_remove_supports_type</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if it is possible to remove
-                    supported content types from a given appinfo, <code class="literal">False</code>
-                    if not. </td></tr></tbody></table><p>
-                The <code class="methodname">can_remove_supports_type</code>() method checks if a
-                supported content type can be removed from an application.
-            </p></div><div class="refsect2" title="gio.AppInfo.delete"><a name="method-gioappinfo--delete"></a><h3>gio.AppInfo.delete</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">delete</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if appinfo has been deleted.
-                   </td></tr></tbody></table><p>
-                The <code class="methodname">delete</code>() method tries to delete an
-               <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>.
-            </p><p>
-               On some platforms, there may be a difference between user-defined
-               <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>s
-               which can be deleted, and system-wide ones which cannot. See
-               <code class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--can-delete" title="gio.AppInfo.can_delete">gio.AppInfo.can_delete</a></code>().
-           </p></div><div class="refsect2" title="gio.AppInfo.dup"><a name="method-gioappinfo--dup"></a><h3>gio.AppInfo.dup</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">dup</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A duplicate of appinfo.</td></tr></tbody></table><p>
-                The <code class="methodname">dup</code>() method creates a duplicate of a
-                <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>.
-            </p></div><div class="refsect2" title="gio.AppInfo.equal"><a name="method-gioappinfo--equal"></a><h3>gio.AppInfo.equal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">equal</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>icon2</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>appinfo2</code></em> :</span></p></td><td>the second
-                    <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if appinfo1 is equal to appinfo2.
-                    <code class="literal">False</code> otherwise.</td></tr></tbody></table><p>
-                The <code class="methodname">equal</code>() method checks if two
-                <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>s are equal.
-            </p></div><div class="refsect2" title="gio.AppInfo.get_commandline"><a name="method-gioappinfo--get-commandline"></a><h3>gio.AppInfo.get_commandline</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_commandline</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string containing the appinfo's commandline, or
-                   <code class="literal">None</code> if this information is not available.
-                   </td></tr></tbody></table><p>
-                The <code class="methodname">get_commandline</code>() method gets the
-               commandline with which the application will be started.
-            </p></div><div class="refsect2" title="gio.AppInfo.get_description"><a name="method-gioappinfo--get-description"></a><h3>gio.AppInfo.get_description</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_description</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A string containing a description of the application
-                    appinfo, or <code class="literal">None</code> if none.</td></tr></tbody></table><p>
-                The <code class="methodname">get_description</code>() method gets a human-readable
-                description of an installed application.
-            </p></div><div class="refsect2" title="gio.AppInfo.get_executable"><a name="method-gioappinfo--get-executable"></a><h3>gio.AppInfo.get_executable</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_executable</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string containing the appinfo's application
-                    binary's name.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_description</code>() method gets the executable's
-                name for the installed application.
-            </p></div><div class="refsect2" title="gio.AppInfo.get_icon"><a name="method-gioappinfo--get-icon"></a><h3>gio.AppInfo.get_icon</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_icon</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the default
-                    <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a> for appinfo.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_icon</code>() method gets the icon for the application.
-            </p></div><div class="refsect2" title="gio.AppInfo.get_id"><a name="method-gioappinfo--get-id"></a><h3>gio.AppInfo.get_id</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_id</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string containing the application's ID.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_id</code>() method gets the ID of an application.
-                An id is a string that identifies the application. The exact format of the
-                id is platform dependent. For instance, on Unix this is the desktop file id
-                from the xdg menu specification. 
-            </p><p>
-                Note that the returned ID may be <code class="literal">None</code>, depending on
-                how the appinfo has been constructed.
-            </p></div><div class="refsect2" title="gio.AppInfo.get_name"><a name="method-gioappinfo--get-name"></a><h3>gio.AppInfo.get_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_name</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the name of the application for appinfo.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_name</code>() method gets the installed
-                name of the application.
-            </p></div><div class="refsect2" title="gio.AppInfo.launch"><a name="method-gioappinfo--launch"></a><h3>gio.AppInfo.launch</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">launch</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>files</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>launch_context</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>files</code></em> :</span></p></td><td>a list of <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> objects.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>launch_context</code></em> :</span></p></td><td>a <a class="link" href="class-gioapplaunchcontext.html" title="gio.AppLaunchContext"><code class="classname">gio.AppLaunchContext</code></a>
-                    or <code class="literal">None</code>.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> on successful launch,
-                    <code class="literal">False</code> otherwise.                      
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">launch</code>() method launches the application.
-                Passes files to the launched application as arguments, using the optional
-                launch_context to get information about the details of the launcher
-                (like what screen it is on). On error, error will be set accordingly. 
-            </p><p>
-                To lauch the application without arguments pass a <code class="literal">None</code> for files list. 
-            </p><p>
-                Note that even if the launch is successful the application launched can fail
-                to start if it runs into problems during startup. There is no way to detect this. 
-            </p><p>
-                Some URIs can be changed when passed through a
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                (for instance unsupported uris with strange formats like mailto:), so
-                if you have a textual uri you want to pass in as argument, consider using
-                <code class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--launch-uris" title="gio.AppInfo.launch_uris">gio.File.launch_uris</a></code>()
-                instead.
-            </p></div><div class="refsect2" title="gio.AppInfo.launch_uris"><a name="method-gioappinfo--launch-uris"></a><h3>gio.AppInfo.launch_uris</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">launch_uris</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>uris</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>launch_context</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>uris</code></em> :</span></p></td><td>a list containing URIs to launch.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>launch_context</code></em> :</span></p></td><td>a <a class="link" href="class-gioapplaunchcontext.html" title="gio.AppLaunchContext"><code class="classname">gio.AppLaunchContext</code></a>
-                    or <code class="literal">None</code>.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> on successful launch,
-                    <code class="literal">False</code> otherwise.                      
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">launch_uris</code>() method launches the application.
-                Passes uris to the launched application as arguments, using the optional
-                launch_context to get information about the details of the launcher
-                (like what screen it is on). On error, error will be set accordingly. 
-            </p><p>
-                To lauch the application without arguments pass a <code class="literal">None</code> for files list. 
-            </p><p>
-                Note that even if the launch is successful the application launched can fail
-                to start if it runs into problems during startup. There is no way to detect this. 
-            </p></div><div class="refsect2" title="gio.AppInfo.remove_supports_type"><a name="method-gioappinfo--remove-supports-type"></a><h3>gio.AppInfo.remove_supports_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">remove_supports_type</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>content_type</code></em> :</span></p></td><td>A string.</td></tr></tbody></table><p>
-                The <code class="methodname">remove_supports_type</code>() method removes a
-                supported type from an application, if possible.
-            </p></div><div class="refsect2" title="gio.AppInfo.set_as_default_for_extension"><a name="method-gioappinfo--set-as-default-for-extension"></a><h3>gio.AppInfo.set_as_default_for_extension</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_as_default_for_extension</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>extension</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>extension</code></em> :</span></p></td><td>A string containing the file extension (without the dot).
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_as_default_for_extension</code>() method sets the
-                application as the default handler for the given file extention.
-            </p></div><div class="refsect2" title="gio.AppInfo.set_as_default_for_type"><a name="method-gioappinfo--set-as-default-for-type"></a><h3>gio.AppInfo.set_as_default_for_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_as_default_for_type</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>content_type</code></em> :</span></p></td><td>The content type.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_as_default_for_type</code>() method sets the
-                application as the default handler for a given type.
-            </p></div><div class="refsect2" title="gio.AppInfo.should_show"><a name="method-gioappinfo--should-show"></a><h3>gio.AppInfo.should_show</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">should_show</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the appinfo should be shown,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">should_show</code>() method checks if the application
-                info should be shown in menus that list available applications.
-            </p></div><div class="refsect2" title="gio.AppInfo.supports_files"><a name="method-gioappinfo--supports-files"></a><h3>gio.AppInfo.supports_files</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">supports_files</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the appinfo supports files. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">supports_files</code>() method checks if the application
-                accepts files as arguments.
-            </p></div><div class="refsect2" title="gio.AppInfo.supports_uris"><a name="method-gioappinfo--supports-uris"></a><h3>gio.AppInfo.supports_uris</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">supports_uris</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the appinfo supports uris. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">supports_uris</code>() method checks if the application
-                accepts uris as arguments.
-            </p></div></div><div class="refsect1" title="Functions"><a name="id507387"></a><h2>Functions</h2><div class="refsect2" title="gio.app_info_get_all"><a name="function-gio--app-info-get-all"></a><h3>gio.app_info_get_all</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">app_info_get_all</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A list of <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>s.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">app_info_get_all</code>() function gets a list of all of
-                the applications currently registered on this system. 
-            </p><p>
-                For desktop files, this includes applications that have NoDisplay=true set or are
-                excluded from display by means of OnlyShowIn or NotShowIn. See
-                <code class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--should-show" title="gio.AppInfo.should_show">gio.AppInfo.should_show</a></code>().
-                The returned list does not include applications which have the Hidden key set.
-            </p></div><div class="refsect2" title="gio.app_info_get_all_for_type"><a name="function-gio--app-info-get-all-for-type"></a><h3>gio.app_info_get_all_for_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">app_info_get_all_for_type</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>content_type</code></em> :</span></p></td><td>the content type to find a
-                    <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-                    for.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A list of <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>s
-                    for a given content type or <code class="literal">None</code> on error. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">app_info_get_all_for_type</code>() function gets a list of all
-                <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>s
-                for a given content type.
-            </p></div><div class="refsect2" title="gio.app_info_get_default_for_type"><a name="function-gio--app-info-get-default-for-type"></a><h3>gio.app_info_get_default_for_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">app_info_get_default_for_type</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>must_support_uris</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>content_type</code></em> :</span></p></td><td>the content type to find a
-                    <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-                    for.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>must_support_uris</code></em> :</span></p></td><td>if <code class="literal">True</code>, the
-                    <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-                    is expected to support URIs </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-                    for given content_type or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">app_info_get_default_for_type</code>() function gets the
-                <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-                that correspond to a given content type.
-            </p></div><div class="refsect2" title="gio.app_info_get_default_for_uri_scheme"><a name="function-gio--app-info-get-default-for-uri-scheme"></a><h3>gio.app_info_get_default_for_uri_scheme</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">app_info_get_default_for_uri_scheme</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>uri_scheme</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>uri_scheme</code></em> :</span></p></td><td>a string containing a URI scheme.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-                    for given uri_scheme or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">app_info_get_default_for_uri_scheme</code>() function gets
-                the default application for launching applications using this URI scheme. A URI
-                scheme is the initial part of the URI, up to but not including the
-                ':', e.g. "http", "ftp" or "sip".
-            </p></div><div class="refsect2" title="gio.app_info_reset_type_association"><a name="function-gio--app-info-reset-type-association"></a><h3>gio.app_info_reset_type_association</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">app_info_reset_type_association</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>content_type</code></em> :</span></p></td><td>a content type</td></tr></tbody></table><p>
-                The <code class="methodname">app_info_reset_type_association</code>() function
-               removes all changes to the type associations done by
-               <code class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--set-as-default-for-type" title="gio.AppInfo.set_as_default_for_type">set_as_default_for_type</a></code>(),
-               <code class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--set-as-default-for-extension" title="gio.AppInfo.set_as_default_for_extension">set_as_default_for_extension</a></code>(),
-               <code class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--add-supports-type" title="gio.AppInfo.add_supports_type">add_supports_type</a></code>() or
-               <code class="methodname"><a class="link" href="class-gioappinfo.html#method-gioappinfo--remove-supports-type" title="gio.AppInfo.remove_supports_type">remove_supports_type</a></code>().
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="gio-class-reference.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-gioapplaunchcontext.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PyGio Class Reference </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.AppLaunchContext</td></tr></table></div></body></html>
diff --git a/docs/html/class-gioapplaunchcontext.html b/docs/html/class-gioapplaunchcontext.html
deleted file mode 100644 (file)
index 2d1d3df..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.AppLaunchContext</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-gioappinfo.html" title="gio.AppInfo"><link rel="next" href="class-gioasyncresult.html" title="gio.AsyncResult"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.AppLaunchContext</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gioappinfo.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-gioasyncresult.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.AppLaunchContext"><a name="class-gioapplaunchcontext"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.AppLaunchContext</h2><p>gio.AppLaunchContext â€” Application launch context.</p></div><div class="refsect1" title="Synopsis"><a name="id503788"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.AppLaunchContext</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-gioapplaunchcontext.html#constructor-gioapplaunchcontext" title="Constructor">gio.AppLaunchContext</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioapplaunchcontext.html#method-gioapplaunchcontext--get-display" title="gio.AppLaunchContext.get_display">get_display</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>info</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>files</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioapplaunchcontext.html#method-gioapplaunchcontext--get-startup-notify-id" title="gio.AppLaunchContext.get_startup_notify_id">get_startup_notify_id</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>info</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>files</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioapplaunchcontext.html#method-gioapplaunchcontext--launch-failed" title="gio.AppLaunchContext.launch_failed">launch_failed</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>startup_notify_id</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id495731"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-gioapplaunchcontext.html" title="gio.AppLaunchContext">gio.AppLaunchContext</a>
-</pre></div><div class="refsect1" title="Description"><a name="id495717"></a><h2>Description</h2><p>
-            The <a class="link" href="class-gioapplaunchcontext.html" title="gio.AppLaunchContext"><code class="classname">gio.AppLaunchContext</code></a>
-            is used for integrating the launch with the launching application. This is used to handle for
-            instance startup notification and launching the new application on the same screen as the launching window.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-gioapplaunchcontext"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.AppLaunchContext</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-gioapplaunchcontext.html" title="gio.AppLaunchContext"><code class="classname">gio.AppLaunchContext</code></a>.
-                </td></tr></tbody></table><p>
-            Creates a new application launch context. This is not normally used, instead
-            you instantiate a subclass of this, such as
-            <PYGTKDOCLINK HREF="class-gdkapplaunchcontext"><code class="classname">gtk.gdk.AppLaunchContext</code></PYGTKDOCLINK>.
-        </p></div><div class="refsect1" title="Methods"><a name="id495640"></a><h2>Methods</h2><div class="refsect2" title="gio.AppLaunchContext.get_display"><a name="method-gioapplaunchcontext--get-display"></a><h3>gio.AppLaunchContext.get_display</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_display</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>info</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>files</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>info</code></em> :</span></p></td><td>a
-                    <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>files</code></em> :</span></p></td><td>a list of
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    objects.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a display string for the display. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_display</code>() method gets the display
-                string for the display. This is used to ensure new applications
-                are started on the same display as the launching application.
-            </p></div><div class="refsect2" title="gio.AppLaunchContext.get_startup_notify_id"><a name="method-gioapplaunchcontext--get-startup-notify-id"></a><h3>gio.AppLaunchContext.get_startup_notify_id</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_startup_notify_id</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>info</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>files</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>info</code></em> :</span></p></td><td>a
-                    <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>files</code></em> :</span></p></td><td>a list of
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    objects.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a startup notification ID for the application,
-                    or <code class="literal">None</code> if not supported. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_startup_notify_id</code>() method initiates
-                startup notification for the application and returns the DESKTOP_STARTUP_ID
-                for the launched operation, if supported. 
-            </p><p>
-                Startup notification IDs are defined in the FreeDesktop.Org Startup Notifications standard.
-            </p></div><div class="refsect2" title="gio.AppLaunchContext.launch_failed"><a name="method-gioapplaunchcontext--launch-failed"></a><h3>gio.AppLaunchContext.launch_failed</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">launch_failed</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>startup_notify_id</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>startup_notify_id</code></em> :</span></p></td><td>the startup notification id that was returned by
-                    <code class="methodname"><a class="link" href="class-gioapplaunchcontext.html#method-gioapplaunchcontext--get-startup-notify-id" title="gio.AppLaunchContext.get_startup_notify_id">get_startup_notify_id</a></code>.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a startup notification ID for the application,
-                    or <code class="literal">None</code> if not supported. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_startup_notify_id</code>() method is called
-                when an application has failed to launch, so that it can cancel the application
-                startup notification started in
-                <code class="methodname"><a class="link" href="class-gioapplaunchcontext.html#method-gioapplaunchcontext--get-startup-notify-id" title="gio.AppLaunchContext.get_startup_notify_id">get_startup_notify_id</a></code>
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gioappinfo.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-gioasyncresult.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.AppInfo </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.AsyncResult</td></tr></table></div></body></html>
diff --git a/docs/html/class-gioasyncresult.html b/docs/html/class-gioasyncresult.html
deleted file mode 100644 (file)
index ea06247..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.AsyncResult</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-gioapplaunchcontext.html" title="gio.AppLaunchContext"><link rel="next" href="class-giobufferedinputstream.html" title="gio.BufferedInputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.AsyncResult</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gioapplaunchcontext.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giobufferedinputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.AsyncResult"><a name="class-gioasyncresult"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.AsyncResult</h2><p>gio.AsyncResult â€” Asynchronous Function Results.</p></div><div class="refsect1" title="Synopsis"><a name="id504044"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.AsyncResult</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioasyncresult.html#method-gioasyncresult--get-source-object" title="gio.AsyncResult.get_source_object">get_source_object</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id504001"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a>
-  +-- <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult">gio.AsyncResult</a>
-</pre></div><div class="refsect1" title="Prerequisites"><a name="id503975"></a><h2>Prerequisites</h2><p>
-            <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a> is required by
-            <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>.
-        </p></div><div class="refsect1" title="Known Implementation"><a name="id503938"></a><h2>Known Implementation</h2><p>
-            <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a> is implemented by
-            <a class="link" href="class-giosimpleasyncresult.html" title="gio.SimpleAsyncResult"><code class="classname">gio.SimpleAsyncResult</code></a>.
-        </p></div><div class="refsect1" title="Description"><a name="id440594"></a><h2>Description</h2><p>
-            <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>
-            provides a base class for implementing asynchronous function results.
-        </p><p>
-            Asynchronous operations are broken up into two separate operations which are chained
-            together by a GAsyncReadyCallback. To begin an asynchronous operation, provide a
-            GAsyncReadyCallback to the asynchronous function. This callback will be triggered when
-            the operation has completed, and will be passed a GAsyncResult instance filled with the
-            details of the operation's success or failure, the object the asynchronous function was
-            started for and any error codes returned. The asynchronous callback function is then expected
-            to call the corresponding "_finish()" function with the object the function was called for,
-            and the <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>
-            instance, and optionally, an error to grab any error conditions that may have occurred. 
-        </p><p>
-            The purpose of the "_finish()" function is to take the generic result of type GAsyncResult and
-            return the specific result that the operation in question yields (e.g. a
-            <a class="link" href="class-giofileenumerator.html" title="gio.FileEnumerator"><code class="classname">gio.FileEnumerator</code></a>
-            for a "enumerate children" operation). If the result or error status of the operation is not needed,
-            there is no need to call the "_finish()" function, GIO will take care of cleaning up the result and error
-            information after the GAsyncReadyCallback returns. It is also allowed to take a reference to the
-            <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>
-            and call "_finish()" later. 
-        </p><p>
-            The callback for an asynchronous operation is called only once, and is always called, even
-            in the case of a cancelled operation. On cancellation the result is a gio.ERROR_CANCELLED error. 
-        </p><p>
-            Some ascynchronous operations are implemented using synchronous calls. These are run in a
-            separate thread, if GThread has been initialized, but otherwise they are sent to the Main Event
-            Loop and processed in an idle function. So, if you truly need asynchronous operations, make
-            sure to initialize GThread.
-        </p></div><div class="refsect1" title="Methods"><a name="id437501"></a><h2>Methods</h2><div class="refsect2" title="gio.AsyncResult.get_source_object"><a name="method-gioasyncresult--get-source-object"></a><h3>gio.AsyncResult.get_source_object</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_source_object</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the source object for the res.                        
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_source_object</code>() method gets the source object
-                from a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gioapplaunchcontext.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giobufferedinputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.AppLaunchContext </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.BufferedInputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giobufferedinputstream.html b/docs/html/class-giobufferedinputstream.html
deleted file mode 100644 (file)
index 7fc25b4..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.BufferedInputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-gioasyncresult.html" title="gio.AsyncResult"><link rel="next" href="class-giobufferedoutputstream.html" title="gio.BufferedOutputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.BufferedInputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gioasyncresult.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giobufferedoutputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.BufferedInputStream"><a name="class-giobufferedinputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.BufferedInputStream</h2><p>gio.BufferedInputStream â€” Buffered Input Stream</p></div><div class="refsect1" title="Synopsis"><a name="id449200"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.BufferedInputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-giofilterinputstream.html" title="gio.FilterInputStream">gio.FilterInputStream</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giobufferedinputstream.html#constructor-giobufferedinputstream" title="Constructor">gio.BufferedInputStream</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>base_stream</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--fill" title="gio.BufferedInputStream.fill">fill</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--fill-async" title="gio.BufferedInputStream.fill_async">fill_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--fill-finish" title="gio.BufferedInputStream.fill_finish">fill_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--get-available" title="gio.BufferedInputStream.get_available">get_available</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--get-buffer-size" title="gio.BufferedInputStream.get_buffer_size">get_buffer_size</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--read-byte" title="gio.BufferedInputStream.read_byte">read_byte</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--set-buffer-size" title="gio.BufferedInputStream.set_buffer_size">set_buffer_size</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span></span>)</code><br></pre></td></tr></table><pre class="programlisting">
-<span class="bold"><strong>Functions</strong></span>
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedinputstream.html#function-gio--buffered-input-stream-new-sized" title="gio.buffered_input_stream_new_sized">gio.buffered_input_stream_new_sized</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span></span>)</code></pre></div><div class="refsect1" title="Ancestry"><a name="id448121"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-gioinputstream.html" title="gio.InputStream">gio.InputStream</a>
-    +-- <a class="link" href="class-giofilterinputstream.html" title="gio.FilterInputStream">gio.FilterInputStream</a>
-      +-- <a class="link" href="class-giobufferedinputstream.html" title="gio.BufferedInputStream">gio.BufferedInputStream</a>
-</pre></div><div class="refsect1" title="gio.BufferedInputStream Properties"><a name="properties-giobufferedinputstream"></a><h2>gio.BufferedInputStream Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"buffer-size"</td><td valign="top">Read - Write - Construct</td><td valign="top">The size of the backend buffer. Allowed values: &gt;= 1. Default value: 4096.</td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="Description"><a name="id500482"></a><h2>Description</h2><p>
-            <a class="link" href="class-giobufferedinputstream.html" title="gio.BufferedInputStream"><code class="classname">gio.BufferedInputStream</code></a>
-            implements <a class="link" href="class-giofilterinputstream.html" title="gio.FilterInputStream"><code class="classname">gio.FilterInputStream</code></a>
-            and provides for buffered reads.
-        </p><p>
-            By default,
-            <a class="link" href="class-giobufferedinputstream.html" title="gio.BufferedInputStream"><code class="classname">gio.BufferedInputStream</code></a>'s
-            buffer size is set at 4 kilobytes.
-        </p><p>
-            To create a buffered input stream, use
-            <code class="methodname"><a class="link" href="class-giobufferedinputstream.html#constructor-giobufferedinputstream" title="Constructor">gio.BufferedInputStream</a></code>(),
-            or <code class="methodname"><a class="link" href="class-giobufferedinputstream.html#function-gio--buffered-input-stream-new-sized" title="gio.buffered_input_stream_new_sized">gio.buffered_input_stream_new_sized</a></code>()
-            to specify the buffer's size at construction.
-        </p><p>
-            To get the size of a buffer within a buffered input stream, use
-            <code class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--get-buffer-size" title="gio.BufferedInputStream.get_buffer_size">get_buffer_size</a></code>().
-            To change the size of a buffered input stream's buffer, use
-            <code class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--set-buffer-size" title="gio.BufferedInputStream.set_buffer_size">set_buffer_size</a></code>().
-            Note that the buffer's size cannot be reduced below the size of the data within the buffer.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giobufferedinputstream"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.BufferedInputStream</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>base_stream</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>base_stream</code></em> :</span></p></td><td>a
-                <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>.
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>
-                for the given base_stream.
-                </td></tr></tbody></table><p>
-            Creates a new <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>
-            from the given base_stream, with a buffer set to the default size (4 kilobytes).
-        </p></div><div class="refsect1" title="Methods"><a name="id449318"></a><h2>Methods</h2><div class="refsect2" title="gio.BufferedInputStream.fill"><a name="method-giobufferedinputstream--fill"></a><h3>gio.BufferedInputStream.fill</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">fill</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>count</code></strong> :</span></p></td><td>the number of bytes that will be read from the stream.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the number of bytes read into stream's buffer,
-                    up to count, or -1 on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">fill</code>() method tries to read count bytes
-                from the stream into the buffer. Will block during this read.
-            </p><p>
-                If count is zero, returns zero and does nothing. A value of count
-                larger than G_MAXSSIZE will cause a gio.ERROR_INVALID_ARGUMENT error.
-            </p><p>
-                On success, the number of bytes read into the buffer is returned. It
-                is not an error if this is not the same as the requested size, as it can
-                happen e.g. near the end of a file. Zero is returned on end of file
-                (or if count is zero), but never otherwise.
-            </p><p>
-                If count is -1 then the attempted read size is equal to the number
-                of bytes that are required to fill the buffer.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can
-                be cancelled by triggering the cancellable object from another thread.
-                If the operation was cancelled, the error gio.ERROR_CANCELLED will be
-                returned. If an operation was partially finished when the operation was
-                cancelled the partial result will be returned, without an error.
-            </p><p>
-                On error -1 is returned and error is set accordingly.
-            </p><p>
-                For the asynchronous, non-blocking, version of this function, see
-                <code class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--fill-async" title="gio.BufferedInputStream.fill_async">gio.BufferedInputStream.fill_async</a></code>().
-            </p></div><div class="refsect2" title="gio.BufferedInputStream.fill_async"><a name="method-giobufferedinputstream--fill-async"></a><h3>gio.BufferedInputStream.fill_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">fill_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>count</code></strong> :</span></p></td><td>the number of bytes that will be read from the stream.
-                  </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">fill_async</code>() method reads data into stream's
-                buffer asynchronously, up to count size. io_priority can be used to
-                prioritize reads.
-            </p><p>
-                For the synchronous version of this function, see
-                <code class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--fill" title="gio.BufferedInputStream.fill">gio.BufferedInputStream.fill</a></code>().
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be set
-            </p><p>
-                If count is -1 then the attempted read size is equal to the number of bytes
-                that are required to fill the buffer.
-            </p></div><div class="refsect2" title="gio.BufferedInputStream.fill_finish"><a name="method-giobufferedinputstream--fill-finish"></a><h3>gio.BufferedInputStream.fill_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">fill_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the size of the read stream, or -1 on an error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">fill_finish</code>() method finishes an asynchronous
-                file append operation started with
-                <code class="methodname"><a class="link" href="class-giobufferedinputstream.html#method-giobufferedinputstream--fill-async" title="gio.BufferedInputStream.fill_async">gio.BufferedInputStream.fill_async</a></code>().
-            </p></div><div class="refsect2" title="gio.BufferedInputStream.get_available"><a name="method-giobufferedinputstream--get-available"></a><h3>gio.BufferedInputStream.get_available</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_available</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>size of the available stream.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_available</code>() method gets the size of
-                the available data within the stream.
-            </p></div><div class="refsect2" title="gio.BufferedInputStream.get_buffer_size"><a name="method-giobufferedinputstream--get-buffer-size"></a><h3>gio.BufferedInputStream.get_buffer_size</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_buffer_size</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the current buffer size.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_buffer_size</code>() method gets the size
-                of the input buffer.
-            </p></div><div class="refsect2" title="gio.BufferedInputStream.read_byte"><a name="method-giobufferedinputstream--read-byte"></a><h3>gio.BufferedInputStream.read_byte</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_byte</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the byte read from the stream, or -1 on end of stream or error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_byte</code>() method tries to read a single
-                byte from the stream or the buffer. Will block during this read.
-            </p><p>
-                On success, the byte read from the stream is returned. On end of stream -1
-                is returned but it's not an exceptional error and error is not set.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can
-                be cancelled by triggering the cancellable object from another thread.
-                If the operation was cancelled, the error gio.ERROR_CANCELLED will be
-                returned. If an operation was partially finished when the operation was
-                cancelled the partial result will be returned, without an error.
-            </p><p>
-                On error -1 is returned and error is set accordingly.
-            </p></div><div class="refsect2" title="gio.BufferedInputStream.set_buffer_size"><a name="method-giobufferedinputstream--set-buffer-size"></a><h3>gio.BufferedInputStream.set_buffer_size</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_buffer_size</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>size</code></strong> :</span></p></td><td>the new buffer size.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_buffer_size</code>() method sets the size
-                of the internal buffer of stream to size, or to the size of the contents
-                of the buffer. The buffer can never be resized smaller than its current contents.
-            </p></div></div><div class="refsect1" title="Functions"><a name="id353937"></a><h2>Functions</h2><div class="refsect2" title="gio.buffered_input_stream_new_sized"><a name="function-gio--buffered-input-stream-new-sized"></a><h3>gio.buffered_input_stream_new_sized</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">buffered_input_stream_new_sized</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td><td>the requested buffer size.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A new
-                    <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">buffered_input_stream_new_sized</code>() function creates
-                a new <a class="link" href="class-giobufferedinputstream.html" title="gio.BufferedInputStream"><code class="classname">gio.BufferedInputStream</code></a>
-                from the given base_stream, with a buffer set to size.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gioasyncresult.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giobufferedoutputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.AsyncResult </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.BufferedOutputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giobufferedoutputstream.html b/docs/html/class-giobufferedoutputstream.html
deleted file mode 100644 (file)
index a77139f..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.BufferedOutputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giobufferedinputstream.html" title="gio.BufferedInputStream"><link rel="next" href="class-giocancellable.html" title="gio.Cancellable"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.BufferedOutputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giobufferedinputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giocancellable.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.BufferedOutputStream"><a name="class-giobufferedoutputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.BufferedOutputStream</h2><p>gio.BufferedOutputStream â€” Buffered Output Stream</p></div><div class="refsect1" title="Synopsis"><a name="id470769"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.BufferedOutputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-giofilteroutputstream.html" title="gio.FilterOutputStream">gio.FilterOutputStream</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giobufferedoutputstream.html#constructor-giobufferedoutputstream" title="Constructor">gio.BufferedOutputStream</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>base_stream</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedoutputstream.html#method-giobufferedoutputstream--get-auto-grow" title="gio.BufferedOutputStream.get_auto_grow">get_auto_grow</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedoutputstream.html#method-giobufferedoutputstream--get-buffer-size" title="gio.BufferedOutputStream.get_buffer_size">get_buffer_size</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedoutputstream.html#method-giobufferedoutputstream--set-auto-grow" title="gio.BufferedOutputStream.set_auto_grow">set_auto_grow</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>auto_grow</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedoutputstream.html#method-giobufferedoutputstream--set-buffer-size" title="gio.BufferedOutputStream.set_buffer_size">set_buffer_size</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span></span>)</code><br></pre></td></tr></table><pre class="programlisting">
-<span class="bold"><strong>Functions</strong></span>
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giobufferedoutputstream.html#function-gio--buffered-output-stream-new-sized" title="gio.buffered_output_stream_new_sized">gio.buffered_output_stream_new_sized</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span></span>)</code></pre></div><div class="refsect1" title="Ancestry"><a name="id435166"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giooutputstream.html" title="gio.OutputStream">gio.OutputStream</a>
-    +-- <a class="link" href="class-giofilteroutputstream.html" title="gio.FilterOutputStream">gio.FilterOutputStream</a>
-      +-- <a class="link" href="class-giobufferedoutputstream.html" title="gio.BufferedOutputStream">gio.BufferedOutputStream</a>
-</pre></div><div class="refsect1" title="gio.BufferedOutputStream Properties"><a name="properties-giobufferedoutputstream"></a><h2>gio.BufferedOutputStream Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"auto-grow"</td><td valign="top">Read - Write</td><td valign="top">Whether the buffer should automatically grow. Default value: <code class="literal">False</code>.</td></tr><tr valign="top"><td valign="top">"buffer-size"</td><td valign="top">Read - Write - Construct</td><td valign="top">The size of the backend buffer. Allowed values: &gt;= 1. Default value: 4096.</td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="Description"><a name="id367442"></a><h2>Description</h2><p>
-            <a class="link" href="class-giobufferedoutputstream.html" title="gio.BufferedOutputStream"><code class="classname">gio.BufferedOutputStream</code></a>
-            implements <a class="link" href="class-giofilteroutputstream.html" title="gio.FilterOutputStream"><code class="classname">gio.FilterOutputStream</code></a>
-            and provides for buffered writes.
-        </p><p>
-            By default,
-            <a class="link" href="class-giobufferedoutputstream.html" title="gio.BufferedOutputStream"><code class="classname">gio.BufferedOutputStream</code></a>'s
-            buffer size is set at 4 kilobytes.
-        </p><p>
-            To create a buffered output stream, use
-            <code class="methodname"><a class="link" href="class-giobufferedoutputstream.html#constructor-giobufferedoutputstream" title="Constructor">gio.BufferedOutputStream</a></code>(),
-            or <code class="methodname"><a class="link" href="class-giobufferedoutputstream.html#function-gio--buffered-output-stream-new-sized" title="gio.buffered_output_stream_new_sized">gio.buffered_output_stream_new_sized</a></code>()
-            to specify the buffer's size at construction.
-        </p><p>
-            To get the size of a buffer within a buffered output stream, use
-            <code class="methodname"><a class="link" href="class-giobufferedoutputstream.html#method-giobufferedoutputstream--get-buffer-size" title="gio.BufferedOutputStream.get_buffer_size">gio.BufferedOutputStream.get_buffer_size</a></code>().
-            To change the size of a buffered output stream's buffer, use
-            <code class="methodname"><a class="link" href="class-giobufferedoutputstream.html#method-giobufferedoutputstream--set-buffer-size" title="gio.BufferedOutputStream.set_buffer_size">gio.BufferedOutputStream.set_buffer_size</a></code>().
-            Note that the buffer's size cannot be reduced below the size of the data within the buffer.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giobufferedoutputstream"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.BufferedOutputStream</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>base_stream</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>base_stream</code></em> :</span></p></td><td>a
-                <a class="link" href="class-giooutputstream.html" title="gio.OutputStream"><code class="classname">gio.OutputStream</code></a>.
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giooutputstream.html" title="gio.OutputStream"><code class="classname">gio.OutputStream</code></a>
-                for the given base_stream.
-                </td></tr></tbody></table><p>
-            Creates a new buffered output stream for a base stream.
-        </p></div><div class="refsect1" title="Methods"><a name="id442713"></a><h2>Methods</h2><div class="refsect2" title="gio.BufferedOutputStream.get_auto_grow"><a name="method-giobufferedoutputstream--get-auto-grow"></a><h3>gio.BufferedOutputStream.get_auto_grow</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_auto_grow</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the stream's
-                   buffer automatically grows, <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_auto_grow</code>() method checks if the
-               buffer automatically grows as data is added.
-            </p></div><div class="refsect2" title="gio.BufferedOutputStream.get_buffer_size"><a name="method-giobufferedoutputstream--get-buffer-size"></a><h3>gio.BufferedOutputStream.get_buffer_size</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_buffer_size</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the current buffer size.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_buffer_size</code>() method gets the size
-                of the buffer in the stream.
-            </p></div><div class="refsect2" title="gio.BufferedOutputStream.set_auto_grow"><a name="method-giobufferedoutputstream--set-auto-grow"></a><h3>gio.BufferedOutputStream.set_auto_grow</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_auto_grow</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>auto_grow</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>auto_grow</code></strong> :</span></p></td><td>a boolean.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_auto_grow</code>() method sets whether or not
-               the stream's buffer should automatically grow. If auto_grow is true,
-               then each write will just make the buffer larger, and you must manually
-               flush the buffer to actually write out the data to the underlying stream.
-            </p></div><div class="refsect2" title="gio.BufferedOutputStream.set_buffer_size"><a name="method-giobufferedoutputstream--set-buffer-size"></a><h3>gio.BufferedOutputStream.set_buffer_size</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_buffer_size</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>size</code></strong> :</span></p></td><td>the new buffer size.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_buffer_size</code>() method sets the size of
-               the internal buffer to size.
-            </p></div></div><div class="refsect1" title="Functions"><a name="id416016"></a><h2>Functions</h2><div class="refsect2" title="gio.buffered_output_stream_new_sized"><a name="function-gio--buffered-output-stream-new-sized"></a><h3>gio.buffered_output_stream_new_sized</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">buffered_output_stream_new_sized</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td><td>the requested buffer size.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A new
-                    <a class="link" href="class-giooutputstream.html" title="gio.OutputStream"><code class="classname">gio.OutputStream</code></a>
-                   with an internal buffer set to size..
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">buffered_output_stream_new_sized</code>() function creates
-                a new <a class="link" href="class-giobufferedoutputstream.html" title="gio.BufferedOutputStream"><code class="classname">gio.BufferedOutputStream</code></a>
-                from the given base_stream, with a buffer set to size.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giobufferedinputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giocancellable.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.BufferedInputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.Cancellable</td></tr></table></div></body></html>
diff --git a/docs/html/class-giocancellable.html b/docs/html/class-giocancellable.html
deleted file mode 100644 (file)
index 54c8bf5..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.Cancellable</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giobufferedoutputstream.html" title="gio.BufferedOutputStream"><link rel="next" href="class-giodatainputstream.html" title="gio.DataInputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.Cancellable</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giobufferedoutputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giodatainputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.Cancellable"><a name="class-giocancellable"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.Cancellable</h2><p>gio.Cancellable â€” Thread-safe Operation Cancellation Stack.</p></div><div class="refsect1" title="Synopsis"><a name="id312088"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.Cancellable</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giocancellable.html#constructor-giocancellable" title="Constructor">gio.Cancellable</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giocancellable.html#method-giocancellable--cancel" title="gio.Cancellable.cancel">cancel</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giocancellable.html#method-giocancellable--get-fd" title="gio.Cancellable.get_fd">get_fd</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giocancellable.html#method-giocancellable--is-cancelled" title="gio.Cancellable.is_cancelled">is_cancelled</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giocancellable.html#method-giocancellable--pop-current" title="gio.Cancellable.pop_current">pop_current</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giocancellable.html#method-giocancellable--push-current" title="gio.Cancellable.push_current">push_current</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giocancellable.html#method-giocancellable--reset" title="gio.Cancellable.reset">reset</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giocancellable.html#method-giocancellable--set-error-if-cancelled" title="gio.Cancellable.set_error_if_cancelled">set_error_if_cancelled</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table><pre class="programlisting">
-<span class="bold"><strong>Functions</strong></span>
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giocancellable.html#function-gio--cancellable-get-current" title="gio.cancellable_get_current">gio.cancellable_get_current</a></span>(<span class="methodparam"></span>)</code></pre></div><div class="refsect1" title="Ancestry"><a name="id459303"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giocancellable.html" title="gio.Cancellable">gio.Cancellable</a>
-</pre></div><div class="refsect1" title="Description"><a name="id440909"></a><h2>Description</h2><p>
-            The <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-            is a thread-safe operation cancellation stack used throughout GIO to allow for
-            cancellation of synchronous and asynchronous operations.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giocancellable"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.Cancellable</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>.
-                </td></tr></tbody></table><p>
-            Creates a new <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a> object.
-        </p><p>
-            Applications that want to start one or more operations that should be cancellable should create a
-            <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-            and pass it to the operations. 
-        </p><p>
-            One <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-            can be used in multiple consecutive operations, but not in multiple concurrent operations.
-        </p></div><div class="refsect1" title="Methods"><a name="id386832"></a><h2>Methods</h2><div class="refsect2" title="gio.Cancellable.cancel"><a name="method-giocancellable--cancel"></a><h3>gio.Cancellable.cancel</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">cancel</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody></tbody></table><p>
-                The <code class="methodname">cancel</code>() method will set cancellable to cancelled,
-                and will emit the "cancelled" signal. (However, see the warning about race conditions
-                in the documentation for that signal if you are planning to connect to it.) 
-            </p><p>
-                This function is thread-safe. In other words, you can safely call it from a thread
-                other than the one running the operation that was passed the cancellable. 
-            </p><p>
-                The convention within gio is that cancelling an asynchronous operation causes it
-                to complete asynchronously. That is, if you cancel the operation from the same thread
-                in which it is running, then the operation's GAsyncReadyCallback will not be invoked
-                until the application returns to the main loop.
-            </p></div><div class="refsect2" title="gio.Cancellable.get_fd"><a name="method-giocancellable--get-fd"></a><h3>gio.Cancellable.get_fd</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_fd</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A valid file descriptor. -1 if the file descriptor
-                is not supported, or on errors.</td></tr></tbody></table><p>
-                The <code class="methodname">get_fd</code>() method gets the file descriptor
-                for a cancellable job. This can be used to implement cancellable operations
-                on Unix systems. The returned fd will turn readable when cancellable is cancelled. 
-            </p></div><div class="refsect2" title="gio.Cancellable.is_cancelled"><a name="method-giocancellable--is-cancelled"></a><h3>gio.Cancellable.is_cancelled</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">is_cancelled</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if cancellable is cancelled,
-                <code class="literal">False</code> if called with <code class="literal">None</code> or if
-                item is not cancelled. </td></tr></tbody></table><p>
-                The <code class="methodname">get_fd</code>() method gets the file descriptor
-                for a cancellable job. This can be used to implement cancellable operations
-                on Unix systems. The returned fd will turn readable when cancellable is cancelled. 
-            </p></div><div class="refsect2" title="gio.Cancellable.pop_current"><a name="method-giocancellable--pop-current"></a><h3>gio.Cancellable.pop_current</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">pop_current</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody></tbody></table><p>
-                The <code class="methodname">pop_current</code>() method pops cancellable off
-                the cancellable stack (verifying that cancellable is on the top of the stack).
-            </p></div><div class="refsect2" title="gio.Cancellable.push_current"><a name="method-giocancellable--push-current"></a><h3>gio.Cancellable.push_current</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">push_current</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody></tbody></table><p>
-                The <code class="methodname">push_current</code>() method pushes cancellable onto
-                the cancellable stack. The current cancllable can then be recieved using
-                <code class="methodname"><a class="link" href="class-giocancellable.html#function-gio--cancellable-get-current" title="gio.cancellable_get_current">gio.cancellable_get_current</a></code>(). 
-            </p></div><div class="refsect2" title="gio.Cancellable.reset"><a name="method-giocancellable--reset"></a><h3>gio.Cancellable.reset</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">reset</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody></tbody></table><p>
-                The <code class="methodname">reset</code>() method resets cancellable to its uncancelled state.
-            </p></div><div class="refsect2" title="gio.Cancellable.set_error_if_cancelled"><a name="method-giocancellable--set-error-if-cancelled"></a><h3>gio.Cancellable.set_error_if_cancelled</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_error_if_cancelled</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if cancellable was cancelled,
-                    <code class="literal">False</code> if it was not.</td></tr></tbody></table><p>
-                The <code class="methodname">set_error_if_cancelled</code>() method, if the cancellable
-                is cancelled, sets the error to notify that the operation was cancelled.
-            </p></div></div><div class="refsect1" title="Functions"><a name="id432204"></a><h2>Functions</h2><div class="refsect2" title="gio.cancellable_get_current"><a name="function-gio--cancellable-get-current"></a><h3>gio.cancellable_get_current</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">cancellable_get_current</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    from the top of the stack, or <code class="literal">None</code> if the stack is empty.</td></tr></tbody></table><p>
-                The <code class="methodname">cancellable_get_current</code>() function gets the top cancellable from the stack.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giobufferedoutputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giodatainputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.BufferedOutputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.DataInputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giodatainputstream.html b/docs/html/class-giodatainputstream.html
deleted file mode 100644 (file)
index 67fb819..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.DataInputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giocancellable.html" title="gio.Cancellable"><link rel="next" href="class-giodataoutputstream.html" title="gio.DataOutputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.DataInputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giocancellable.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giodataoutputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.DataInputStream"><a name="class-giodatainputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.DataInputStream</h2><p>gio.DataInputStream â€” Data Input Stream</p></div><div class="refsect1" title="Synopsis"><a name="id464053"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.DataInputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-giobufferedinputstream.html" title="gio.BufferedInputStream">gio.BufferedInputStream</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giodatainputstream.html#constructor-giodatainputstream" title="Constructor">gio.DataInputStream</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>base_stream</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--get-byte-order" title="gio.DataInputStream.get_byte_order">get_byte_order</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--get-newline-type" title="gio.DataInputStream.get_newline_type">get_newline_type</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-byte" title="gio.DataInputStream.read_byte">read_byte</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-int16" title="gio.DataInputStream.read_int16">read_int16</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-int32" title="gio.DataInputStream.read_int32">read_int32</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-int64" title="gio.DataInputStream.read_int64">read_int64</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-line" title="gio.DataInputStream.read_line">read_line</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-line-async" title="gio.DataInputStream.read_line_async">read_line_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-line-finish" title="gio.DataInputStream.read_line_finish">read_line_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-uint16" title="gio.DataInputStream.read_uint16">read_uint16</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-uint32" title="gio.DataInputStream.read_uint32">read_uint32</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-uint64" title="gio.DataInputStream.read_uint64">read_uint64</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-until" title="gio.DataInputStream.read_until">read_until</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>stop_chars</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-until-async" title="gio.DataInputStream.read_until_async">read_until_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>stop_chars</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-until-finish" title="gio.DataInputStream.read_until_finish">read_until_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--set-byte-order" title="gio.DataInputStream.set_byte_order">set_byte_order</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>order</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--set-newline-type" title="gio.DataInputStream.set_newline_type">set_newline_type</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id439747"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-gioinputstream.html" title="gio.InputStream">gio.InputStream</a>
-    +-- <a class="link" href="class-giofilterinputstream.html" title="gio.FilterInputStream">gio.FilterInputStream</a>
-      +-- <a class="link" href="class-giobufferedinputstream.html" title="gio.BufferedInputStream">gio.BufferedInputStream</a>
-        +-- <a class="link" href="class-giodatainputstream.html" title="gio.DataInputStream">gio.DataInputStream</a>
-</pre></div><div class="refsect1" title="gio.DataInputStream Properties"><a name="properties-giodatainputstream"></a><h2>gio.DataInputStream Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"byte-order"</td><td valign="top">Read - Write</td><td valign="top">The byte order. Default value: gio.DATA_STREAM_BYTE_ORDER_BIG_ENDIAN.</td></tr><tr valign="top"><td valign="top">"newline-type"</td><td valign="top">Read - Write</td><td valign="top">The accepted types of line ending. Default value: gio.DATA_STREAM_NEWLINE_TYPE_LF.</td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="Description"><a name="id464009"></a><h2>Description</h2><p>
-            <a class="link" href="class-giodatainputstream.html" title="gio.DataInputStream"><code class="classname">gio.DataInputStream</code></a>
-            implements <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>
-            and includes functions for reading structured data directly from a binary input stream.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giodatainputstream"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.DataInputStream</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>base_stream</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>base_stream</code></em> :</span></p></td><td>a
-                <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>.
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giodatainputstream.html" title="gio.DataInputStream"><code class="classname">gio.DataInputStream</code></a>
-                </td></tr></tbody></table><p>
-            Creates a new <a class="link" href="class-giodatainputstream.html" title="gio.DataInputStream"><code class="classname">gio.DataInputStream</code></a>
-            from the given base_stream.
-        </p></div><div class="refsect1" title="Methods"><a name="id433976"></a><h2>Methods</h2><div class="refsect2" title="gio.DataInputStream.get_byte_order"><a name="method-giodatainputstream--get-byte-order"></a><h3>gio.DataInputStream.get_byte_order</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_byte_order</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the stream's current
-                    <a class="xref" href="gio-constants.html#gio-data-stream-byte-order-constants" title="Gio Data Stream Byte Order Constants">Gio Data Stream Byte Order Constants</a>.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_byte_order</code>() method gets the byte
-                order for the data input stream.
-            </p></div><div class="refsect2" title="gio.DataInputStream.get_newline_type"><a name="method-giodatainputstream--get-newline-type"></a><h3>gio.DataInputStream.get_newline_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_newline_type</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><a class="xref" href="gio-constants.html#gio-data-stream-newline-type-constants" title="Gio Data Stream Newline Type Constants">Gio Data Stream Newline Type Constants</a>
-                    for the given stream.                    
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_newline_type</code>() method gets the current
-                newline type for the stream.
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_byte"><a name="method-giodatainputstream--read-byte"></a><h3>gio.DataInputStream.read_byte</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_byte</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an unsigned 8-bit/1-byte value read from the
-                    stream or 0 if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_byte</code>() method reads an unsigned 8-bit/1-byte value from stream.
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_int16"><a name="method-giodatainputstream--read-int16"></a><h3>gio.DataInputStream.read_int16</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_int16</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a signed 16-bit/2-byte value read from stream or 0 if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_int16</code>() method reads a 16-bit/2-byte value from stream.
-            </p><p>
-                In order to get the correct byte order for this read operation, see
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</PYGTKDOCLINK></code>()
-                and
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</PYGTKDOCLINK></code>().
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_int32"><a name="method-giodatainputstream--read-int32"></a><h3>gio.DataInputStream.read_int32</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_int32</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a signed 32-bit/4-byte value read from the stream
-                    or 0 if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_int32</code>() method reads a signed 32-bit/4-byte value from stream.
-            </p><p>
-                In order to get the correct byte order for this read operation, see
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</PYGTKDOCLINK></code>()
-                and
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</PYGTKDOCLINK></code>().
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_int64"><a name="method-giodatainputstream--read-int64"></a><h3>gio.DataInputStream.read_int64</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_int64</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a signed 64-bit/8-byte value read from the stream
-                    or 0 if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_int64</code>() method reads a signed 64-bit/8-byte value from stream.
-            </p><p>
-                In order to get the correct byte order for this read operation, see
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</PYGTKDOCLINK></code>()
-                and
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</PYGTKDOCLINK></code>().
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_line"><a name="method-giodatainputstream--read-line"></a><h3>gio.DataInputStream.read_line</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_line</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string with the line that was read in (without the newlines).
-                    Set length to a gsize to get the length of the read line. On an error, it will return
-                    <code class="literal">None</code> and error will be set. If there's no content to read, it
-                    will still return <code class="literal">None</code>, but error won't be set.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_line</code>() reads a line from the data input stream.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can
-                be cancelled by triggering the cancellable object from another thread.
-                If the operation was cancelled, the error gio.ERROR_CANCELLED will be
-                returned. If an operation was partially finished when the operation was
-                cancelled the partial result will be returned, without an error.
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_line_async"><a name="method-giodatainputstream--read-line-async"></a><h3>gio.DataInputStream.read_line_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_line_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_line_async</code>() method is the asynchronous version of
-                <code class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-line" title="gio.DataInputStream.read_line">gio.DataInputStream.read_line</a></code>().
-                It is an error to have two outstanding calls to this function.
-            </p><p>
-                For the synchronous version of this function, see
-                <code class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-line" title="gio.DataInputStream.read_line">gio.DataInputStream.read_line</a></code>().
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be set
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_line_finish"><a name="method-giodatainputstream--read-line-finish"></a><h3>gio.DataInputStream.read_line_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_line_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string with the line that was read in (without the newlines).
-                    On an error, it will return <code class="literal">None</code> and error will be set.
-                    If there's no content to read, it will still return <code class="literal">None</code>,
-                    but error won't be set.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_line_finish</code>() method finishes an asynchronous
-                file append operation started with
-                <code class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-line-async" title="gio.DataInputStream.read_line_async">gio.DataInputStream.read_line_async</a></code>().
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_uint16"><a name="method-giodatainputstream--read-uint16"></a><h3>gio.DataInputStream.read_uint16</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_uint16</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a signed 16-bit/2-byte value read from stream or 0 if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_uint16</code>() method reads a 16-bit/2-byte value from stream.
-            </p><p>
-                In order to get the correct byte order for this read operation, see
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</PYGTKDOCLINK></code>()
-                and
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</PYGTKDOCLINK></code>().
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_uint32"><a name="method-giodatainputstream--read-uint32"></a><h3>gio.DataInputStream.read_uint32</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_uint32</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a signed 32-bit/4-byte value read from the stream
-                    or 0 if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_uint32</code>() method reads a signed 32-bit/4-byte value from stream.
-            </p><p>
-                In order to get the correct byte order for this read operation, see
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</PYGTKDOCLINK></code>()
-                and
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</PYGTKDOCLINK></code>().
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_uint64"><a name="method-giodatainputstream--read-uint64"></a><h3>gio.DataInputStream.read_uint64</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_uint64</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a signed 64-bit/8-byte value read from the stream
-                    or 0 if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_uint64</code>() method reads a signed 64-bit/8-byte value from stream.
-            </p><p>
-                In order to get the correct byte order for this read operation, see
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</PYGTKDOCLINK></code>()
-                and
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</PYGTKDOCLINK></code>().
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_until"><a name="method-giodatainputstream--read-until"></a><h3>gio.DataInputStream.read_until</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_until</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>stop_chars</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>stop_chars</code></strong> :</span></p></td><td>characters to terminate the read.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string with the data that was read before encountering
-                    any of the stop characters. This function will return NULL on an error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_until</code>() reads a string from the data input
-                stream, up to the first occurrence of any of the stop characters.
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_until_async"><a name="method-giodatainputstream--read-until-async"></a><h3>gio.DataInputStream.read_until_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_until_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>stop_chars</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>stop_chars</code></strong> :</span></p></td><td>characters to terminate the read.
-                  </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_until_async</code>() method it's the asynchronous version of
-                <code class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-until" title="gio.DataInputStream.read_until">gio.DataInputStream.read_until</a></code>().
-                It is an error to have two outstanding calls to this function.
-            </p><p>
-                For the synchronous version of this function, see
-                <code class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-until" title="gio.DataInputStream.read_until">gio.DataInputStream.read_until</a></code>().
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be set
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-until-finish" title="gio.DataInputStream.read_until_finish">gio.DataInputStream.read_until_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.DataInputStream.read_until_finish"><a name="method-giodatainputstream--read-until-finish"></a><h3>gio.DataInputStream.read_until_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_until_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string with the data that was read before encountering
-                    any of the stop characters. This function will return <code class="literal">None</code> on an error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_until_finish</code>() method finishes an asynchronous
-                file append operation started with
-                <code class="methodname"><a class="link" href="class-giodatainputstream.html#method-giodatainputstream--read-until-async" title="gio.DataInputStream.read_until_async">gio.DataInputStream.read_until_async</a></code>().
-            </p></div><div class="refsect2" title="gio.DataInputStream.set_byte_order"><a name="method-giodatainputstream--set-byte-order"></a><h3>gio.DataInputStream.set_byte_order</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_byte_order</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>order</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>order</code></strong> :</span></p></td><td>a
-                  <a class="xref" href="gio-constants.html#gio-data-stream-byte-order-constants" title="Gio Data Stream Byte Order Constants">Gio Data Stream Byte Order Constants</a> to set.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_byte_order</code>() method sets the byte order for
-                the given stream. All subsequent reads from the stream will be read in the given order.
-            </p></div><div class="refsect2" title="gio.DataInputStream.set_newline_type"><a name="method-giodatainputstream--set-newline-type"></a><h3>gio.DataInputStream.set_newline_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_newline_type</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>type</code></strong> :</span></p></td><td>a
-                  <a class="xref" href="gio-constants.html#gio-data-stream-newline-type-constants" title="Gio Data Stream Newline Type Constants">Gio Data Stream Newline Type Constants</a> to set.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_newline_type</code>() method sets the newline type for the stream.
-            </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
-                Note that using gio.DATA_STREAM_NEWLINE_TYPE_ANY is slightly unsafe. If a
-                read chunk ends in "CR" we must read an additional byte to know if this is
-                "CR" or "CR LF", and this might block if there is no more data availible.
-            </div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giocancellable.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giodataoutputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.Cancellable </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.DataOutputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giodataoutputstream.html b/docs/html/class-giodataoutputstream.html
deleted file mode 100644 (file)
index a681efe..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.DataOutputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giodatainputstream.html" title="gio.DataInputStream"><link rel="next" href="class-giodrive.html" title="gio.Drive"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.DataOutputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giodatainputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giodrive.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.DataOutputStream"><a name="class-giodataoutputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.DataOutputStream</h2><p>gio.DataOutputStream â€” Data Output Stream</p></div><div class="refsect1" title="Synopsis"><a name="id432940"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.DataOutputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-giobufferedoutputstream.html" title="gio.BufferedOutputStream">gio.BufferedOutputStream</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giodataoutputstream.html#constructor-giodataoutputstream" title="Constructor">gio.DataOutputStream</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>base_stream</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodataoutputstream.html#method-giodataoutputstream--get-byte-order" title="gio.DataOutputStream.get_byte_order">get_byte_order</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodataoutputstream.html#method-giodataoutputstream--put-byte" title="gio.DataOutputStream.put_byte">put_byte</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodataoutputstream.html#method-giodataoutputstream--put-int16" title="gio.DataOutputStream.put_int16">put_int16</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodataoutputstream.html#method-giodataoutputstream--put-int32" title="gio.DataOutputStream.put_int32">put_int32</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodataoutputstream.html#method-giodataoutputstream--put-int64" title="gio.DataOutputStream.put_int64">put_int64</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodataoutputstream.html#method-giodataoutputstream--put-string" title="gio.DataOutputStream.put_string">put_string</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodataoutputstream.html#method-giodataoutputstream--put-uint16" title="gio.DataOutputStream.put_uint16">put_uint16</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodataoutputstream.html#method-giodataoutputstream--put-uint32" title="gio.DataOutputStream.put_uint32">put_uint32</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodataoutputstream.html#method-giodataoutputstream--put-uint64" title="gio.DataOutputStream.put_uint64">put_uint64</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodataoutputstream.html#method-giodataoutputstream--set-byte-order" title="gio.DataOutputStream.set_byte_order">set_byte_order</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>order</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id396268"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giooutputstream.html" title="gio.OutputStream">gio.OutputStream</a>
-    +-- <a class="link" href="class-giofilteroutputstream.html" title="gio.FilterOutputStream">gio.FilterOutputStream</a>
-      +-- <a class="link" href="class-giobufferedoutputstream.html" title="gio.BufferedOutputStream">gio.BufferedOutputStream</a>
-        +-- <a class="link" href="class-giodataoutputstream.html" title="gio.DataOutputStream">gio.DataOutputStream</a>
-</pre></div><div class="refsect1" title="gio.DataOutputStream Properties"><a name="properties-giodataoutputstream"></a><h2>gio.DataOutputStream Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"byte-order"</td><td valign="top">Read - Write</td><td valign="top">Determines the byte ordering that is used when writing
-                           multi-byte entities (such as integers) to the stream.
-                           Default value: gio.DATA_STREAM_BYTE_ORDER_BIG_ENDIAN.</td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="Description"><a name="id409238"></a><h2>Description</h2><p>
-            <a class="link" href="class-giodataoutputstream.html" title="gio.DataOutputStream"><code class="classname">gio.DataOutputStream</code></a>
-            implements <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>
-            and includes functions for writing data directly to an output stream.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giodataoutputstream"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.DataOutputStream</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>base_stream</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>base_stream</code></em> :</span></p></td><td>a
-                <a class="link" href="class-giooutputstream.html" title="gio.OutputStream"><code class="classname">gio.OutputStream</code></a>.
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giodataoutputstream.html" title="gio.DataOutputStream"><code class="classname">gio.DataOutputStream</code></a>
-                </td></tr></tbody></table><p>
-            Creates a new <a class="link" href="class-giodataoutputstream.html" title="gio.DataOutputStream"><code class="classname">gio.DataOutputStream</code></a>
-            from the given base_stream.
-        </p></div><div class="refsect1" title="Methods"><a name="id441772"></a><h2>Methods</h2><div class="refsect2" title="gio.DataOutputStream.get_byte_order"><a name="method-giodataoutputstream--get-byte-order"></a><h3>gio.DataOutputStream.get_byte_order</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_byte_order</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the stream's current
-                    <a class="xref" href="gio-constants.html#gio-data-stream-byte-order-constants" title="Gio Data Stream Byte Order Constants">Gio Data Stream Byte Order Constants</a>.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_byte_order</code>() method gets the byte
-                order for the stream.
-            </p></div><div class="refsect2" title="gio.DataOutputStream.put_byte"><a name="method-giodataoutputstream--put-byte"></a><h3>gio.DataOutputStream.put_byte</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">put_byte</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>data</code></strong> :</span></p></td><td>a char.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if data was successfully added to the stream. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">put_byte</code>() method puts a byte into the output stream.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataOutputStream.put_int16"><a name="method-giodataoutputstream--put-int16"></a><h3>gio.DataOutputStream.put_int16</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">put_int16</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>data</code></strong> :</span></p></td><td>a gint16.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if data was successfully added to the stream. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">put_int16</code>() method puts a signed 16-bit integer into the output stream.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataOutputStream.put_int32"><a name="method-giodataoutputstream--put-int32"></a><h3>gio.DataOutputStream.put_int32</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">put_int32</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>data</code></strong> :</span></p></td><td>a gint32.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if data was successfully added to the stream.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">put_int32</code>() method puts a signed 32-bit integer into the output stream.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataOutputStream.put_int64"><a name="method-giodataoutputstream--put-int64"></a><h3>gio.DataOutputStream.put_int64</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">put_int64</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>data</code></strong> :</span></p></td><td>a gint64.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if data was successfully added to the stream.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">put_int64</code>() method puts a signed 64-bit integer into the output stream.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataOutputStream.put_string"><a name="method-giodataoutputstream--put-string"></a><h3>gio.DataOutputStream.put_string</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">put_string</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>str</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>str</code></strong> :</span></p></td><td>a string.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if string was successfully added to the stream. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">put_string</code>() method puts a string into the output stream.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataOutputStream.put_uint16"><a name="method-giodataoutputstream--put-uint16"></a><h3>gio.DataOutputStream.put_uint16</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">put_uint16</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>data</code></strong> :</span></p></td><td>a guint16.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if data was successfully added to the stream. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">put_uint16</code>() method puts an unsigned 16-bit integer into the output stream.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataOutputStream.put_uint32"><a name="method-giodataoutputstream--put-uint32"></a><h3>gio.DataOutputStream.put_uint32</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">put_uint32</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>data</code></strong> :</span></p></td><td>a guint32.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if data was successfully added to the stream.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">put_uint32</code>() method puts an unsigned 32-bit integer into the output stream.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataOutputStream.put_uint64"><a name="method-giodataoutputstream--put-uint64"></a><h3>gio.DataOutputStream.put_uint64</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">put_uint64</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>data</code></strong> :</span></p></td><td>a guint64.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if data was successfully added to the stream.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">put_uint64</code>() method puts an unsigned 64-bit integer into the output stream.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.DataOutputStream.set_byte_order"><a name="method-giodataoutputstream--set-byte-order"></a><h3>gio.DataOutputStream.set_byte_order</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_byte_order</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>order</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>order</code></strong> :</span></p></td><td>a
-                  <a class="xref" href="gio-constants.html#gio-data-stream-byte-order-constants" title="Gio Data Stream Byte Order Constants">Gio Data Stream Byte Order Constants</a> to set.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_byte_order</code>() method sets the byte order for
-                the given stream. All subsequent reads from the stream will be read in the given order.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giodatainputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giodrive.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.DataInputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.Drive</td></tr></table></div></body></html>
diff --git a/docs/html/class-giodrive.html b/docs/html/class-giodrive.html
deleted file mode 100644 (file)
index be54893..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.Drive</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giodataoutputstream.html" title="gio.DataOutputStream"><link rel="next" href="class-gioemblem.html" title="gio.Emblem"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.Drive</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giodataoutputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-gioemblem.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.Drive"><a name="class-giodrive"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.Drive</h2><p>gio.Drive â€” Virtual File System drive management.</p></div><div class="refsect1" title="Synopsis"><a name="id439146"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.Drive</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--can-eject" title="gio.Drive.can_eject">can_eject</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--can-poll-for-media" title="gio.Drive.can_poll_for_media">can_poll_for_media</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--eject" title="gio.Drive.eject">eject</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_UNMOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--eject-finish" title="gio.Drive.eject_finish">eject_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--enumerate-identifiers" title="gio.Drive.enumerate_identifiers">enumerate_identifiers</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--get-icon" title="gio.Drive.get_icon">get_icon</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--get-identifier" title="gio.Drive.get_identifier">get_identifier</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--get-name" title="gio.Drive.get_name">get_name</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--get-volumes" title="gio.Drive.get_volumes">get_volumes</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--has-media" title="gio.Drive.has_media">has_media</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--has-volumes" title="gio.Drive.has_volumes">has_volumes</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--is-media-check-automatic" title="gio.Drive.is_media_check_automatic">is_media_check_automatic</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--is-media-removable" title="gio.Drive.is_media_removable">is_media_removable</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--poll-for-media" title="gio.Drive.poll_for_media">poll_for_media</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--poll-for-media-finish" title="gio.Drive.poll_for_media_finish">poll_for_media_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id440047"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a>
-  +-- <a class="link" href="class-giodrive.html" title="gio.Drive">gio.Drive</a>
-</pre></div><div class="refsect1" title="Prerequisites"><a name="id408094"></a><h2>Prerequisites</h2><p>
-            <a class="link" href="class-giodrive.html" title="gio.Drive"><code class="classname">gio.Drive</code></a> requires
-            <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>
-        </p></div><div class="refsect1" title="Description"><a name="id412009"></a><h2>Description</h2><p>
-            <a class="link" href="class-giodrive.html" title="gio.Drive"><code class="classname">gio.Drive</code></a>
-            - this represent a piece of hardware connected to the machine. Its generally
-            only created for removable hardware or hardware with removable media. 
-        </p><p>
-            <a class="link" href="class-giodrive.html" title="gio.Drive"><code class="classname">gio.Drive</code></a>
-            is a container class for GVolume objects that stem from the same piece of media.
-            As such, <a class="link" href="class-giodrive.html" title="gio.Drive"><code class="classname">gio.Drive</code></a>
-            abstracts a drive with (or without) removable media and provides operations for
-            querying whether media is available, determing whether media change is automatically
-            detected and ejecting the media. 
-        </p><p>
-            If the <a class="link" href="class-giodrive.html" title="gio.Drive"><code class="classname">gio.Drive</code></a>
-            reports that media isn't automatically detected, one can poll for media; typically
-            one should not do this periodically as a poll for media operation is potententially
-            expensive and may spin up the drive creating noise. 
-        </p><p>
-            For porting from GnomeVFS note that there is no equivalent of
-            <a class="link" href="class-giodrive.html" title="gio.Drive"><code class="classname">gio.Drive</code></a>
-            in that API.
-        </p></div><div class="refsect1" title="Methods"><a name="id431819"></a><h2>Methods</h2><div class="refsect2" title="gio.Drive.can_eject"><a name="method-giodrive--can-eject"></a><h3>gio.Drive.can_eject</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">can_eject</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the drive can be ejected,
-                    <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">can_eject</code>() method checks if a drive can be ejected.
-            </p></div><div class="refsect2" title="gio.Drive.can_poll_for_media"><a name="method-giodrive--can-poll-for-media"></a><h3>gio.Drive.can_poll_for_media</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">can_poll_for_media</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the drive can be polled
-                    for media changes, <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">can_poll_for_media</code>() method checks if a drive
-                can be polled for media changes.
-            </p></div><div class="refsect2" title="gio.Drive.eject"><a name="method-giodrive--eject"></a><h3>gio.Drive.eject</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">eject</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_UNMOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>callback</code></strong> :</span></p></td><td>A GAsyncReadyCallback to call when the request is satisfied.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>flags</code></strong> :</span></p></td><td>flags affecting the unmount if required for eject.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>user_data</code></strong> :</span></p></td><td>The data to pass to callback function.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">eject</code>() method asynchronously ejects a drive. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--eject-finish" title="gio.Drive.eject_finish">gio.Drive.eject_finish</a></code>()
-                to obtain the result of the operation.
-            </p></div><div class="refsect2" title="gio.Drive.eject_finish"><a name="method-giodrive--eject-finish"></a><h3>gio.Drive.eject_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">eject_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the drive has been ejected
-                    successfully, <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">eject_finish</code>() method finishes ejecting a drive.
-            </p></div><div class="refsect2" title="gio.Drive.enumerate_identifiers"><a name="method-giodrive--enumerate-identifiers"></a><h3>gio.Drive.enumerate_identifiers</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">enumerate_identifiers</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of strings containing kinds of identifiers.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">enumerate_identifiers</code>() method gets the kinds
-                of identifiers that drive has. Use
-                <code class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--get-identifier" title="gio.Drive.get_identifier">gio.Drive.get_identifier</a></code>()
-                to obtain the identifiers themselves.
-            </p></div><div class="refsect2" title="gio.Drive.get_icon"><a name="method-giodrive--get-icon"></a><h3>gio.Drive.get_icon</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_icon</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-                    for the drive.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_icon</code>() method gets the icon for drive.
-            </p></div><div class="refsect2" title="gio.Drive.get_identifier"><a name="method-giodrive--get-identifier"></a><h3>gio.Drive.get_identifier</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_identifier</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A string containing the requested identfier, or
-                    <code class="literal">None</code> if the
-                    <a class="link" href="class-giodrive.html" title="gio.Drive"><code class="classname">gio.Drive</code></a>
-                    doesn't have this kind of identifier. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_identifier</code>() method gets the identifier of
-                the given kind for drive.
-            </p></div><div class="refsect2" title="gio.Drive.get_name"><a name="method-giodrive--get-name"></a><h3>gio.Drive.get_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_name</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A string containing drive's name.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_name</code>() method gets the name of drive.
-            </p></div><div class="refsect2" title="gio.Drive.get_volumes"><a name="method-giodrive--get-volumes"></a><h3>gio.Drive.get_volumes</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_volumes</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A list containing any
-                    <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                    objects on the given drive. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_volumes</code>() method get a list of mountable
-                volumes for drive. 
-            </p></div><div class="refsect2" title="gio.Drive.has_media"><a name="method-giodrive--has-media"></a><h3>gio.Drive.has_media</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">has_media</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if drive has media,
-                    <code class="literal">False</code> otherwise.</td></tr></tbody></table><p>
-                The <code class="methodname">has_media</code>() method checks if the drive
-                has media. Note that the OS may not be polling the drive for media changes; see
-                <code class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--is-media-check-automatic" title="gio.Drive.is_media_check_automatic">gio.Drive.is_media_check_automatic</a></code>()
-                for more details.
-            </p></div><div class="refsect2" title="gio.Drive.has_volumes"><a name="method-giodrive--has-volumes"></a><h3>gio.Drive.has_volumes</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">has_volumes</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if drive contains volumes,
-                    <code class="literal">False</code> otherwise.</td></tr></tbody></table><p>
-                The <code class="methodname">has_volumes</code>() method check if drive has any mountable volumes.
-            </p></div><div class="refsect2" title="gio.Drive.is_media_check_automatic"><a name="method-giodrive--is-media-check-automatic"></a><h3>gio.Drive.is_media_check_automatic</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">is_media_check_automatic</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if drive is capabable
-                    of automatically detecting media changes,
-                    <code class="literal">False</code> otherwise.</td></tr></tbody></table><p>
-                The <code class="methodname">is_media_check_automatic</code>() method checks if
-                drive is capabable of automatically detecting media changes.
-            </p></div><div class="refsect2" title="gio.Drive.is_media_removable"><a name="method-giodrive--is-media-removable"></a><h3>gio.Drive.is_media_removable</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">is_media_removable</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if drive supports removable media,
-                    <code class="literal">False</code> otherwise.</td></tr></tbody></table><p>
-                The <code class="methodname">is_media_removable</code>() method checks if the
-                drive supports removable media.
-            </p></div><div class="refsect2" title="gio.Drive.poll_for_media"><a name="method-giodrive--poll-for-media"></a><h3>gio.Drive.poll_for_media</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">poll_for_media</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>callback</code></strong> :</span></p></td><td>A GAsyncReadyCallback to call when the request is satisfied.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>user_data</code></strong> :</span></p></td><td>The data to pass to callback function.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">poll_for_media</code>() method asynchronously polls
-                drive to see if media has been inserted or removed. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--poll-for-media-finish" title="gio.Drive.poll_for_media_finish">gio.Drive.poll_for_media_finish</a></code>()
-                to obtain the result of the operation.
-            </p></div><div class="refsect2" title="gio.Drive.poll_for_media_finish"><a name="method-giodrive--poll-for-media-finish"></a><h3>gio.Drive.poll_for_media_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">poll_for_media_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the drive has been poll_for_mediaed
-                    successfully, <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">poll_for_media_finish</code>() method finishes
-                an operation started with
-                <code class="methodname"><a class="link" href="class-giodrive.html#method-giodrive--poll-for-media" title="gio.Drive.poll_for_media">gio.Drive.poll_for_media</a></code>()
-                on a drive.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giodataoutputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-gioemblem.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.DataOutputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.Emblem</td></tr></table></div></body></html>
diff --git a/docs/html/class-gioemblem.html b/docs/html/class-gioemblem.html
deleted file mode 100644 (file)
index 451f288..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.Emblem</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giodrive.html" title="gio.Drive"><link rel="next" href="class-gioemblemedicon.html" title="gio.EmblemedIcon"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.Emblem</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giodrive.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-gioemblemedicon.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.Emblem"><a name="class-gioemblem"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.Emblem</h2><p>gio.Emblem â€” An object for emblems.</p></div><div class="refsect1" title="Synopsis"><a name="id431946"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.Emblem</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>, <span class="ooclass"><span class="classname"><a class="link" href="class-gioicon.html" title="gio.Icon">gio.Icon</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-gioemblem.html#constructor-gioemblem" title="Constructor">gio.Emblem</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>icon</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>origin</code></strong></span><span class="initializer">=gio.EMBLEM_ORIGIN_UNKNOWN</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioemblem.html#method-gioemblem--get-icon" title="gio.Emblem.get_icon">get_icon</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioemblem.html#method-gioemblem--get-origin" title="gio.Emblem.get_origin">get_origin</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table><pre class="programlisting">
-<span class="bold"><strong>Functions</strong></span>
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioemblem.html#function-gio--emblem-new-with-origin" title="gio.emblem_new_with_origin">gio.emblem_new_with_origin</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>icon</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>origin</code></strong></span></span>)</code></pre></div><div class="refsect1" title="Ancestry"><a name="id421408"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-gioemblem.html" title="gio.Emblem">gio.Emblem</a>
-</pre></div><div class="refsect1" title="Implemented Interfaces"><a name="id354264"></a><h2>Implemented Interfaces</h2><p>
-            <a class="link" href="class-gioemblem.html" title="gio.Emblem"><code class="classname">gio.Emblem</code></a>
-            implements
-            <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-        </p></div><div class="refsect1" title="gio.Emblem Properties"><a name="properties-gioemblem"></a><h2>gio.Emblem Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"icon"</td><td valign="top">Read - Write - Construct Only</td><td valign="top">The actual icon of the emblem.</td></tr><tr valign="top"><td valign="top">"origin"</td><td valign="top">Read - Write - Construct Only</td><td valign="top">Tells which origin the emblem is derived from.</td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="Description"><a name="id432212"></a><h2>Description</h2><p>
-            The <a class="link" href="class-gioemblem.html" title="gio.Emblem"><code class="classname">gio.Emblem</code></a>
-            class is an implementation of <code class="classname"><a class="link" href="class-gioicon.html" title="gio.Icon">gio.Icon</a></code>
-            that supports having an emblem, which is an icon with additional properties.
-            It can then be added to a
-            <a class="link" href="class-gioemblemedicon.html" title="gio.EmblemedIcon"><code class="classname">gio.EmblemedIcon</code></a>.
-        </p><p>
-            Currently, only metainformation about the emblem's origin is supported.
-            More may be added in the future.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-gioemblem"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.Emblem</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>icon</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>origin</code></strong></span><span class="initializer">=gio.EMBLEM_ORIGIN_UNKNOWN</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>icon</code></em> :</span></p></td><td>a
-                <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a> containing the icon.
-                </td></tr><tr><td><p><span class="term"><em class="parameter"><code>origin</code></em> :</span></p></td><td>
-                <a class="link" href="gio-constants.html#gio-emblem-origin-constants" title="Gio Emblem Origin Constants">origin</a> of the emblem.
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-gioemblem.html" title="gio.Emblem"><code class="classname">gio.Emblem</code></a>.
-                </td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
-          Parameter <em class="parameter"><code>origin</code></em> is available since PyGObject 2.20.
-        </div><p>
-            Creates a new <a class="link" href="class-gioemblem.html" title="gio.Emblem"><code class="classname">gio.Emblem</code></a> for icon.
-        </p></div><div class="refsect1" title="Methods"><a name="id495382"></a><h2>Methods</h2><div class="refsect2" title="gio.Emblem.get_icon"><a name="method-gioemblem--get-icon"></a><h3>gio.Emblem.get_icon</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_icon</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_icon</code>() method gives back the icon from emblem.
-            </p></div><div class="refsect2" title="gio.Emblem.get_origin"><a name="method-gioemblem--get-origin"></a><h3>gio.Emblem.get_origin</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_origin</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the origin of the emblem.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_origin</code>() method gets the origin of the emblem.
-            </p></div></div><div class="refsect1" title="Functions"><a name="id382610"></a><h2>Functions</h2><div class="refsect2" title="gio.emblem_new_with_origin"><a name="function-gio--emblem-new-with-origin"></a><h3>gio.emblem_new_with_origin</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">emblem_new_with_origin</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>icon</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>origin</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>origin</code></em> :</span></p></td><td>a <a class="xref" href="gio-constants.html#gio-emblem-origin-constants" title="Gio Emblem Origin Constants">Gio Emblem Origin Constants</a>
-                    defining the emblem's origin.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A <a class="link" href="class-gioemblem.html" title="gio.Emblem"><code class="classname">gio.Emblem</code></a>.
-                    </td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
-              While this method is not deprecated, with 2.20 and up it is recommended
-              to use the constructor instead.
-            </div><p>
-                The <code class="methodname">emblem_new_with_origin</code>() function creates
-                a new emblem for icon.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giodrive.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-gioemblemedicon.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.Drive </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.EmblemedIcon</td></tr></table></div></body></html>
diff --git a/docs/html/class-gioemblemedicon.html b/docs/html/class-gioemblemedicon.html
deleted file mode 100644 (file)
index 12b7277..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.EmblemedIcon</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-gioemblem.html" title="gio.Emblem"><link rel="next" href="class-giofile.html" title="gio.File"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.EmblemedIcon</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gioemblem.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giofile.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.EmblemedIcon"><a name="class-gioemblemedicon"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.EmblemedIcon</h2><p>gio.EmblemedIcon â€” Icon with emblems.</p></div><div class="refsect1" title="Synopsis"><a name="id435196"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.EmblemedIcon</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>, <span class="ooclass"><span class="classname"><a class="link" href="class-gioicon.html" title="gio.Icon">gio.Icon</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-gioemblemedicon.html#constructor-gioemblemedicon" title="Constructor">gio.EmblemedIcon</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>icon</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>emblem</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioemblemedicon.html#method-gioemblemedicon--add-emblem" title="gio.EmblemedIcon.add_emblem">add_emblem</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>emblem</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioemblemedicon.html#method-gioemblemedicon--get-icon" title="gio.EmblemedIcon.get_icon">get_icon</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id434379"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-gioemblemedicon.html" title="gio.EmblemedIcon">gio.EmblemedIcon</a>
-</pre></div><div class="refsect1" title="Implemented Interfaces"><a name="id359522"></a><h2>Implemented Interfaces</h2><p>
-            <a class="link" href="class-gioemblemedicon.html" title="gio.EmblemedIcon"><code class="classname">gio.EmblemedIcon</code></a>
-            implements
-            <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-        </p></div><div class="refsect1" title="Description"><a name="id434774"></a><h2>Description</h2><p>
-            The <a class="link" href="class-gioemblemedicon.html" title="gio.EmblemedIcon"><code class="classname">gio.EmblemedIcon</code></a>
-            class is an implementation of <code class="classname"><a class="link" href="class-gioicon.html" title="gio.Icon">gio.Icon</a></code>
-            that supports adding an emblem to an icon. Adding multiple emblems to an icon is ensured via
-            <code class="methodname"><a class="link" href="class-gioemblemedicon.html#method-gioemblemedicon--add-emblem" title="gio.EmblemedIcon.add_emblem">gio.EmblemedIcon.add_emblem</a></code>().
-        </p><p>
-            Note that
-            <a class="link" href="class-gioemblemedicon.html" title="gio.EmblemedIcon"><code class="classname">gio.EmblemedIcon</code></a>
-            allows no control over the position of the emblems. See also
-            <a class="link" href="class-gioemblem.html" title="gio.Emblem"><code class="classname">gio.Emblem</code></a>
-            for more information.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-gioemblemedicon"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.EmblemedIcon</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>icon</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>emblem</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>icon</code></em> :</span></p></td><td>a
-                <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>.
-                </td></tr><tr><td><p><span class="term"><em class="parameter"><code>emblem</code></em> :</span></p></td><td>a
-                <a class="link" href="class-gioemblem.html" title="gio.Emblem"><code class="classname">gio.Emblem</code></a>.
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>.
-                </td></tr></tbody></table><p>
-            Creates a new <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-            for icon with the emblem emblem.
-        </p></div><div class="refsect1" title="Methods"><a name="id440198"></a><h2>Methods</h2><div class="refsect2" title="gio.EmblemedIcon.add_emblem"><a name="method-gioemblemedicon--add-emblem"></a><h3>gio.EmblemedIcon.add_emblem</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">add_emblem</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>emblem</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>emblem</code></em> :</span></p></td><td>a
-                    <a class="link" href="class-gioemblem.html" title="gio.Emblem"><code class="classname">gio.Emblem</code></a>
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">add_emblem</code>() method adds emblem to the
-                list of <a class="link" href="class-gioemblem.html" title="gio.Emblem"><code class="classname">gio.Emblem</code></a>s.
-            </p></div><div class="refsect2" title="gio.EmblemedIcon.get_icon"><a name="method-gioemblemedicon--get-icon"></a><h3>gio.EmblemedIcon.get_icon</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_icon</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-                    that is owned by emblemed.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_icon</code>() method gets the main icon for emblemed.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gioemblem.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giofile.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.Emblem </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.File</td></tr></table></div></body></html>
diff --git a/docs/html/class-giofile.html b/docs/html/class-giofile.html
deleted file mode 100644 (file)
index 9f40126..0000000
+++ /dev/null
@@ -1,1436 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.File</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-gioemblemedicon.html" title="gio.EmblemedIcon"><link rel="next" href="class-giofileattributeinfo.html" title="gio.FileAttributeInfo"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.File</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gioemblemedicon.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giofileattributeinfo.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.File"><a name="class-giofile"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.File</h2><p>gio.File â€” File and Directory Handling.</p></div><div class="refsect1" title="Synopsis"><a name="id418550"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.File</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giofile.html#constructor-giofile" title="Constructor">gio.File</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>commandline</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>path</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>uri</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--append-to" title="gio.File.append_to">append_to</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--append-to-async" title="gio.File.append_to_async">append_to_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--append-to-finish" title="gio.File.append_to_finish">append_to_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--copy" title="gio.File.copy">copy</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>destination</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>progress_callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_COPY_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--copy-async" title="gio.File.copy_async">copy_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>destination</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>progress_callback</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>progress_callback_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--copy-attributes" title="gio.File.copy_attributes">copy_attributes</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>destination</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_COPY_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--copy-finish" title="gio.File.copy_finish">copy_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--create" title="gio.File.create">create</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--create-async" title="gio.File.create_async">create_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--create-finish" title="gio.File.create_finish">create_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--delete" title="gio.File.delete">delete</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--dup" title="gio.File.dup">dup</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--eject-mountable" title="gio.File.eject_mountable">eject_mountable</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--eject-mountable-finish" title="gio.File.eject_mountable_finish">eject_mountable_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--enumerate-children" title="gio.File.enumerate_children">enumerate_children</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--enumerate-children-async" title="gio.File.enumerate_children_async">enumerate_children_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--enumerate-children-finish" title="gio.File.eject_mountable_finish">enumerate_children_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--equal" title="gio.File.equal">equal</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>file2</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--find-enclosing-mount" title="gio.File.find_enclosing_mount">find_enclosing_mount</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--find-enclosing-mount-async" title="gio.File.find_enclosing_mount_async">find_enclosing_mount_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--find-enclosing-mount-finish" title="gio.File.find_enclosing_mount_finish">find_enclosing_mount_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-basename" title="gio.File.get_basename">get_basename</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-child" title="gio.File.get_child">get_child</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>name</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-child-for-display-name" title="gio.File.get_child_for_display_name">get_child_for_display_name</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>display_name</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-parent" title="gio.File.get_parent">get_parent</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-parse-name" title="gio.File.get_parse_name">get_parse_name</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-path" title="gio.File.get_path">get_path</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-relative-path" title="gio.File.get_relative_path">get_relative_path</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>descendant</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-uri" title="gio.File.get_uri">get_uri</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-uri-scheme" title="gio.File.get_uri_scheme">get_uri_scheme</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--has-prefix" title="gio.File.has_prefix">has_prefix</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>prefix</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--has-uri-scheme" title="gio.File.has_uri_scheme">has_uri_scheme</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>uri_scheme</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--is-native" title="gio.File.is_native">is_native</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--load-contents" title="gio.File.load_contents">load_contents</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--load-contents-async" title="gio.File.load_contents_async">load_contents_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--load-contents-finish" title="gio.File.load_contents_finish">load_contents_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--make-directory" title="gio.File.make_directory">make_directory</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--make-directory-with-parents" title="gio.File.make_directory_with_parents">make_directory_with_parents</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--make-symbolic-link" title="gio.File.make_symbolic_link">make_symbolic_link</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>symlink_value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--monitor" title="gio.File.monitor">monitor</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_MONITOR_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--monitor-directory" title="gio.File.monitor_directory">monitor_directory</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--monitor-file" title="gio.File.monitor_file">monitor_file</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--mount-enclosing-volume" title="gio.File.mount_enclosing_volume">mount_enclosing_volume</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>mount_operation</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_MOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--mount-enclosing-volume-finish" title="gio.File.mount_enclosing_volume_finish">mount_enclosing_volume_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--mount-mountable" title="gio.File.mount_mountable">mount_mountable</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>mount_operation</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_MOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--mount-mountable-finish" title="gio.File.mount_mountable_finish">mount_mountable_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--move" title="gio.File.move">move</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>destination</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>progress_callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_COPY_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-default-handler" title="gio.File.query_default_handler">query_default_handler</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-exists" title="gio.File.query_exists">query_exists</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-file-type" title="gio.File.query_file_type">query_file_type</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-filesystem-info" title="gio.File.query_filesystem_info">query_filesystem_info</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-filesystem-info-async" title="gio.File.query_filesystem_info_async">query_filesystem_info_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-filesystem-info-finish" title="gio.File.query_filesystem_info_finish">query_filesystem_info_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info" title="gio.File.query_filesystem_info">query_info</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info-async" title="gio.File.query_info_async">query_info_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info-finish" title="gio.File.query_info_finish">query_info_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-settable-attributes" title="gio.File.query_settable_attributes">query_settable_attributes</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-writable-namespace" title="gio.File.query_writable_namespace">query_writable_namespace</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--read" title="gio.File.read">read</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--read-async" title="gio.File.read_async">read_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--read-finish" title="gio.File.read_finish">read_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace" title="gio.File.replace">replace</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>etag</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>make_backup</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace-async" title="gio.File.replace_async">replace_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>etag</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>make_backup</code></strong></span><span class="initializer">=True</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace-contents" title="gio.File.replace_contents">replace_contents</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>contents</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>etag</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>make_backup</code></strong></span><span class="initializer">=True</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace-contents-async" title="gio.File.replace_contents_async">replace_contents_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>contents</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>etag</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>make_backup</code></strong></span><span class="initializer">=True</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace-contents-finish" title="gio.File.replace_contents_finish">replace_contents_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace-finish" title="gio.File.replace_finish">replace_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--resolve-relative-path" title="gio.File.resolve_relative_path">resolve_relative_path</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>relative_path</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attribute" title="gio.File.set_attribute">set_attribute</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value_p</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attribute-byte-string" title="gio.File.set_attribute_byte_string">set_attribute_byte_string</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attribute-int32" title="gio.File.set_attribute_int32">set_attribute_int32</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attribute-int64" title="gio.File.set_attribute_int64">set_attribute_int64</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attribute-string" title="gio.File.set_attribute_string">set_attribute_string</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attribute-uint32" title="gio.File.set_attribute_uint32">set_attribute_uint32</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attribute-uint64" title="gio.File.set_attribute_uint64">set_attribute_uint64</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attributes-async" title="gio.File.set_attributes_async">set_attributes_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>info</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attributes-finish" title="gio.File.set_attributes_finish">set_attributes_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attributes-from-info" title="gio.File.set_attributes_from_info">set_attributes_from_info</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>info</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-display-name" title="gio.File.set_display_name">set_dispay_name</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>display_name</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-display-name-async" title="gio.File.set_display_name_async">set_display_name_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>display_name</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-display-name-finish" title="gio.File.set_display_name_finish">set_display_name_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--trash" title="gio.File.trash">trash</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--unmount-mountable" title="gio.File.unmount_mountable">unmount_mountable</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_UNMOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#method-giofile--unmount-mountable-finish" title="gio.File.unmount_mountable_finish">unmount_mountable_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br></pre></td></tr></table><pre class="programlisting">
-<span class="bold"><strong>Functions</strong></span>
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofile.html#function-gio--file-parse-name" title="gio.file_parse_name">gio.file_parse_name</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>parse_name</code></strong></span></span>)</code></pre></div><div class="refsect1" title="Ancestry"><a name="id442206"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a>
-  +-- <a class="link" href="class-giofile.html" title="gio.File">gio.File</a>
-</pre></div><div class="refsect1" title="Prerequisites"><a name="id441365"></a><h2>Prerequisites</h2><p>
-            <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> is implemented by
-            <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>
-        </p></div><div class="refsect1" title="Description"><a name="id417179"></a><h2>Description</h2><p>
-            <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> is a high
-            level abstraction for manipulating files on a virtual file system.
-            <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>s are lightweight,
-            immutable objects that do no I/O upon creation. It is necessary to understand that
-            <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-            objects do not represent files, merely an identifier for a file. All file content
-            I/O is implemented as streaming operations (see
-            <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a> and
-            <a class="link" href="class-giooutputstream.html" title="gio.OutputStream"><code class="classname">gio.OutputStream</code></a>). 
-        </p><p>
-            To construct a <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>, you can use
-            it's constructor either with a path, an uri or a commandline argument.
-            <code class="methodname"><a class="link" href="class-giofile.html#function-gio--file-parse-name" title="gio.file_parse_name">gio.file_parse_name</a></code>()
-            from a utf8 string gotten from
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-parse-name" title="gio.File.get_parse_name">gio.File.get_parse_name</a></code>().
-        </p><p>
-            One way to think of a <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> is as
-            an abstraction of a pathname. For normal files the system pathname is what is stored internally,
-            but as <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>s are extensible it
-            could also be something else that corresponds to a pathname in a userspace implementation of a filesystem. 
-        </p><p>
-            <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>s make up hierarchies of
-            directories and files that correspond to the files on a filesystem. You can move through the
-            file system with GFile using
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-parent" title="gio.File.get_parent">gio.File.get_parent</a></code>()
-            to get an identifier for the parent directory,
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-child" title="gio.File.get_child">gio.File.get_child</a></code>()
-            to get a child within a directory,
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--resolve-relative-path" title="gio.File.resolve_relative_path">gio.File.resolve_relative_path</a></code>()
-            to resolve a relative path between two <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>s.
-            There can be multiple hierarchies, so you may not end up at the same root if you repeatedly call
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-parent" title="gio.File.get_parent">gio.File.get_parent</a></code>()
-            on two different files. 
-        </p><p>
-            All <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>s have a basename (get with
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-basename" title="gio.File.get_basename">gio.File.get_basename</a></code>()
-            ). These names are byte strings that are used to identify the file on the filesystem
-            (relative to its parent directory) and there is no guarantees that they have any particular charset
-            encoding or even make any sense at all. If you want to use filenames in a user interface you should
-            use the display name that you can get by requesting the gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME attribute with
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info" title="gio.File.query_filesystem_info">gio.File.query_info</a></code>().
-            This is guaranteed to be in utf8 and can be used in a user interface. But always store the real basename or the
-            GFile to use to actually access the file, because there is no way to go from a display name to the actual name. 
-        </p><p>
-            Using <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> as an identifier has the same
-            weaknesses as using a path in that there may be multiple aliases for the same file. For instance,
-            hard or soft links may cause two different <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>s
-            to refer to the same file. Other possible causes for aliases are: case insensitive filesystems, short and
-            long names on Fat/NTFS, or bind mounts in Linux. If you want to check if two GFiles point to the same file
-            you can query for the gio.FILE_ATTRIBUTE_ID_FILE attribute. Note that
-            <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> does some trivial canonicalization
-            of pathnames passed in, so that trivial differences in the path string used at creation
-            (duplicated slashes, slash at end of path, "." or ".." path segments, etc) does not create different
-            <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>s. 
-        </p><p>
-            Many <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> operations have both synchronous
-            and asynchronous versions to suit your application. Asynchronous versions of synchronous functions simply
-            have _async() appended to their function names. The asynchronous I/O functions call a
-            GAsyncReadyCallback which is then used to finalize the operation, producing a GAsyncResult
-            which is then passed to the function's matching _finish() operation. 
-        </p><p>
-            Some <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> operations do not have
-            synchronous analogs, as they may take a very long time to finish, and blocking may leave an application
-            unusable. Notable cases include:
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--mount-mountable" title="gio.File.mount_mountable">gio.File.mount_mountable</a></code>()
-            to mount a mountable file.
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--unmount-mountable" title="gio.File.unmount_mountable">gio.File.unmount_mountable</a></code>()
-            to unmount a mountable file.
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--eject-mountable" title="gio.File.eject_mountable">gio.File.eject_mountable</a></code>()
-            to eject a mountable file. 
-        </p><p>
-            One notable feature of <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>s are
-            entity tags, or "etags" for short. Entity tags are somewhat like a more abstract
-            version of the traditional mtime, and can be used to quickly determine if the file
-            has been modified from the version on the file system. See the HTTP 1.1
-            specification for HTTP Etag headers, which are a very similar concept. 
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giofile"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.File</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>commandline</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>path</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>uri</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>commandline</code></em> :</span></p></td><td>a command line string. 
-                </td></tr><tr><td><p><span class="term"><em class="parameter"><code>path</code></em> :</span></p></td><td>a string containing a relative or absolute path.
-                </td></tr><tr><td><p><span class="term"><em class="parameter"><code>uri</code></em> :</span></p></td><td>a string containing a URI.
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                </td></tr></tbody></table><p>
-            Creates a new <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> either from a commandline,
-            a path or an uri.
-        </p></div><div class="refsect1" title="Methods"><a name="id374828"></a><h2>Methods</h2><div class="refsect2" title="gio.File.append_to"><a name="method-giofile--append-to"></a><h3>gio.File.append_to</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">append_to</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-create-flags-constants" title="Gio File Create Flags Constants">Gio File Create Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="link" href="class-giofileoutputstream.html" title="gio.FileOutputStream"><code class="classname">gio.FileOutputStream</code></a>
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">append_to</code>() method gets an output stream for
-                appending data to the file. If the file doesn't already exist it is created. 
-            </p><p>
-                By default files created are generally readable by everyone, but if you pass
-                gio.FILE_CREATE_PRIVATE in flags the file will be made readable only to the
-                current user, to the level that is supported on the target filesystem. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If
-                the operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p><p>
-                Some file systems don't allow all file names, and may return an
-                gio.ERROR_INVALID_FILENAME error. If the file is a directory the
-                gio.ERROR_IS_DIRECTORY error will be returned. Other errors are possible too,
-                and depend on what kind of filesystem the file is on.
-            </p></div><div class="refsect2" title="gio.File.append_to_async"><a name="method-giofile--append-to-async"></a><h3>gio.File.append_to_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">append_to_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-create-flags-constants" title="Gio File Create Flags Constants">Gio File Create Flags Constants</a>.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">append_to_async</code>() method asynchronously opens file for appending. 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--append-to" title="gio.File.append_to">gio.File.append_to</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--append-to-finish" title="gio.File.append_to_finish">gio.File.append_to_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.File.append_to_finish"><a name="method-giofile--append-to-finish"></a><h3>gio.File.append_to_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">append_to_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a valid
-                    <a class="link" href="class-giooutputstream.html" title="gio.OutputStream"><code class="classname">gio.OutputStream</code></a>
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">append_to_finish</code>() method finishes an asynchronous
-                file append operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--append-to-async" title="gio.File.append_to_async">gio.File.append_to_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.copy"><a name="method-giofile--copy"></a><h3>gio.File.copy</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">copy</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>destination</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>progress_callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_COPY_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>destination</code></em> :</span></p></td><td>destination <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>progress_callback</code></em> :</span></p></td><td>function to callback with progress information.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-copy-flags-constants" title="Gio File Copy Flags Constants">Gio File Copy Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to the progress callback function.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> on success,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">copy</code>() method copies the file source to
-                the location specified by destination. Can not handle recursive copies of directories. 
-            </p><p>
-                If the flag gio.FILE_COPY_OVERWRITE is specified an already existing
-                destination file is overwritten. 
-            </p><p>
-                If the flag gio.FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks will
-                be copied as symlinks, otherwise the target of the source symlink will be copied. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. 
-            </p><p>
-                If progress_callback is not <code class="literal">None</code>, then the operation can be
-                monitored by setting this to a GFileProgressCallback function. user_data
-                will be passed to this function. It is guaranteed that this callback will be
-                called after all data has been transferred with the total number of bytes
-                copied during the operation. 
-            </p><p>
-                If the source file does not exist then the gio.ERROR_NOT_FOUND error is returned,
-                independent on the status of the destination. 
-            </p><p>
-                If gio.FILE_COPY_OVERWRITE is not specified and the target exists,
-                then the error gio.ERROR_EXISTS is returned. 
-            </p><p>
-                If trying to overwrite a file over a directory the gio.ERROR_IS_DIRECTORY error
-                is returned. If trying to overwrite a directory with a directory the
-                gio.ERROR_WOULD_MERGE error is returned. 
-            </p><p>
-                If the source is a directory and the target does not exist, or gio.FILE_COPY_OVERWRITE
-                is specified and the target is a file, then the gio.ERROR_WOULD_RECURSE error is returned. 
-            </p><p>
-                If you are interested in copying the
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> object
-                itself (not the on-disk file), see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--dup" title="gio.File.dup">gio.File.dup</a></code>().
-            </p></div><div class="refsect2" title="gio.File.copy_async"><a name="method-giofile--copy-async"></a><h3>gio.File.copy_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">append_to_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>destination</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>progress_callback</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>progress_callback_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>destination</code></em> :</span></p></td><td>destination <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>progress_callback</code></em> :</span></p></td><td>function to callback with progress information.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-copy-flags-constants" title="Gio File Copy Flags Constants">Gio File Copy Flags Constants</a>.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>progress_callback_data</code></em> :</span></p></td><td>the data to pass to the progress callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">copy_async</code>() method copies the file source to
-                the location specified by destination asynchronously. For details of the behaviour,
-                see <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--copy" title="gio.File.copy">gio.File.copy</a></code>(). 
-            </p><p>
-                If progress_callback is not <code class="literal">None</code>, then that function that will
-                be called just like in
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--copy" title="gio.File.copy">gio.File.copy</a></code>(),
-                however the callback will run in the main loop, not in the thread that is doing the I/O operation. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--copy-finish" title="gio.File.copy_finish">gio.File.copy_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.File.copy_attributes"><a name="method-giofile--copy-attributes"></a><h3>gio.File.copy_attributes</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">copy_attributes</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>destination</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_COPY_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>destination</code></em> :</span></p></td><td>destination <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    to copy attributes to.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-copy-flags-constants" title="Gio File Copy Flags Constants">Gio File Copy Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the attributes were copied successfully,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">copy_attributes</code>() method copies the file attributes
-                from source to destination. 
-            </p><p>
-                Normally only a subset of the file attributes are copied, those that are copies
-                in a normal file copy operation (which for instance does not include e.g. owner).
-                However if gio.FILE_COPY_ALL_METADATA is specified in flags, then all the metadata
-                that is possible to copy is copied. This is useful when implementing move by copy + delete source.
-            </p></div><div class="refsect2" title="gio.File.copy_finish"><a name="method-giofile--copy-finish"></a><h3>gio.File.copy_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">copy_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> on success,
-                    <code class="literal">False</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">copy_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--copy-async" title="gio.File.copy_async">gio.File.copy_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.create"><a name="method-giofile--create"></a><h3>gio.File.create</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">create</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-create-flags-constants" title="Gio File Create Flags Constants">Gio File Create Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="link" href="class-giofileoutputstream.html" title="gio.FileOutputStream"><code class="classname">gio.FileOutputStream</code></a>
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">create</code>() method creates a new file and returns
-                an output stream for writing to it. The file must not already exist. 
-            </p><p>
-                By default files created are generally readable by everyone, but if you pass
-                gio.FILE_CREATE_PRIVATE in flags the file will be made readable only to the
-                current user, to the level that is supported on the target filesystem. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p><p>
-                If a file or directory with this name already exists the gio.ERROR_EXISTS
-                error will be returned. Some file systems don't allow all file names, and
-                may return an gio.ERROR_INVALID_FILENAME error, and if the name is to long
-                gio.ERROR_FILENAME_TOO_LONG will be returned. Other errors are possible too,
-                and depend on what kind of filesystem the file is on.
-            </p></div><div class="refsect2" title="gio.File.create_async"><a name="method-giofile--create-async"></a><h3>gio.File.create_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">create_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-copy-flags-constants" title="Gio File Copy Flags Constants">Gio File Copy Flags Constants</a>.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">create_async</code>() method asynchronously creates a new
-                file and returns an output stream for writing to it. The file must not already exist. 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--create" title="gio.File.create">gio.File.create</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--create-finish" title="gio.File.create_finish">gio.File.create_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.File.create_finish"><a name="method-giofile--create-finish"></a><h3>gio.File.create_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">create_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="link" href="class-giofileoutputstream.html" title="gio.FileOutputStream"><code class="classname">gio.FileOutputStream</code></a>
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">create_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--create-async" title="gio.File.create_async">gio.File.create_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.delete"><a name="method-giofile--delete"></a><h3>gio.File.delete</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">delete</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the file was deleted,
-                    <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">deleted</code>() method deletes a file. If the file is a
-                directory, it will only be deleted if it is empty. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.File.dup"><a name="method-giofile--dup"></a><h3>gio.File.dup</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">dup</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    that is a duplicate of the given <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">dup</code>() method duplicates a
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                handle. This operation does not duplicate the actual file or directory represented
-                by the <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>; see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--copy" title="gio.File.copy">gio.File.copy</a></code>()
-                if attempting to copy a file. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.eject_mountable"><a name="method-giofile--eject-mountable"></a><h3>gio.File.eject_mountable</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">eject_mountable</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-copy-flags-constants" title="Gio File Copy Flags Constants">Gio File Copy Flags Constants</a>.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">eject_mountable</code>() method starts an asynchronous eject on a
-                mountable. When this operation has completed, callback will be called with
-                user_user data, and the operation can be finalized with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--eject-mountable-finish" title="gio.File.eject_mountable_finish">gio.File.eject_mountable_finish</a></code>(). 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.File.eject_mountable_finish"><a name="method-giofile--eject-mountable-finish"></a><h3>gio.File.eject_mountable_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">eject_mountable_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the file was ejected successfully,
-                    <code class="literal">False</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">create_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--create-async" title="gio.File.create_async">gio.File.create_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.enumerate_children"><a name="method-giofile--enumerate-children"></a><h3>gio.File.enumerate_children</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">enumerate_children</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attributes</code></em> :</span></p></td><td>an attribute query string.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="link" href="class-giofileenumerator.html" title="gio.FileEnumerator"><code class="classname">gio.FileEnumerator</code></a>
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">enumerate_children</code>() method gets the requested information
-                about the files in a directory. The result is a GFileEnumerator object that will give out
-                <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a> objects
-                for all the files in the directory. 
-            </p><p>
-                The attribute value is a string that specifies the file attributes that should be gathered.
-                It is not an error if it's not possible to read a particular requested attribute from a file -
-                it just won't be set. attribute should be a comma-separated list of attribute or attribute
-                wildcards. The wildcard "*" means all attributes, and a wildcard like "standard::*" means all
-                attributes in the standard namespace. An example attribute query be "standard::*,owner::user".
-                The standard attributes are available as defines, like gio.FILE_ATTRIBUTE_STANDARD_NAME. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p><p>
-                If the file does not exist, the gio.ERROR_NOT_FOUND error will be returned. If the file
-                is not a directory, the gio.FILE_ERROR_NOTDIR error will be returned.
-                Other errors are possible too.
-            </p></div><div class="refsect2" title="gio.File.enumerate_children_async"><a name="method-giofile--enumerate-children-async"></a><h3>gio.File.enumerate_children_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">enumerate_children_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attributes</code></em> :</span></p></td><td>an attribute query string.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">enumerate_children_async</code>() method asynchronously gets the
-                requested information about the files in a directory. The result is a
-                <a class="link" href="class-giofileenumerator.html" title="gio.FileEnumerator"><code class="classname">gio.FileEnumerator</code></a>
-                object that will give out <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                objects for all the files in the directory. 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--enumerate-children" title="gio.File.enumerate_children">enumerate_children</a></code>()
-                which is the synchronous version of this call. 
-            </p></div><div class="refsect2" title="gio.File.eject_mountable_finish"><a name="method-giofile--enumerate-children-finish"></a><h3>gio.File.eject_mountable_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">enumerate_children_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofileenumerator.html" title="gio.FileEnumerator"><code class="classname">gio.FileEnumerator</code></a>
-                    or <code class="literal">None</code> if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">enumerate_children_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--enumerate-children-async" title="gio.File.enumerate_children_async">gio.File.enumerate_children_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.equal"><a name="method-giofile--equal"></a><h3>gio.File.equal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">equal</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>file2</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>file2</code></strong> :</span></p></td><td>a <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if file1 and file2 are equal.
-                    <code class="literal">False</code> if either is not a
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">equal</code>() method checks equality of two given
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>s.
-                Note that two <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>s
-                that differ can still refer to the same file on the filesystem due to various
-                forms of filename aliasing. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.find_enclosing_mount"><a name="method-giofile--find-enclosing-mount"></a><h3>gio.File.find_enclosing_mount</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">enumerate_children</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">find_enclosing_mount</code>() method gets a
-                <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a> for the
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-            </p><p>
-                If the interface for file does not have a mount (e.g. possibly a remote share),
-                error will be set to gio.ERROR_NOT_FOUND and <code class="literal">None</code> will be returned. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.find_enclosing_mount_async"><a name="method-giofile--find-enclosing-mount-async"></a><h3>gio.File.find_enclosing_mount_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">find_enclosing_mount_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">find_enclosing_mount_async</code>() method asynchronously
-                gets the mount for the file. 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--find-enclosing-mount" title="gio.File.find_enclosing_mount">gio.File.find_enclosing_mount</a></code>()
-                which is the synchronous version of this call. 
-            </p></div><div class="refsect2" title="gio.File.find_enclosing_mount_finish"><a name="method-giofile--find-enclosing-mount-finish"></a><h3>gio.File.find_enclosing_mount_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">find_enclosing_mount_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                    or <code class="literal">None</code> if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">find_enclosing_mount_finish</code>() method finishes an asynchronous
-                find mount started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--find-enclosing-mount-async" title="gio.File.find_enclosing_mount_async">gio.File.find_enclosing_mount_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.get_basename"><a name="method-giofile--get-basename"></a><h3>gio.File.get_basename</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_basename</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>string containing the
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>'s
-                    base name, or <code class="literal">None</code> if given
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> is invalid.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_basename</code>() method gets the base name
-                (the last component of the path) for a given
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>. 
-            </p><p>
-                If called for the top level of a system (such as the filesystem root or
-                a uri like sftp://host/) it will return a single directory separator
-                (and on Windows, possibly a drive letter). 
-            </p><p>
-                The base name is a byte string (*not* UTF-8). It has no defined encoding
-                or rules other than it may not contain zero bytes. If you want to use filenames
-                in a user interface you should use the display name that you can get by requesting
-                the gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME attribute with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info" title="gio.File.query_filesystem_info">gio.File.query_info</a></code>(). 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.get_child"><a name="method-giofile--get-child"></a><h3>gio.File.get_child</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_child</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>name</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>name</code></strong> :</span></p></td><td>string containing the child's basename.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    to a child specified by name.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_child</code>() method gets a child of file
-                with basename equal to name. 
-            </p><p>
-                Note that the file with that specific name might not exist, but you can
-                still have a <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                that points to it. You can use this for instance to create that file. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.get_child_for_display_name"><a name="method-giofile--get-child-for-display-name"></a><h3>gio.File.get_child_for_display_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_child_for_display_name</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>display_name</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>display_name</code></strong> :</span></p></td><td>string to a possible child.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    to the specified child or <code class="literal">None</code>
-                    if the display name couldn't be converted.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_child_for_display_name</code>() method gets the
-                child of file for a given display_name (i.e. a UTF8 version of the name).
-                If this function fails, it returns NULL and error will be set. This is very
-                useful when constructing a GFile for a new file and the user entered the filename
-                in the user interface, for instance when you select a directory and type a filename
-                in the file selector. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.get_parent"><a name="method-giofile--get-parent"></a><h3>gio.File.get_parent</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_parent</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    structure to the parent of the given
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> or
-                    <code class="literal">None</code> if there is no parent.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_parent</code>() method gets the parent directory for the file.
-                If the file represents the root directory of the file system, then <code class="literal">None</code>
-                will be returned. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.get_parse_name"><a name="method-giofile--get-parse-name"></a><h3>gio.File.get_parse_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_parse_name</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string containing the
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>'s parse name.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_parse_name</code>() method gets the parse name
-                of the file. A parse name is a UTF-8 string that describes the file such
-                that one can get the <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                back using
-                <code class="methodname"><a class="link" href="class-giofile.html#function-gio--file-parse-name" title="gio.file_parse_name">gio.file_parse_name</a></code>(). 
-            </p><p>
-                This is generally used to show the <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                as a nice full-pathname kind of string in a user interface, like in a location entry. 
-            </p><p>
-                For local files with names that can safely be converted to UTF8 the pathname is used,
-                otherwise the IRI is used (a form of URI that allows UTF8 characters unescaped). 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.get_path"><a name="method-giofile--get-path"></a><h3>gio.File.get_path</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_path</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string containing the
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>'s path,
-                    or <code class="literal">None</code> if no such path exists.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_path</code>() method gets the local pathname for
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>, if one exists. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.get_relative_path"><a name="method-giofile--get-relative-path"></a><h3>gio.File.get_relative_path</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_relative_path</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>descendant</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>descendant</code></strong> :</span></p></td><td>input <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>string with the relative path from descendant to parent,
-                    or <code class="literal">None</code> if descendant doesn't have parent as prefix.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_relative_path</code>() method gets the path for
-                descendant relative to parent. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.get_uri"><a name="method-giofile--get-uri"></a><h3>gio.File.get_uri</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_uri</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string containing the
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>'s URI.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_uri</code>() method gets the URI for the file. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.get_uri_scheme"><a name="method-giofile--get-uri-scheme"></a><h3>gio.File.get_uri_scheme</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_uri_scheme</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string containing the URI scheme for the
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_uri_scheme</code>() method gets the URI scheme for a
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                RFC 3986 decodes the scheme as: 
-            </p><pre class="programlisting">
-URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
-</pre><p>
-                Common schemes include "file", "http", "ftp", etc. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.has_prefix"><a name="method-giofile--has-prefix"></a><h3>gio.File.has_prefix</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">has_prefix</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>prefix</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>prefix</code></strong> :</span></p></td><td>input <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the files's parent, grandparent,
-                    etc is prefix. <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">has_prefix</code>() method checks whether file has the prefix
-                specified by prefix. In other word, if the names of inital elements of files pathname
-                match prefix. Only full pathname elements are matched, so a path like /foo is not
-                considered a prefix of /foobar, only of /foo/bar. 
-            </p><p>
-                This call does no blocking i/o, as it works purely on names. As such it can sometimes
-                return <code class="literal">False</code> even if file is inside a prefix (from a filesystem point
-                of view), because the prefix of file is an alias of prefix.
-            </p></div><div class="refsect2" title="gio.File.has_uri_scheme"><a name="method-giofile--has-uri-scheme"></a><h3>gio.File.has_uri_scheme</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">has_uri_scheme</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>uri_scheme</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>uri_scheme</code></strong> :</span></p></td><td>a string containing a URI scheme.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>'s
-                    backend supports the given URI scheme, <code class="literal">False</code> if URI scheme
-                    is <code class="literal">None</code>, not supported, or
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> is invalid. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">has_uri_scheme</code>() method checks to see if a
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                has a given URI scheme. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.is_native"><a name="method-giofile--is-native"></a><h3>gio.File.is_native</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">is_native</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if file is native. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">is_native</code>() method checks to see if a file
-                is native to the platform. 
-            </p><p>
-                A native file s one expressed in the platform-native filename format, e.g.
-                "C:\Windows" or "/usr/bin/". This does not mean the file is local, as it
-                might be on a locally mounted remote filesystem. 
-            </p><p>
-                On some systems non-native files may be available using the native filesystem
-                via a userspace filesystem (FUSE), in these cases this call will return
-                <code class="literal">False</code>, but
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-path" title="gio.File.get_path">gio.File.get_path</a></code>()
-                will still return a native path. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.load_contents"><a name="method-giofile--load-contents"></a><h3>gio.File.load_contents</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">load_contents</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a three tuple containing the contents of the file,
-                    the length of the contents of the file and the current entity tag for the file.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">load_contents</code>() method loads the content of the file into memory.
-                The data is always zero-terminated, but this is not included in the resultant length.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.load_contents_async"><a name="method-giofile--load-contents-async"></a><h3>gio.File.load_contents_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">load_contents_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">load_contents_async</code>() method starts an asynchronous load of the file's contents. 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--load-contents" title="gio.File.load_contents">gio.File.load_contents</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the load operation has completed, callback will be called with user data. To finish
-                the operation, call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--load-contents-finish" title="gio.File.load_contents_finish">gio.File.load_contents_finish</a></code>()
-                with the GAsyncResult returned by the callback. 
-            </p></div><div class="refsect2" title="gio.File.load_contents_finish"><a name="method-giofile--load-contents-finish"></a><h3>gio.File.load_contents_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">load_contents_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a three tuple containing the contents of the file,
-                    the length of the contents of the file and the current entity tag for the file.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">load_contents_finish</code>() method finishes an asynchronous
-                find mount started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--load-contents-async" title="gio.File.load_contents_async">gio.File.load_contents_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.make_directory"><a name="method-giofile--make-directory"></a><h3>gio.File.make_directory</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">make_directory</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> on successful creation,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">make_directory</code>() method creates a directory.
-                Note that this will only create a child directory of the immediate parent directory
-                of the path or URI given by the <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                To recursively create directories, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--make-directory-with-parents" title="gio.File.make_directory_with_parents">gio.File.make_directory_with_parents</a></code>().
-                This function will fail if the parent directory does not exist, setting error to
-                gio.ERROR_NOT_FOUND. If the file system doesn't support creating directories, this
-                function will fail, setting error to gio.ERROR_NOT_SUPPORTED. 
-            </p><p>
-                For a local <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> the newly
-                created directory will have the default (current) ownership and permissions of the current process. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.make_directory_with_parents"><a name="method-giofile--make-directory-with-parents"></a><h3>gio.File.make_directory_with_parents</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">make_directory_with_parents</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if all directories have been successfully created,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">make_directory_with_parents</code>() method creates a directory
-                and any parent directories that may not exist similar to 'mkdir -p'. If the file system
-                does not support creating directories, this function will fail, setting error to gio.ERROR_NOT_SUPPORTED. 
-            </p><p>
-                For a local <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a> the newly
-                created directories will have the default (current) ownership and permissions of the current process. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.make_symbolic_link"><a name="method-giofile--make-symbolic-link"></a><h3>gio.File.make_symbolic_link</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">make_symbolic_link</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>symlink_value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>symlink_value</code></em> :</span></p></td><td>a string with the value of the new symlink.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> on the creation of a new symlink,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">make_symbolic_link</code>() method creates a symbolic link. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.monitor"><a name="method-giofile--monitor"></a><h3>gio.File.monitor</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">monitor</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_MONITOR_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>
-                    a <a class="xref" href="gio-constants.html#gio-file-monitor-flags-constants" title="Gio File Monitor Flags Constants">Gio File Monitor Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofilemonitor.html" title="gio.FileMonitor"><code class="classname">gio.FileMonitor</code></a>
-                    for the given file, or <code class="literal">None</code> on error
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">monitor</code>() method obtains a file or directory
-                monitor for the given file, depending on the type of the file. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.monitor_directory"><a name="method-giofile--monitor-directory"></a><h3>gio.File.monitor_directory</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">monitor_directory</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_MONITOR_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>
-                    a <a class="xref" href="gio-constants.html#gio-file-monitor-flags-constants" title="Gio File Monitor Flags Constants">Gio File Monitor Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofilemonitor.html" title="gio.FileMonitor"><code class="classname">gio.FileMonitor</code></a>
-                    for the given file, or <code class="literal">None</code> on error
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">monitor_directory</code>() method obtains a directory monitor
-                for the given file. This may fail if directory monitoring is not supported. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.monitor_file"><a name="method-giofile--monitor-file"></a><h3>gio.File.monitor_file</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">monitor_file</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_MONITOR_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>
-                    a <a class="xref" href="gio-constants.html#gio-file-monitor-flags-constants" title="Gio File Monitor Flags Constants">Gio File Monitor Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofilemonitor.html" title="gio.FileMonitor"><code class="classname">gio.FileMonitor</code></a>
-                    for the given file, or <code class="literal">None</code> on error
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">monitor_file</code>() method obtains a file monitor for the
-                given file. If no file notification mechanism exists, then regular polling
-                of the file is used. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.mount_enclosing_volume"><a name="method-giofile--mount-enclosing-volume"></a><h3>gio.File.mount_enclosing_volume</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">mount_enclosing_volume</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>mount_operation</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_COPY_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>mount_operation</code></em> :</span></p></td><td>a
-                    <a class="link" href="class-giomountoperation.html" title="gio.MountOperation"><code class="classname">gio.MountOperation</code></a>
-                    or <code class="literal">None</code> to avoid user interaction. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request
-                    is satisfied, or <code class="literal">None</code>. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-mount-mount-flags-constants" title="Gio Mount Mount Flags Constants">Gio Mount Mount Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to the progress callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">mount_enclosing_volume</code>() method starts a mount_operation,
-                mounting the volume that contains the file location. 
-            </p><p>
-                When this operation has completed, callback will be called with user_user data,
-                and the operation can be finalized with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--mount-enclosing-volume-finish" title="gio.File.mount_enclosing_volume_finish">gio.File.mount_enclosing_volume_finish</a></code>(). 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.mount_enclosing_volume_finish"><a name="method-giofile--mount-enclosing-volume-finish"></a><h3>gio.File.mount_enclosing_volume_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">mount_enclosing_volume_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if successful. If an error has occurred,
-                    this function will return <code class="literal">False</code> and set error appropriately if present. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">mount_enclosing_volume_finish</code>() method finishes an asynchronous
-                find mount started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--mount-enclosing-volume" title="gio.File.mount_enclosing_volume">gio.File.mount_enclosing_volume</a></code>().
-            </p></div><div class="refsect2" title="gio.File.mount_mountable"><a name="method-giofile--mount-mountable"></a><h3>gio.File.mount_mountable</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">mount_mountable</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>mount_operation</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_COPY_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>mount_operation</code></em> :</span></p></td><td>a
-                    <a class="link" href="class-giomountoperation.html" title="gio.MountOperation"><code class="classname">gio.MountOperation</code></a>
-                    or <code class="literal">None</code> to avoid user interaction. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request
-                    is satisfied, or <code class="literal">None</code>. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-mount-mount-flags-constants" title="Gio Mount Mount Flags Constants">Gio Mount Mount Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to the progress callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">mount_mountable</code>() method mounts a file of type
-                gio.FILE_TYPE_MOUNTABLE. Using mount_operation, you can request callbacks when,
-                for instance, passwords are needed during authentication. 
-            </p><p>
-                When this operation has completed, callback will be called with user_user data,
-                and the operation can be finalized with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--mount-mountable-finish" title="gio.File.mount_mountable_finish">gio.File.mount_mountable_finish</a></code>(). 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.mount_mountable_finish"><a name="method-giofile--mount-mountable-finish"></a><h3>gio.File.mount_mountable_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">mount_mountable_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">mount_mountable_finish</code>() method finishes an asynchronous
-                find mount started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--mount-mountable" title="gio.File.mount_mountable">gio.File.mount_mountable</a></code>().
-            </p></div><div class="refsect2" title="gio.File.move"><a name="method-giofile--move"></a><h3>gio.File.move</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">copy</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>destination</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>progress_callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_COPY_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>destination</code></em> :</span></p></td><td>destination <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>progress_callback</code></em> :</span></p></td><td>function to callback with progress information.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-copy-flags-constants" title="Gio File Copy Flags Constants">Gio File Copy Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to the progress callback function.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> on success,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">move</code>() method tries to move the file or directory
-                source to the location specified by destination. If native move operations are
-                supported then this is used, otherwise a copy + delete fallback is used. The native
-                implementation may support moving directories (for instance on moves inside the same
-                filesystem), but the fallback code does not. 
-            </p><p>
-                If the flag gio.FILE_COPY_OVERWRITE is specified an already existing destination file is overwritten. 
-            </p><p>
-                If the flag gio.FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks will be copied
-                as symlinks, otherwise the target of the source symlink will be copied. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. 
-            </p><p>
-                If progress_callback is not <code class="literal">None</code>, then the operation can be monitored
-                by setting this to a GFileProgressCallback function. progress_callback_data will be passed
-                to this function. It is guaranteed that this callback will be called after all data has been
-                transferred with the total number of bytes copied during the operation. 
-            </p><p>
-                If the source file does not exist then the gio.ERROR_NOT_FOUND error is returned,
-                independent on the status of the destination. 
-            </p><p>
-                If gio.FILE_COPY_OVERWRITE is not specified and the target exists, then the error
-                gio.ERROR_EXISTS is returned. 
-            </p><p>
-                If trying to overwrite a file over a directory the gio.ERROR_IS_DIRECTORY error is returned.
-                If trying to overwrite a directory with a directory the gio.ERROR_WOULD_MERGE error is returned. 
-            </p><p>
-                If the source is a directory and the target does not exist, or gio.FILE_COPY_OVERWRITE is specified
-                and the target is a file, then the gio.ERROR_WOULD_RECURSE error may be returned
-                (if the native move operation isn't available).
-            </p></div><div class="refsect2" title="gio.File.query_default_handler"><a name="method-giofile--query-default-handler"></a><h3>gio.File.query_default_handler</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_default_handler</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-                    if the handle was found, <code class="literal">None</code> if there were errors.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_default_handler</code>() method returns the
-                <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a> that
-                is registered as the default application to handle the file specified by file. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.query_exists"><a name="method-giofile--query-exists"></a><h3>gio.File.query_exists</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_exists</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the file exists (and can be detected
-                    without error), <code class="literal">False</code> otherwise (or if cancelled). 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_exists</code>() method is an tility function to check
-                if a particular file exists. This is implemented using
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info" title="gio.File.query_filesystem_info">gio.File.query_info</a></code>()
-                and as such does blocking I/O. 
-            </p><p>
-                Note that in many cases it is racy to first check for file existence and then execute
-                something based on the outcome of that, because the file might have been created or
-                removed in between the operations. The general approach to handling that is to not check,
-                but just do the operation and handle the errors as they come. 
-            </p><p>
-                As an example of race-free checking, take the case of reading a file, and if it doesn't
-                exist, creating it. There are two racy versions: read it, and on error create it; and:
-                check if it exists, if not create it. These can both result in two processes creating the
-                file (with perhaps a partially written file as the result). The correct approach is to
-                always try to create the file with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--create" title="gio.File.create">gio.File.create</a></code>()
-                which will either atomically create the file or fail with a gio.ERROR_EXISTS error. 
-            </p><p>
-                However, in many cases an existence check is useful in a user interface, for instance
-                to make a menu item sensitive/insensitive, so that you don't have to fool users that
-                something is possible and then just show and error dialog. If you do this, you should
-                make sure to also handle the errors that can happen due to races when you execute the operation.
-            </p></div><div class="refsect2" title="gio.File.query_file_type"><a name="method-giofile--query-file-type"></a><h3>gio.File.query_file_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_file_type</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_MONITOR_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>
-                    a <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>
-                    <a class="xref" href="gio-constants.html#gio-file-type-constants" title="Gio File Type Constants">Gio File Type Constants</a>
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_file_type</code>() method it's an utility function to inspect
-                the <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                of a file. This is implemented using
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info" title="gio.File.query_filesystem_info">gio.File.query_info</a></code>()
-                and as such does blocking I/O. 
-            </p><p>
-                The primary use case of this method is to check if a file is a regular file, directory, or symlink.
-            </p></div><div class="refsect2" title="gio.File.query_filesystem_info"><a name="method-giofile--query-filesystem-info"></a><h3>gio.File.query_filesystem_info</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_filesystem_info</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attributes</code></em> :</span></p></td><td>an attribute query string.                    
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                    or <code class="literal">None</code> if there was an error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_filesystem_info</code>() method it's similar to
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info" title="gio.File.query_filesystem_info">gio.File.query_info</a></code>(),
-                but obtains information about the filesystem the file is on, rather than the
-                file itself. For instance the amount of space available and the type of the filesystem. 
-            </p><p>
-                The attribute value is a string that specifies the file attributes that should be gathered.
-                It is not an error if it's not possible to read a particular requested attribute from a file -
-                it just won't be set. attribute should be a comma-separated list of attribute or attribute
-                wildcards. The wildcard "*" means all attributes, and a wildcard like "fs:*" means all attributes
-                in the fs namespace. The standard namespace for filesystem attributes is "fs". Common attributes
-                of interest are gio.FILE_ATTRIBUTE_FILESYSTEM_SIZE (the total size of the filesystem in bytes),
-                gio.FILE_ATTRIBUTE_FILESYSTEM_FREE (number of bytes available), and gio.FILE_ATTRIBUTE_FILESYSTEM_TYPE
-                (type of the filesystem). 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p><p>
-                If the file does not exist, the gio.ERROR_NOT_FOUND error will be returned. Other errors
-                are possible too, and depend on what kind of filesystem the file is on.
-            </p></div><div class="refsect2" title="gio.File.query_filesystem_info_async"><a name="method-giofile--query-filesystem-info-async"></a><h3>gio.File.query_filesystem_info_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_filesystem_info_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attributes</code></em> :</span></p></td><td>an attribute query string.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_filesystem_info_async</code>() method asynchronously
-                gets the requested information about the filesystem that the specified file is on.
-                The result is a GFileInfo object that contains key-value attributes
-                (such as type or size for the file). 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-filesystem-info" title="gio.File.query_filesystem_info">query_filesystem_info</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-filesystem-info-finish" title="gio.File.query_filesystem_info_finish">gio.File.query_filesystem_info_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.File.query_filesystem_info_finish"><a name="method-giofile--query-filesystem-info-finish"></a><h3>gio.File.query_filesystem_info_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_filesystem_info_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                    or <code class="literal">None</code> if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_filesystem_info_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-filesystem-info-async" title="gio.File.query_filesystem_info_async">gio.File.query_filesystem_info_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.query_filesystem_info"><a name="method-giofile--query-info"></a><h3>gio.File.query_filesystem_info</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_info</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attributes</code></em> :</span></p></td><td>an attribute query string.                    
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>
-                    a <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                    for the given file or <code class="literal">None</code> if there was an error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_info</code>() method gets the requested
-                information about specified file. The result is a
-                <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                object that contains key-value attributes (such as the type or size of the file). 
-            </p><p>
-                The attribute value is a string that specifies the file attributes that should
-                be gathered. It is not an error if it's not possible to read a particular
-                requested attribute from a file - it just won't be set. attribute should be
-                a comma-separated list of attribute or attribute wildcards. The wildcard "*"
-                means all attributes, and a wildcard like "standard::*" means all attributes
-                in the standard namespace. An example attribute query be "standard::*,owner::user".
-                The standard attributes are available as defines, like gio.FILE_ATTRIBUTE_STANDARD_NAME. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p><p>
-                For symlinks, normally the information about the target of the symlink is returned,
-                rather than information about the symlink itself. However if you pass
-                gio.FILE_QUERY_INFO_NOFOLLOW_SYMLINKS in flags the information about
-                the symlink itself will be returned. Also, for symlinks that point to non-existing
-                files the information about the symlink itself will be returned. 
-            </p><p>
-                If the file does not exist, the gio.ERROR_NOT_FOUND error will be
-                returned. Other errors are possible too, and depend on what kind of
-                filesystem the file is on.
-            </p></div><div class="refsect2" title="gio.File.query_info_async"><a name="method-giofile--query-info-async"></a><h3>gio.File.query_info_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_info_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attributes</code></em> :</span></p></td><td>an attribute query string.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>
-                    a <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_info_async</code>() method asynchronously gets the
-                requested information about specified file. The result is a
-                <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                object that contains key-value attributes (such as type or size for the file). 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info" title="gio.File.query_filesystem_info">query_info</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info-finish" title="gio.File.query_info_finish">gio.File.query_info_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.File.query_info_finish"><a name="method-giofile--query-info-finish"></a><h3>gio.File.query_info_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_info_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                    for the given file or <code class="literal">None</code> if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_info_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info-async" title="gio.File.query_info_async">gio.File.query_info_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.query_settable_attributes"><a name="method-giofile--query-settable-attributes"></a><h3>gio.File.query_settable_attributes</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_settable_attributes</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of
-                    <a class="link" href="class-giofileattributeinfo.html" title="gio.FileAttributeInfo"><code class="classname">gio.FileAttributeInfo</code></a>
-                    describing the settable attributes.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_settable_attributes</code>() method obtain the
-                list of settable attributes for the file. 
-            </p><p>
-                Returns the type and full attribute name of all the attributes that can be
-                set on this file. This doesn't mean setting it will always succeed though,
-                you might get an access failure, or some specific file may not support a specific attribute. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.query_writable_namespace"><a name="method-giofile--query-writable-namespace"></a><h3>gio.File.query_writable_namespace</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_writable_namespace</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of
-                    <a class="link" href="class-giofileattributeinfo.html" title="gio.FileAttributeInfo"><code class="classname">gio.FileAttributeInfo</code></a>
-                    describing the writable namespaces.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_writable_namespace</code>() method obtain the
-                list of attribute namespaces where new attributes can be created by a user.
-                An example of this is extended attributes (in the "xattr" namespace). 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.read"><a name="method-giofile--read"></a><h3>gio.File.read</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a 
-                    <a class="link" href="class-giofileinputstream.html" title="gio.FileInputStream"><code class="classname">gio.FileInputStream</code></a>
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read</code>() method opens a file for reading. The result
-                is a <a class="link" href="class-giofileinputstream.html" title="gio.FileInputStream"><code class="classname">gio.FileInputStream</code></a>
-                that can be used to read the contents of the file. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p><p>
-                If the file does not exist, the gio.ERROR_NOT_FOUND error will be returned.
-                If the file is a directory, the gio.ERROR_IS_DIRECTORY error will be returned.
-                Other errors are possible too, and depend on what kind of filesystem the file is on.
-            </p></div><div class="refsect2" title="gio.File.read_async"><a name="method-giofile--read-async"></a><h3>gio.File.read_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_async</code>() method asynchronously opens file for reading. 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--read" title="gio.File.read">read</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--read-finish" title="gio.File.read_finish">gio.File.read_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.File.read_finish"><a name="method-giofile--read-finish"></a><h3>gio.File.read_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofileinputstream.html" title="gio.FileInputStream"><code class="classname">gio.FileInputStream</code></a>
-                    file or <code class="literal">None</code> if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--read-async" title="gio.File.read_async">gio.File.read_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.replace"><a name="method-giofile--replace"></a><h3>gio.File.replace</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">replace</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>etag</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>make_backup</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>etag</code></em> :</span></p></td><td>an optional entity tag for the current
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>,
-                    or <code class="literal">None</code> to ignore.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>make_backup</code></em> :</span></p></td><td><code class="literal">True</code> if a backup should be created. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-create-flags-constants" title="Gio File Create Flags Constants">Gio File Create Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a 
-                    <a class="link" href="class-giofileoutputstream.html" title="gio.FileOutputStream"><code class="classname">gio.FileOutputStream</code></a>
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">replace</code>() method returns an output stream for
-                overwriting the file, possibly creating a backup copy of the file first.
-                If the file doesn't exist, it will be created. 
-            </p><p>
-                This will try to replace the file in the safest way possible so that any
-                errors during the writing will not affect an already existing copy of the file.
-                For instance, for local files it may write to a temporary file and then atomically
-                rename over the destination when the stream is closed. 
-            </p><p>
-                By default files created are generally readable by everyone, but if you pass
-                gio.FILE_CREATE_PRIVATE in flags the file will be made readable only to
-                the current user, to the level that is supported on the target filesystem. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p><p>
-                If you pass in a non-<code class="literal">None</code> etag value, then this value is compared
-                to the current entity tag of the file, and if they differ an gio.ERROR_WRONG_ETAG error
-                is returned. This generally means that the file has been changed since you last read it.
-                You can get the new etag from
-                <code class="methodname"><a class="link" href="class-giofileoutputstream.html#method-giofileoutputstream--get-etag" title="gio.FileOutputStream.get_etag">gio.FileOutputStream.get_etag</a></code>()
-                after you've finished writing and closed the GFileOutputStream. When you load a new file you can use
-                <code class="methodname"><a class="link" href="class-giofileinputstream.html#method-giofileinputstream--query-info" title="gio.FileInputStream.query_info">gio.FileInputStream.query_info</a></code>()
-                to get the etag of the file. 
-            </p><p>
-                If make_backup is <code class="literal">True</code>, this function will attempt to make a backup
-                of the current file before overwriting it. If this fails a gio.ERROR_CANT_CREATE_BACKUP
-                error will be returned. If you want to replace anyway, try again
-                with make_backup set to <code class="literal">False</code>. 
-            </p><p>
-                If the file is a directory the gio.ERROR_IS_DIRECTORY error will be returned, and
-                if the file is some other form of non-regular file then a gio.ERROR_NOT_REGULAR_FILE
-                error will be returned. Some file systems don't allow all file names, and may return an
-                gio.ERROR_INVALID_FILENAME error, and if the name is to long gio.ERROR_FILENAME_TOO_LONG
-                will be returned. Other errors are possible too, and depend on what kind of filesystem the file is on.
-            </p></div><div class="refsect2" title="gio.File.replace_async"><a name="method-giofile--replace-async"></a><h3>gio.File.replace_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">replace_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>etag</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>make_backup</code></strong></span><span class="initializer">=True</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>etag</code></em> :</span></p></td><td>an optional entity tag for the current
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>,
-                    or <code class="literal">None</code> to ignore.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>make_backup</code></em> :</span></p></td><td><code class="literal">True</code> if a backup should be created. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-create-flags-constants" title="Gio File Create Flags Constants">Gio File Create Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">replace_async</code>() method asynchronously overwrites the file,
-                replacing the contents, possibly creating a backup copy of the file first. 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace" title="gio.File.replace">replace</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace-finish" title="gio.File.replace_finish">gio.File.replace_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.File.replace_contents"><a name="method-giofile--replace-contents"></a><h3>gio.File.replace_contents</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">replace_contents</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>contents</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>etag</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>make_backup</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>contents</code></em> :</span></p></td><td>a string containing the new contents for file. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>etag</code></em> :</span></p></td><td>the old entity tag for the document
-                    or <code class="literal">None</code> to ignore.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>make_backup</code></em> :</span></p></td><td><code class="literal">True</code> if a backup should be created. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-create-flags-constants" title="Gio File Create Flags Constants">Gio File Create Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the new entity tag  for the document.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">replace_contents</code>() method replaces the contents
-                of file with contents of length bytes. If etag is specified (not NULL) any existing
-                file must have that etag, or the error gio.ERROR_WRONG_ETAG will be returned. 
-            </p><p>
-                If make_backup is <code class="literal">True</code>, this function will attempt to make a backup of file. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p><p>
-                The returned etag can be used to verify that the file hasn't changed the next time it is saved over.
-            </p></div><div class="refsect2" title="gio.File.replace_contents_async"><a name="method-giofile--replace-contents-async"></a><h3>gio.File.replace_contents_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">replace_contents_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>contents</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>etag</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>make_backup</code></strong></span><span class="initializer">=True</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_CREATE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>contents</code></em> :</span></p></td><td>a string containing the new contents for file. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>etag</code></em> :</span></p></td><td>an optional entity tag for the current
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>,
-                    or <code class="literal">None</code> to ignore.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>make_backup</code></em> :</span></p></td><td><code class="literal">True</code> if a backup should be created. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-create-flags-constants" title="Gio File Create Flags Constants">Gio File Create Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">replace_contents_async</code>() method starts an asynchronous
-                replacement of file with the given contents of length bytes. etag will
-                replace the document's current entity tag. 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace-contents" title="gio.File.replace_contents">replace_contents</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace-contents-finish" title="gio.File.replace_contents_finish">gio.File.replace_contents_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.File.replace_contents_finish"><a name="method-giofile--replace-contents-finish"></a><h3>gio.File.replace_contents_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">replace_contents_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the new entity tag  for the document.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">replace_contents_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace-contents-async" title="gio.File.replace_contents_async">gio.File.replace_contents_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.replace_finish"><a name="method-giofile--replace-finish"></a><h3>gio.File.replace_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">replace_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofileoutputstream.html" title="gio.FileOutputStream"><code class="classname">gio.FileOutputStream</code></a>
-                    or <code class="literal">None</code> if an error occurred.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">replace_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--replace-async" title="gio.File.replace_async">gio.File.replace_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.resolve_relative_path"><a name="method-giofile--resolve-relative-path"></a><h3>gio.File.resolve_relative_path</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">resolve_relative_path</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>relative_path</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>relative_path</code></strong> :</span></p></td><td>a given relative path string. 
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    to the resolved path. <code class="literal">None</code> if relative_path is <code class="literal">None</code>
-                    or if file is invalid.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">resolve_relative_path</code>() method resolves a
-                relative path for file to an absolute path. 
-            </p><p>
-                This call does no blocking i/o.
-            </p></div><div class="refsect2" title="gio.File.set_attribute"><a name="method-giofile--set-attribute"></a><h3>gio.File.set_attribute</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_attribute</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value_p</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attribute</code></em> :</span></p></td><td>a string containing the attribute's name. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>the type of the attribute .
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>value_p</code></em> :</span></p></td><td>the value.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the attribute was set,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_attribute</code>() method sets an attribute in
-                the file with attribute name attribute to value. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.set_attribute_byte_string"><a name="method-giofile--set-attribute-byte-string"></a><h3>gio.File.set_attribute_byte_string</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_attribute_byte_string</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attribute</code></em> :</span></p></td><td>a string containing the attribute's name. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td><td>a string containing the attribute's new value.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the attribute was set,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_attribute_byte_string</code>() method Sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_BYTE_STRING to value. If attribute is of a different type,
-                this operation will fail, returning <code class="literal">False</code>. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.set_attribute_int32"><a name="method-giofile--set-attribute-int32"></a><h3>gio.File.set_attribute_int32</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_attribute_int32</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attribute</code></em> :</span></p></td><td>a string containing the attribute's name. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td><td>an int containing the attribute's new value.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the attribute was set,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_attribute_int32</code>() method sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_INT32 to value. If attribute is of a different type,
-                this operation will fail. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.set_attribute_int64"><a name="method-giofile--set-attribute-int64"></a><h3>gio.File.set_attribute_int64</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_attribute_int64</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attribute</code></em> :</span></p></td><td>a string containing the attribute's name. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td><td>a long containing the attribute's new value.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the attribute was set,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_attribute_int64</code>() method sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_INT64 to value. If attribute is of a different type,
-                this operation will fail. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.set_attribute_string"><a name="method-giofile--set-attribute-string"></a><h3>gio.File.set_attribute_string</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_attribute_string</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attribute</code></em> :</span></p></td><td>a string containing the attribute's name. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td><td>a string containing the attribute's new value.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the attribute was set,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_attribute_string</code>() method sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_STRING to value. If attribute is of a different type,
-                this operation will fail. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.set_attribute_uint32"><a name="method-giofile--set-attribute-uint32"></a><h3>gio.File.set_attribute_uint32</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_attribute_uint32</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attribute</code></em> :</span></p></td><td>a string containing the attribute's name. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td><td>an int containing the attribute's new value.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the attribute was set,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_attribute_uint32</code>() method sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_UINT32 to value. If attribute is of a different type,
-                this operation will fail. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.set_attribute_uint64"><a name="method-giofile--set-attribute-uint64"></a><h3>gio.File.set_attribute_uint64</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_attribute_uint64</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>attribute</code></em> :</span></p></td><td>a string containing the attribute's name. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td><td>a long containing the attribute's new value.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the attribute was set,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_attribute_uint64</code>() method sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_UINT64 to value. If attribute is of a different type,
-                this operation will fail. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </p></div><div class="refsect2" title="gio.File.set_attributes_async"><a name="method-giofile--set-attributes-async"></a><h3>gio.File.set_attributes_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_attributes_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>info</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>info</code></em> :</span></p></td><td>a <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_attributes_async</code>() method asynchronously
-                sets the attributes of file with info. 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attributes-from-info" title="gio.File.set_attributes_from_info">set_attributes_from_info</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attributes-finish" title="gio.File.set_attributes_finish">gio.File.set_attributes_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.File.set_attributes_finish"><a name="method-giofile--set-attributes-finish"></a><h3>gio.File.set_attributes_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_attributes_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the attributes were set correctly,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_attributes_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attributes-async" title="gio.File.set_attributes_async">gio.File.set_attributes_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.set_attributes_from_info"><a name="method-giofile--set-attributes-from-info"></a><h3>gio.File.set_attributes_from_info</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_attributes_from_info</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>info</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>info</code></em> :</span></p></td><td>a <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the attributes were set correctly,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_attributes_from_info</code>() method tries to set
-                all attributes in the GFileInfo on the target values, not stopping on the first error. 
-            </p>
-                If there is any error during this operation then error will be set to the
-                first error. Error on particular fields are flagged by setting the "status"
-                field in the attribute value to gio.FILE_ATTRIBUTE_STATUS_ERROR_SETTING,
-                which means you can also detect further errors. 
-            <p>
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.File.set_display_name"><a name="method-giofile--set-display-name"></a><h3>gio.File.set_display_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_display_name</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>display_name</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>display_name</code></em> :</span></p></td><td>a string conaining the name to display.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    specifying what file was renamed to, or <code class="literal">None</code> if there was an error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_display_name</code>() method renames file to
-                the specified display name. 
-            </p><p>
-                The display name is converted from UTF8 to the correct encoding for the
-                target filesystem if possible and the file is renamed to this. 
-            </p><p>
-                If you want to implement a rename operation in the user interface the
-                edit name (gio.FILE_ATTRIBUTE_STANDARD_EDIT_NAME) should be used as the
-                initial value in the rename widget, and then the result after editing
-                should be passed to
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-display-name" title="gio.File.set_display_name">gio.File.set_dispay_name</a></code>(). 
-            </p><p>
-                On success the resulting converted filename is returned. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.File.set_display_name_async"><a name="method-giofile--set-display-name-async"></a><h3>gio.File.set_display_name_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_display_name_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>display_name</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>display_name</code></em> :</span></p></td><td>a string conaining the name to display.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_display_name_async</code>() method asynchronously
-                sets the display name for a given GFile. 
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-display-name" title="gio.File.set_display_name">set_display_name</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-display-name-finish" title="gio.File.set_display_name_finish">gio.File.set_display_name_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.File.set_display_name_finish"><a name="method-giofile--set-display-name-finish"></a><h3>gio.File.set_display_name_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_display_name_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_display_name_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-display-name-async" title="gio.File.set_display_name_async">gio.File.set_display_name_async</a></code>().
-            </p></div><div class="refsect2" title="gio.File.trash"><a name="method-giofile--trash"></a><h3>gio.File.trash</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">trash</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> on successful trash, <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">trash</code>() method sends file to the "Trashcan", if possible.
-                This is similar to deleting it, but the user can recover it before emptying the trashcan.
-                Not all file systems support trashing, so this call can return the gio.ERROR_NOT_SUPPORTED error. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p></div><div class="refsect2" title="gio.File.unmount_mountable"><a name="method-giofile--unmount-mountable"></a><h3>gio.File.unmount_mountable</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">unmount_mountable</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.FILE_QUERY_INFO_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">unmount_mountable</code>() method unmounts a file of type gio.FILE_TYPE_MOUNTABLE. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--unmount-mountable-finish" title="gio.File.unmount_mountable_finish">gio.File.unmount_mountable_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.File.unmount_mountable_finish"><a name="method-giofile--unmount-mountable-finish"></a><h3>gio.File.unmount_mountable_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">unmount_mountable_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the operation finished successfully,
-                    <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">unmount_mountable_finish</code>() method finishes an asynchronous
-                copy operation started with
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--unmount-mountable" title="gio.File.unmount_mountable">gio.File.unmount_mountable</a></code>().
-            </p></div></div><div class="refsect1" title="Functions"><a name="id439674"></a><h2>Functions</h2><div class="refsect2" title="gio.file_parse_name"><a name="function-gio--file-parse-name"></a><h3>gio.file_parse_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">file_parse_name</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>parse_name</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>parse_name</code></em> :</span></p></td><td>a file name or path to be parsed.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">parse_name</code>() function constructs a
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                with the given parse_name (i.e. something given by g_file_get_parse_name()).
-                This operation never fails, but the returned object might not support any I/O
-                operation if the parse_name cannot be parsed.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gioemblemedicon.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giofileattributeinfo.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.EmblemedIcon </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.FileAttributeInfo</td></tr></table></div></body></html>
diff --git a/docs/html/class-giofileattributeinfo.html b/docs/html/class-giofileattributeinfo.html
deleted file mode 100644 (file)
index 8e69c3a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.FileAttributeInfo</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giofile.html" title="gio.File"><link rel="next" href="class-giofileenumerator.html" title="gio.FileEnumerator"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.FileAttributeInfo</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giofile.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giofileenumerator.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.FileAttributeInfo"><a name="class-giofileattributeinfo"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.FileAttributeInfo</h2><p>gio.FileAttributeInfo â€” Information about a specific attribute.</p></div><div class="refsect1" title="Synopsis"><a name="id359184"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.FileAttributeInfo</span></span>(<span class="ooclass"><span class="classname">__builtin__.object</span></span>):
-</pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id464225"></a><h2>Ancestry</h2><pre class="synopsis">+-- __builtin__.object
-  +-- <a class="link" href="class-giofileattributeinfo.html" title="gio.FileAttributeInfo">gio.FileAttributeInfo</a>
-</pre></div><div class="refsect1" title="Description"><a name="id464245"></a><h2>Description</h2><p>
-            The <a class="link" href="class-giofileattributeinfo.html" title="gio.FileAttributeInfo"><code class="classname">gio.FileAttributeInfo</code></a>
-            contains information about a specific attribute.
-        </p></div><div class="refsect1" title="gio.FileAttributeInfo Attributes"><a name="attributes-giofileattributeinfo"></a><h2>gio.FileAttributeInfo Attributes</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"name"</td><td valign="top">Read</td><td valign="top">The name of the attribute.</td></tr><tr valign="top"><td valign="top">"type"</td><td valign="top">Read</td><td valign="top">the
-                            <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                            type of the attribute.</td></tr><tr valign="top"><td valign="top">"flags"</td><td valign="top">Read</td><td valign="top">a set of
-                            <a class="xref" href="gio-constants.html#gio-file-attribute-flags-constants" title="Gio File Attribute Flags Constants">Gio File Attribute Flags Constants</a>.
-                            </td></tr></tbody></table></div></td></tr></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giofile.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giofileenumerator.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.File </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.FileEnumerator</td></tr></table></div></body></html>
diff --git a/docs/html/class-giofileenumerator.html b/docs/html/class-giofileenumerator.html
deleted file mode 100644 (file)
index d50118e..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.FileEnumerator</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giofileattributeinfo.html" title="gio.FileAttributeInfo"><link rel="next" href="class-giofileicon.html" title="gio.FileIcon"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.FileEnumerator</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giofileattributeinfo.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giofileicon.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.FileEnumerator"><a name="class-giofileenumerator"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.FileEnumerator</h2><p>gio.FileEnumerator â€” Enumerated Files Routines.</p></div><div class="refsect1" title="Synopsis"><a name="id434308"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.FileEnumerator</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--close" title="gio.FileEnumerator.close">close</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--close-async" title="gio.FileEnumerator.close_async">close_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--close-finish" title="gio.FileEnumerator.close_finish">close_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--get-container" title="gio.FileEnumerator.get_container">get_container</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--has-pending" title="gio.FileEnumerator.has_pending">has_pending</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--is-closed" title="gio.FileEnumerator.is_closed">is_closed</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--next-file" title="gio.FileEnumerator.next_file">next_file</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--next-files-async" title="gio.FileEnumerator.next_files_async">next_files_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>num_files</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--next-files-finish" title="gio.FileEnumerator.next_files_finish">next_files_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--set-pending" title="gio.FileEnumerator.set_pending">set_pending</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>pending</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id366700"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giofileenumerator.html" title="gio.FileEnumerator">gio.FileEnumerator</a>
-</pre></div><div class="refsect1" title="gio.FileEnumerator Properties"><a name="properties-giofileenumerator"></a><h2>gio.FileEnumerator Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"container"</td><td valign="top">Write - Construct only</td><td valign="top">The container that is being enumerated.</td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="Description"><a name="id415898"></a><h2>Description</h2><p>
-            The <a class="link" href="class-giofileenumerator.html" title="gio.FileEnumerator"><code class="classname">gio.FileEnumerator</code></a>
-            allows you to operate on a set of
-            <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>s
-            returning a
-            <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-            structure for each file enumerated (e.g.
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--enumerate-children" title="gio.File.enumerate_children">gio.File.enumerate_children</a></code>()
-            will return a The <a class="link" href="class-giofileenumerator.html" title="gio.FileEnumerator"><code class="classname">gio.FileEnumerator</code></a>
-            for each of the children within a directory).
-        </p><p>
-            To get the next file's information from a
-            The <a class="link" href="class-giofileenumerator.html" title="gio.FileEnumerator"><code class="classname">gio.FileEnumerator</code></a> use
-            <code class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--next-file" title="gio.FileEnumerator.next_file">gio.FileEnumerator.next_file</a></code>()
-            or its asynchronous version,
-            <code class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--next-files-async" title="gio.FileEnumerator.next_files_async">gio.FileEnumerator.next_files_async</a></code>().
-            Note that the asynchronous version will return a list of
-            <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>s,
-            whereas the synchronous will only return the next file in the enumerator. 
-        </p><p>
-            To close a <a class="link" href="class-giofileenumerator.html" title="gio.FileEnumerator"><code class="classname">gio.FileEnumerator</code></a>
-            use <code class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--close" title="gio.FileEnumerator.close">close</a></code>,
-            or its asynchronous version,
-            <code class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--close-async" title="gio.FileEnumerator.close_async">close_async</a></code>.
-            Once a <a class="link" href="class-giofileenumerator.html" title="gio.FileEnumerator"><code class="classname">gio.FileEnumerator</code></a>
-            is closed, no further actions may be performed on it.
-        </p></div><div class="refsect1" title="Methods"><a name="id491846"></a><h2>Methods</h2><div class="refsect2" title="gio.FileEnumerator.close"><a name="method-giofileenumerator--close"></a><h3>gio.FileEnumerator.close</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">close</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> on success or
-                    <code class="literal">False</code> on error. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">close</code>() method releases all resources used by this
-                enumerator, making the
-                <a class="xref" href="gio-constants.html#gio-error-constants" title="Gio Error Constants">Gio Error Constants</a>
-                return gio.ERROR_CLOSED on all calls. 
-            </p><p>
-                This will be automatically called when the last reference is dropped,
-                but you might want to call this function to make sure resources are released
-                as early as possible.
-            </p></div><div class="refsect2" title="gio.FileEnumerator.close_async"><a name="method-giofileenumerator--close-async"></a><h3>gio.FileEnumerator.close_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">close_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>callback</code></strong> :</span></p></td><td>A GAsyncReadyCallback to call when the request is satisfied.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>io_priority</code></strong> :</span></p></td><td>The
-                  <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a> of the request. 
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>user_data</code></strong> :</span></p></td><td>The data to pass to callback function.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">close_async</code>() method asynchronously closes the file enumerator. 
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned in
-                <code class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--close-finish" title="gio.FileEnumerator.close_finish">gio.FileEnumerator.close_finish</a></code>().
-            </p></div><div class="refsect2" title="gio.FileEnumerator.close_finish"><a name="method-giofileenumerator--close-finish"></a><h3>gio.FileEnumerator.close_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">close_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a GAsyncResult.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the close operation
-                    has finished successfully.</td></tr></tbody></table><p>
-                The <code class="methodname">close_finish</code>() method finishes closing a file enumerator, started from
-                <code class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--close-async" title="gio.FileEnumerator.close_async">gio.FileEnumerator.close_async</a></code>(). 
-            </p><p>
-                If the file enumerator was already closed when
-                <code class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--close-async" title="gio.FileEnumerator.close_async">gio.FileEnumerator.close_async</a></code>()
-                was called, then this function will report gio.ERROR_CLOSED in error, and return <code class="literal">False</code>.
-                If the file enumerator had pending operation when the close operation was started, then this function will report
-                gio.ERROR_PENDING, and return <code class="literal">False</code>. If cancellable was not <code class="literal">None</code>, then the operation
-                may have been cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be set, and <code class="literal">False</code> will be returned.
-            </p></div><div class="refsect2" title="gio.FileEnumerator.get_container"><a name="method-giofileenumerator--get-container"></a><h3>gio.FileEnumerator.get_container</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_container</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    which is being enumerated. </td></tr></tbody></table><p>
-                The <code class="methodname">get_container</code>() method gets the
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                container which is being enumerated.
-            </p></div><div class="refsect2" title="gio.FileEnumerator.has_pending"><a name="method-giofileenumerator--has-pending"></a><h3>gio.FileEnumerator.has_pending</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">has_pending</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the enumerator has pending operations.</td></tr></tbody></table><p>
-                The <code class="methodname">has_pending</code>() method checks if the file enumerator has pending operations.
-            </p></div><div class="refsect2" title="gio.FileEnumerator.is_closed"><a name="method-giofileenumerator--is-closed"></a><h3>gio.FileEnumerator.is_closed</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">is_closed</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the enumerator is closed.</td></tr></tbody></table><p>
-                The <code class="methodname">is_closed</code>() method checks if the file enumerator has been closed.
-            </p></div><div class="refsect2" title="gio.FileEnumerator.next_file"><a name="method-giofileenumerator--next-file"></a><h3>gio.FileEnumerator.next_file</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">next_file</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                    or <code class="literal">None</code> on error or end of enumerator.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">next_file</code>() method returns information for the next
-                file in the enumerated object. Will block until the information is available.
-                The <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                returned from this function will contain attributes that match the attribute string
-                that was passed when the GFileEnumerator was created. 
-            </p><p>
-                On error, returns <code class="literal">None</code> and sets error to the error. If the enumerator
-                is at the end, <code class="literal">None</code> will be returned and error will be unset.
-            </p></div><div class="refsect2" title="gio.FileEnumerator.next_files_async"><a name="method-giofileenumerator--next-files-async"></a><h3>gio.FileEnumerator.next_files_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">next_files_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>num_files</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>num_files</code></strong> :</span></p></td><td>The number of file info objects to request.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>callback</code></strong> :</span></p></td><td>A GAsyncReadyCallback to call when the request is satisfied.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>io_priority</code></strong> :</span></p></td><td>The
-                  <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a> of the request. 
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>user_data</code></strong> :</span></p></td><td>The data to pass to callback function.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">next_files_async</code>() method requests information for a number
-                of files from the enumerator asynchronously. When all i/o for the operation is finished
-                the callback will be called with the requested information. 
-            </p><p>
-                The callback can be called with less than num_files files in case of error or at the
-                end of the enumerator. In case of a partial error the callback will be called with any
-                succeeding items and no error, and on the next request the error will be reported. If a
-                request is cancelled the callback will be called with gio.ERROR_CANCELLED. 
-            </p><p>
-                During an async request no other sync and async calls are allowed, and will result in gio.ERROR_PENDING errors. 
-            </p><p>
-                Any outstanding i/o request with higher priority (lower numerical value) will be executed
-                before an outstanding request with lower priority. Default priority is glib.PRIORITY_DEFAULT.
-            </p></div><div class="refsect2" title="gio.FileEnumerator.next_files_finish"><a name="method-giofileenumerator--next-files-finish"></a><h3>gio.FileEnumerator.next_files_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">next_files_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a GAsyncResult.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A list of
-                    <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>s.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">next_files_finish</code>() method finishes the
-                asynchronous operation started with
-                <code class="methodname"><a class="link" href="class-giofileenumerator.html#method-giofileenumerator--next-files-async" title="gio.FileEnumerator.next_files_async">gio.FileEnumerator.next_files_async</a></code>().
-            </p></div><div class="refsect2" title="gio.FileEnumerator.set_pending"><a name="method-giofileenumerator--set-pending"></a><h3>gio.FileEnumerator.set_pending</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_pending</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>pending</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>pending</code></strong> :</span></p></td><td>A boolean value.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">push_current</code>() method sets the file enumerator as having pending operations.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giofileattributeinfo.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giofileicon.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.FileAttributeInfo </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.FileIcon</td></tr></table></div></body></html>
diff --git a/docs/html/class-giofileicon.html b/docs/html/class-giofileicon.html
deleted file mode 100644 (file)
index 72c0dba..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.FileIcon</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giofileenumerator.html" title="gio.FileEnumerator"><link rel="next" href="class-giofileinfo.html" title="gio.FileInfo"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.FileIcon</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giofileenumerator.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giofileinfo.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.FileIcon"><a name="class-giofileicon"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.FileIcon</h2><p>gio.FileIcon â€” Icons pointing to an image file.</p></div><div class="refsect1" title="Synopsis"><a name="id498860"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.FileIcon</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>, <span class="ooclass"><span class="classname"><a class="link" href="class-gioicon.html" title="gio.Icon">gio.Icon</a></span></span>, <span class="ooclass"><span class="classname"><a class="link" href="class-gioloadableicon.html" title="gio.LoadableIcon">gio.LoadableIcon</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giofileicon.html#constructor-giofileicon" title="Constructor">gio.FileIcon</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>file</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileicon.html#method-giofileicon--get-file" title="gio.FileIcon.get_file">get_file</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id498952"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giofileicon.html" title="gio.FileIcon">gio.FileIcon</a>
-</pre></div><div class="refsect1" title="Description"><a name="id498977"></a><h2>Description</h2><p>
-            The <a class="link" href="class-giofileicon.html" title="gio.FileIcon"><code class="classname">gio.FileIcon</code></a>
-            specifies an icon by pointing to an image file to be used as icon.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giofileicon"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.FileIcon</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>file</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>file</code></em> :</span></p></td><td>a
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giofileicon.html" title="gio.FileIcon"><code class="classname">gio.FileIcon</code></a>
-                for the given file, or <code class="literal">None</code> on error.
-                </td></tr></tbody></table><p>
-            Creates a new icon for a file.
-        </p></div><div class="refsect1" title="Methods"><a name="id499092"></a><h2>Methods</h2><div class="refsect2" title="gio.FileIcon.get_file"><a name="method-giofileicon--get-file"></a><h3>gio.FileIcon.get_file</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_file</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                    or <code class="literal">None</code>.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_file</code>() method gets the
-                <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-                associated with the given icon.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giofileenumerator.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giofileinfo.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.FileEnumerator </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.FileInfo</td></tr></table></div></body></html>
diff --git a/docs/html/class-giofileinfo.html b/docs/html/class-giofileinfo.html
deleted file mode 100644 (file)
index d82427c..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.FileInfo</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giofileicon.html" title="gio.FileIcon"><link rel="next" href="class-giofileinputstream.html" title="gio.FileInputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.FileInfo</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giofileicon.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giofileinputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.FileInfo"><a name="class-giofileinfo"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.FileInfo</h2><p>gio.FileInfo â€” File Information and Attributes</p></div><div class="refsect1" title="Synopsis"><a name="id499198"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.FileInfo</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giofileinfo.html#constructor-giofileinfo" title="Constructor">gio.FileInfo</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--clear-status">clear_status</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--copy-into">copy_into</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--dup">dup</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-as-string">get_attribute_as_string</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-boolean">get_attribute_boolean</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-byte-string">get_attribute_byte_string</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-data">get_attribute_data</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-int32">get_attribute_int32</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-int64">get_attribute_int64</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-object">get_attribute_object</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-status">get_attribute_status</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-string">get_attribute_string</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-type">get_attribute_type</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-uint32">get_attribute_uint32</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-attribute-uint64">get_attribute_uint64</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-content-type">get_content_type</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-display-name">get_display_name</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-edit-name">get_edit_name</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-etag">get_etag</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-file-type">get_file_type</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-icon">get_icon</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-is-backup">get_is_backup</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-is-hidden">get_is_hidden</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-is-symlink">get_is_symlink</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-modification-time">get_modification_time</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-name">get_name</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-size">get_size</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-sort-order">get_sort_order</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--get-symlink-target">get_symlink_target</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--has-attribute">has_attribute</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--list-attributes">list_attributes</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>name_space</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--remove-attribute">remove_attribute</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute">set_attribute</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>value_p</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute-boolean">set_attribute_boolean</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>attr_value</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute-byte-string">set_attribute_byte_string</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>attr_value</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute-data">set_attribute_data</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>attr_value</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute-int32">set_attribute_int32</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>attr_value</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute-int64">set_attribute_int64</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>attr_value</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute-int64">set_attribute_mask</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>mask</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute-object">set_attribute_object</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>attr_value</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute-status">set_attribute_status</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>attr_value</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute-string">set_attribute_string</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>attr_value</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute-uint32">set_attribute_uint32</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-attribute-uint64">set_attribute_uint64</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attribute</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-content-type">set_content_type</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>content_type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-display-name">set_display_name</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>display_name</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-edit-name">set_edit_name</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>edit_name</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-file-type">set_file_type</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-icon">set_icon</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>icon</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-is-hidden">set_is_hidden</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>is_hidden</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-is-symlink">set_is_symlink</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>is_symlink</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-modification-time">set_modification_time</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>mtime</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-name">set_name</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>name</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-size">set_size</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-sort-order">set_sort_order</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>sort_order</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-symlink-tarset">set_symlink_tarset</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>symlink_target</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--unset-attribute-mask">unset_attribute_mask</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id511611"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giofileinfo.html" title="gio.FileInfo">gio.FileInfo</a>
-</pre></div><div class="refsect1" title="Description"><a name="id511633"></a><h2>Description</h2><p>
-            Functionality for manipulating basic metadata for files.
-            <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-            implements methods for getting information that all files should contain,
-            and allows for manipulation of extended attributes.
-        </p><p>
-            See <PYGTKDOCLINK HREF="class-giofileattribute"><code class="classname">gio.FileAttribute</code></PYGTKDOCLINK>
-            for more information on how GIO handles file attributes.
-        </p><p>
-           To obtain a <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-           for a <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>, use
-           <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-info" title="gio.File.query_filesystem_info">gio.File.query_info</a></code>()
-           (or its async variant). To obtain a
-           <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-           for a file input or output stream, use
-           <code class="methodname"><a class="link" href="class-giofileinputstream.html#method-giofileinputstream--query-info" title="gio.FileInputStream.query_info">gio.FileInputStream.query_info</a></code>() or
-           <code class="methodname"><a class="link" href="class-giofileoutputstream.html#method-giofileoutputstream--query-info" title="gio.FileOutputStream.query_info">gio.FileOutputStream.query_info</a></code>()
-           (or their async variants).
-        </p><p>
-           To change the actual attributes of a file, you should then set the attribute in the
-           <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a> and call
-           <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attributes-from-info" title="gio.File.set_attributes_from_info">gio.File.set_attributes_from_info</a></code>() or
-           <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--set-attributes-async" title="gio.File.set_attributes_async">gio.File.set_attributes_async</a></code>()
-           on a <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-        </p><p>
-           However, not all attributes can be changed in the file. For instance, the
-           actual size of a file cannot be changed via
-           <code class="methodname"><PYGTKDOCLINK HREF="method-giofileinfo--set-size">gio.FileInfo.set_size</PYGTKDOCLINK></code>(). You may call
-           <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-settable-attributes" title="gio.File.query_settable_attributes">gio.File.query_settable_attributes</a></code>() and
-           <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-writable-namespace" title="gio.File.query_writable_namespace">gio.File.query_writable_namespace</a></code>()
-           to discover the settable attributes of a particular file at runtime.
-        </p><p>
-           <PYGTKDOCLINK HREF="class-giofileattributematcher"><code class="classname">gio.FileAttributeMatcher</code></PYGTKDOCLINK>
-           allows for searching through a GFileInfo for attributes.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giofileinfo"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.FileInfo</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-                </td></tr></tbody></table><p>
-            Creates a new <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>
-        </p></div><div class="refsect1" title="Methods"><a name="id511822"></a><h2>Methods</h2><p> Unfinished section, you may want to see the relevant C API docs for methods descriptions.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giofileicon.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giofileinputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.FileIcon </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.FileInputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giofileinputstream.html b/docs/html/class-giofileinputstream.html
deleted file mode 100644 (file)
index a4aedc7..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.FileInputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giofileinfo.html" title="gio.FileInfo"><link rel="next" href="class-giofilemonitor.html" title="gio.FileMonitor"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.FileInputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giofileinfo.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giofilemonitor.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.FileInputStream"><a name="class-giofileinputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.FileInputStream</h2><p>gio.FileInputStream â€” Base class for implementing streaming input</p></div><div class="refsect1" title="Synopsis"><a name="id511851"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.FileInputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gioinputstream.html" title="gio.InputStream">gio.InputStream</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileinputstream.html#method-giofileinputstream--query-info" title="gio.FileInputStream.query_info">query_info</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileinputstream.html#method-giofileinputstream--query-info-async" title="gio.FileInputStream.query_info_async">query_info_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileinputstream.html#method-giofileinputstream--query-info-finish" title="gio.FileInputStream.query_info_finish">query_info_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id512018"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-gioinputstream.html" title="gio.InputStream">gio.InputStream</a>
-    +-- <a class="link" href="class-giofileinputstream.html" title="gio.FileInputStream">gio.FileInputStream</a>
-</pre></div><div class="refsect1" title="Implemented Interfaces"><a name="id512045"></a><h2>Implemented Interfaces</h2><p>
-            <a class="link" href="class-giofileinputstream.html" title="gio.FileInputStream"><code class="classname">gio.FileInputStream</code></a>
-            implements
-            <a class="link" href="class-gioseekable.html" title="gio.Seekable"><code class="classname">gio.Seekable</code></a>
-        </p></div><div class="refsect1" title="Description"><a name="id512067"></a><h2>Description</h2><p>
-            <a class="link" href="class-giofileinputstream.html" title="gio.FileInputStream"><code class="classname">gio.FileInputStream</code></a>
-            provides input streams that take their content from a file.
-        </p><p>
-            <a class="link" href="class-giofileinputstream.html" title="gio.FileInputStream"><code class="classname">gio.FileInputStream</code></a>
-            implements <a class="link" href="class-gioseekable.html" title="gio.Seekable"><code class="classname">gio.Seekable</code></a>,
-            which allows the input stream to jump to arbitrary positions in the file, provided the filesystem
-            of the file allows it. In addition to the generic g_seekable_ API,
-            <a class="link" href="class-giofileinputstream.html" title="gio.FileInputStream"><code class="classname">gio.FileInputStream</code></a>
-            has its own API for seeking and positioning. To find the position of a file input stream, use
-            <code class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--tell" title="gio.Seekable.tell">gio.Seekable.tell</a></code>().
-            To find out if a file input stream supports seeking, use
-            <code class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--can_seek" title="gio.Seekable.can_seek">gio.Seekable.can_seek</a></code>().
-            To position a file input stream, use
-            <code class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--seek" title="gio.Seekable.seek">gio.Seekable.seek</a></code>().
-        </p></div><div class="refsect1" title="Methods"><a name="id512126"></a><h2>Methods</h2><div class="refsect2" title="gio.FileInputStream.query_info"><a name="method-giofileinputstream--query-info"></a><h3>gio.FileInputStream.query_info</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_info</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>attributes</code></strong> :</span></p></td><td>a file attribute query string.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>,
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_info</code>() method queries a file input stream
-                the given attributes. This function blocks while querying the stream.
-                For the asynchronous (non-blocking) version of this function, see
-                <code class="methodname"><a class="link" href="class-giofileinputstream.html#method-giofileinputstream--query-info-async" title="gio.FileInputStream.query_info_async">gio.FileInputStream.query_info_async</a></code>().
-                While the stream is blocked, the stream will set the pending flag internally,
-                and any other operations on the stream will fail with gio.ERROR_PENDING.
-            </p></div><div class="refsect2" title="gio.FileInputStream.query_info_async"><a name="method-giofileinputstream--query-info-async"></a><h3>gio.FileInputStream.query_info_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_info_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>attributes</code></strong> :</span></p></td><td>a file attribute query string.
-                  </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_info_async</code>() method queries the stream
-                information asynchronously. When the operation is finished callback will be
-                called. You can then call
-                <code class="methodname"><a class="link" href="class-giofileinputstream.html#method-giofileinputstream--query-info-finish" title="gio.FileInputStream.query_info_finish">gio.FileInputStream.query_info_finish</a></code>()
-                to get the result of the operation.
-            </p><p>
-                For the synchronous version of this function, see
-                <code class="methodname"><a class="link" href="class-giofileinputstream.html#method-giofileinputstream--query-info" title="gio.FileInputStream.query_info">gio.FileInputStream.query_info</a></code>().
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be set
-            </p></div><div class="refsect2" title="gio.FileInputStream.query_info_finish"><a name="method-giofileinputstream--query-info-finish"></a><h3>gio.FileInputStream.query_info_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_info_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>,
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_info_finish</code>() method finishes an asynchronous
-                file append operation started with
-                <code class="methodname"><a class="link" href="class-giofileinputstream.html#method-giofileinputstream--query-info-async" title="gio.FileInputStream.query_info_async">gio.FileInputStream.query_info_async</a></code>().
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giofileinfo.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giofilemonitor.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.FileInfo </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.FileMonitor</td></tr></table></div></body></html>
diff --git a/docs/html/class-giofilemonitor.html b/docs/html/class-giofilemonitor.html
deleted file mode 100644 (file)
index 187d822..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.FileMonitor</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giofileinputstream.html" title="gio.FileInputStream"><link rel="next" href="class-giofileoutputstream.html" title="gio.FileOutputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.FileMonitor</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giofileinputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giofileoutputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.FileMonitor"><a name="class-giofilemonitor"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.FileMonitor</h2><p>gio.FileMonitor â€” File Monitor</p></div><div class="refsect1" title="Synopsis"><a name="id512602"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.FileMonitor</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofilemonitor--cancel">cancel</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofilemonitor--emit-event">emit_event</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>child</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>other_file</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>event_type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofilemonitor--is-cancelled">is_cancelled</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giofilemonitor--set-rate-limit">set_rate_limit</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>limit_msecs</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id512734"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giofilemonitor.html" title="gio.FileMonitor">gio.FileMonitor</a>
-</pre></div><div class="refsect1" title="gio.FileMonitor Properties"><a name="properties-giofilemonitor"></a><h2>gio.FileMonitor Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"cancelled"</td><td valign="top">Read</td><td valign="top">
-                                Whether the monitor has been cancelled. Default value: <code class="literal">False</code>.
-                            </td></tr><tr valign="top"><td valign="top">"rate-limit"</td><td valign="top">Read/Write</td><td valign="top">
-                                The limit of the monitor to watch for changes, in milliseconds.
-                                Allowed values: &gt;= 0. Default value: 800.
-                            </td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="gio.FileMonitor Signal Prototypes"><a name="signal-prototypes-giofilemonitor"></a><h2>gio.FileMonitor Signal Prototypes</h2><p><a class="link" href="class-gobject.html#signal-prototypes-gobject" title="gobject.GObject Signal Prototypes">gobject.GObject Signal Prototypes</a></p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><PYGTKDOCLINK HREF="signal-giofilemonitor--aborted">"changed"</PYGTKDOCLINK></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>filemonitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>file</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>other_file</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>event_type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr></tbody></table></div><div class="refsect1" title="Description"><a name="id512941"></a><h2>Description</h2><p>
-            The <a class="link" href="class-giofilemonitor.html" title="gio.FileMonitor"><code class="classname">gio.FileMonitor</code></a>
-            monitors a file or directory for changes.
-        </p><p>
-            To obtain a <a class="link" href="class-giofilemonitor.html" title="gio.FileMonitor"><code class="classname">gio.FileMonitor</code></a>
-            for a file or directory, use
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--monitor" title="gio.File.monitor">gio.FileMonitor.monitor</a></code>(),
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--monitor-file" title="gio.File.monitor_file">gio.FileMonitor.monitor_file</a></code>(), or
-            <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--monitor-directory" title="gio.File.monitor_directory">gio.FileMonitor.monitor_directory</a></code>().
-        </p><p>
-            To get informed about changes to the file or directory you are monitoring,
-            connect to the "changed" signal.
-        </p></div><div class="refsect1" title="Methods"><a name="id512990"></a><h2>Methods</h2><p> Unfinished section, you may want to see the relevant C API docs for methods descriptions.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giofileinputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giofileoutputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.FileInputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.FileOutputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giofileoutputstream.html b/docs/html/class-giofileoutputstream.html
deleted file mode 100644 (file)
index f69c100..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.FileOutputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giofilemonitor.html" title="gio.FileMonitor"><link rel="next" href="class-giofilterinputstream.html" title="gio.FilterInputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.FileOutputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giofilemonitor.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giofilterinputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.FileOutputStream"><a name="class-giofileoutputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.FileOutputStream</h2><p>gio.FileOutputStream â€” Base class for implementing streaming input</p></div><div class="refsect1" title="Synopsis"><a name="id513019"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.FileOutputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-giooutputstream.html" title="gio.OutputStream">gio.OutputStream</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileoutputstream.html#method-giofileoutputstream--get-etag" title="gio.FileOutputStream.get_etag">get_etag</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileoutputstream.html#method-giofileoutputstream--query-info" title="gio.FileOutputStream.query_info">query_info</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileoutputstream.html#method-giofileoutputstream--query-info-async" title="gio.FileOutputStream.query_info_async">query_info_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofileoutputstream.html#method-giofileoutputstream--query-info-finish" title="gio.FileOutputStream.query_info_finish">query_info_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id513203"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giooutputstream.html" title="gio.OutputStream">gio.OutputStream</a>
-    +-- <a class="link" href="class-giofileoutputstream.html" title="gio.FileOutputStream">gio.FileOutputStream</a>
-</pre></div><div class="refsect1" title="Implemented Interfaces"><a name="id513230"></a><h2>Implemented Interfaces</h2><p>
-            <a class="link" href="class-giofileoutputstream.html" title="gio.FileOutputStream"><code class="classname">gio.FileOutputStream</code></a>
-            implements
-            <a class="link" href="class-gioseekable.html" title="gio.Seekable"><code class="classname">gio.Seekable</code></a>
-        </p></div><div class="refsect1" title="Description"><a name="id513252"></a><h2>Description</h2><p>
-            <a class="link" href="class-giofileoutputstream.html" title="gio.FileOutputStream"><code class="classname">gio.FileOutputStream</code></a>
-            provides output streams that write their content to a file.
-        </p><p>
-            <a class="link" href="class-giofileoutputstream.html" title="gio.FileOutputStream"><code class="classname">gio.FileOutputStream</code></a>
-            implements <a class="link" href="class-gioseekable.html" title="gio.Seekable"><code class="classname">gio.Seekable</code></a>,
-            which allows the output stream to jump to arbitrary positions in the file and to truncate
-            the file, provided the filesystem of the file supports these operations. In addition to the
-            generic gio.Seekable. API,
-            <a class="link" href="class-giofileoutputstream.html" title="gio.FileOutputStream"><code class="classname">gio.FileOutputStream</code></a>
-            has its own API for seeking and positioning. To find the position of a file output stream, use
-            <code class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--tell" title="gio.Seekable.tell">gio.Seekable.tell</a></code>().
-            To find out if a file output stream supports seeking, use
-            <code class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--can_seek" title="gio.Seekable.can_seek">gio.Seekable.can_seek</a></code>().
-            To position a file output stream, use
-            <code class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--seek" title="gio.Seekable.seek">gio.Seekable.seek</a></code>().
-            To find out if a file output stream supports truncating, use
-            <code class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--can_truncate" title="gio.Seekable.can_truncate">gio.FileOutputStream.can_truncate</a></code>().
-            To truncate a file output stream, use
-            <code class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--truncate" title="gio.Seekable.truncate">gio.Seekable.truncate</a></code>().
-        </p></div><div class="refsect1" title="Methods"><a name="id513326"></a><h2>Methods</h2><div class="refsect2" title="gio.FileOutputStream.get_etag"><a name="method-giofileoutputstream--get-etag"></a><h3>gio.FileOutputStream.get_etag</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_etag</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the entity tag for the stream.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_etag</code>() method gets the entity tag
-                for the file when it has been written. This must be called after the
-                stream has been written and closed, as the etag can change while writing.
-            </p></div><div class="refsect2" title="gio.FileOutputStream.query_info"><a name="method-giofileoutputstream--query-info"></a><h3>gio.FileOutputStream.query_info</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_info</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>attributes</code></strong> :</span></p></td><td>a file attribute query string.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>,
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_info</code>() method queries a file input stream
-                the given attributes. This function blocks while querying the stream.
-                For the asynchronous (non-blocking) version of this function, see
-                <code class="methodname"><a class="link" href="class-giofileoutputstream.html#method-giofileoutputstream--query-info-async" title="gio.FileOutputStream.query_info_async">gio.FileOutputStream.query_info_async</a></code>().
-                While the stream is blocked, the stream will set the pending flag internally,
-                and any other operations on the stream will fail with gio.ERROR_PENDING.
-            </p><p>
-                Can fail if the stream was already closed (with error being set to gio.ERROR_CLOSED),
-                the stream has pending operations (with error being set to gio.ERROR_PENDING), or
-                if querying info is not supported for the stream's interface (with error being set to
-                gio.ERROR_NOT_SUPPORTED). In all cases of failure, NULL will be returned.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be set, and <code class="literal">None</code> will be returned.
-            </p></div><div class="refsect2" title="gio.FileOutputStream.query_info_async"><a name="method-giofileoutputstream--query-info-async"></a><h3>gio.FileOutputStream.query_info_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_info_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>attributes</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>attributes</code></strong> :</span></p></td><td>a file attribute query string.
-                  </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_info_async</code>() method queries the stream
-                information asynchronously. When the operation is finished callback will be
-                called. You can then call
-                <code class="methodname"><a class="link" href="class-giofileoutputstream.html#method-giofileoutputstream--query-info-finish" title="gio.FileOutputStream.query_info_finish">gio.FileOutputStream.query_info_finish</a></code>()
-                to get the result of the operation.
-            </p><p>
-                For the synchronous version of this function, see
-                <code class="methodname"><a class="link" href="class-giofileoutputstream.html#method-giofileoutputstream--query-info" title="gio.FileOutputStream.query_info">gio.FileOutputStream.query_info</a></code>().
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be set
-            </p></div><div class="refsect2" title="gio.FileOutputStream.query_info_finish"><a name="method-giofileoutputstream--query-info-finish"></a><h3>gio.FileOutputStream.query_info_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">query_info_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>,
-                    or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">query_info_finish</code>() method finishes an asynchronous
-                file append operation started with
-                <code class="methodname"><a class="link" href="class-giofileoutputstream.html#method-giofileoutputstream--query-info-async" title="gio.FileOutputStream.query_info_async">gio.FileOutputStream.query_info_async</a></code>().
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giofilemonitor.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giofilterinputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.FileMonitor </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.FilterInputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giofilterinputstream.html b/docs/html/class-giofilterinputstream.html
deleted file mode 100644 (file)
index 0cfcee6..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.FilterInputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giofileoutputstream.html" title="gio.FileOutputStream"><link rel="next" href="class-giofilteroutputstream.html" title="gio.FilterOutputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.FilterInputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giofileoutputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giofilteroutputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.FilterInputStream"><a name="class-giofilterinputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.FilterInputStream</h2><p>gio.FilterInputStream â€” Filter Input Stream</p></div><div class="refsect1" title="Synopsis"><a name="id513874"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.FilterInputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gioinputstream.html" title="gio.InputStream">gio.InputStream</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofilterinputstream.html#method-giofilterinputstream--get-base-stream" title="gio.FilterInputStream.get_base_stream">get_base_stream</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofilterinputstream.html#method-giofilterinputstream--get-close-base-stream" title="gio.FilterInputStream.get_close_base_stream">get_close_base_stream</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofilterinputstream.html#method-giofilterinputstream--set-close-base-stream" title="gio.FilterInputStream.set_close_base_stream">set_close_base_stream</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_base</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id513958"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-gioinputstream.html" title="gio.InputStream">gio.InputStream</a>
-    +-- <a class="link" href="class-giofilterinputstream.html" title="gio.FilterInputStream">gio.FilterInputStream</a>
-</pre></div><div class="refsect1" title="gio.FilterInputStream Properties"><a name="properties-giofilterinputstream"></a><h2>gio.FilterInputStream Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"base-stream"</td><td valign="top">Read - Write - Construct only</td><td valign="top">The underlying base stream on which the io ops will be done.</td></tr><tr valign="top"><td valign="top">"close-base-stream"</td><td valign="top">Read - Write - Construct only</td><td valign="top">If the base stream should be closed when the filter stream is closed.
-                            Default value: <code class="literal">True</code>.</td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="Description"><a name="id514069"></a><h2>Description</h2><p>
-            Filter Input Stream.
-        </p></div><div class="refsect1" title="Methods"><a name="id514078"></a><h2>Methods</h2><div class="refsect2" title="gio.FilterInputStream.get_base_stream"><a name="method-giofilterinputstream--get-base-stream"></a><h3>gio.FilterInputStream.get_base_stream</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_base_stream</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A
-                    <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_base_stream</code>() method gets the base
-                stream for the filter stream.
-            </p></div><div class="refsect2" title="gio.FilterInputStream.get_close_base_stream"><a name="method-giofilterinputstream--get-close-base-stream"></a><h3>gio.FilterInputStream.get_close_base_stream</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_close_base_stream</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the base stream
-                    will be closed.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_close_base_stream</code>() method returns
-                whether the base stream will be closed when stream is closed.
-            </p></div><div class="refsect2" title="gio.FilterInputStream.set_close_base_stream"><a name="method-giofilterinputstream--set-close-base-stream"></a><h3>gio.FilterInputStream.set_close_base_stream</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_close_base_stream</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_base</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>close_base</code></strong> :</span></p></td><td><code class="literal">True</code> to close the base stream.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_close_base_stream</code>() method sets whether
-                the base stream will be closed when stream is closed.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giofileoutputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giofilteroutputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.FileOutputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.FilterOutputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giofilteroutputstream.html b/docs/html/class-giofilteroutputstream.html
deleted file mode 100644 (file)
index e8781a5..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.FilterOutputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giofilterinputstream.html" title="gio.FilterInputStream"><link rel="next" href="class-gioicon.html" title="gio.Icon"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.FilterOutputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giofilterinputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-gioicon.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.FilterOutputStream"><a name="class-giofilteroutputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.FilterOutputStream</h2><p>gio.FilterOutputStream â€” Filter Output Stream</p></div><div class="refsect1" title="Synopsis"><a name="id514276"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.FilterOutputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-giooutputstream.html" title="gio.OutputStream">gio.OutputStream</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofilteroutputstream.html#method-giofilteroutputstream--get-base-stream" title="gio.FilterOutputStream.get_base_stream">get_base_stream</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofilteroutputstream.html#method-giofilteroutputstream--get-close-base-stream" title="gio.FilterOutputStream.get_close_base_stream">get_close_base_stream</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giofilteroutputstream.html#method-giofilteroutputstream--set-close-base-stream" title="gio.FilterOutputStream.set_close_base_stream">set_close_base_stream</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_base</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id514360"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giooutputstream.html" title="gio.OutputStream">gio.OutputStream</a>
-    +-- <a class="link" href="class-giofilteroutputstream.html" title="gio.FilterOutputStream">gio.FilterOutputStream</a>
-</pre></div><div class="refsect1" title="gio.FilterOutputStream Properties"><a name="properties-giofilteroutputstream"></a><h2>gio.FilterOutputStream Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"base-stream"</td><td valign="top">Read - Write - Construct only</td><td valign="top">The underlying base stream on which the io ops will be done.</td></tr><tr valign="top"><td valign="top">"close-base-stream"</td><td valign="top">Read - Write - Construct only</td><td valign="top">If the base stream should be closed when the filter stream is closed.
-                            Default value: <code class="literal">True</code>.</td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="Description"><a name="id514470"></a><h2>Description</h2><p>
-            Filter Output Stream.
-        </p></div><div class="refsect1" title="Methods"><a name="id514480"></a><h2>Methods</h2><div class="refsect2" title="gio.FilterOutputStream.get_base_stream"><a name="method-giofilteroutputstream--get-base-stream"></a><h3>gio.FilterOutputStream.get_base_stream</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_base_stream</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A
-                    <a class="link" href="class-giooutputstream.html" title="gio.OutputStream"><code class="classname">gio.OutputStream</code></a>
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_base_stream</code>() method gets the base
-                stream for the filter stream.
-            </p></div><div class="refsect2" title="gio.FilterOutputStream.get_close_base_stream"><a name="method-giofilteroutputstream--get-close-base-stream"></a><h3>gio.FilterOutputStream.get_close_base_stream</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_close_base_stream</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the base stream
-                    will be closed.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_close_base_stream</code>() method returns
-                whether the base stream will be closed when stream is closed.
-            </p></div><div class="refsect2" title="gio.FilterOutputStream.set_close_base_stream"><a name="method-giofilteroutputstream--set-close-base-stream"></a><h3>gio.FilterOutputStream.set_close_base_stream</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_close_base_stream</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_base</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>close_base</code></strong> :</span></p></td><td><code class="literal">True</code> to close the base stream.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_close_base_stream</code>() method sets whether
-                the base stream will be closed when stream is closed.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giofilterinputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-gioicon.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.FilterInputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.Icon</td></tr></table></div></body></html>
diff --git a/docs/html/class-gioicon.html b/docs/html/class-gioicon.html
deleted file mode 100644 (file)
index 4a15c7e..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.Icon</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giofilteroutputstream.html" title="gio.FilterOutputStream"><link rel="next" href="class-gioinputstream.html" title="gio.InputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.Icon</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giofilteroutputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-gioinputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.Icon"><a name="class-gioicon"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.Icon</h2><p>gio.Icon â€” Interface for icons.</p></div><div class="refsect1" title="Synopsis"><a name="id514677"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.Icon</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioicon.html#method-gioicon--equal" title="gio.Icon.equal">equal</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>icon2</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioicon.html#method-gioicon--to-string" title="gio.Icon.to_string">to_string</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table><pre class="programlisting">
-<span class="bold"><strong>Functions</strong></span>
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioicon.html#function-gio--icon-new-from-string" title="gio.icon_new_from_string">gio.icon_new_from_string</a></span>(<span class="methodparam"></span>)</code></pre></div><div class="refsect1" title="Ancestry"><a name="id514771"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a>
-  +-- <a class="link" href="class-gioicon.html" title="gio.Icon">gio.Icon</a>
-</pre></div><div class="refsect1" title="Known Derived Interfaces"><a name="id514793"></a><h2>Known Derived Interfaces</h2><p>
-            <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a> is required by
-            <a class="link" href="class-gioloadableicon.html" title="gio.LoadableIcon"><code class="classname">gio.LoadableIcon</code></a>.
-        </p></div><div class="refsect1" title="Known Implementation"><a name="id514815"></a><h2>Known Implementation</h2><p>
-            <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a> is implemented by
-            <a class="link" href="class-giothemedicon.html" title="gio.ThemedIcon"><code class="classname">gio.ThemedIcon</code></a>,
-            <a class="link" href="class-giofileicon.html" title="gio.FileIcon"><code class="classname">gio.FileIcon</code></a>,
-            <a class="link" href="class-gioemblem.html" title="gio.Emblem"><code class="classname">gio.Emblem</code></a>,
-            <a class="link" href="class-gioemblemedicon.html" title="gio.EmblemedIcon"><code class="classname">gio.EmblemedIcon</code></a>.
-        </p></div><div class="refsect1" title="Description"><a name="id514856"></a><h2>Description</h2><p>
-            <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-            is a very minimal interface for icons. It provides functions for checking
-            the equality of two icons, hashing of icons and serializing an icon to and from strings. 
-        </p><p>
-            <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-            does not provide the actual pixmap for the icon as this is out of GIO's
-            scope, however implementations of
-            <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-            may contain the name of an icon (see
-            <a class="link" href="class-giothemedicon.html" title="gio.ThemedIcon"><code class="classname">gio.ThemedIcon</code></a>),
-            or the path to an icon (see
-            <a class="link" href="class-gioloadableicon.html" title="gio.LoadableIcon"><code class="classname">gio.LoadableIcon</code></a>).
-        </p><p>
-            To check if two GIcons are equal, see
-            <code class="methodname"><a class="link" href="class-gioicon.html#method-gioicon--equal" title="gio.Icon.equal">gio.Icon.equal</a></code>().
-        </p><p>
-            For serializing a <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>,
-            use <code class="methodname"><PYGTKDOCLINK HREF="method-gioicon-%20-to-string">gio.Icon.to_string</PYGTKDOCLINK></code>() and
-            <code class="methodname"><PYGTKDOCLINK HREF="method-gioicon-%20-new-from-string">gio.Icon.new_from_string</PYGTKDOCLINK></code>(). 
-        </p><p>
-            If your application or library provides one or more
-            <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-            implementations you need to ensure that each GType is registered
-            with the type system prior to calling
-            <code class="methodname"><PYGTKDOCLINK HREF="function-gioicon--new-from-string">gio.icon_new_from_string</PYGTKDOCLINK></code>(). 
-        </p></div><div class="refsect1" title="Methods"><a name="id514956"></a><h2>Methods</h2><div class="refsect2" title="gio.Icon.equal"><a name="method-gioicon--equal"></a><h3>gio.Icon.equal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">equal</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>icon2</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>icon2</code></em> :</span></p></td><td>the second
-                    <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">equal</code>() method checks if two icons are equal.
-            </p></div><div class="refsect2" title="gio.Icon.to_string"><a name="method-gioicon--to-string"></a><h3>gio.Icon.to_string</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">to_string</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>An UTF8 string or <code class="literal">None</code>
-                   if icon can't be serialized.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">to_string</code>() method generates a textual
-               representation of icon that can be used for serialization such as when
-               passing icon to a different process or saving it to persistent storage. Use
-               <code class="methodname"><a class="link" href="class-gioicon.html#function-gio--icon-new-from-string" title="gio.icon_new_from_string">gio.icon_new_from_string</a></code>()
-               to get icon back from the returned string.
-            </p><p>
-               The encoding of the returned string is proprietary to GIcon except in the following two cases
-           </p><p>
-               If icon is a <a class="link" href="class-giofileicon.html" title="gio.FileIcon"><code class="classname">gio.FileIcon</code></a>,
-               the returned string is a native path (such as /path/to/my icon.png) without escaping
-               if the <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>
-               for icon is a native file. If the file is not native, the returned string is the result of
-               <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--get-uri" title="gio.File.get_uri">gio.File.get_uri</a></code>()
-               (such as sftp://path/to/my%20icon.png).
-           </p><p>
-               If icon is a <a class="link" href="class-giothemedicon.html" title="gio.ThemedIcon"><code class="classname">gio.ThemedIcon</code></a>
-               with exactly one name, the encoding is simply the name (such as network-server).
-           </p></div></div><div class="refsect1" title="Functions"><a name="id515125"></a><h2>Functions</h2><div class="refsect2" title="gio.icon_new_from_string"><a name="function-gio--icon-new-from-string"></a><h3>gio.icon_new_from_string</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">icon_new_from_string</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>str</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td><td>A string obtained via
-                   <code class="methodname"><a class="link" href="class-gioicon.html#method-gioicon--to-string" title="gio.Icon.to_string">gio.Icon.to_string</a></code>().
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>An object implementing the
-                   <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-                   interface or <code class="literal">None</code> if error is set.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">icon_new_from_string</code>() function generate a
-               <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-               instance from str. This function can fail if str is not valid - see
-               <code class="methodname"><a class="link" href="class-gioicon.html#method-gioicon--to-string" title="gio.Icon.to_string">gio.Icon.to_string</a></code>()
-               for discussion.
-            </p><p>
-                If your application or library provides one or more GIcon implementations you need
-               to ensure that each GType is registered with the type system prior to calling
-               <code class="methodname"><a class="link" href="class-gioicon.html#function-gio--icon-new-from-string" title="gio.icon_new_from_string">gio.icon_new_from_string</a></code>().
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giofilteroutputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-gioinputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.FilterOutputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.InputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-gioinputstream.html b/docs/html/class-gioinputstream.html
deleted file mode 100644 (file)
index 7a4ee27..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.InputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-gioicon.html" title="gio.Icon"><link rel="next" href="class-gioloadableicon.html" title="gio.LoadableIcon"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.InputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gioicon.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-gioloadableicon.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.InputStream"><a name="class-gioinputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.InputStream</h2><p>gio.InputStream â€” Base class for implementing streaming input</p></div><div class="refsect1" title="Synopsis"><a name="id515261"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.InputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--clear-pending" title="gio.InputStream.clear_pending">clear_pending</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--close" title="gio.InputStream.close">close</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--close-async" title="gio.InputStream.close_async">close_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--close-finish" title="gio.InputStream.close_finish">close_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--has-pending" title="gio.InputStream.has_pending">has_pending</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--is-closed" title="gio.InputStream.is_closed">is_closed</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--read" title="gio.InputStream.read">read</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span><span class="initializer">=-1</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--read-async" title="gio.InputStream.read_async">read_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--read-finish" title="gio.InputStream.read_finish">read_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--read-part" title="gio.InputStream.read_part">read_part</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span><span class="initializer">=-1</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--set-pending" title="gio.InputStream.set_pending">set_pending</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--skip" title="gio.InputStream.skip">skip</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--skip-async" title="gio.InputStream.skip_async">skip_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--skip-finish" title="gio.InputStream.skip_finish">skip_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id515798"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-gioinputstream.html" title="gio.InputStream">gio.InputStream</a>
-</pre></div><div class="refsect1" title="Description"><a name="id515820"></a><h2>Description</h2><p>
-            <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>
-            has functions to read from a stream (
-            <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--read" title="gio.InputStream.read">gio.InputStream.read</a></code>()
-            ), to close a stream (
-            <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--close" title="gio.InputStream.close">gio.InputStream.close</a></code>()
-            ) and to skip some content (
-            <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--skip" title="gio.InputStream.skip">gio.InputStream.skip</a></code>()
-            ).
-        </p><p>
-            To copy the content of an input stream to an output stream without manually
-            handling the reads and writes, use
-            <code class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--skip">gio.OutputStream.splice</PYGTKDOCLINK></code>().
-        </p><p>
-            All of these functions have async variants too.
-        </p></div><div class="refsect1" title="Methods"><a name="id515868"></a><h2>Methods</h2><div class="refsect2" title="gio.InputStream.clear_pending"><a name="method-gioinputstream--clear-pending"></a><h3>gio.InputStream.clear_pending</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">clear_pending</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody></tbody></table><p>
-                The <code class="methodname">clear_pending</code>() method clears the pending flag on stream.
-            </p></div><div class="refsect2" title="gio.InputStream.close"><a name="method-gioinputstream--close"></a><h3>gio.InputStream.close</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">close</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> on success
-                    <code class="literal">False</code> on failure.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">close</code>() method closes the stream, releasing
-                resources related to it.
-            </p><p>
-                Once the stream is closed, all other operations will return gio.ERROR_CLOSED.
-                Closing a stream multiple times will not return an error.
-            </p><p>
-                Streams will be automatically closed when the last reference is dropped, but
-                you might want to call this function to make sure resources are released as
-                early as possible.
-            </p><p>
-                Some streams might keep the backing store of the stream (e.g. a file descriptor)
-                open after the stream is closed. See the documentation for the individual
-                stream for details.
-            </p><p>
-                On failure the first error that happened will be reported, but the close operation
-                will finish as much as possible. A stream that failed to close will still return
-                gio.ERROR_CLOSED for all operations. Still, it is important to check and report
-                the error to the user.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. Cancelling a close will still leave
-                the stream closed, but some streams can use a faster close that doesn't block to e.g.
-                check errors.
-            </p></div><div class="refsect2" title="gio.InputStream.close_async"><a name="method-gioinputstream--close-async"></a><h3>gio.InputStream.close_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">close_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">close_async</code>() method asynchronously requests an
-                asynchronous closes of the stream, releasing resources related to it.
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--close" title="gio.InputStream.close">gio.InputStream.close</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--close-finish" title="gio.InputStream.close_finish">gio.InputStream.close_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.InputStream.close_finish"><a name="method-gioinputstream--close-finish"></a><h3>gio.InputStream.close_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">close_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the stream was closed successfully.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">close_finish</code>() method finishes an asynchronous
-                file append operation started with
-                <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--close-async" title="gio.InputStream.close_async">gio.InputStream.close_async</a></code>().
-            </p></div><div class="refsect2" title="gio.InputStream.has_pending"><a name="method-gioinputstream--has-pending"></a><h3>gio.InputStream.has_pending</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">has_pending</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if stream has pending actions.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">has_pending</code>() method checks if an input stream has pending actions.
-            </p></div><div class="refsect2" title="gio.InputStream.is_closed"><a name="method-gioinputstream--is-closed"></a><h3>gio.InputStream.is_closed</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">is_closed</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the stream is closed.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">is_closed</code>() method checks if an input stream is closed.
-            </p></div><div class="refsect2" title="gio.InputStream.read"><a name="method-gioinputstream--read"></a><h3>gio.InputStream.read</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span><span class="initializer">=-1</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>count</code></strong> :</span></p></td><td>optionally the number of bytes that will be read from the stream.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>The number of bytes read, or -1 on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read</code>() method tries to read count bytes from
-                the stream into the buffer starting at buffer. Will block during this read.
-            </p><p>
-                This function is similar to
-                <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--read-part" title="gio.InputStream.read_part">gio.InputStream.read_part</a></code>(),
-                except it tries to read as many bytes as requested, only stopping on an error or end of stream.
-            </p><p>
-                On a successful read of count bytes, or if we reached the end of the stream,
-                <code class="literal">True</code> is returned, and bytes_read is set to the number of bytes read into buffer.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. Cancelling a close will still leave
-                the stream closed, but some streams can use a faster close that doesn't block to e.g.
-                check errors.
-            </p><p>
-                If there is an error during the operation <code class="literal">False</code> is returned and error
-                is set to indicate the error status, bytes_read is updated to contain the number of
-                bytes read into buffer before the error occurred.
-            </p></div><div class="refsect2" title="gio.InputStream.read_async"><a name="method-gioinputstream--read-async"></a><h3>gio.InputStream.read_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>count</code></em> :</span></p></td><td>the number of bytes that will be read from the stream.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_async</code>() method requests an asynchronous read
-                of count bytes from the stream into the buffer.
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--read" title="gio.InputStream.read">gio.InputStream.read</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--read-finish" title="gio.InputStream.read_finish">gio.InputStream.read_finish</a></code>()
-                to get the result of the operation.
-            </p><p>
-                During an async request no other sync and async calls are allowed, and
-                will result in gio.ERROR_PENDING errors.
-            </p><p>
-                A value of count larger than G_MAXSSIZE will cause a gio.ERROR_INVALID_ARGUMENT error.
-            </p><p>
-                On success, the number of bytes read into the buffer will be passed to the callback.
-                It is not an error if this is not the same as the requested size, as it can happen e.g.
-                near the end of a file, but generally we try to read as many bytes as requested. Zero
-                is returned on end of file (or if count is zero), but never otherwise.
-            </p><p>
-                Any outstanding i/o request with higher priority (lower numerical value) will be
-                executed before an outstanding request with lower priority. Default priority is glib.PRIORITY_DEFAULT.
-            </p><p>
-                The asyncronous methods have a default fallback that uses threads to implement asynchronicity, so
-                they are optional for inheriting classes. However, if you override one you must override all.
-            </p></div><div class="refsect2" title="gio.InputStream.read_finish"><a name="method-gioinputstream--read-finish"></a><h3>gio.InputStream.read_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>The number of bytes read in, or -1 on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_finish</code>() method finishes an asynchronous
-                stream read operation started by
-                <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--read-async" title="gio.InputStream.read_async">gio.InputStream.read_async</a></code>().
-            </p></div><div class="refsect2" title="gio.InputStream.read_part"><a name="method-gioinputstream--read-part"></a><h3>gio.InputStream.read_part</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">read_part</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span><span class="initializer">=-1</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>count</code></strong> :</span></p></td><td>optionally the number of bytes that will be read from the stream.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>The number of bytes read, or -1 on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">read_part</code>() method tries to read count bytes from
-                the stream into the buffer starting at buffer. Will block during this read.
-            </p><p>
-                If count is zero returns zero and does nothing. A value of count larger than
-                G_MAXSSIZE will cause a gio.ERROR_INVALID_ARGUMENT error.
-            </p><p>
-                On success, the number of bytes read into the buffer is returned. It is
-                not an error if this is not the same as the requested size, as it can
-                happen e.g. near the end of a file. Zero is returned on end of file
-                (or if count is zero), but never otherwise.
-            </p><p>
-               If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. Cancelling a close will still leave
-                the stream closed, but some streams can use a faster close that doesn't block to e.g.
-                check errors.
-            </p><p>
-                On error -1 is returned and error is set accordingly.
-            </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
-                This method roughly corresponds to C GIO g_input_stream_read.
-            </div></div><div class="refsect2" title="gio.InputStream.set_pending"><a name="method-gioinputstream--set-pending"></a><h3>gio.InputStream.set_pending</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_pending</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if pending was previously
-                    unset and is now set.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_pending</code>() method sets stream to have actions pending.
-                If the pending flag is already set or stream is closed,
-                it will return <code class="literal">False</code> and set error.
-            </p></div><div class="refsect2" title="gio.InputStream.skip"><a name="method-gioinputstream--skip"></a><h3>gio.InputStream.skip</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">skip</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>count</code></strong> :</span></p></td><td>the number of bytes that will be skipped from the stream.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>The number of bytes skipped, or -1 on error
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">skip</code>() method tries to skip count bytes
-                from the stream. Will block during the operation.
-            </p><p>
-                This is identical to
-                <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--read" title="gio.InputStream.read">read</a></code>(),
-                from a behaviour standpoint, but the bytes that are skipped are not
-                returned to the user. Some streams have an implementation that is more
-                efficient than reading the data.
-            </p><p>
-                This function is optional for inherited classes, as the default implementation emulates it using read.
-            </p><p>
-               If cancellable is not <code class="literal">None</code>, then the operation can be cancelled by
-                triggering the cancellable object from another thskip. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. Cancelling a close will still leave
-                the stream closed, but some streams can use a faster close that doesn't block to e.g.
-                check errors.
-            </p></div><div class="refsect2" title="gio.InputStream.skip_async"><a name="method-gioinputstream--skip-async"></a><h3>gio.InputStream.skip_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">skip_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>count</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>count</code></em> :</span></p></td><td>the number of bytes that will be skipped from the stream.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncskipyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>io_priority</code></em> :</span></p></td><td>the
-                    <a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-                    of the request. 
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">skip_async</code>() method request an asynchronous
-                skip of count bytes from the stream.
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--skip" title="gio.InputStream.skip">gio.InputStream.skip</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--skip-finish" title="gio.InputStream.skip_finish">gio.InputStream.skip_finish</a></code>()
-                to get the result of the operation.
-            </p><p>
-                During an async request no other sync and async calls are allowed, and
-                will result in gio.ERROR_PENDING errors.
-            </p><p>
-                A value of count larger than G_MAXSSIZE will cause a gio.ERROR_INVALID_ARGUMENT error.
-            </p><p>
-                On success, the number of bytes skipped will be passed to the callback. It is
-                not an error if this is not the same as the requested size, as it can happen
-                e.g. near the end of a file, but generally we try to skip as many bytes as requested.
-                Zero is returned on end of file (or if count is zero), but never otherwise.
-            </p><p>
-                Any outstanding i/o request with higher priority (lower numerical value) will be
-                executed before an outstanding request with lower priority. Default priority is glib.PRIORITY_DEFAULT.
-            </p><p>
-                The asyncronous methods have a default fallback that uses thskips to implement asynchronicity, so
-                they are optional for inheriting classes. However, if you override one you must override all.
-            </p></div><div class="refsect2" title="gio.InputStream.skip_finish"><a name="method-gioinputstream--skip-finish"></a><h3>gio.InputStream.skip_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">skip_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>The number of bytes skipped in, or -1 on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">skip_finish</code>() method finishes an asynchronous
-                stream skip operation started by
-                <code class="methodname"><a class="link" href="class-gioinputstream.html#method-gioinputstream--skip-async" title="gio.InputStream.skip_async">gio.InputStream.skip_async</a></code>().
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gioicon.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-gioloadableicon.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.Icon </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.LoadableIcon</td></tr></table></div></body></html>
diff --git a/docs/html/class-gioloadableicon.html b/docs/html/class-gioloadableicon.html
deleted file mode 100644 (file)
index 8f84331..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.LoadableIcon</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-gioinputstream.html" title="gio.InputStream"><link rel="next" href="class-giomemoryinputstream.html" title="gio.MemoryInputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.LoadableIcon</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gioinputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giomemoryinputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.LoadableIcon"><a name="class-gioloadableicon"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.LoadableIcon</h2><p>gio.LoadableIcon â€” Interface for icons.</p></div><div class="refsect1" title="Synopsis"><a name="id517587"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.LoadableIcon</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioloadableicon.html#method-gioloadableicon--load" title="gio.LoadableIcon.load">load</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span><span class="initializer">=0</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioloadableicon.html#method-gioloadableicon--load-async" title="gio.LoadableIcon.load_async">load_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span><span class="initializer">=0</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioloadableicon.html#method-gioloadableicon--load-finish" title="gio.LoadableIcon.load_finish">load_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>res</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id517752"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a>
-  +-- <a class="link" href="class-gioloadableicon.html" title="gio.LoadableIcon">gio.LoadableIcon</a>
-</pre></div><div class="refsect1" title="Prerequisites"><a name="id517774"></a><h2>Prerequisites</h2><p>
-            <a class="link" href="class-gioloadableicon.html" title="gio.LoadableIcon"><code class="classname">gio.LoadableIcon</code></a> requires
-            <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>. and
-           <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>
-        </p></div><div class="refsect1" title="Known Implementation"><a name="id517803"></a><h2>Known Implementation</h2><p>
-            <a class="link" href="class-gioloadableicon.html" title="gio.LoadableIcon"><code class="classname">gio.LoadableIcon</code></a> is implemented by
-            <a class="link" href="class-giofileicon.html" title="gio.FileIcon"><code class="classname">gio.FileIcon</code></a>
-        </p></div><div class="refsect1" title="Description"><a name="id517825"></a><h2>Description</h2><p>
-            <a class="link" href="class-gioloadableicon.html" title="gio.LoadableIcon"><code class="classname">gio.LoadableIcon</code></a>
-            extends the <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-           interface and adds the ability to load icons from streams.
-        </p></div><div class="refsect1" title="Methods"><a name="id517847"></a><h2>Methods</h2><div class="refsect2" title="gio.LoadableIcon.load"><a name="method-gioloadableicon--load"></a><h3>gio.LoadableIcon.load</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">load</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span><span class="initializer">=0</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td><td>an integer
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a 2 tuple containing a
-                   <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>
-                   to read the icon from and a string containing the icon type.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">load</code>() method loads a loadable icon.
-               For the asynchronous version of this function, see
-               <code class="methodname"><a class="link" href="class-gioloadableicon.html#method-gioloadableicon--load-async" title="gio.LoadableIcon.load_async">gio.LoadableIcon.load_async</a></code>().
-            </p></div><div class="refsect2" title="gio.LoadableIcon.load_async"><a name="method-gioloadableicon--load-async"></a><h3>gio.LoadableIcon.load_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">load_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>size</code></strong></span><span class="initializer">=0</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a GAsyncReadyCallback to call when the request is satisfied.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>size</code></em> :</span></p></td><td>an integer
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>optional
-                    <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    object, <code class="literal">None</code> to ignore.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td><td>the data to pass to callback function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">load_async</code>() method loads an icon asynchronously.
-            </p><p>
-                For more details, see
-                <code class="methodname"><a class="link" href="class-gioloadableicon.html#method-gioloadableicon--load" title="gio.LoadableIcon.load">gio.LoadableIcon.load</a></code>()
-                which is the synchronous version of this call. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-gioloadableicon.html#method-gioloadableicon--load-finish" title="gio.LoadableIcon.load_finish">gio.LoadableIcon.load_finish</a></code>()
-                to get the result of the operation.
-            </p></div><div class="refsect2" title="gio.LoadableIcon.load_finish"><a name="method-gioloadableicon--load-finish"></a><h3>gio.LoadableIcon.load_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">load_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>res</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td><td>a
-                   <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a 2 tuple containing a
-                   <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>
-                   to read the icon from and a string containing the icon type.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">load_finish</code>() method finishes an asynchronous
-                icon load started in 
-                <code class="methodname"><a class="link" href="class-gioloadableicon.html#method-gioloadableicon--load-async" title="gio.LoadableIcon.load_async">gio.LoadableIcon.load_async</a></code>().
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gioinputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giomemoryinputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.InputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.MemoryInputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giomemoryinputstream.html b/docs/html/class-giomemoryinputstream.html
deleted file mode 100644 (file)
index 5068dea..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.MemoryInputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-gioloadableicon.html" title="gio.LoadableIcon"><link rel="next" href="class-giomemoryoutputstream.html" title="gio.MemoryOutputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.MemoryInputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gioloadableicon.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giomemoryoutputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.MemoryInputStream"><a name="class-giomemoryinputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.MemoryInputStream</h2><p>gio.MemoryInputStream â€” Base class for implementing streaming input</p></div><div class="refsect1" title="Synopsis"><a name="id518274"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.MemoryInputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gioinputstream.html" title="gio.InputStream">gio.InputStream</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giomemoryinputstream.html#constructor-giomemoryinputstream" title="Constructor">gio.MemoryInputStream</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomemoryinputstream.html#method-giomemoryinputstream--add-data" title="gio.MemoryInputStream.add_data">add_data</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>)</code><br></pre></td></tr></table><pre class="programlisting">
-<span class="bold"><strong>Functions</strong></span>
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomemoryinputstream.html#function-gio--memory-input-stream-new-from-data" title="gio.memory_input_stream_new_from_data">gio.memory_input_stream_new_from_data</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>)</code></pre></div><div class="refsect1" title="Ancestry"><a name="id518373"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-gioinputstream.html" title="gio.InputStream">gio.InputStream</a>
-    +-- <a class="link" href="class-giomemoryinputstream.html" title="gio.MemoryInputStream">gio.MemoryInputStream</a>
-</pre></div><div class="refsect1" title="Implemented Interfaces"><a name="id518400"></a><h2>Implemented Interfaces</h2><p>
-            <a class="link" href="class-giomemoryinputstream.html" title="gio.MemoryInputStream"><code class="classname">gio.MemoryInputStream</code></a>
-            implements
-            <a class="link" href="class-gioseekable.html" title="gio.Seekable"><code class="classname">gio.Seekable</code></a>
-        </p></div><div class="refsect1" title="Description"><a name="id518423"></a><h2>Description</h2><p>
-            <a class="link" href="class-giomemoryinputstream.html" title="gio.MemoryInputStream"><code class="classname">gio.MemoryInputStream</code></a>
-            is a class for using arbitrary memory chunks as input for GIO streaming input operations.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giomemoryinputstream"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.MemoryInputStream</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>icon</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giomemoryinputstream.html" title="gio.MemoryInputStream"><code class="classname">gio.MemoryInputStream</code></a>.
-                </td></tr></tbody></table><p>
-            Creates an empty
-            <a class="link" href="class-giomemoryinputstream.html" title="gio.MemoryInputStream"><code class="classname">gio.MemoryInputStream</code></a>.
-        </p></div><div class="refsect1" title="Methods"><a name="id518503"></a><h2>Methods</h2><div class="refsect2" title="gio.MemoryInputStream.add_data"><a name="method-giomemoryinputstream--add-data"></a><h3>gio.MemoryInputStream.add_data</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">add_data</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>data</code></strong> :</span></p></td><td>input data.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">add_data</code>() method appends data to data
-                that can be read from the input stream
-            </p></div></div><div class="refsect1" title="Functions"><a name="id518569"></a><h2>Functions</h2><div class="refsect2" title="gio.memory_input_stream_new_from_data"><a name="function-gio--memory-input-stream-new-from-data"></a><h3>gio.memory_input_stream_new_from_data</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">memory_input_stream_new_from_data</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td><td>input data.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A new
-                    <a class="link" href="class-giomemoryinputstream.html" title="gio.MemoryInputStream"><code class="classname">gio.MemoryInputStream</code></a>
-                    read from data
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">memory_input_stream_new_from_data</code>() function creates
-                a new <a class="link" href="class-giomemoryinputstream.html" title="gio.MemoryInputStream"><code class="classname">gio.MemoryInputStream</code></a>
-                with data in memory.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gioloadableicon.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giomemoryoutputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.LoadableIcon </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.MemoryOutputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giomemoryoutputstream.html b/docs/html/class-giomemoryoutputstream.html
deleted file mode 100644 (file)
index 115bba7..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.MemoryOutputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giomemoryinputstream.html" title="gio.MemoryInputStream"><link rel="next" href="class-giomount.html" title="gio.Mount"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.MemoryOutputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giomemoryinputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giomount.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.MemoryOutputStream"><a name="class-giomemoryoutputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.MemoryOutputStream</h2><p>gio.MemoryOutputStream â€” Streaming output operations on memory chunks</p></div><div class="refsect1" title="Synopsis"><a name="id518676"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.MemoryOutputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-giooutputstream.html" title="gio.OutputStream">gio.OutputStream</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giomemoryoutputstream.html#constructor-giomemoryoutputstream" title="Constructor">gio.MemoryOutputStream</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomemoryoutputstream.html#method-giomemoryoutputstream--get-contents" title="gio.MemoryOutputStream.get_contents">get_contents</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomemoryoutputstream.html#method-giomemoryoutputstream--get-data-size" title="gio.MemoryOutputStream.get_data_size">get_data_size</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomemoryoutputstream.html#method-giomemoryoutputstream--get-size" title="gio.MemoryOutputStream.get_size">get_size</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id518772"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giooutputstream.html" title="gio.OutputStream">gio.OutputStream</a>
-    +-- <a class="link" href="class-giomemoryoutputstream.html" title="gio.MemoryOutputStream">gio.MemoryOutputStream</a>
-</pre></div><div class="refsect1" title="Implemented Interfaces"><a name="id518799"></a><h2>Implemented Interfaces</h2><p>
-            <a class="link" href="class-giomemoryoutputstream.html" title="gio.MemoryOutputStream"><code class="classname">gio.MemoryOutputStream</code></a>
-            implements
-            <a class="link" href="class-gioseekable.html" title="gio.Seekable"><code class="classname">gio.Seekable</code></a>
-        </p></div><div class="refsect1" title="Description"><a name="id518821"></a><h2>Description</h2><p>
-            <a class="link" href="class-giomemoryoutputstream.html" title="gio.MemoryOutputStream"><code class="classname">gio.MemoryOutputStream</code></a>
-            is a class for using arbitrary memory chunks as output for GIO streaming output operations.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giomemoryoutputstream"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.MemoryOutputStream</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giomemoryoutputstream.html" title="gio.MemoryOutputStream"><code class="classname">gio.MemoryOutputStream</code></a>.
-                </td></tr></tbody></table><p>
-            Creates a new
-            <a class="link" href="class-giomemoryoutputstream.html" title="gio.MemoryOutputStream"><code class="classname">gio.MemoryOutputStream</code></a>.
-        </p></div><div class="refsect1" title="Methods"><a name="id518896"></a><h2>Methods</h2><div class="refsect2" title="gio.MemoryOutputStream.get_contents"><a name="method-giomemoryoutputstream--get-contents"></a><h3>gio.MemoryOutputStream.get_contents</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_contents</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the stream's data
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_contents</code>() method gets any loaded data
-                from the ostream.
-            </p><p>
-                Note that the returned data may become invalid on the next write or truncate
-                operation on the stream.
-            </p></div><div class="refsect2" title="gio.MemoryOutputStream.get_data_size"><a name="method-giomemoryoutputstream--get-data-size"></a><h3>gio.MemoryOutputStream.get_data_size</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_data_size</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the number of bytes written to the stream
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_data_size</code>() method returns the number
-                of bytes from the start up to including the last byte written in the
-                stream that has not been truncated away.
-            </p></div><div class="refsect2" title="gio.MemoryOutputStream.get_size"><a name="method-giomemoryoutputstream--get-size"></a><h3>gio.MemoryOutputStream.get_size</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_size</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the number of bytes allocated for the data buffer
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_size</code>() method gets the size of the
-                currently allocated data area (availible from
-                <code class="methodname"><a class="link" href="class-giomemoryoutputstream.html#method-giomemoryoutputstream--get-contents" title="gio.MemoryOutputStream.get_contents">gio.MemoryOutputStream.get_contents</a></code>()
-                ).
-            </p><p>
-                Note that for growable streams the returned size may become invalid on the next write or truncate operation on the stream.
-            </p><p>
-                If you want the number of bytes currently written to the stream, use
-                <code class="methodname"><a class="link" href="class-giomemoryoutputstream.html#method-giomemoryoutputstream--get-data-size" title="gio.MemoryOutputStream.get_data_size">gio.MemoryOutputStream.get_data_size</a></code>().
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giomemoryinputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giomount.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.MemoryInputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.Mount</td></tr></table></div></body></html>
diff --git a/docs/html/class-giomount.html b/docs/html/class-giomount.html
deleted file mode 100644 (file)
index 574ebfd..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.Mount</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giomemoryoutputstream.html" title="gio.MemoryOutputStream"><link rel="next" href="class-giomountoperation.html" title="gio.MountOperation"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.Mount</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giomemoryoutputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giomountoperation.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.Mount"><a name="class-giomount"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.Mount</h2><p>gio.Mount â€” Mount management</p></div><div class="refsect1" title="Synopsis"><a name="id519095"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.Mount</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--can-eject" title="gio.Mount.can_eject">can_eject</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--can-unmount" title="gio.Mount.can_unmount">can_unmount</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--eject" title="gio.Mount.eject">eject</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_UNMOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--eject-finish" title="gio.Mount.eject_finish">eject_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--get-drive" title="gio.Mount.get_drive">get_drive</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--get-icon" title="gio.Mount.get_icon">get_icon</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--get-name" title="gio.Mount.get_name">get_name</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--get-root" title="gio.Mount.get_root">get_root</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--get-uuid" title="gio.Mount.get_uuid">get_uuid</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--get-volume" title="gio.Mount.get_volume">get_volume</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--guess-content-type" title="gio.Mount.guess_content_type">guess_content_type</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>force_rescan</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--guess-content-type-finish" title="gio.Mount.guess_content_type_finish">guess_content_type_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--guess-content-type-sync" title="gio.Mount.guess_content_type_sync">guess_content_type_sync</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>force_rescan</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--is-shadowed" title="gio.Mount.is_shadowed">is_shadowed</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--remount" title="gio.Mount.remount">remount</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_UNMOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>mount_operation</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--remount-finish" title="gio.Mount.remount_finish">remount_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--shadow" title="gio.Mount.shadow">shadow</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--unmount" title="gio.Mount.unmount">unmount</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_UNMOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--unmount-finish" title="gio.Mount.unmount_finish">unmount_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomount.html#method-giomount--unshadow" title="gio.Mount.unshadow">unshadow</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id519766"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a>
-  +-- <a class="link" href="class-giomount.html" title="gio.Mount">gio.Mount</a>
-</pre></div><div class="refsect1" title="Prerequisites"><a name="id519788"></a><h2>Prerequisites</h2><p>
-            <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a> requires
-            <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>
-        </p></div><div class="refsect1" title="gio.Mount Signal Prototypes"><a name="signal-prototypes-giomount"></a><h2>gio.Mount Signal Prototypes</h2><p><a class="link" href="class-gobject.html#signal-prototypes-gobject" title="gobject.GObject Signal Prototypes">gobject.GObject Signal Prototypes</a></p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><a class="link" href="class-giomount.html#signal-giomount--aborted" title='The "aborted" gio.Mount Signal'>"aborted"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giomount.html#signal-giomount--changed" title='The "changed" gio.Mount Signal'>"changed"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giomount.html#signal-giomount--unmounted" title='The "unmounted" gio.Mount Signal'>"unmounted"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr></tbody></table></div><div class="refsect1" title="Description"><a name="id519980"></a><h2>Description</h2><p>
-            The <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-            interface represents user-visible mounts. Note, when porting from GnomeVFS,
-            <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-            is the moral equivalent of GnomeVFSVolume.
-            
-        </p><p>
-            <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-            is a "mounted" filesystem that you can access. Mounted is in quotes because
-            it's not the same as a unix mount, it might be a gvfs mount, but you can still
-            access the files on it if you use GIO. Might or might not be related to a volume object.
-        </p><p>
-            Unmounting a GMount instance is an asynchronous operation. For more information
-            about asynchronous operations, see GAsyncReady and GSimpleAsyncReady. To unmount
-            a <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a> instance,
-            first call
-            g_mount_unmount()
-            with (at least) the GMount instance and a GAsyncReadyCallback. The callback will
-            be fired when the operation has resolved (either with success or failure), and a
-            GAsyncReady structure will be passed to the callback. That callback should then call
-            g_mount_unmount_finish()
-            with the GMount and the GAsyncReady data to see if the operation was completed successfully.
-            If an error is present when g_mount_unmount_finish() is called, then it will be filled
-            with any error information.
-        </p></div><div class="refsect1" title="Methods"><a name="id520032"></a><h2>Methods</h2><div class="refsect2" title="gio.Mount.can_eject"><a name="method-giomount--can-eject"></a><h3>gio.Mount.can_eject</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">can_eject</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the mount can be ejected,
-                    <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">can_eject</code>() method checks if a mount can be ejected.
-            </p></div><div class="refsect2" title="gio.Mount.can_unmount"><a name="method-giomount--can-unmount"></a><h3>gio.Mount.can_unmount</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">can_unmount</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the mount can be unmounted,
-                    <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">can_eject</code>() method checks if a mount can be unmounted.
-            </p></div><div class="refsect2" title="gio.Mount.eject"><a name="method-giomount--eject"></a><h3>gio.Mount.eject</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">eject</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_UNMOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>callback</code></strong> :</span></p></td><td>A GAsyncReadyCallback to call when the request is satisfied.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>flags</code></strong> :</span></p></td><td>flags affecting the unmount if required for eject
-                  <a class="xref" href="gio-constants.html#gio-mount-unmount-flags-constants" title="Gio Mount Unmount Flags Constants">Gio Mount Unmount Flags Constants</a>.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>user_data</code></strong> :</span></p></td><td>The data to pass to callback function.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">eject</code>() method asynchronously ejects a mount. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giomount.html#method-giomount--eject-finish" title="gio.Mount.eject_finish">gio.Mount.eject_finish</a></code>()
-                to obtain the result of the operation.
-            </p></div><div class="refsect2" title="gio.Mount.eject_finish"><a name="method-giomount--eject-finish"></a><h3>gio.Mount.eject_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">eject_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the mount has been ejected
-                    successfully, <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">eject_finish</code>() method finishes ejecting a mount.
-            </p></div><div class="refsect2" title="gio.Mount.get_drive"><a name="method-giomount--get-drive"></a><h3>gio.Mount.get_drive</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_drive</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><a class="link" href="class-giodrive.html" title="gio.Drive"><code class="classname">gio.Drive</code></a>
-                    or <code class="literal">None</code> if mount is not associated with a volume or a drive.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_drive</code>() method gets the drive for the mount.
-            </p><p>
-                This is a convenience method for getting the
-                <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                and then using that object to get the
-                <a class="link" href="class-giodrive.html" title="gio.Drive"><code class="classname">gio.Drive</code></a>.
-            </p></div><div class="refsect2" title="gio.Mount.get_icon"><a name="method-giomount--get-icon"></a><h3>gio.Mount.get_icon</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_icon</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-                    for the mount.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_icon</code>() method gets the icon for mount.
-            </p></div><div class="refsect2" title="gio.Mount.get_name"><a name="method-giomount--get-name"></a><h3>gio.Mount.get_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_name</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the name for the given mount.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_name</code>() method gets the name of mount.
-            </p></div><div class="refsect2" title="gio.Mount.get_root"><a name="method-giomount--get-root"></a><h3>gio.Mount.get_root</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_root</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.File</code></a>.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_root</code>() method gets the root directory on mount.
-            </p></div><div class="refsect2" title="gio.Mount.get_uuid"><a name="method-giomount--get-uuid"></a><h3>gio.Mount.get_uuid</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_uuid</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the UUID for mount or <code class="literal">None</code>
-                    if no UUID can be computed.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_uuid</code>() method gets the UUID for the mount.
-                The reference is typically based on the file system UUID for the mount in
-                question and should be considered an opaque string. Returns <code class="literal">None</code>
-                if there is no UUID available
-            </p></div><div class="refsect2" title="gio.Mount.get_volume"><a name="method-giomount--get-volume"></a><h3>gio.Mount.get_volume</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_volume</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                    or <code class="literal">None</code> if mount is not associated with a volume.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_volume</code>() method gets the volume for the mount.
-            </p></div><div class="refsect2" title="gio.Mount.guess_content_type"><a name="method-giomount--guess-content-type"></a><h3>gio.Mount.guess_content_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">guess_content_type</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>force_rescan</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>callback</code></strong> :</span></p></td><td>A GAsyncReadyCallback to call when the request is satisfied.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>force_rescan</code></strong> :</span></p></td><td>Whether to force a rescan of the content. Otherwise a cached result will be used if available.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>user_data</code></strong> :</span></p></td><td>The data to pass to callback function.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">guess_content_type</code>() method asynchronously tries to guess the type of
-                content stored on mount. Returns one or more textual identifiers of well-known content
-                types (typically prefixed with "x-content/"), e.g. x-content/image-dcf for camera memory
-                cards. See the shared-mime-info specification for more on x-content types.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giomount.html#method-giomount--guess-content-type-finish" title="gio.Mount.guess_content_type_finish">gio.Mount.guess_content_type_finish</a></code>()
-                to obtain the result of the operation.
-            </p></div><div class="refsect2" title="gio.Mount.guess_content_type_finish"><a name="method-giomount--guess-content-type-finish"></a><h3>gio.Mount.guess_content_type_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">guess_content_type_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A list of types or <code class="literal">None</code> on error.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">guess_content_type_finish</code>() method finishes guessing content
-                types of mount. If any errors occured during the operation, error will be set to
-                contain the errors and <code class="literal">False</code> will be returned. In particular, you may get an
-                gio.ERROR_NOT_SUPPORTED if the mount does not support content guessing.
-            </p></div><div class="refsect2" title="gio.Mount.guess_content_type_sync"><a name="method-giomount--guess-content-type-sync"></a><h3>gio.Mount.guess_content_type_sync</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">guess_content_type_sync</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>force_rescan</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>force_rescan</code></strong> :</span></p></td><td>Whether to force a rescan of the content. Otherwise a cached result will be used if available.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">guess_content_type_sync</code>() method tries to guess
-                the type of content stored on mount. Returns one or more textual identifiers
-                of well-known content types (typically prefixed with "x-content/"), e.g.
-                x-content/image-dcf for camera memory cards. See the shared-mime-info specification
-                for more on x-content types.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p><p>
-                This is an synchronous operation and as such may block doing IO; see
-                <code class="methodname"><a class="link" href="class-giomount.html#method-giomount--guess-content-type" title="gio.Mount.guess_content_type">gio.Mount.guess_content_type</a></code>()
-                for the asynchronous version.
-            </p></div><div class="refsect2" title="gio.Mount.is_shadowed"><a name="method-giomount--is-shadowed"></a><h3>gio.Mount.is_shadowed</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">is_shadowed</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if mount is shadowed.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">is_shadowed</code>() method determines if mount
-                is shadowed. Applications or libraries should avoid displaying mount
-                in the user interface if it is shadowed.
-            </p><p>
-                A mount is said to be shadowed if there exists one or more user visible
-                objects (currently
-                <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                objects) with a root that is inside the root of mount.
-            </p><p>
-                One application of shadow mounts is when exposing a single file system
-                that is used to address several logical volumes. In this situation, a
-                <a class="link" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"><code class="classname">gio.VolumeMonitor</code></a>
-                implementation would create two
-                <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                objects (for example, one for the camera functionality of the device
-                and one for a SD card reader on the device) with activation URIs
-                gphoto2://[usb:001,002]/store1/ and gphoto2://[usb:001,002]/store2/.
-                When the underlying mount (with root gphoto2://[usb:001,002]/) is
-                mounted, said
-                <a class="link" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"><code class="classname">gio.VolumeMonitor</code></a>
-                implementation would create two
-                <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                objects (each with their root matching the corresponding volume
-                activation root) that would shadow the original mount.
-            </p><p>
-                The proxy monitor in GVfs 2.26 and later, automatically creates and
-                manage shadow mounts (and shadows the underlying mount) if the activation
-                root on a <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                is set.
-            </p></div><div class="refsect2" title="gio.Mount.remount"><a name="method-giomount--remount"></a><h3>gio.Mount.remount</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">remount</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_UNMOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>mount_operation</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>callback</code></strong> :</span></p></td><td>A GAsyncReadyCallback to call when the request is satisfied.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>flags</code></strong> :</span></p></td><td>flags affecting the unmount if required for eject
-                  <a class="xref" href="gio-constants.html#gio-mount-unmount-flags-constants" title="Gio Mount Unmount Flags Constants">Gio Mount Unmount Flags Constants</a>.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>mount_operation</code></strong> :</span></p></td><td>a <a class="link" href="class-giomountoperation.html" title="gio.MountOperation"><code class="classname">gio.MountOperation</code></a>
-                  or <code class="literal">None</code> to avoid user interaction.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>user_data</code></strong> :</span></p></td><td>The data to pass to callback function.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">remount</code>() method asynchronously remounts a mount.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giomount.html#method-giomount--remount-finish" title="gio.Mount.remount_finish">gio.Mount.remount_finish</a></code>()
-                to obtain the result of the operation.
-            </p></div><div class="refsect2" title="gio.Mount.remount_finish"><a name="method-giomount--remount-finish"></a><h3>gio.Mount.remount_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">remount_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the mount has been remounted
-                    successfully, <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">remount_finish</code>() method finishes remounting a mount.
-            </p></div><div class="refsect2" title="gio.Mount.shadow"><a name="method-giomount--shadow"></a><h3>gio.Mount.shadow</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">shadow</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody></tbody></table><p>
-                The <code class="methodname">shadow</code>() method increments the shadow
-                count on mount. Usually used by
-                <a class="link" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"><code class="classname">gio.VolumeMonitor</code></a>
-                implementations when creating a shadow mount for mount, see
-                <code class="methodname"><a class="link" href="class-giomount.html#method-giomount--is-shadowed" title="gio.Mount.is_shadowed">gio.Mount.is_shadowed</a></code>()
-                for more information. The caller will need to emit the "changed"
-                signal on mount manually.
-            </p></div><div class="refsect2" title="gio.Mount.unmount"><a name="method-giomount--unmount"></a><h3>gio.Mount.unmount</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">unmount</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_UNMOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>callback</code></strong> :</span></p></td><td>A GAsyncReadyCallback to call when the request is satisfied.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>flags</code></strong> :</span></p></td><td>flags affecting the unmount if required for eject
-                  <a class="xref" href="gio-constants.html#gio-mount-unmount-flags-constants" title="Gio Mount Unmount Flags Constants">Gio Mount Unmount Flags Constants</a>.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>user_data</code></strong> :</span></p></td><td>The data to pass to callback function.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">unmount</code>() method asynchronously unmounts a mount.
-            </p><p>
-                If cancellable is not <code class="literal">None</code>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giomount.html#method-giomount--unmount-finish" title="gio.Mount.unmount_finish">gio.Mount.unmount_finish</a></code>()
-                to obtain the result of the operation.
-            </p></div><div class="refsect2" title="gio.Mount.unmount_finish"><a name="method-giomount--unmount-finish"></a><h3>gio.Mount.unmount_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">unmount_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the mount has been unmounted
-                    successfully, <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">unmount_finish</code>() method finishes unmounting a mount.
-            </p></div><div class="refsect2" title="gio.Mount.unshadow"><a name="method-giomount--unshadow"></a><h3>gio.Mount.unshadow</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">unshadow</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody></tbody></table><p>
-                The <code class="methodname">unshadow</code>() method decrements the shadow
-                count on mount. Usually used by
-                <a class="link" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"><code class="classname">gio.VolumeMonitor</code></a>
-                implementations when destroying a shadow mount for mount, see
-                <code class="methodname"><a class="link" href="class-giomount.html#method-giomount--is-shadowed" title="gio.Mount.is_shadowed">gio.Mount.is_shadowed</a></code>()
-                for more information. The caller will need to emit the "changed"
-                signal on mount manually.
-            </p></div></div><div class="refsect1" title="Signals"><a name="id522197"></a><h2>Signals</h2><div class="refsect2" title='The "aborted" gio.Mount Signal'><a name="signal-giomount--aborted"></a><h3>The "aborted" gio.Mount Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>mount</code></em> :</span></p></td><td>the mount</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted by the backend when e.g. a device becomes unavailable while a
-                mount operation is in progress.
-            </p><p>
-                Implementations of <a class="link" href="class-giomountoperation.html" title="gio.MountOperation"><code class="classname">gio.MountOperation</code></a>
-                should handle this signal by dismissing open password dialogs.
-            </p></div><div class="refsect2" title='The "changed" gio.Mount Signal'><a name="signal-giomount--changed"></a><h3>The "changed" gio.Mount Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>mount</code></em> :</span></p></td><td>the mount</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when the mount has been changed.
-            </p></div><div class="refsect2" title='The "unmounted" gio.Mount Signal'><a name="signal-giomount--unmounted"></a><h3>The "unmounted" gio.Mount Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>mount</code></em> :</span></p></td><td>the mount</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                This signal is emitted when the
-                <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                have been unmounted.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giomemoryoutputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giomountoperation.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.MemoryOutputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.MountOperation</td></tr></table></div></body></html>
diff --git a/docs/html/class-giomountoperation.html b/docs/html/class-giomountoperation.html
deleted file mode 100644 (file)
index fddc13b..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.MountOperation</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giomount.html" title="gio.Mount"><link rel="next" href="class-giooutputstream.html" title="gio.OutputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.MountOperation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giomount.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giooutputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.MountOperation"><a name="class-giomountoperation"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.MountOperation</h2><p>gio.MountOperation â€” Authentication methods for mountable locations.</p></div><div class="refsect1" title="Synopsis"><a name="id522624"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.MountOperation</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giomountoperation.html#constructor-giomountoperation" title="Constructor">gio.MountOperation</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--get-anonymous" title="gio.MountOperation.get_anonymous">get_anonymous</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--get-choice" title="gio.MountOperation.get_choice">get_choice</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--get-domain" title="gio.MountOperation.get_domain">get_domain</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--get-password" title="gio.MountOperation.get_password">get_password</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--get-password-save" title="gio.MountOperation.get_password_save">get_password_save</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--get-username" title="gio.MountOperation.get_username">get_username</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--reply" title="gio.MountOperation.reply">replay</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--set-anonymous" title="gio.MountOperation.set_anonymous">set_anonymous</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>anonymous</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--set-choice" title="gio.MountOperation.set_choice">set_choice</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>choice</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--set-domain" title="gio.MountOperation.set_domain">set_domain</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>domain</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--set-password" title="gio.MountOperation.set_password">set_password</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>password</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--set-password-save" title="gio.MountOperation.set_password_save">set_password_save</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>save</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giomountoperation.html#method-giomountoperation--set-username" title="gio.MountOperation.set_username">set_username</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>username</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id522983"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giomountoperation.html" title="gio.MountOperation">gio.MountOperation</a>
-</pre></div><div class="refsect1" title="gio.MountOperation Properties"><a name="properties-giomountoperation"></a><h2>gio.MountOperation Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"anonymous"</td><td valign="top">Read/Write</td><td valign="top">
-                                Whether to use an anonymous user when authenticating.
-                                Default value: <code class="literal">False</code>
-                            </td></tr><tr valign="top"><td valign="top">"choice"</td><td valign="top">Read/Write</td><td valign="top">
-                                The index of the user's choice when a question is asked during
-                                the mount operation. See the "ask-question" signal.
-                                Allowed values: &gt;= 0 Default value: 0
-                            </td></tr><tr valign="top"><td valign="top">"domain"</td><td valign="top">Read/Write</td><td valign="top">
-                                The domain to use for the mount operation. Default value: <code class="literal">None</code>
-                            </td></tr><tr valign="top"><td valign="top">"password"</td><td valign="top">Read/Write</td><td valign="top">
-                                The password that is used for authentication when carrying out the
-                                mount operation. Default value: <code class="literal">None</code>
-                            </td></tr><tr valign="top"><td valign="top">"password-save"</td><td valign="top">Read/Write</td><td valign="top">
-                                Determines if and how the password information should be saved.
-                                Default value: gio.PASSWORD_SAVE_NEVER
-                            </td></tr><tr valign="top"><td valign="top">"username"</td><td valign="top">Read/Write</td><td valign="top">
-                                The user name that is used for authentication when carrying out the
-                                mount operation. Default value: <code class="literal">None</code>
-                            </td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="gio.MountOperation Signal Prototypes"><a name="signal-prototypes-giomountoperation"></a><h2>gio.MountOperation Signal Prototypes</h2><p><a class="link" href="class-gobject.html#signal-prototypes-gobject" title="gobject.GObject Signal Prototypes">gobject.GObject Signal Prototypes</a></p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><a class="link" href="class-giomountoperation.html#signal-giomountoperation--aborted" title='The "aborted" gio.MountOperation Signal'>"aborted"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mountoperation</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giomountoperation.html#signal-giomountoperation--ask-password" title='The "ask-password" gio.MountOperation Signal'>"ask-password"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mountoperation</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>message</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>default_user</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>default_domain</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>flags</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giomountoperation.html#signal-giomountoperation--ask-question" title='The "ask-question" gio.MountOperation Signal'>"ask-question"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mountoperation</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>message</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>choices</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giomountoperation.html#signal-giomountoperation--reply" title='The "reply" gio.MountOperation Signal'>"reply"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mountoperation</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>result</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr></tbody></table></div><div class="refsect1" title="Description"><a name="id523542"></a><h2>Description</h2><p>
-            The <a class="link" href="class-giomountoperation.html" title="gio.MountOperation"><code class="classname">gio.MountOperation</code></a>
-        provides a mechanism for authenticating mountable operations, such as loop mounting files,
-        hard drive partitions or server locations.
-        </p><p>
-            Mounting operations are handed a
-            <a class="link" href="class-giomountoperation.html" title="gio.MountOperation"><code class="classname">gio.MountOperation</code></a>
-            that then can use if they require any privileges or authentication for their volumes to be
-            mounted (e.g. a hard disk partition or an encrypted filesystem), or if they are implementing
-            a remote server protocol which requires user credentials such as FTP or WebDAV.
-        </p><p>
-            Users should instantiate a subclass of this that implements all the various callbacks
-            to show the required dialogs, such as
-            <PYGTKDOCLINK HREF="class-gtkmountoperation"><code class="classname">gtk.MountOperation</code></PYGTKDOCLINK>.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giomountoperation"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.MountOperation</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giomountoperation.html" title="gio.MountOperation"><code class="classname">gio.MountOperation</code></a>.
-                </td></tr></tbody></table><p>
-            Creates a new mount operation.
-        </p></div><div class="refsect1" title="Methods"><a name="id523648"></a><h2>Methods</h2><div class="refsect2" title="gio.MountOperation.get_anonymous"><a name="method-giomountoperation--get-anonymous"></a><h3>gio.MountOperation.get_anonymous</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_anonymous</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if mount operation is anonymous.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_anonymous</code>() method check to see whether
-                the mount operation is being used for an anonymous user
-            </p></div><div class="refsect2" title="gio.MountOperation.get_choice"><a name="method-giomountoperation--get-choice"></a><h3>gio.MountOperation.get_choice</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_choice</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an integer containing an index of the user's
-                    choice from the choice's list, or 0.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_anonymous</code>() method gets a choice
-                from the mount operation.
-            </p></div><div class="refsect2" title="gio.MountOperation.get_domain"><a name="method-giomountoperation--get-domain"></a><h3>gio.MountOperation.get_domain</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_domain</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string set to the domain.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_domain</code>() method gets the domain
-                of the mount operation.
-            </p></div><div class="refsect2" title="gio.MountOperation.get_password"><a name="method-giomountoperation--get-password"></a><h3>gio.MountOperation.get_password</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_password</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string containing the password within
-                    the mountoperation.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_password</code>() method gets a password
-                from the mount operation.
-            </p></div><div class="refsect2" title="gio.MountOperation.get_password_save"><a name="method-giomountoperation--get-password-save"></a><h3>gio.MountOperation.get_password_save</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_password_save</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                    <a class="xref" href="gio-constants.html#gio-password-save-constants" title="Gio Password Save Constants">Gio Password Save Constants</a>
-                    flag.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_password_save</code>() method gets the state
-                of saving passwords for the mount operation.
-            </p></div><div class="refsect2" title="gio.MountOperation.get_username"><a name="method-giomountoperation--get-username"></a><h3>gio.MountOperation.get_username</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_username</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string containing the user name.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_username</code>() method get the user
-                name from the mount operation.
-            </p></div><div class="refsect2" title="gio.MountOperation.reply"><a name="method-giomountoperation--reply"></a><h3>gio.MountOperation.reply</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">reply</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>result</code></em> :</span></p></td><td>a
-                    <a class="xref" href="gio-constants.html#gio-mount-operation-result-constants" title="Gio Mount Operation Result Constants">Gio Mount Operation Result Constants</a>
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">reply</code>() method emits the "reply" signal.
-            </p></div><div class="refsect2" title="gio.MountOperation.set_anonymous"><a name="method-giomountoperation--set-anonymous"></a><h3>gio.MountOperation.set_anonymous</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_anonymous</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>anonymous</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>anonymous</code></em> :</span></p></td><td>boolean value.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_anonymous</code>() method sets the mount operation
-                to use an anonymous user if anonymous is <code class="literal">True</code>.
-            </p></div><div class="refsect2" title="gio.MountOperation.set_choice"><a name="method-giomountoperation--set-choice"></a><h3>gio.MountOperation.set_choice</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_choice</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>choice</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>choice</code></em> :</span></p></td><td>an integer.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_choice</code>() method sets a default choice for the mount operation.
-            </p></div><div class="refsect2" title="gio.MountOperation.set_domain"><a name="method-giomountoperation--set-domain"></a><h3>gio.MountOperation.set_domain</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_domain</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>domain</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>domain</code></em> :</span></p></td><td>the domain to set.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_domain</code>() method sets the mount operation's domain.
-            </p></div><div class="refsect2" title="gio.MountOperation.set_password"><a name="method-giomountoperation--set-password"></a><h3>gio.MountOperation.set_password</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_password</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>password</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>password</code></em> :</span></p></td><td>password to set.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_password</code>() method sets the mount
-                operation's password to password.
-            </p></div><div class="refsect2" title="gio.MountOperation.set_password_save"><a name="method-giomountoperation--set-password-save"></a><h3>gio.MountOperation.set_password_save</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_password_save</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>save</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>save</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-password-save-constants" title="Gio Password Save Constants">Gio Password Save Constants</a>
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_password_save</code>() method sets the state
-                of saving passwords for the mount operation.
-            </p></div><div class="refsect2" title="gio.MountOperation.set_username"><a name="method-giomountoperation--set-username"></a><h3>gio.MountOperation.set_username</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_username</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>username</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>username</code></em> :</span></p></td><td>input username.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">set_anonymous</code>() method sets the user
-                name within op to username.
-            </p></div></div><div class="refsect1" title="Signals"><a name="id524509"></a><h2>Signals</h2><div class="refsect2" title='The "aborted" gio.MountOperation Signal'><a name="signal-giomountoperation--aborted"></a><h3>The "aborted" gio.MountOperation Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mountoperation</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>mountoperation</code></em> :</span></p></td><td>the mountoperation</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted by the backend when e.g. a device becomes unavailable while a mount operation is in progress.
-                Implementations of <a class="link" href="class-giomountoperation.html" title="gio.MountOperation"><code class="classname">gio.MountOperation</code></a>
-                should handle this signal by dismissing open password dialogs.
-            </p></div><div class="refsect2" title='The "ask-password" gio.MountOperation Signal'><a name="signal-giomountoperation--ask-password"></a><h3>The "ask-password" gio.MountOperation Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mountoperation</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>message</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>default_user</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>default_domain</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>flags</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>mountoperation</code></em> :</span></p></td><td>the mountoperation</td></tr><tr><td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td><td>string containing a message to display to the user.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>default_user</code></em> :</span></p></td><td>string containing the default user name.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>default_domain</code></em> :</span></p></td><td>string containing the default domain.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>a set of
-                    <a class="xref" href="gio-constants.html#gio-ask-password-flags-constants" title="Gio Ask Password Flags Constants">Gio Ask Password Flags Constants</a>
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                This signal is emitted when a mount operation asks the user for a password.
-                If the message contains a line break, the first line should be presented as a heading.
-                For example, it may be used as the primary text in a
-                <PYGTKDOCLINK HREF="class-gtkmessagedialog"><code class="classname">gtk.MessageDialog</code></PYGTKDOCLINK>.
-            </p></div><div class="refsect2" title='The "ask-question" gio.MountOperation Signal'><a name="signal-giomountoperation--ask-question"></a><h3>The "ask-question" gio.MountOperation Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mountoperation</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>message</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>choices</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>mountoperation</code></em> :</span></p></td><td>the mountoperation</td></tr><tr><td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td><td>string containing a message to display to the user.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>choices</code></em> :</span></p></td><td>a list of strings for each possible choice.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                This signal is emitted when asking the user a question and gives a list of choices
-                for the user to choose from. If the message contains a line break, the first line should be
-                presented as a heading. For example, it may be used as the primary text in a
-                <PYGTKDOCLINK HREF="class-gtkmessagedialog"><code class="classname">gtk.MessageDialog</code></PYGTKDOCLINK>.
-            </p></div><div class="refsect2" title='The "reply" gio.MountOperation Signal'><a name="signal-giomountoperation--reply"></a><h3>The "reply" gio.MountOperation Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>mountoperation</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>result</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>mountoperation</code></em> :</span></p></td><td>the mountoperation</td></tr><tr><td><p><span class="term"><em class="parameter"><code>result</code></em> :</span></p></td><td>a
-                    <a class="xref" href="gio-constants.html#gio-mount-operation-result-constants" title="Gio Mount Operation Result Constants">Gio Mount Operation Result Constants</a>
-                    indicating how the request was handled</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                This signal is emitted when the user has replied to the mount operation.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giomount.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giooutputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.Mount </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.OutputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giooutputstream.html b/docs/html/class-giooutputstream.html
deleted file mode 100644 (file)
index d4df1ab..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.OutputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giomountoperation.html" title="gio.MountOperation"><link rel="next" href="class-gioseekable.html" title="gio.Seekable"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.OutputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giomountoperation.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-gioseekable.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.OutputStream"><a name="class-giooutputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.OutputStream</h2><p>gio.OutputStream â€” Base class for implementing streaming input</p></div><div class="refsect1" title="Synopsis"><a name="id525286"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.OutputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--clear-pending">clear_pending</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--close">close</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--close-async">close_async</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--close-finish">close_finish</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--flush">flush</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--flush-async">flush_async</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--flush-finish">flush_finish</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--has-pending">has_pending</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--is-closed">is_closed</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--set-pending">set_pending</PYGTKDOCLINK></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--splice">splice</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.OUTPUT_STREAM_SPLICE_NONE</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--splice-async">splice_async</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>source</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.OUTPUT_STREAM_SPLICE_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--splice-finish">splice_finish</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--write">write</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>buffer</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--write-async">write_async</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>buffer</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>io_priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--write-finish">write_finish</PYGTKDOCLINK></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id525999"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giooutputstream.html" title="gio.OutputStream">gio.OutputStream</a>
-</pre></div><div class="refsect1" title="Description"><a name="id526024"></a><h2>Description</h2><p>
-            <a class="link" href="class-giooutputstream.html" title="gio.OutputStream"><code class="classname">gio.OutputStream</code></a>
-            has functions to write from a stream (
-            <code class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--write">gio.OutputStream.write</PYGTKDOCLINK></code>()
-            ), to close a stream (
-            <code class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--close">gio.OutputStream.close</PYGTKDOCLINK></code>()
-            ) and to flush pending writes (
-            <code class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--flush">gio.OutputStream.flush</PYGTKDOCLINK></code>()
-            ).
-        </p><p>
-            To copy the content of an input stream to an output stream without manually
-            handling the reads and writes, use
-            <code class="methodname"><PYGTKDOCLINK HREF="method-giooutputstream--splice">gio.OutputStream.splice</PYGTKDOCLINK></code>().
-        </p><p>
-            All of these functions have async variants too.
-        </p></div><div class="refsect1" title="Methods"><a name="id526082"></a><h2>Methods</h2><p> Unfinished section, you may want to see the relevant C API docs for methods descriptions.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giomountoperation.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-gioseekable.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.MountOperation </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.Seekable</td></tr></table></div></body></html>
diff --git a/docs/html/class-gioseekable.html b/docs/html/class-gioseekable.html
deleted file mode 100644 (file)
index e7fdf1b..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.Seekable</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giooutputstream.html" title="gio.OutputStream"><link rel="next" href="class-giosimpleasyncresult.html" title="gio.SimpleAsyncResult"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.Seekable</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giooutputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giosimpleasyncresult.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.Seekable"><a name="class-gioseekable"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.Seekable</h2><p>gio.Seekable â€” Stream seeking interface.</p></div><div class="refsect1" title="Synopsis"><a name="id526116"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.Seekable</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--tell" title="gio.Seekable.tell">tell</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--can_seek" title="gio.Seekable.can_seek">can_seek</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--seek" title="gio.Seekable.seek">seek</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>offset</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span><span class="initializer">=0</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--can_truncate" title="gio.Seekable.can_truncate">can_truncate</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gioseekable.html#method-gioseekable--truncate" title="gio.Seekable.truncate">truncate</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>offset</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id526294"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a>
-  +-- <a class="link" href="class-gioseekable.html" title="gio.Seekable">gio.Seekable</a>
-</pre></div><div class="refsect1" title="Known Implementation"><a name="id526320"></a><h2>Known Implementation</h2><p>
-            <a class="link" href="class-gioseekable.html" title="gio.Seekable"><code class="classname">gio.Seekable</code></a> is implemented by
-            <a class="link" href="class-giofileoutputstream.html" title="gio.FileOutputStream"><code class="classname">gio.FileOutputStream</code></a>,
-            <a class="link" href="class-giomemoryinputstream.html" title="gio.MemoryInputStream"><code class="classname">gio.MemoryInputStream</code></a>,
-            <a class="link" href="class-giofileinputstream.html" title="gio.FileInputStream"><code class="classname">gio.FileInputStream</code></a> and
-            <a class="link" href="class-giomemoryoutputstream.html" title="gio.MemoryOutputStream"><code class="classname">gio.MemoryOutputStream</code></a>.
-        </p></div><div class="refsect1" title="Description"><a name="id526367"></a><h2>Description</h2><p>
-            <a class="link" href="class-gioseekable.html" title="gio.Seekable"><code class="classname">gio.Seekable</code></a>
-            is implemented by streams (implementations of 
-            <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a> or
-            <a class="link" href="class-giooutputstream.html" title="gio.OutputStream"><code class="classname">gio.OutputStream</code></a>)
-            that support seeking.
-        </p></div><div class="refsect1" title="Methods"><a name="id526400"></a><h2>Methods</h2><div class="refsect2" title="gio.Seekable.tell"><a name="method-gioseekable--tell"></a><h3>gio.Seekable.tell</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">tell</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>
-                            the offset from the beginning of the buffer
-                    </td></tr></tbody></table><p>
-                Tells the current position within the stream.
-            </p></div><div class="refsect2" title="gio.Seekable.can_seek"><a name="method-gioseekable--can_seek"></a><h3>gio.Seekable.can_seek</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">can_seek</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if this
-                    <code class="classname">gio.Seekable</code> can be seeked with
-                    the <code class="methodname">seek</code>() method, <code class="literal">False</code>
-                    if not. </td></tr></tbody></table><p>
-                The <code class="methodname">can_seek</code>() method checks if the
-                <a class="link" href="class-gioseekable.html#method-gioseekable--seek" title="gio.Seekable.seek"><code class="methodname">seek</code>()</a>
-                can be used on this <code class="classname">gio.Seekable</code>.
-            </p></div><div class="refsect2" title="gio.Seekable.seek"><a name="method-gioseekable--seek"></a><h3>gio.Seekable.seek</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">seek</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>offset</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span><span class="initializer">=0</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>offset</code></em> :</span></p></td><td>the offset that is added to the position determined by the <code class="literal">type</code> parameter.
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>0=current position, 1=start of the file, 2=end of the file.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>a <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    or <code class="literal">None</code>.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> on successful seek,
-                    <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                Seeks in the stream by the given <code class="literal">offset</code>, modified by <code class="literal">type</code>.
-            </p><p>
-                If <code class="literal">cancellable</code> is not <code class="literal">None</code>, then the
-                operation can be cancelled by triggering the cancellable object from another thread.
-            </p></div><div class="refsect2" title="gio.Seekable.can_truncate"><a name="method-gioseekable--can_truncate"></a><h3>gio.Seekable.can_truncate</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">can_truncate</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if this
-                    <code class="classname">gio.Seekable</code> can be truncated with
-                    the <code class="methodname">truncate</code>() method, <code class="literal">False</code>
-                    if not. </td></tr></tbody></table><p>
-                The <code class="methodname">can_truncate</code>() method checks if the
-                <a class="link" href="class-gioseekable.html#method-gioseekable--truncate" title="gio.Seekable.truncate"><code class="methodname">truncate</code>()</a>
-                can be used on this <code class="classname">gio.Seekable</code>.
-            </p></div><div class="refsect2" title="gio.Seekable.truncate"><a name="method-gioseekable--truncate"></a><h3>gio.Seekable.truncate</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">truncate</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>offset</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>offset</code></em> :</span></p></td><td>the offset at which the stream should be truncated
-                    </td></tr><tr><td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td><td>a <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                    or <code class="literal">None</code>.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if successful,
-                    <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                Truncates a stream with a given <code class="literal">offset</code>.
-            </p><p>
-                If <code class="literal">cancellable</code> is not <code class="literal">None</code>, then the
-                operation can be cancelled by triggering the cancellable object from another thread.
-            </p><p>
-                If an operation was partially finished when the operation was cancelled the
-                partial result will be returned, without an error.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giooutputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giosimpleasyncresult.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.OutputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.SimpleAsyncResult</td></tr></table></div></body></html>
diff --git a/docs/html/class-giosimpleasyncresult.html b/docs/html/class-giosimpleasyncresult.html
deleted file mode 100644 (file)
index 6119618..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.SimpleAsyncResult</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-gioseekable.html" title="gio.Seekable"><link rel="next" href="class-giothemedicon.html" title="gio.ThemedIcon"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.SimpleAsyncResult</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gioseekable.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giothemedicon.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.SimpleAsyncResult"><a name="class-giosimpleasyncresult"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.SimpleAsyncResult</h2><p>gio.SimpleAsyncResult â€” Simple asynchronous results implementation.</p></div><div class="refsect1" title="Synopsis"><a name="id527016"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.SimpleAsyncResult</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--complete" title="gio.SimpleAsyncResult.complete">complete</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--complete-in-idle" title="gio.SimpleAsyncResult.complete_in_idle">complete_in_idle</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--get-op-res-gboolean" title="gio.SimpleAsyncResult.get_op_res_gboolean">get_op_res_gboolean</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--get-op-res-gssize" title="gio.SimpleAsyncResult.get_op_res_gssize">get_op_res_gssize</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--propagate-error" title="gio.SimpleAsyncResult.propagate_error">propagate_error</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-handle-cancellation" title="gio.SimpleAsyncResult.set_handle_cancellation">set_handle_cancellation</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>handle_cancellation</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-op-res-gboolean" title="gio.SimpleAsyncResult.set_op_res_gboolean">set_op_res_gboolean</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>op_res</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-op-res-gssize" title="gio.SimpleAsyncResult.set_op_res_gssize">set_op_res_gssize</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>op_res</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id527227"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giosimpleasyncresult.html" title="gio.SimpleAsyncResult">gio.SimpleAsyncResult</a>
-</pre></div><div class="refsect1" title="Implemented Interface"><a name="id527253"></a><h2>Implemented Interface</h2><p>
-            <a class="link" href="class-giosimpleasyncresult.html" title="gio.SimpleAsyncResult"><code class="classname">gio.SimpleAsyncResult</code></a> implements
-            <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-        </p></div><div class="refsect1" title="Description"><a name="id527278"></a><h2>Description</h2><p>
-            Implements <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>
-            for simple cases. Most of the time, this will be all an application needs, and will be used transparently
-            Because of this, GSimpleAsyncResult is used throughout GIO for handling asynchronous functions.            
-        </p><p>
-            <a class="link" href="class-giosimpleasyncresult.html" title="gio.SimpleAsyncResult"><code class="classname">gio.SimpleAsyncResult</code></a>
-            handles GAsyncReadyCallbacks, error reporting, operation cancellation and the final state of an
-            operation, completely transparent to the application. Results can be returned as a pointer e.g.
-            for functions that return data that is collected asynchronously, a boolean value for checking the
-            success or failure of an operation, or a gssize for operations which return the number of bytes modified
-            by the operation; all of the simple return cases are covered. 
-        </p><p>
-            Most of the time, an application will not need to know of the details of this API; it is handled
-            transparently, and any necessary operations are handled by GAsyncResult's interface. However, if
-            implementing a new GIO module, for writing language bindings, or for complex applications that need
-            better control of how asynchronous operations are completed, it is important to understand this functionality. 
-        </p><p>
-            <a class="link" href="class-giosimpleasyncresult.html" title="gio.SimpleAsyncResult"><code class="classname">gio.SimpleAsyncResult</code></a>
-            are tagged with the calling function to ensure that asynchronous functions and
-            their finishing functions are used together correctly. 
-        </p><p>
-            An asynchronous operation can be made to ignore a cancellation event by calling
-            <code class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-handle-cancellation" title="gio.SimpleAsyncResult.set_handle_cancellation">gio.SimpleAsyncResult.set_handle_cancellation</a></code>()
-            with a
-            <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>
-            for the operation and <code class="literal">False</code>. This is useful for operations that are dangerous to cancel,
-            such as close (which would cause a leak if cancelled before being run). 
-        </p><p>
-            <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>
-            can integrate into GLib's event loop, GMainLoop, or it can use GThreads if available.
-            <code class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--complete" title="gio.SimpleAsyncResult.complete">gio.SimpleAsyncResult.complete</a></code>()
-            will finish an I/O task directly within the main event loop.
-            <code class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--complete-in-idle" title="gio.SimpleAsyncResult.complete_in_idle">gio.SimpleAsyncResult.complete_in_idle</a></code>()
-            will integrate the I/O task into the main event loop as an idle function.
-            
-        </p><p>
-            To set the results of an asynchronous function,
-            <code class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-op-res-gboolean" title="gio.SimpleAsyncResult.set_op_res_gboolean">gio.SimpleAsyncResult.set_op_res_gboolean</a></code>(), and
-            <code class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-op-res-gssize" title="gio.SimpleAsyncResult.set_op_res_gssize">gio.SimpleAsyncResult.set_op_res_gssize</a></code>()
-            are provided, setting the operation's result to a gboolean, or gssize, respectively. 
-        </p><p>
-            Likewise, to get the result of an asynchronous function,
-            <code class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--get-op-res-gboolean" title="gio.SimpleAsyncResult.get_op_res_gboolean">gio.SimpleAsyncResult.get_op_res_gboolean</a></code>() and
-            <code class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--get-op-res-gssize" title="gio.SimpleAsyncResult.get_op_res_gssize">gio.SimpleAsyncResult.get_op_res_gssize</a></code>()
-            are provided, getting the operation's result as a gboolean and gssize, respectively.
-        </p></div><div class="refsect1" title="Methods"><a name="id527441"></a><h2>Methods</h2><div class="refsect2" title="gio.SimpleAsyncResult.complete"><a name="method-giosimpleasyncresult--complete"></a><h3>gio.SimpleAsyncResult.complete</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">complete</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody></tbody></table><p>
-                The <code class="methodname">complete</code>() method completes an asynchronous I/O job.
-                Must be called in the main thread, as it invokes the callback that should be called
-                in the main thread. If you are in a different thread use
-                <code class="methodname"><a class="link" href="class-giosimpleasyncresult.html#method-giosimpleasyncresult--complete-in-idle" title="gio.SimpleAsyncResult.complete_in_idle">gio.SimpleAsyncResult.complete_in_idle</a></code>().
-            </p></div><div class="refsect2" title="gio.SimpleAsyncResult.complete_in_idle"><a name="method-giosimpleasyncresult--complete-in-idle"></a><h3>gio.SimpleAsyncResult.complete_in_idle</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">complete_in_idle</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody></tbody></table><p>
-                The <code class="methodname">complete_in_idle</code>() method completes an asynchronous
-                function in the main event loop using an idle function.
-            </p></div><div class="refsect2" title="gio.SimpleAsyncResult.get_op_res_gboolean"><a name="method-giosimpleasyncresult--get-op-res-gboolean"></a><h3>gio.SimpleAsyncResult.get_op_res_gboolean</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_op_res_gboolean</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the operation's result was
-                    <code class="literal">True</code>, <code class="literal">False</code> if the operation's result
-                    was <code class="literal">False</code>. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_op_res_gboolean</code>() method gets the operation
-                result boolean from within the asynchronous result.
-            </p></div><div class="refsect2" title="gio.SimpleAsyncResult.get_op_res_gssize"><a name="method-giosimpleasyncresult--get-op-res-gssize"></a><h3>gio.SimpleAsyncResult.get_op_res_gssize</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_op_res_gssize</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a gssize returned from the asynchronous function.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_op_res_gssize</code>() method gets a gssize
-                from the asynchronous result.
-            </p></div><div class="refsect2" title="gio.SimpleAsyncResult.propagate_error"><a name="method-giosimpleasyncresult--propagate-error"></a><h3>gio.SimpleAsyncResult.propagate_error</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">propagate_error</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the error was propegated
-                    to dest. <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">propagate_error</code>() method propagates an error
-                from within the simple asynchronous result to a given destination.
-            </p></div><div class="refsect2" title="gio.SimpleAsyncResult.set_handle_cancellation"><a name="method-giosimpleasyncresult--set-handle-cancellation"></a><h3>gio.SimpleAsyncResult.set_handle_cancellation</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_handle_cancellation</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>handle_cancellation</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>handle_cancellation</code></strong> :</span></p></td><td>a boolean.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_handle_cancellation</code>() method sets whether
-                to handle cancellation within the asynchronous operation.
-            </p></div><div class="refsect2" title="gio.SimpleAsyncResult.set_op_res_gboolean"><a name="method-giosimpleasyncresult--set-op-res-gboolean"></a><h3>gio.SimpleAsyncResult.set_op_res_gboolean</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_op_res_gboolean</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>op_res</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>op_res</code></strong> :</span></p></td><td>a boolean.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_op_res_gboolean</code>() method sets the operation
-                result to a boolean within the asynchronous result.
-            </p></div><div class="refsect2" title="gio.SimpleAsyncResult.set_op_res_gssize"><a name="method-giosimpleasyncresult--set-op-res-gssize"></a><h3>gio.SimpleAsyncResult.set_op_res_gssize</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_op_res_gssize</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>op_res</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>op_res</code></strong> :</span></p></td><td>a gssize.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_op_res_gssize</code>() method sets the operation
-                result within the asynchronous result to the given op_res.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gioseekable.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giothemedicon.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.Seekable </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.ThemedIcon</td></tr></table></div></body></html>
diff --git a/docs/html/class-giothemedicon.html b/docs/html/class-giothemedicon.html
deleted file mode 100644 (file)
index 83d24de..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.ThemedIcon</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giosimpleasyncresult.html" title="gio.SimpleAsyncResult"><link rel="next" href="class-giovolume.html" title="gio.Volume"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.ThemedIcon</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giosimpleasyncresult.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giovolume.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.ThemedIcon"><a name="class-giothemedicon"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.ThemedIcon</h2><p>gio.ThemedIcon â€” Icon theming support.</p></div><div class="refsect1" title="Synopsis"><a name="id527988"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.ThemedIcon</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giothemedicon.html#constructor-giothemedicon" title="Constructor">gio.ThemedIcon</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giothemedicon.html#method-giothemedicon--append-name" title="gio.ThemedIcon.append_name">append_name</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giothemedicon.html#method-giothemedicon--get-names" title="gio.ThemedIcon.get_names">get_names</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giothemedicon.html#method-giothemedicon--prepend-name" title="gio.ThemedIcon.prepend_name">prepend_name</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id528097"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giothemedicon.html" title="gio.ThemedIcon">gio.ThemedIcon</a>
-</pre></div><div class="refsect1" title="gio.ThemedIcon Properties"><a name="properties-giomountoperation"></a><h2>gio.ThemedIcon Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"name"</td><td valign="top">Write/Contruct Only</td><td valign="top">
-                                The icon name. Default value: <code class="literal">None</code>
-                            </td></tr><tr valign="top"><td valign="top">"names"</td><td valign="top">Read/Write/Contruct Only</td><td valign="top">
-                                A list of icon names.
-                            </td></tr><tr valign="top"><td valign="top">"use-default-fallbacks"</td><td valign="top">Read/Write/Contruct Only</td><td valign="top">
-                                Whether to use the default fallbacks found by shortening the
-                                icon name at '-' characters. If the "names" array has more
-                                than one element, ignores any past the first.
-                            </td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="Description"><a name="id528241"></a><h2>Description</h2><p>
-            <a class="link" href="class-giothemedicon.html" title="gio.ThemedIcon"><code class="classname">gio.ThemedIcon</code></a>
-            is an implementation of <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-            that supports icon themes. GThemedIcon contains a list of all of the icons present in an icon
-            theme, so that icons can be looked up quickly.
-        </p><p>
-            <a class="link" href="class-giothemedicon.html" title="gio.ThemedIcon"><code class="classname">gio.ThemedIcon</code></a>
-            does not provide actual pixmaps for icons, just the icon names. Ideally something like
-            <code class="methodname"><PYGTKDOCLINK HREF="method-gtkicontheme--choose-icon">gtk.IconTheme.choose_icon</PYGTKDOCLINK></code>()
-            should be used to resolve the list of names so that fallback icons work nicely
-            with themes that inherit other themes
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giothemedicon"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.ThemedIcon</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>name</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>use_default_fallbacks</code></em></span><span class="initializer">=False</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td><td>a string containing an icon name.
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giothemedicon.html" title="gio.ThemedIcon"><code class="classname">gio.ThemedIcon</code></a>.
-                </td></tr></tbody></table><p>
-            Creates a new themed icon from icon name, if instead of an icon name you
-            provide a list of icon names, the <a class="link" href="class-giothemedicon.html" title="gio.ThemedIcon"><code class="classname">gio.ThemedIcon</code></a>
-            will be constructed using the items in the list.
-        </p></div><div class="refsect1" title="Methods"><a name="id528396"></a><h2>Methods</h2><div class="refsect2" title="gio.ThemedIcon.append_name"><a name="method-giothemedicon--append-name"></a><h3>gio.ThemedIcon.append_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">append_name</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>name</em></span> :</span></p></td><td>name of icon to append to list of icons from within icon.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">append_name</code>() method appends a name to
-                the list of icons from within icon.
-            </p></div><div class="refsect2" title="gio.ThemedIcon.get_names"><a name="method-giothemedicon--get-names"></a><h3>gio.ThemedIcon.get_names</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_names</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of icon names.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_names</code>() method gets the names
-                of icons from within icon.
-            </p></div><div class="refsect2" title="gio.ThemedIcon.prepend_name"><a name="method-giothemedicon--prepend-name"></a><h3>gio.ThemedIcon.prepend_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">prepend_name</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>name</em></span> :</span></p></td><td>name of icon to prepend to list of icons from within icon.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">prepend_name</code>() method prepends a name to
-                the list of icons from within icon.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giosimpleasyncresult.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giovolume.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.SimpleAsyncResult </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.Volume</td></tr></table></div></body></html>
diff --git a/docs/html/class-giounixinputstream.html b/docs/html/class-giounixinputstream.html
deleted file mode 100644 (file)
index 4059661..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.unix.InputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="giounix-class-reference.html" title="PyGio Unix Class Reference"><link rel="prev" href="giounix-class-reference.html" title="PyGio Unix Class Reference"><link rel="next" href="class-giounixoutputstream.html" title="gio.unix.OutputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.unix.InputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="giounix-class-reference.html">Prev</a> </td><th width="60%" align="center">PyGio Unix Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giounixoutputstream.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.unix.InputStream"><a name="class-giounixinputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.unix.InputStream</h2><p>gio.unix.InputStream â€” Streaming input operations for UNIX file descriptors.</p></div><div class="refsect1" title="Synopsis"><a name="id457436"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.unix.InputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gioinputstream.html" title="gio.InputStream">gio.InputStream</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giounixinputstream.html#constructor-giounixinputstream" title="Constructor">gio.unix.InputStream</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>fd</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_fd</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giounixinputstream.html#method-giounixinputstream--get-close-fd" title="gio.unix.InputStream.get_close_fd">get_close_fd</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giounixinputstream.html#method-giounixinputstream--get-fd" title="gio.unix.InputStream.get_fd">get_fd</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giounixinputstream.html#method-giounixinputstream--set-close-fd" title="gio.unix.InputStream.set_close_fd">set_close_fd</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_fd</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id457313"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-gioinputstream.html" title="gio.InputStream">gio.InputStream</a>
-    +-- <a class="link" href="class-giounixinputstream.html" title="gio.unix.InputStream">gio.unix.InputStream</a>
-</pre></div><div class="refsect1" title="gio.unix.InputStream Properties"><a name="properties-giounixinputstream"></a><h2>gio.unix.InputStream Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"close-fd"</td><td valign="top">Read - Write</td><td valign="top">Whether to close the file descriptor when the stream is closed.
-                           Default value: <code class="literal">True</code>.</td></tr><tr valign="top"><td valign="top">"fd"</td><td valign="top">Read - Write - Construct only</td><td valign="top">The file descriptor that the stream reads from. Default value: -1.</td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="Description"><a name="id459369"></a><h2>Description</h2><p>
-            <a class="link" href="class-giounixinputstream.html" title="gio.unix.InputStream"><code class="classname">gio.unix.InputStream</code></a>
-            implements <a class="link" href="class-gioinputstream.html" title="gio.InputStream"><code class="classname">gio.InputStream</code></a>
-           for reading from a UNIX file descriptor, including asynchronous operations.
-           The file descriptor must be selectable, so it doesn't work with opened files.
-       </p><p>
-           Note that <a class="link" href="class-giounixinputstream.html" title="gio.unix.InputStream"><code class="classname">gio.unix.InputStream</code></a>
-           belongs to the UNIX-specific GIO interfaces, thus you have to use the gio-unix-2.0.pc pkg-config file
-           when using it.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giounixinputstream"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.unix.InputStream</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>fd</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_fd</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>fd</code></em> :</span></p></td><td>a UNIX file descriptor.
-                </td></tr><tr><td><p><span class="term"><em class="parameter"><code>close_fd</code></em> :</span></p></td><td><code class="literal">True</code>
-               to close the file descriptor when done 
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giounixinputstream.html" title="gio.unix.InputStream"><code class="classname">gio.unix.InputStream</code></a>
-                </td></tr></tbody></table><p>
-            Creates a new <a class="link" href="class-giounixinputstream.html" title="gio.unix.InputStream"><code class="classname">gio.unix.InputStream</code></a>
-            from the given fd.
-        </p><p>
-           If close_fd is <code class="literal">True</code>, the file descriptor will be closed when the stream is closed.
-       </p></div><div class="refsect1" title="Methods"><a name="id460154"></a><h2>Methods</h2><div class="refsect2" title="gio.unix.InputStream.get_close_fd"><a name="method-giounixinputstream--get-close-fd"></a><h3>gio.unix.InputStream.get_close_fd</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_close_fd</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the file descriptor is closed when done.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_close_fd</code>() method returns whether the file
-               descriptor of stream will be closed when the stream is closed.
-            </p></div><div class="refsect2" title="gio.unix.InputStream.get_fd"><a name="method-giounixinputstream--get-fd"></a><h3>gio.unix.InputStream.get_fd</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_fd</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>The file descriptor of stream.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_fd</code>() method return the UNIX file descriptor
-               that the stream reads from.
-            </p></div><div class="refsect2" title="gio.unix.InputStream.set_close_fd"><a name="method-giounixinputstream--set-close-fd"></a><h3>gio.unix.InputStream.set_close_fd</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_close_fd</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_fd</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>close_fd</code></strong> :</span></p></td><td><code class="literal">True</code> to close the file descriptor when done .
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_close_fd</code>() method sets whether the file descriptor
-               of stream shall be closed when the stream is closed.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="giounix-class-reference.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="giounix-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giounixoutputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PyGio Unix Class Reference </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.unix.OutputStream</td></tr></table></div></body></html>
diff --git a/docs/html/class-giounixoutputstream.html b/docs/html/class-giounixoutputstream.html
deleted file mode 100644 (file)
index 8b9b647..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.unix.OutputStream</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="giounix-class-reference.html" title="PyGio Unix Class Reference"><link rel="prev" href="class-giounixinputstream.html" title="gio.unix.InputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.unix.OutputStream</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giounixinputstream.html">Prev</a> </td><th width="60%" align="center">PyGio Unix Class Reference</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="refentry" title="gio.unix.OutputStream"><a name="class-giounixoutputstream"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.unix.OutputStream</h2><p>gio.unix.OutputStream â€” Streaming output operations for UNIX file descriptors.</p></div><div class="refsect1" title="Synopsis"><a name="id430504"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.unix.OutputStream</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-giooutputstream.html" title="gio.OutputStream">gio.OutputStream</a></span></span>):
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-giounixoutputstream.html#constructor-giounixoutputstream" title="Constructor">gio.unix.OutputStream</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>fd</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_fd</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giounixoutputstream.html#method-giounixoutputstream--get-close-fd" title="gio.unix.OutputStream.get_close_fd">get_close_fd</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giounixoutputstream.html#method-giounixoutputstream--get-fd" title="gio.unix.OutputStream.get_fd">get_fd</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giounixoutputstream.html#method-giounixoutputstream--set-close-fd" title="gio.unix.OutputStream.set_close_fd">set_close_fd</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_fd</code></strong></span></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id500640"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giooutputstream.html" title="gio.OutputStream">gio.OutputStream</a>
-    +-- <a class="link" href="class-giounixoutputstream.html" title="gio.unix.OutputStream">gio.unix.OutputStream</a>
-</pre></div><div class="refsect1" title="gio.unix.OutputStream Properties"><a name="properties-giounixoutputstream"></a><h2>gio.unix.OutputStream Properties</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"close-fd"</td><td valign="top">Read - Write</td><td valign="top">Whether to close the file descriptor when the stream is closed.
-                           Default value: <code class="literal">True</code>.</td></tr><tr valign="top"><td valign="top">"fd"</td><td valign="top">Read - Write - Construct only</td><td valign="top">The file descriptor that the stream writes to. Default value: -1.</td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="Description"><a name="id510688"></a><h2>Description</h2><p>
-            <a class="link" href="class-giounixoutputstream.html" title="gio.unix.OutputStream"><code class="classname">gio.unix.OutputStream</code></a>
-            implements <a class="link" href="class-giooutputstream.html" title="gio.OutputStream"><code class="classname">gio.OutputStream</code></a>
-           for writing to a UNIX file descriptor, including asynchronous operations.
-           The file descriptor must be selectable, so it doesn't work with opened files.
-       </p><p>
-           Note that <a class="link" href="class-giounixoutputstream.html" title="gio.unix.OutputStream"><code class="classname">gio.unix.OutputStream</code></a>
-           belongs to the UNIX-specific GIO interfaces, thus you have to use the gio-unix-2.0.pc pkg-config file
-           when using it.
-        </p></div><div class="refsect1" title="Constructor"><a name="constructor-giounixoutputstream"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">gio.unix.OutputStream</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>fd</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_fd</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>fd</code></em> :</span></p></td><td>a UNIX file descriptor.
-                </td></tr><tr><td><p><span class="term"><em class="parameter"><code>close_fd</code></em> :</span></p></td><td><code class="literal">True</code>
-               to close the file descriptor when done 
-                </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new
-                <a class="link" href="class-giounixoutputstream.html" title="gio.unix.OutputStream"><code class="classname">gio.unix.OutputStream</code></a>
-                </td></tr></tbody></table><p>
-            Creates a new <a class="link" href="class-giounixoutputstream.html" title="gio.unix.OutputStream"><code class="classname">gio.unix.OutputStream</code></a>
-            from the given fd.
-        </p><p>
-           If close_fd is <code class="literal">True</code>, the file descriptor will be closed when the stream is closed.
-       </p></div><div class="refsect1" title="Methods"><a name="id461727"></a><h2>Methods</h2><div class="refsect2" title="gio.unix.OutputStream.get_close_fd"><a name="method-giounixoutputstream--get-close-fd"></a><h3>gio.unix.OutputStream.get_close_fd</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_close_fd</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the file descriptor is closed when done.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_close_fd</code>() method returns whether the file
-               descriptor of stream will be closed when the stream is closed.
-            </p></div><div class="refsect2" title="gio.unix.OutputStream.get_fd"><a name="method-giounixoutputstream--get-fd"></a><h3>gio.unix.OutputStream.get_fd</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_fd</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>The file descriptor of stream.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_fd</code>() method return the UNIX file descriptor
-               that the stream reads from.
-            </p></div><div class="refsect2" title="gio.unix.OutputStream.set_close_fd"><a name="method-giounixoutputstream--set-close-fd"></a><h3>gio.unix.OutputStream.set_close_fd</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_close_fd</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>close_fd</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>close_fd</code></strong> :</span></p></td><td><code class="literal">True</code> to close the file descriptor when done .
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">set_close_fd</code>() method sets whether the file descriptor
-               of stream shall be closed when the stream is closed.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giounixinputstream.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="giounix-class-reference.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top">gio.unix.InputStream </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
diff --git a/docs/html/class-giovolume.html b/docs/html/class-giovolume.html
deleted file mode 100644 (file)
index ff6512a..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.Volume</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giothemedicon.html" title="gio.ThemedIcon"><link rel="next" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.Volume</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giothemedicon.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-giovolumemonitor.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.Volume"><a name="class-giovolume"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.Volume</h2><p>gio.Volume â€” Volume management.</p></div><div class="refsect1" title="Synopsis"><a name="id528601"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.Volume</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--can-eject" title="gio.Volume.can_eject">can_eject</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--can-mount" title="gio.Volume.can_mount">can_mount</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--eject" title="gio.Volume.eject">eject</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_UNMOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--eject-finish" title="gio.Volume.eject_finish">eject_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--enumerate-identifiers" title="gio.Volume.enumerate_identifiers">enumerate_identifiers</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-activation-root" title="gio.Volume.get_activation_root">get_activation_root</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-drive" title="gio.Volume.get_drive">get_drive</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-icon" title="gio.Volume.get_icon">get_icon</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-identifier" title="gio.Volume.get_identifier">get_identifier</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-mount" title="gio.Volume.get_mount">get_mount</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-name" title="gio.Volume.get_name">get_name</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-uuid" title="gio.Volume.get_uuid">get_uuid</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--mount" title="gio.Volume.mount">mount</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>mount_operation</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_MOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--mount-finish" title="gio.Volume.mount_finish">mount_finish</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--should-automount" title="gio.Volume.should_automount">should_automount</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id529090"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a>
-  +-- <a class="link" href="class-giovolume.html" title="gio.Volume">gio.Volume</a>
-</pre></div><div class="refsect1" title="Prerequisites"><a name="id529116"></a><h2>Prerequisites</h2><p>
-            <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a> requires
-            <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>
-        </p></div><div class="refsect1" title="gio.Volume Signal Prototypes"><a name="signal-prototypes-giovolume"></a><h2>gio.Volume Signal Prototypes</h2><p><a class="link" href="class-gobject.html#signal-prototypes-gobject" title="gobject.GObject Signal Prototypes">gobject.GObject Signal Prototypes</a></p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><a class="link" href="class-giovolume.html#signal-giovolume--changed" title='The "changed" gio.Volume Signal'>"changed"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giovolume.html#signal-giovolume--removed" title='The "removed" gio.Volume Signal'>"removed"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr></tbody></table></div><div class="refsect1" title="Description"><a name="id529280"></a><h2>Description</h2><p>
-            The <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-            interface represents user-visible objects that can be mounted. Note, when porting
-            from GnomeVFS, <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-            is the moral equivalent of GnomeVFSDrive. 
-        </p><p>
-            Mounting a <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-            instance is an asynchronous operation. For more information about asynchronous operations.
-            To mount a <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>, first call
-            <code class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--mount" title="gio.Volume.mount">gio.Volume.mount</a></code>()
-            with (at least) the <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-            instance, optionally a
-            <a class="link" href="class-giomountoperation.html" title="gio.MountOperation"><code class="classname">gio.MountOperation</code></a>
-            object and a GAsyncReadyCallback. 
-        </p><p>
-            Typically, one will only want to pass <code class="literal">None</code> for the GMountOperation
-            if automounting all volumes when a desktop session starts since it's not desirable
-            to put up a lot of dialogs asking for credentials. 
-        </p><p>
-            The callback will be fired when the operation has resolved (either with success or failure),
-            and a GAsyncReady structure will be passed to the callback. That callback should then call
-            <code class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--mount-finish" title="gio.Volume.mount_finish">gio.Volume.mount_finish</a></code>()
-            with the GVolume instance and the GAsyncReady data to see if the operation was completed
-            successfully. If an error is present when
-            <code class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--mount-finish" title="gio.Volume.mount_finish">gio.Volume.mount_finish</a></code>()
-            is called, then it will be filled with any error information. 
-        </p><p>
-            It is sometimes necessary to directly access the underlying operating system object behind a volume
-            (e.g. for passing a volume to an application via the commandline). For this purpose, GIO allows to obtain
-            an 'identifier' for the volume. There can be different kinds of identifiers, such as Hal UDIs,
-            filesystem labels, traditional Unix devices (e.g. /dev/sda2), uuids. GIO uses predefind strings
-            as names for the different kinds of identifiers:
-            "hal-udi", "label", etc. Use
-            <code class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-identifier" title="gio.Volume.get_identifier">gio.Volume.get_identifier</a></code>()
-            to obtain an identifier for a volume. 
-        </p></div><div class="refsect1" title="Methods"><a name="id529397"></a><h2>Methods</h2><div class="refsect2" title="gio.Volume.can_eject"><a name="method-giovolume--can-eject"></a><h3>gio.Volume.can_eject</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">can_eject</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the volume can be ejected,
-                    <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">can_eject</code>() method checks if a volume can be ejected.
-            </p></div><div class="refsect2" title="gio.Volume.can_mount"><a name="method-giovolume--can-mount"></a><h3>gio.Volume.can_mount</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">can_mount</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the volume can be mounted
-                    for media changes, <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">can_mount</code>() method checks if a volume
-                can be mounted.
-            </p></div><div class="refsect2" title="gio.Volume.eject"><a name="method-giovolume--eject"></a><h3>gio.Volume.eject</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">eject</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_UNMOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>callback</code></strong> :</span></p></td><td>A GAsyncReadyCallback to call when the request is satisfied.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>flags</code></strong> :</span></p></td><td>flags affecting the unmount if required for eject.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>user_data</code></strong> :</span></p></td><td>The data to pass to callback function.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">eject</code>() method asynchronously ejects a volume. 
-            </p><p>
-                When the operation is finished, callback will be called. You can then call
-                <code class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--eject-finish" title="gio.Volume.eject_finish">gio.Volume.eject_finish</a></code>()
-                to obtain the result of the operation.
-            </p></div><div class="refsect2" title="gio.Volume.eject_finish"><a name="method-giovolume--eject-finish"></a><h3>gio.Volume.eject_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">eject_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the volume has been ejected
-                    successfully, <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">eject_finish</code>() method finishes ejecting a volume.
-                If any errors occured during the operation, error will be set to contain the
-                errors and <code class="literal">False</code> will be returned.
-            </p></div><div class="refsect2" title="gio.Volume.enumerate_identifiers"><a name="method-giovolume--enumerate-identifiers"></a><h3>gio.Volume.enumerate_identifiers</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">enumerate_identifiers</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of strings containing kinds of identifiers.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">enumerate_identifiers</code>() method gets the kinds
-                of identifiers that volume has. Use
-                <code class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-identifier" title="gio.Volume.get_identifier">gio.Volume.get_identifier</a></code>()
-                to obtain the identifiers themselves.
-            </p></div><div class="refsect2" title="gio.Volume.get_activation_root"><a name="method-giovolume--get-activation-root"></a><h3>gio.Volume.get_activation_root</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_activation_root</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the activation root of volume or <code class="literal">None</code>.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_activation_root</code>() method gets the activation
-                root for a <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                if it is known ahead of mount time. Returns <code class="literal">None</code> otherwise.
-                If not <code class="literal">None</code> and if volume is mounted, then the result of
-                <code class="methodname"><a class="link" href="class-giomount.html#method-giomount--get-root" title="gio.Mount.get_root">gio.Mount.get_root</a></code>()
-                on the GMount object obtained from
-                <code class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-mount" title="gio.Volume.get_mount">gio.Volume.get_mount</a></code>()
-                will always either be equal or a prefix of what this function returns.
-                In other words, in code:
-            </p><pre class="programlisting">
-mount = volume.get_mount() # mounted, so never None
-mount_root = mount.get_root()
-volume_activation_root = volume.get_activation_root() # assume not None
-</pre><p>
-                then the expression
-            </p><pre class="programlisting">
-volume_activation_root.has_prefix(mount_root) || volume_activation_root.equal(mount_root)
-</pre><p>
-                will always be <code class="literal">True</code>.
-            </p><p>
-                Activation roots are typically used in
-                <a class="link" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"><code class="classname">gio.VolumeMonitor</code></a>
-                implementations to find the underlying mount to shadow, see
-                <code class="methodname"><a class="link" href="class-giomount.html#method-giomount--is-shadowed" title="gio.Mount.is_shadowed">gio.Mount.is_shadowed</a></code>()
-                for more details.
-            </p></div><div class="refsect2" title="gio.Volume.get_drive"><a name="method-giovolume--get-drive"></a><h3>gio.Volume.get_drive</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_drive</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A <a class="link" href="class-giodrive.html" title="gio.Drive"><code class="classname">gio.Drive</code></a>
-                    or <code class="literal">None</code> if volume is not associated with a drive.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_drive</code>() method gets the drive for the volume.
-            </p></div><div class="refsect2" title="gio.Volume.get_icon"><a name="method-giovolume--get-icon"></a><h3>gio.Volume.get_icon</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_icon</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-                    for the volume.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_icon</code>() method gets the icon for volume.
-            </p></div><div class="refsect2" title="gio.Volume.get_identifier"><a name="method-giovolume--get-identifier"></a><h3>gio.Volume.get_identifier</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_identifier</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A string containing the requested identfier, or
-                    <code class="literal">None</code> if the
-                    <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                    doesn't have this kind of identifier. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_identifier</code>() method gets the identifier of
-                the given kind for volume.
-            </p></div><div class="refsect2" title="gio.Volume.get_mount"><a name="method-giovolume--get-mount"></a><h3>gio.Volume.get_mount</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_mount</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A 
-                    <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                    or <code class="literal">None</code> if volume isn't mounted.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_mount</code>() method gets the mount for the volume.
-            </p></div><div class="refsect2" title="gio.Volume.get_name"><a name="method-giovolume--get-name"></a><h3>gio.Volume.get_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_name</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A string containing volume's name.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_name</code>() method gets the name of volume.
-            </p></div><div class="refsect2" title="gio.Volume.get_uuid"><a name="method-giovolume--get-uuid"></a><h3>gio.Volume.get_uuid</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_uuid</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the UUID for volume or <code class="literal">None</code>
-                    if no UUID can be computed.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_uuid</code>() method gets the UUID for the volume.
-                The reference is typically based on the file system UUID for the volume in
-                question and should be considered an opaque string.
-                Returns <code class="literal">None</code> if there is no UUID available.
-            </p></div><div class="refsect2" title="gio.Volume.mount"><a name="method-giovolume--mount"></a><h3>gio.Volume.mount</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">mount</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>mount_operation</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>callback</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=gio.MOUNT_MOUNT_NONE</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>cancellable</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>mount_operation</code></strong> :</span></p></td><td>A
-                  <a class="link" href="class-giomountoperation.html" title="gio.MountOperation"><code class="classname">gio.MountOperation</code></a>
-                  or <code class="literal">None</code> to avoid user interaction. 
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>callback</code></strong> :</span></p></td><td>A GAsyncReadyCallback to call when the request is satisfied.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>flags</code></strong> :</span></p></td><td>Flags affecting the operation 
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>cancellable</code></strong> :</span></p></td><td>Optional
-                  <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>
-                  object, <code class="literal">None</code> to ignore.
-                  </td></tr><tr><td><p><span class="term"><strong class="parameter"><code>user_data</code></strong> :</span></p></td><td>The data to pass to callback function.
-                  </td></tr></tbody></table><p>
-                The <code class="methodname">mount</code>() method mounts a volume. This is an
-                asynchronous operation, and is finished by calling
-                <code class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--mount-finish" title="gio.Volume.mount_finish">gio.Volume.mount_finish</a></code>()
-                with the volume and GAsyncResult returned in the callback.
-            </p></div><div class="refsect2" title="gio.Volume.mount_finish"><a name="method-giovolume--mount-finish"></a><h3>gio.Volume.mount_finish</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">mount_finish</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>result</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>result</code></strong> :</span></p></td><td>a <a class="link" href="class-gioasyncresult.html" title="gio.AsyncResult"><code class="classname">gio.AsyncResult</code></a>.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the volume has been mounted
-                    successfully, <code class="literal">False</code> otherwise.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">mounted</code>() method finishes mounting a volume.
-                If any errors occured during the operation, error will be set to contain
-                the errors and <code class="literal">False</code> will be returned. 
-            </p><p>
-                If the mount operation succeeded,
-                <code class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-mount" title="gio.Volume.get_mount">get_mount</a></code>()
-                on volume is guaranteed to return the mount right after calling this function;
-                there's no need to listen for the 'mount-added' signal on
-                <a class="link" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"><code class="classname">gio.VolumeMonitor</code></a>.
-            </p></div><div class="refsect2" title="gio.Volume.should_automount"><a name="method-giovolume--should-automount"></a><h3>gio.Volume.should_automount</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">should_automount</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the volume should
-                    be automatically mounted. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">should_automount</code>() method returns whether
-                the volume should be automatically mounted.
-            </p></div></div><div class="refsect1" title="Signals"><a name="id530955"></a><h2>Signals</h2><div class="refsect2" title='The "changed" gio.Volume Signal'><a name="signal-giovolume--changed"></a><h3>The "changed" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume</code></em> :</span></p></td><td>the volume</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when the volume has been changed.
-            </p></div><div class="refsect2" title='The "removed" gio.Volume Signal'><a name="signal-giovolume--removed"></a><h3>The "removed" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume</code></em> :</span></p></td><td>the volume</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                This signal is emitted when the
-                <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                have been removed. If the recipient is holding references to the object
-                they should release them so the object can be finalized.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giothemedicon.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-giovolumemonitor.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.ThemedIcon </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.VolumeMonitor</td></tr></table></div></body></html>
diff --git a/docs/html/class-giovolumemonitor.html b/docs/html/class-giovolumemonitor.html
deleted file mode 100644 (file)
index bd59ccc..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio.VolumeMonitor</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giovolume.html" title="gio.Volume"><link rel="next" href="gio-functions.html" title="gio Functions"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio.VolumeMonitor</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giovolume.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="gio-functions.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio.VolumeMonitor"><a name="class-giovolumemonitor"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio.VolumeMonitor</h2><p>gio.VolumeMonitor â€” Volume Monitor.</p></div><div class="refsect1" title="Synopsis"><a name="id531245"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gio.VolumeMonitor</span></span>(<span class="ooclass"><span class="classname"><a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a></span></span>):
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolumemonitor.html#method-giovolumemonitor--get-connected-drives" title="gio.VolumeMonitor.get_connected_drives">get_connected_drives</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolumemonitor.html#method-giovolumemonitor--get-mount-for-uuid" title="gio.VolumeMonitor.get_mount_for_uuid">get_mount_for_uuid</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>uuid</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolumemonitor.html#method-giovolumemonitor--get-mounts" title="gio.VolumeMonitor.get_mounts">get_mounts</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolumemonitor.html#method-giovolumemonitor--get-volume-for-uuid" title="gio.VolumeMonitor.get_volume_for_uuid">get_volume_for_uuid</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>uuid</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolumemonitor.html#method-giovolumemonitor--get-volumes" title="gio.VolumeMonitor.get_volumes">get_volumes</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table><pre class="programlisting">
-<span class="bold"><strong>Functions</strong></span>
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolumemonitor.html#function-gio--volume-monitor-adopt-orphan-mount" title="gio.volume_monitor_adopt_orphan_mount">gio.volume_monitor_adopt_orphan_mount</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-giovolumemonitor.html#function-gio--volume-monitor-get" title="gio.volume_monitor_get">gio.volume_monitor_get</a></span>(<span class="methodparam"></span>)</code></pre></div><div class="refsect1" title="Ancestry"><a name="id531439"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-  +-- <a class="link" href="class-giovolumemonitor.html" title="gio.VolumeMonitor">gio.VolumeMonitor</a>
-</pre></div><div class="refsect1" title="gio.VolumeMonitor Signal Prototypes"><a name="signal-prototypes-giovolumemonitor"></a><h2>gio.VolumeMonitor Signal Prototypes</h2><p><a class="link" href="class-gobject.html#signal-prototypes-gobject" title="gobject.GObject Signal Prototypes">gobject.GObject Signal Prototypes</a></p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><a class="link" href="class-giovolumemonitor.html#signal-giovolumemonitor--drive-changed" title='The "drive-changed" gio.Volume Signal'>"drive-changed"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>drive</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giovolumemonitor.html#signal-giovolumemonitor--drive-connected" title='The "drive-connected" gio.Volume Signal'>"drive-connected"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>drive</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giovolumemonitor.html#signal-giovolumemonitor--drive-disconnected" title='The "drive-disconnected" gio.Volume Signal'>"drive-disconnected"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>drive</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giovolumemonitor.html#signal-giovolumemonitor--drive-eject-button" title='The "drive-eject-button" gio.Volume Signal'>"drive-eject-button"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>drive</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giovolumemonitor.html#signal-giovolumemonitor--mount-added" title='The "mount-added" gio.Volume Signal'>"mount-added"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giovolumemonitor.html#signal-giovolumemonitor--mount-changed" title='The "mount-changed" gio.Volume Signal'>"mount-changed"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giovolumemonitor.html#signal-giovolumemonitor--mount-pre-unmount" title='The "mount-pre-unmount" gio.Volume Signal'>"mount-pre-unmount"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giovolumemonitor.html#signal-giovolumemonitor--mount-removed" title='The "mount-removed" gio.Volume Signal'>"mount-removed"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giovolumemonitor.html#signal-giovolumemonitor--volume-added" title='The "volume-added" gio.Volume Signal'>"volume-added"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>volume</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giovolumemonitor.html#signal-giovolumemonitor--volume-changed" title='The "volume-changed" gio.Volume Signal'>"volume-changed"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>volume</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr><tr><td><p><span class="term"><a class="link" href="class-giovolumemonitor.html#signal-giovolumemonitor--volume-removed" title='The "volume-removed" gio.Volume Signal'>"volume-removed"</a></span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>volume</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr></tbody></table></div><div class="refsect1" title="Description"><a name="id532257"></a><h2>Description</h2><p>
-            The <a class="link" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"><code class="classname">gio.VolumeMonitor</code></a>
-            is for listing the user interesting devices and volumes on the computer. In other words,
-            what a file selector or file manager would show in a sidebar.
-        </p></div><div class="refsect1" title="Methods"><a name="id532277"></a><h2>Methods</h2><div class="refsect2" title="gio.VolumeMonitor.get_connected_drives"><a name="method-giovolumemonitor--get-connected-drives"></a><h3>gio.VolumeMonitor.get_connected_drives</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_connected_drives</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of connected
-                    <a class="link" href="class-giodrive.html" title="gio.Drive"><code class="classname">gio.Drive</code></a> objects. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_connected_drives</code>() method gets a list
-                of drives connected to the system. 
-            </p></div><div class="refsect2" title="gio.VolumeMonitor.get_mount_for_uuid"><a name="method-giovolumemonitor--get-mount-for-uuid"></a><h3>gio.VolumeMonitor.get_mount_for_uuid</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_mount_for_uuid</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>uuid</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>uuid</code></strong> :</span></p></td><td>The UUID to look for.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A
-                    <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                    or <code class="literal">None</code> if no such mount is available.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_mount_for_uuid</code>() method finds a
-                <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                object by it's UUID (see
-                <code class="methodname"><a class="link" href="class-giomount.html#method-giomount--get-uuid" title="gio.Mount.get_uuid">gio.Mount.get_uuid</a></code>())
-            </p></div><div class="refsect2" title="gio.VolumeMonitor.get_mounts"><a name="method-giovolumemonitor--get-mounts"></a><h3>gio.VolumeMonitor.get_mounts</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_mounts</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A list of
-                    <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                    objects.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_mounts</code>() method gets a list of the mounts on the system.
-            </p></div><div class="refsect2" title="gio.VolumeMonitor.get_volume_for_uuid"><a name="method-giovolumemonitor--get-volume-for-uuid"></a><h3>gio.VolumeMonitor.get_volume_for_uuid</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_volume_for_uuid</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>uuid</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>uuid</code></strong> :</span></p></td><td>The UUID to look for.
-                  </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A
-                    <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                    or <code class="literal">None</code> if no such volume is available.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_mount_for_uuid</code>() method finds a
-                <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                object by it's UUID (see
-                <code class="methodname"><a class="link" href="class-giomount.html#method-giomount--get-uuid" title="gio.Mount.get_uuid">gio.Mount.get_uuid</a></code>())
-            </p></div><div class="refsect2" title="gio.VolumeMonitor.get_volumes"><a name="method-giovolumemonitor--get-volumes"></a><h3>gio.VolumeMonitor.get_volumes</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_volumes</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A list of
-                    <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                    objects.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">get_volumes</code>() method gets a list of the volumes on the system.
-            </p></div></div><div class="refsect1" title="Functions"><a name="id532706"></a><h2>Functions</h2><div class="refsect2" title="gio.volume_monitor_adopt_orphan_mount"><a name="function-gio--volume-monitor-adopt-orphan-mount"></a><h3>gio.volume_monitor_adopt_orphan_mount</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">volume_monitor_adopt_orphan_mount</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>The <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                    object that is the parent for mount or <code class="literal">None</code> if no wants to adopt the
-                    <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>.
-                    </td></tr></tbody></table><div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>This method will be deprecated starting from GIO 2.20</p></div><p>
-                The <code class="methodname">volume_monitor_adopt_orphan_mount</code>() function should
-                be called by any <a class="link" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"><code class="classname">gio.VolumeMonitor</code></a>
-                implementation when a new <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                object is created that is not associated with a
-                <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a> object.
-                It must be called just before emitting the mount_added signal.
-            </p><p>
-                If the return value is not <code class="literal">None</code>, the caller must associate the returned
-                <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                object with the
-                <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>.
-                This involves returning it in it's
-                <code class="methodname"><PYGTKDOCLINK HREF="method-giomount--get-volumes">gio.Mount.get_volumes</PYGTKDOCLINK></code>()
-                implementation. The caller must also listen for the "removed" signal on the
-                returned object and give up it's reference when handling that signal 
-            </p><p>
-                Similary, if implementing
-                <code class="methodname"><a class="link" href="class-giovolumemonitor.html#function-gio--volume-monitor-adopt-orphan-mount" title="gio.volume_monitor_adopt_orphan_mount">gio.volume_monitor_adopt_orphan_mount</a></code>(),
-                the implementor must take a reference to mount and return it in it's
-                <code class="methodname"><a class="link" href="class-giovolume.html#method-giovolume--get-mount" title="gio.Volume.get_mount">gio.Volume.get_mount</a></code>()
-                implemented. Also, the implementor must listen for the "unmounted" signal
-                on mount and give up it's reference upon handling that signal. 
-            </p><p>
-                There are two main use cases for this function. 
-            </p><p>
-                One is when implementing a user space file system driver that reads blocks of
-                a block device that is already represented by the native volume monitor
-                (for example a CD Audio file system driver). Such a driver will generate it's own
-                <a class="link" href="class-giomount.html" title="gio.Mount"><code class="classname">gio.Mount</code></a>
-                object that needs to be assoicated with the
-                <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                object that represents the volume. 
-            </p><p>
-                The other is for implementing a
-                <a class="link" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"><code class="classname">gio.VolumeMonitor</code></a>
-                whose sole purpose is to return
-                <a class="link" href="class-giovolume.html" title="gio.Volume"><code class="classname">gio.Volume</code></a>
-                objects representing entries in the users "favorite servers" list or similar.
-            </p></div><div class="refsect2" title="gio.volume_monitor_get"><a name="function-gio--volume-monitor-get"></a><h3>gio.volume_monitor_get</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">volume_monitor_get</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A reference to the
-                    <a class="link" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"><code class="classname">gio.VolumeMonitor</code></a>
-                    used by gio.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">volume_monitor_get</code>() function gets the
-                volume monitor used by gio.
-            </p></div></div><div class="refsect1" title="Signals"><a name="id532987"></a><h2>Signals</h2><div class="refsect2" title='The "drive-changed" gio.Volume Signal'><a name="signal-giovolumemonitor--drive-changed"></a><h3>The "drive-changed" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>drive</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume_monitor</code></em> :</span></p></td><td>the volume monitor</td></tr><tr><td><p><span class="term"><em class="parameter"><code>drive</code></em> :</span></p></td><td>the drive that changed</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when a drive changes.
-            </p></div><div class="refsect2" title='The "drive-connected" gio.Volume Signal'><a name="signal-giovolumemonitor--drive-connected"></a><h3>The "drive-connected" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>drive</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume_monitor</code></em> :</span></p></td><td>the volume monitor</td></tr><tr><td><p><span class="term"><em class="parameter"><code>drive</code></em> :</span></p></td><td>the drive that was connected</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when a drive is connected to the system.
-            </p></div><div class="refsect2" title='The "drive-disconnected" gio.Volume Signal'><a name="signal-giovolumemonitor--drive-disconnected"></a><h3>The "drive-disconnected" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>drive</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume_monitor</code></em> :</span></p></td><td>the volume monitor</td></tr><tr><td><p><span class="term"><em class="parameter"><code>drive</code></em> :</span></p></td><td>the drive that was disconnected</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when a drive is disconnected from the system.
-            </p></div><div class="refsect2" title='The "drive-eject-button" gio.Volume Signal'><a name="signal-giovolumemonitor--drive-eject-button"></a><h3>The "drive-eject-button" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>drive</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume_monitor</code></em> :</span></p></td><td>the volume monitor</td></tr><tr><td><p><span class="term"><em class="parameter"><code>drive</code></em> :</span></p></td><td>the drive where the eject button was pressed</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when the eject button is pressed on drive.
-            </p></div><div class="refsect2" title='The "mount-added" gio.Volume Signal'><a name="signal-giovolumemonitor--mount-added"></a><h3>The "mount-added" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume_monitor</code></em> :</span></p></td><td>the volume monitor</td></tr><tr><td><p><span class="term"><em class="parameter"><code>mount</code></em> :</span></p></td><td>a Mount that was added.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when a mount is added.
-            </p></div><div class="refsect2" title='The "mount-changed" gio.Volume Signal'><a name="signal-giovolumemonitor--mount-changed"></a><h3>The "mount-changed" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume_monitor</code></em> :</span></p></td><td>the volume monitor</td></tr><tr><td><p><span class="term"><em class="parameter"><code>mount</code></em> :</span></p></td><td>the Mount that changed.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when a mount changes.
-            </p></div><div class="refsect2" title='The "mount-pre-unmount" gio.Volume Signal'><a name="signal-giovolumemonitor--mount-pre-unmount"></a><h3>The "mount-pre-unmount" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume_monitor</code></em> :</span></p></td><td>the volume monitor</td></tr><tr><td><p><span class="term"><em class="parameter"><code>mount</code></em> :</span></p></td><td>the Mount that is being unmounted.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when a mount is about to be removed.
-            </p></div><div class="refsect2" title='The "mount-removed" gio.Volume Signal'><a name="signal-giovolumemonitor--mount-removed"></a><h3>The "mount-removed" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>mount</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume_monitor</code></em> :</span></p></td><td>the volume monitor</td></tr><tr><td><p><span class="term"><em class="parameter"><code>mount</code></em> :</span></p></td><td>the Mount that was removed.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when a mount is removed.
-            </p></div><div class="refsect2" title='The "volume-added" gio.Volume Signal'><a name="signal-giovolumemonitor--volume-added"></a><h3>The "volume-added" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>volume</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume_monitor</code></em> :</span></p></td><td>the volume monitor</td></tr><tr><td><p><span class="term"><em class="parameter"><code>volume</code></em> :</span></p></td><td>a Volume that was added.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when a mountable volume is added to the system.
-            </p></div><div class="refsect2" title='The "volume-changed" gio.Volume Signal'><a name="signal-giovolumemonitor--volume-changed"></a><h3>The "volume-changed" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>volume</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume_monitor</code></em> :</span></p></td><td>the volume monitor</td></tr><tr><td><p><span class="term"><em class="parameter"><code>volume</code></em> :</span></p></td><td>a Volume that changed.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when mountable volume is changed.
-            </p></div><div class="refsect2" title='The "volume-removed" gio.Volume Signal'><a name="signal-giovolumemonitor--volume-removed"></a><h3>The "volume-removed" gio.Volume Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>volume_monitor</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>volume</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>volume_monitor</code></em> :</span></p></td><td>the volume monitor</td></tr><tr><td><p><span class="term"><em class="parameter"><code>volume</code></em> :</span></p></td><td>a Volume that was removed.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-                    with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-                    method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if any)</td></tr></tbody></table><p>
-                Emitted when a mountable volume is removed from the system.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giovolume.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="gio-functions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.Volume </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio Functions</td></tr></table></div></body></html>
diff --git a/docs/html/class-glibmaincontext.html b/docs/html/class-glibmaincontext.html
deleted file mode 100644 (file)
index 9f815f6..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>glib.MainContext</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="glib-class-reference.html" title="PyGlibClass Reference"><link rel="prev" href="glib-class-reference.html" title="PyGlibClass Reference"><link rel="next" href="class-glibmainloop.html" title="glib.MainLoop"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">glib.MainContext</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="glib-class-reference.html">Prev</a> </td><th width="60%" align="center">PyGlibClass Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-glibmainloop.html">Next</a></td></tr></table><hr></div><div class="refentry" title="glib.MainContext"><a name="class-glibmaincontext"></a><div class="titlepage"></div><div class="refnamediv"><h2>glib.MainContext</h2><p>glib.MainContext â€” an object representing a set of event sources to be handled
-in a <a class="link" href="class-glibmainloop.html" title="glib.MainLoop"><code class="classname">glib.MainLoop</code></a>.</p></div><div class="refsect1" title="Synopsis"><a name="id392555"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">glib.MainContext</span></span>:
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-glibmaincontext.html#constructor-glibmaincontext" title="Constructor">glib.MainContext</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-glibmaincontext.html#method-glibmaincontext--iteration" title="glib.MainContext.iteration">iteration</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>may_block</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-glibmaincontext.html#method-glibmaincontext--pending" title="glib.MainContext.pending">pending</a></span>()</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id392487"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-glibmaincontext.html" title="glib.MainContext">glib.MainContext</a>
-</pre></div><div class="refsect1" title="Description"><a name="id392470"></a><h2>Description</h2><p>A <a class="link" href="class-glibmaincontext.html" title="glib.MainContext"><code class="classname">glib.MainContext</code></a>
-represents a set of event sources that can be run in a single thread. File
-descriptors (plain files, pipes or sockets) and timeouts are the standard
-event sources for <code class="literal">GTK</code> and <code class="literal">PyGTK</code> though
-others can be added. Each event source is assigned a priority. The default
-priority, <code class="literal">glib.PRIORITY_DEFAULT</code>, is 0. Values less
-than 0 denote higher priorities. Values greater than 0 denote lower
-priorities. Events from high priority sources are always processed before
-events from lower priority sources. Single iterations of a <a class="link" href="class-glibmaincontext.html" title="glib.MainContext"><code class="classname">glib.MainContext</code></a>
-can be run with the <a class="link" href="class-glibmaincontext.html#method-glibmaincontext--iteration" title="glib.MainContext.iteration"><code class="methodname">iteration</code>()</a>
-method.</p></div><div class="refsect1" title="Constructor"><a name="constructor-glibmaincontext"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">glib.MainContext</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new <a class="link" href="class-glibmaincontext.html" title="glib.MainContext"><code class="classname">glib.MainContext</code></a>
-        object.</td></tr></tbody></table><p>Creates a new <a class="link" href="class-glibmaincontext.html" title="glib.MainContext"><code class="classname">glib.MainContext</code></a>
-object.</p></div><div class="refsect1" title="Methods"><a name="id392378"></a><h2>Methods</h2><div class="refsect2" title="glib.MainContext.iteration"><a name="method-glibmaincontext--iteration"></a><h3>glib.MainContext.iteration</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">iteration</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>may_block</code></em> :</span></p></td><td>if <code class="literal">True</code> the call may block
-         waiting for an event.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if events were
-         dispatched.</td></tr></tbody></table><p>The <code class="methodname">iteration</code>() method runs a single
-iteration. This involves:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">checking to see if any associated event sources are ready
-to be processed;</li><li class="listitem">then if no events sources are ready and
-<em class="parameter"><code>may_block</code></em> is <code class="literal">True</code>, waiting for a
-source to become ready;</li><li class="listitem">and finally, dispatching the highest priority events
-sources that are ready</li></ul></div><p>Note that even when <em class="parameter"><code>may_block</code></em> is
-<code class="literal">True</code>, it is still possible for
-<code class="methodname">iteration</code>() to return <code class="literal">False</code>,
-since the the wait may be interrupted for other reasons than an event source
-becoming ready.</p></div><div class="refsect2" title="glib.MainContext.pending"><a name="method-glibmaincontext--pending"></a><h3>glib.MainContext.pending</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">pending</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if events are
-         pending.</td></tr></tbody></table><p>The <code class="methodname">pending</code>() method checks if any
-associated sources have pending events.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="glib-class-reference.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="glib-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-glibmainloop.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PyGlibClass Reference </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> glib.MainLoop</td></tr></table></div></body></html>
diff --git a/docs/html/class-glibmainloop.html b/docs/html/class-glibmainloop.html
deleted file mode 100644 (file)
index f5ba208..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>glib.MainLoop</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="glib-class-reference.html" title="PyGlibClass Reference"><link rel="prev" href="class-glibmaincontext.html" title="glib.MainContext"><link rel="next" href="glib-functions.html" title="glib Functions"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">glib.MainLoop</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-glibmaincontext.html">Prev</a> </td><th width="60%" align="center">PyGlibClass Reference</th><td width="20%" align="right"> <a accesskey="n" href="glib-functions.html">Next</a></td></tr></table><hr></div><div class="refentry" title="glib.MainLoop"><a name="class-glibmainloop"></a><div class="titlepage"></div><div class="refnamediv"><h2>glib.MainLoop</h2><p>glib.MainLoop â€” an object representing the main event loop of a PyGTK
-    application.</p></div><div class="refsect1" title="Synopsis"><a name="id394804"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">glib.MainLoop</span></span>:
-<code class="constructorsynopsis">    <span class="methodname"><a class="link" href="class-glibmainloop.html#constructor-glibmainloop" title="Constructor">glib.MainLoop</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>context</code></em></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>is_running</code></em></span><span class="initializer">=0</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-glibmainloop.html#method-glibmainloop--get-context" title="glib.MainLoop.get_context">get_context</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-glibmainloop.html#method-glibmainloop--is-running" title="glib.MainLoop.is_running">is_running</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-glibmainloop.html#method-glibmainloop--quit" title="glib.MainLoop.quit">quit</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-glibmainloop.html#method-glibmainloop--run" title="glib.MainLoop.run">run</a></span>()</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id395291"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-glibmainloop.html" title="glib.MainLoop">glib.MainLoop</a>
-</pre></div><div class="refsect1" title="Description"><a name="id394716"></a><h2>Description</h2><p><a class="link" href="class-glibmainloop.html" title="glib.MainLoop"><code class="classname">glib.MainLoop</code></a>
-represents a main event loop. A <a class="link" href="class-glibmainloop.html" title="glib.MainLoop"><code class="classname">glib.MainLoop</code></a>
-is created with the <a class="link" href="class-glibmainloop.html#constructor-glibmainloop" title="Constructor">glib.MainLoop</a>()
-constructor. After adding the initial event sources, the <a class="link" href="class-glibmainloop.html#method-glibmainloop--run" title="glib.MainLoop.run"><code class="methodname">run</code>()</a>
-method is called. This continuously checks for new events from each of the
-event sources and dispatches them. Finally, the processing of an event from
-one of the sources leads to a call to the <a class="link" href="class-glibmainloop.html#method-glibmainloop--quit" title="glib.MainLoop.quit"><code class="methodname">quit</code>()</a>
-method to exit the main loop, and the <a class="link" href="class-glibmainloop.html#method-glibmainloop--run" title="glib.MainLoop.run"><code class="methodname">run</code>()</a>
-method returns.</p><p>It is possible to create new instances of <a class="link" href="class-glibmainloop.html" title="glib.MainLoop"><code class="classname">glib.MainLoop</code></a>
-recursively. This is often used in <code class="literal">PyGTK</code> applications
-when showing modal dialog boxes. Note that event sources are associated with
-a particular <a class="link" href="class-glibmaincontext.html" title="glib.MainContext"><code class="classname">glib.MainContext</code></a>,
-and will be checked and dispatched for all main loops associated with that
-<a class="link" href="class-glibmaincontext.html" title="glib.MainContext"><code class="classname">glib.MainContext</code></a>.</p><p><code class="literal">PyGTK</code> contains wrappers of some of these
-functions, e.g. the <PYGTKDOCLINK HREF="function-gtk--main"><code class="function">gtk.main</code>()</PYGTKDOCLINK>, <PYGTKDOCLINK HREF="function-gtk--main-quit"><code class="function">gtk.main_quit</code>()</PYGTKDOCLINK>
-and <PYGTKDOCLINK HREF="function-gtk--events-pending"><code class="function">gtk.events_pending</code>()</PYGTKDOCLINK>
-functions.</p></div><div class="refsect1" title="Constructor"><a name="constructor-glibmainloop"></a><h2>Constructor</h2><pre class="programlisting"><code class="constructorsynopsis">    <span class="methodname">glib.MainLoop</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>context</code></em></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>is_running</code></em></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>context</code></em> :</span></p></td><td>a <a class="link" href="class-glibmaincontext.html" title="glib.MainContext"><code class="classname">glib.MainContext</code></a>
-       or <code class="literal">None</code> to use the default
-       context.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>is_running</code></em> :</span></p></td><td>if <code class="literal">True</code> indicates that the
-       loop is running. This is not very important since calling the <a class="link" href="class-glibmainloop.html#method-glibmainloop--run" title="glib.MainLoop.run"><code class="methodname">run</code>()</a>
-       method will set this to <code class="literal">True</code>
-       anyway.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new <a class="link" href="class-glibmainloop.html" title="glib.MainLoop"><code class="classname">glib.MainLoop</code></a>
-       object.</td></tr></tbody></table><p>Creates a new <a class="link" href="class-glibmainloop.html" title="glib.MainLoop"><code class="classname">glib.MainLoop</code></a>
-object.</p></div><div class="refsect1" title="Methods"><a name="id385752"></a><h2>Methods</h2><div class="refsect2" title="glib.MainLoop.get_context"><a name="method-glibmainloop--get-context"></a><h3>glib.MainLoop.get_context</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_context</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the <a class="link" href="class-glibmaincontext.html" title="glib.MainContext"><code class="classname">glib.MainContext</code></a>
-         the mainloop is associated with</td></tr></tbody></table><p>The <code class="methodname">get_context</code>() method returns the
-<a class="link" href="class-glibmaincontext.html" title="glib.MainContext"><code class="classname">glib.MainContext</code></a>
-that the mainloop was created with.</p></div><div class="refsect2" title="glib.MainLoop.is_running"><a name="method-glibmainloop--is-running"></a><h3>glib.MainLoop.is_running</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">is_running</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the mainloop is
-         currently being run.</td></tr></tbody></table><p>The <code class="methodname">is_running</code>() method checks to see
-if the mainloop is currently being run via the <a class="link" href="class-glibmainloop.html#method-glibmainloop--run" title="glib.MainLoop.run"><code class="methodname">run</code>()</a>
-method.</p></div><div class="refsect2" title="glib.MainLoop.quit"><a name="method-glibmainloop--quit"></a><h3>glib.MainLoop.quit</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">quit</span>()</code></pre><p>The <code class="methodname">quit</code>() method stops the mainloop
-from running. Any subsequent calls to the <a class="link" href="class-glibmainloop.html#method-glibmainloop--run" title="glib.MainLoop.run"><code class="methodname">run</code>()</a>
-method will return immediately.</p></div><div class="refsect2" title="glib.MainLoop.run"><a name="method-glibmainloop--run"></a><h3>glib.MainLoop.run</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">run</span>()</code></pre><p>The <code class="methodname">run</code>() method runs a mainloop until
-the <a class="link" href="class-glibmainloop.html#method-glibmainloop--quit" title="glib.MainLoop.quit"><code class="methodname">quit</code>()</a>
-method is called. If this is called for the thread of the loop's <a class="link" href="class-glibmaincontext.html" title="glib.MainContext"><code class="classname">glib.MainContext</code></a>,
-it will process events from the loop, otherwise it will simply wait.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-glibmaincontext.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="glib-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="glib-functions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">glib.MainContext </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> glib Functions</td></tr></table></div></body></html>
diff --git a/docs/html/class-gobject.html b/docs/html/class-gobject.html
deleted file mode 100644 (file)
index 1a71df7..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gobject.GObject</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gobject-class-reference.html" title="PyGObject Class Reference"><link rel="prev" href="gobject-class-reference.html" title="PyGObject Class Reference"><link rel="next" href="class-gobjectgboxed.html" title="gobject.GBoxed"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gobject.GObject</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="gobject-class-reference.html">Prev</a> </td><th width="60%" align="center">PyGObject Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-gobjectgboxed.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gobject.GObject"><a name="class-gobject"></a><div class="titlepage"></div><div class="refnamediv"><h2><span class="refentrytitle">gobject.GObject</span></h2><p>gobject.GObject â€” the base class</p></div><div class="refsect1" title="Synopsis"><a name="id438474"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gobject.GObject</span></span>:
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--get-property" title="gobject.GObject.get_property">get_property</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>property_name</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--get-properties" title="gobject.GObject.get_properties">get_properties</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>first_property_name</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--set-property" title="gobject.GObject.set_property">set_property</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>property_name</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>value</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--set-properties" title="gobject.GObject.set_properties">set_properties</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>property_name</code></em></span><span class="initializer">=value</span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--freeze-notify" title="gobject.GObject.freeze_notify">freeze_notify</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--notify" title="gobject.GObject.notify">notify</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>property_name</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--thaw-notify" title="gobject.GObject.thaw_notify">thaw_notify</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--get-data" title="gobject.GObject.get_data">get_data</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>key</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--set-data" title="gobject.GObject.set_data">set_data</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>key</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>data</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect">connect</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>handler</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--connect-after" title="gobject.GObject.connect_after">connect_after</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>handler</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--connect-object" title="gobject.GObject.connect_object">connect_object</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>handler</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--connect-object-after" title="gobject.GObject.connect_object_after">connect_object_after</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>handler</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--disconnect" title="gobject.GObject.disconnect">disconnect</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>handler_id</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--handler-disconnect" title="gobject.GObject.handler_disconnect">handler_disconnect</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>handler_id</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--handler-is-connected" title="gobject.GObject.handler_is_connected">handler_is_connected</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>handler_id</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--handler-block" title="gobject.GObject.handler_block">handler_block</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>handler_id</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--handler-unblock" title="gobject.GObject.handler_unblock">handler_unblock</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>handler_id</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--handler-block-by-func" title="gobject.GObject.handler_block_by_func">handler_block_by_func</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>callable</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--handler-unblock-by-func" title="gobject.GObject.handler_unblock_by_func">handler_unblock_by_func</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>callable</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--emit" title="gobject.GObject.emit">emit</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--stop-emission" title="gobject.GObject.stop_emission">stop_emission</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--emit-stop-by-name" title="gobject.GObject.emit_stop_by_name">emit_stop_by_name</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobject.html#method-gobject--chain" title="gobject.GObject.chain">chain</a></span>(<span class="methodparam"></span>)</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id360340"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>
-</pre></div><div class="refsect1" title="Attributes"><a name="id360346"></a><h2>Attributes</h2><div class="blockquote"><table width="100%" border="0" bgcolor="#E0E0E0"><tr><td valign="top"><div class="informaltable"><table cellpadding="5" width="100%" border="0"><colgroup><col width="1in"><col width="1in"><col width="4in"></colgroup><tbody><tr valign="top"><td valign="top">"props"</td><td valign="top">Read/Write</td><td valign="top">
-              <p>This attribute gives full access to GObject properties as
-                  simple attributes. It can be used to iterate over all the object
-                  properties, and can be used both on class or instance objects.</p>
-              <p>Examples:</p>
-              <pre class="programlisting">
-button = Button()
-button_label = button.props.label
-button.props.label = 'Click on this fancy button'
-for pspec in button.props:
-    print pspec
-    print button.get_property(pspec.name)
-label_pspec = Button.props.label
-button_label = button.get_property(label_pspec.name)
-              </pre>
-            </td></tr><tr valign="top"><td valign="top">"__doc__"</td><td valign="top">Read</td><td valign="top">The documentation for the object type. Uses
-             "__gdoc__" if no specific documentation set.</td></tr><tr valign="top"><td valign="top">"__gdoc__"</td><td valign="top">Read</td><td valign="top">The generated documentation for the underlying GObject
-             type.</td></tr><tr valign="top"><td valign="top">"__gtype__"</td><td valign="top">Read</td><td valign="top">The underlying GObject type.</td></tr><tr valign="top"><td valign="top">"__grefcount__"</td><td valign="top">Read</td><td valign="top">The reference count for the underlying GObject.</td></tr></tbody></table></div></td></tr></table></div></div><div class="refsect1" title="gobject.GObject Signal Prototypes"><a name="signal-prototypes-gobject"></a><h2>gobject.GObject Signal Prototypes</h2><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term">"<a class="link" href="class-gobject.html#signal-gobject--notify" title='The GObject "notify" Signal'>notify</a>"</span></p></td><td><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>gobject</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>property_spec</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></td></tr></tbody></table></div><div class="refsect1" title="Description"><a name="id365926"></a><h2>Description</h2><p>The <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>
-    class is the base class providing the common attributes and methods for
-    the PyGTK classes. The <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>
-    class is not a user interface widget class.</p><p>The <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>
-    class provides the signal management methods, the object property access
-    methods and the object data management methods.</p></div><div class="refsect1" title="Methods"><a name="id365893"></a><h2>Methods</h2><div class="refsect2" title="gobject.GObject.get_property"><a name="method-gobject--get-property"></a><h3>gobject.GObject.get_property</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_property</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>property_name</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td><td>a string containing the property name for the
-GObject</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a Python object containing the value of the
-property</td></tr></tbody></table><p>The <code class="methodname">get_property</code>() method returns the
-value of the property specified by <em class="parameter"><code>property_name</code></em> or
-None if there is no value associated with the property.</p><p>The <code class="exceptionname">TypeError</code> exception is raised
-if the property name is not registered with the object class.</p></div><div class="refsect2" title="gobject.GObject.get_properties"><a name="method-gobject--get-properties"></a><h3>gobject.GObject.get_properties</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_properties</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>first_property_name</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>first_property_name</code></em> :</span></p></td><td>a string containing the first property name for the
-GObject</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional property names 
-</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a tuple containing the property values 
-requested</td></tr></tbody></table><p>The <code class="methodname">get_properties</code>() method returns a tuple containing
-the values of the properties requested, or
-None if there is no value associated with the property.</p><p>The <code class="exceptionname">TypeError</code> exception is raised
-if the property name is not registered with the object class.</p></div><div class="refsect2" title="gobject.GObject.set_property"><a name="method-gobject--set-property"></a><h3>gobject.GObject.set_property</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_property</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>property_name</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>value</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td><td>a string containing the property
-name</td></tr><tr><td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td><td>a Python object containing the property value
-to be set</td></tr></tbody></table><p>The <code class="methodname">set_property</code>() method sets the
-property specified by <em class="parameter"><code>property_name</code></em> to the specified
-<em class="parameter"><code>value</code></em>.</p><p>The <code class="exceptionname">TypeError</code> exception is raised
-if the property name is not registered with the object class or if the value
-specified could not be converted to the property type.</p></div><div class="refsect2" title="gobject.GObject.set_properties"><a name="method-gobject--set-properties"></a><h3>gobject.GObject.set_properties</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_properties</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>property_name</code></em></span><span class="initializer">=value</span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td><td>the property name</td></tr><tr><td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td><td>a Python object containing the property value
-to be set</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional property name and value 
-kwargs</td></tr></tbody></table><p>The <code class="methodname">set_properties</code>() method sets the
-property specified by <em class="parameter"><code>property_name</code></em> to the specified
-<em class="parameter"><code>value</code></em>, followed by pairs of property name 
-and value as keyword arguments.</p><p>The <code class="exceptionname">TypeError</code> exception is raised
-if the property name is not registered with the object class or if the value
-specified could not be converted to the property type.</p></div><div class="refsect2" title="gobject.GObject.freeze_notify"><a name="method-gobject--freeze-notify"></a><h3>gobject.GObject.freeze_notify</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">freeze_notify</span>(<span class="methodparam"></span>)</code></pre><p>The <code class="methodname">freeze_notify</code>() method freezes the
-object's property-changed notification queue so that "notify" signals are
-blocked until the <code class="methodname">thaw_notify</code>() method is
-called.</p></div><div class="refsect2" title="gobject.GObject.notify"><a name="method-gobject--notify"></a><h3>gobject.GObject.notify</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">notify</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>property_name</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td><td>a string containing a property
-name</td></tr></tbody></table><p>The <code class="methodname">notify</code>() method causes the "notify"
-signal for the property specified by <em class="parameter"><code>property_name</code></em> to
-be emitted.</p></div><div class="refsect2" title="gobject.GObject.thaw_notify"><a name="method-gobject--thaw-notify"></a><h3>gobject.GObject.thaw_notify</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">thaw_notify</span>(<span class="methodparam"></span>)</code></pre><p>The <code class="methodname">thaw_notify</code>() method thaws the
-object's property-changed notification queue so that "notify" signals are
-emitted.</p></div><div class="refsect2" title="gobject.GObject.get_data"><a name="method-gobject--get-data"></a><h3>gobject.GObject.get_data</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">get_data</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>key</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>key</code></em> :</span></p></td><td>a string used as the key</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a Python object containing the associated
-data</td></tr></tbody></table><p>The <code class="methodname">get_data</code>() method returns the
-Python object associated with the specified <em class="parameter"><code>key</code></em> or
-None if there is no data associated with the <em class="parameter"><code>key</code></em> or
-if there is no key associated with the object.</p></div><div class="refsect2" title="gobject.GObject.set_data"><a name="method-gobject--set-data"></a><h3>gobject.GObject.set_data</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">set_data</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>key</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>data</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>key</code></em> :</span></p></td><td>a string used as a key</td></tr><tr><td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td><td>a Python object that is the value to be
-associated with the key</td></tr></tbody></table><p>The <code class="methodname">set_data</code>() method associates the
-specified Python object (<em class="parameter"><code>data</code></em>) with
-<em class="parameter"><code>key</code></em>.</p></div><div class="refsect2" title="gobject.GObject.connect"><a name="method-gobject--connect"></a><h3>gobject.GObject.connect</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">connect</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>handler</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>detailed_signal</code></em> :</span></p></td><td>a string containing the signal
-name</td></tr><tr><td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td><td>a Python function or method
-object.</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional optional
-parameters</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an integer identifier</td></tr></tbody></table><p>The <code class="methodname">connect</code>() method adds a function or
-method (<em class="parameter"><code>handler</code></em>)to the end of the list of signal
-handlers for the named <em class="parameter"><code>detailed_signal</code></em> but before the
-default class signal handler. An optional set of parameters may be specified
-after the <em class="parameter"><code>handler</code></em> parameter. These will all be passed
-to the signal handler when invoked.</p><p>For example if a function handler was connected to a signal
-using:</p><pre class="programlisting">
-  handler_id = object.connect("signal_name", handler, arg1, arg2, arg3)
-</pre><p>The handler should be defined as:</p><pre class="programlisting">
-  def handler(object, arg1, arg2, arg3):
-</pre><p>A method handler connected to a signal using:</p><pre class="programlisting">
-  handler_id = object.connect("signal_name", self.handler, arg1, arg2)
-</pre><p>requires an additional argument when defined:</p><pre class="programlisting">
-  def handler(self, object, arg1, arg2)
-</pre><p>A <code class="exceptionname">TypeError</code> exception is raised
-if <em class="parameter"><code>detailed_signal</code></em> identifies a signal name that is
-not associated with the object.</p></div><div class="refsect2" title="gobject.GObject.connect_after"><a name="method-gobject--connect-after"></a><h3>gobject.GObject.connect_after</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">connect_after</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>handler</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>detailed_signal</code></em> :</span></p></td><td>a string containing the signal
-name</td></tr><tr><td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td><td>a Python function or method
-object</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional optional
-parameters</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an integer handler
-identifier</td></tr></tbody></table><p>The <code class="methodname">connect_after</code>() method is similar
-to the <code class="methodname">connect</code>() method except that the
-<em class="parameter"><code>handler</code></em> is added to the signal handler list after the
-default class signal handler. Otherwise the details of
-<em class="parameter"><code>handler</code></em> definition and invocation are the
-same.</p></div><div class="refsect2" title="gobject.GObject.connect_object"><a name="method-gobject--connect-object"></a><h3>gobject.GObject.connect_object</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">connect_object</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>handler</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>gobject</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>detailed_signal</code></em> :</span></p></td><td>a string containing the signal
-name</td></tr><tr><td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td><td>a Python function or method
-object</td></tr><tr><td><p><span class="term"><em class="parameter"><code>gobject</code></em> :</span></p></td><td>a GObject</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an integer handler
-identifier</td></tr></tbody></table><p>The <code class="methodname">connect_object</code>() method is the same
-as the <code class="methodname">connect</code>() method except that the
-<em class="parameter"><code>handler</code></em> is invoked with the specified
-<em class="parameter"><code>gobject</code></em> in place of the object invoking the
-<code class="methodname">connect_object</code>() method. For example, a call with a
-function handler:</p><pre class="programlisting">
-  handler_id = object("signal_name", handler, gobject)
-</pre><p>will cause the <em class="parameter"><code>handler</code></em> to be invoked
-as:</p><pre class="programlisting">
-  handler(gobject)
-</pre><p>Likewise a method handler will be invoked as:</p><pre class="programlisting">
-  self.handler(gobject)
-</pre><p>This can be helpful in invoking PyGTK widget methods that
-require no arguments except the widget itself (e.g.
-<code class="methodname">widget.destroy</code>()) by using the class method as the
-handler. For example, a Button "clicked" signal can be set up to invoke the
-Window <code class="methodname">destroy</code>() method as:</p><pre class="programlisting">
-  handler_id = button.connect_object("clicked", Window.destroy, window)
-</pre><p>When the button is clicked the handler is invoked as:</p><pre class="programlisting">
-  Window.destroy(window)
-</pre><p>which is the same as:</p><pre class="programlisting">
-  window.destroy()
-</pre><p>Additional arguments may be passed to the handler as with the
-<code class="methodname">connect</code>() method handler invocations.</p></div><div class="refsect2" title="gobject.GObject.connect_object_after"><a name="method-gobject--connect-object-after"></a><h3>gobject.GObject.connect_object_after</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">connect_object_after</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>handler</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>detailed_signal</code></em> :</span></p></td><td>a string containing the signal
-name</td></tr><tr><td><p><span class="term"><em class="parameter"><code>handler</code></em> :</span></p></td><td>a Python function or method
-object</td></tr><tr><td><p><span class="term"><em class="parameter"><code>gobject</code></em> :</span></p></td><td>a GObject</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an integer handler
-identifier</td></tr></tbody></table><p>The <code class="methodname">connect_object_after</code>() method is
-similar to the <code class="methodname">connect_object</code>() method except that
-the <em class="parameter"><code>handler</code></em> is added to the signal handler list after
-the default class signal handler. Otherwise the details of
-<em class="parameter"><code>handler</code></em> definition and invocation are the
-same.</p></div><div class="refsect2" title="gobject.GObject.disconnect"><a name="method-gobject--disconnect"></a><h3>gobject.GObject.disconnect</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">disconnect</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>handler_id</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>handler_id</code></em> :</span></p></td><td>an integer handler
-identifier</td></tr></tbody></table><p>The <code class="methodname">disconnect</code>() method removes the
-signal handler with the specified <em class="parameter"><code>handler_id</code></em> from the
-list of signal handlers for the object.</p></div><div class="refsect2" title="gobject.GObject.handler_disconnect"><a name="method-gobject--handler-disconnect"></a><h3>gobject.GObject.handler_disconnect</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">handler_disconnect</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>handler_id</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>handler_id</code></em> :</span></p></td><td>an integer handler
-identifier</td></tr></tbody></table><p>The <code class="methodname">handler_disconnect</code>() method removes
-the signal handler with the specified <em class="parameter"><code>handler_id</code></em> from
-the list of signal handlers for the object.</p></div><div class="refsect2" title="gobject.GObject.handler_is_connected"><a name="method-gobject--handler-is-connected"></a><h3>gobject.GObject.handler_is_connected</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">handler_is_connected</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>handler_id</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>handler_id</code></em> :</span></p></td><td>an integer handler
-identifier</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the signal handler
-is connected to the object.</td></tr></tbody></table><p>The <code class="methodname">handler_is_connected</code>() method
-returns <code class="literal">True</code> if the signal handler with the specified
-<em class="parameter"><code>handler_id</code></em> is connected to the object.</p></div><div class="refsect2" title="gobject.GObject.handler_block"><a name="method-gobject--handler-block"></a><h3>gobject.GObject.handler_block</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">handler_block</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>handler_id</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>handler_id</code></em> :</span></p></td><td>an integer handler
-identifier</td></tr></tbody></table><p>The <code class="methodname">handler_block</code>() method blocks the
-signal handler with the specified <em class="parameter"><code>handler_id</code></em> from
-being invoked until it is unblocked.</p></div><div class="refsect2" title="gobject.GObject.handler_unblock"><a name="method-gobject--handler-unblock"></a><h3>gobject.GObject.handler_unblock</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">handler_unblock</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>handler_id</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>handler_id</code></em> :</span></p></td><td>an integer handler
-identifier</td></tr></tbody></table></div><div class="refsect2" title="gobject.GObject.handler_block_by_func"><a name="method-gobject--handler-block-by-func"></a><h3>gobject.GObject.handler_block_by_func</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">handler_block_by_func</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>callable</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callable</code></em> :</span></p></td><td>a callable python object</td></tr></tbody></table><p>The <code class="methodname">handler_block_by_func</code>() method blocks the
-all signal handler connected to a specific <em class="parameter"><code>callable</code></em> from
-being invoked until the callable is unblocked.</p></div><div class="refsect2" title="gobject.GObject.handler_unblock_by_func"><a name="method-gobject--handler-unblock-by-func"></a><h3>gobject.GObject.handler_unblock_by_func</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">handler_unblock_by_func</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>callback</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callable</code></em> :</span></p></td><td>a callable python object</td></tr></tbody></table><p>The <code class="methodname">handler_unblock_by_func</code>() method unblocks
-all signal handler connected to a specified <em class="parameter"><code>callable</code></em>
-thereby allowing it to be invoked when the associated signals are
-emitted.</p></div><div class="refsect2" title="gobject.GObject.emit"><a name="method-gobject--emit"></a><h3>gobject.GObject.emit</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">emit</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>detailed_signal</code></em> :</span></p></td><td>a string containing the signal
-name</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional parameters</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a PyObject*</td></tr></tbody></table><p>The <code class="methodname">emit</code>() method causes the object to
-emit the signal specified by <em class="parameter"><code>detailed_signal</code></em>. The
-additional parameters must match the number and type of the required signal
-handler parameters. In most cases no additional parameters are needed. for
-example:</p><pre class="programlisting">
-  button.emit("clicked")
-</pre><p>is all that is required to emit the "clicked" signal for a
-button. The most common case requiring additional parameters occurs when
-emitting an event signal; for example:</p><pre class="programlisting">
-  button.emit("button_press_event", event)
-</pre></div><div class="refsect2" title="gobject.GObject.stop_emission"><a name="method-gobject--stop-emission"></a><h3>gobject.GObject.stop_emission</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">stop_emission</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>detailed_signal</code></em> :</span></p></td><td>a string containing the signal
-name</td></tr></tbody></table><p>The <code class="methodname">stop_emission</code>() method stops the
-current emission of the signal specified by
-<em class="parameter"><code>detailed_signal</code></em>. Any signal handlers in the list
-still to be run will not be invoked.</p></div><div class="refsect2" title="gobject.GObject.emit_stop_by_name"><a name="method-gobject--emit-stop-by-name"></a><h3>gobject.GObject.emit_stop_by_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">emit_stop_by_name</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>detailed_signal</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>detailed_signal</code></em> :</span></p></td><td>a string containing the signal
-name</td></tr></tbody></table><p>The <code class="methodname">emit_stop_by_name</code>() method stops
-the current emission of the signal specified by
-<em class="parameter"><code>detailed_signal</code></em>. Any signal handlers in the list
-still to be run will not be invoked.</p></div><div class="refsect2" title="gobject.GObject.chain"><a name="method-gobject--chain"></a><h3>gobject.GObject.chain</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">chain</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional parameters</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a Python object</td></tr></tbody></table><p>The chain() method does something.</p></div></div><div class="refsect1" title="Signals"><a name="id357922"></a><h2>Signals</h2><div class="refsect2" title='The GObject "notify" Signal'><a name="signal-gobject--notify"></a><h3>The GObject "notify" Signal</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">callback</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>gobject</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>property_spec</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>user_param1</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>gobject</code></em> :</span></p></td><td>the gobject that received the
-signal</td></tr><tr><td><p><span class="term"><em class="parameter"><code>property_spec</code></em> :</span></p></td><td>the <PYGTKDOCLINK HREF="class-gobjectgparamspec"><code class="classname">gobject.GParamSpec</code></PYGTKDOCLINK> of the property that was
-changed</td></tr><tr><td><p><span class="term"><em class="parameter"><code>user_param1</code></em> :</span></p></td><td>the first user parameter (if any) specified
-with the <a class="link" href="class-gobject.html#method-gobject--connect" title="gobject.GObject.connect"><code class="methodname">connect</code>()</a>
-method</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional user parameters (if
-any)</td></tr></tbody></table><p>The "notify" signal is emitted on a gobject when one of its
-properties has been changed. Note that getting this signal doesn't guarantee
-that the value of the property has actually changed, it may also be emitted
-when the setter for the property is called to reinstate the previous
-value. For example to be notified of the change of the title of a <PYGTKDOCLINK HREF="class-gtkwindow"><code class="classname">gtk.Window</code></PYGTKDOCLINK> you could
-connect to the "notify" signal similar to:</p><pre class="programlisting">
-  window.connect("notify::title", callback)
-</pre></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="gobject-class-reference.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gobject-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-gobjectgboxed.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PyGObject Class Reference </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gobject.GBoxed</td></tr></table></div></body></html>
diff --git a/docs/html/class-gobjectgboxed.html b/docs/html/class-gobjectgboxed.html
deleted file mode 100644 (file)
index 30b7dc5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gobject.GBoxed</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gobject-class-reference.html" title="PyGObject Class Reference"><link rel="prev" href="class-gobject.html" title="gobject.GObject"><link rel="next" href="class-gobjectgpointer.html" title="gobject.GPointer"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gobject.GBoxed</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gobject.html">Prev</a> </td><th width="60%" align="center">PyGObject Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-gobjectgpointer.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gobject.GBoxed"><a name="class-gobjectgboxed"></a><div class="titlepage"></div><div class="refnamediv"><h2>gobject.GBoxed</h2><p>gobject.GBoxed â€” an object containing an opaque chunk of data</p></div><div class="refsect1" title="Synopsis"><a name="id411403"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gobject.GBoxed</span></span>:
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="class-gobjectgboxed.html#method-gobjectgboxed--copy" title="gobject.GBoxed.copy">copy</a></span>()</code><br></pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id430702"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectgboxed.html" title="gobject.GBoxed">gobject.GBoxed</a>
-</pre></div><div class="refsect1" title="Description"><a name="id365742"></a><h2>Description</h2><p><a class="link" href="class-gobjectgboxed.html" title="gobject.GBoxed"><code class="classname">gobject.GBoxed</code></a>
-is an abstract base class that encapsulates an opaque chunk of data to
-provide an object-oriented interface and a type that is registered with the
-<code class="literal">GLIB</code> type system. A boxed type is registered with
-functions that provide for the copying and freeing of the underlying data
-structure - this allows PyGTK to encapsulate these as Python objects.</p></div><div class="refsect1" title="Methods"><a name="id422177"></a><h2>Methods</h2><div class="refsect2" title="gobject.GBoxed.copy"><a name="method-gobjectgboxed--copy"></a><h3>gobject.GBoxed.copy</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">copy</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a copy of the <a class="link" href="class-gobjectgboxed.html" title="gobject.GBoxed"><code class="classname">gobject.GBoxed</code></a>
-         object</td></tr></tbody></table><p>The <code class="methodname">copy</code>() method makes and returns a copy of the boxed object.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gobject.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gobject-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-gobjectgpointer.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gobject.GObject </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gobject.GPointer</td></tr></table></div></body></html>
diff --git a/docs/html/class-gobjectginterface.html b/docs/html/class-gobjectginterface.html
deleted file mode 100644 (file)
index 5156c43..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gobject.GInterface</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gobject-class-reference.html" title="PyGObject Class Reference"><link rel="prev" href="class-gobjectgpointer.html" title="gobject.GPointer"><link rel="next" href="gobject-functions.html" title="gobject Functions"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gobject.GInterface</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gobjectgpointer.html">Prev</a> </td><th width="60%" align="center">PyGObject Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="gobject-functions.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gobject.GInterface"><a name="class-gobjectginterface"></a><div class="titlepage"></div><div class="refnamediv"><h2>gobject.GInterface</h2><p>gobject.GInterface â€” an object representing a GInterface</p></div><div class="refsect1" title="Synopsis"><a name="id367430"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gobject.GInterface</span></span>:
-</pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id357622"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectginterface.html" title="gobject.GInterface">gobject.GInterface</a>
-</pre></div><div class="refsect1" title="Description"><a name="id358624"></a><h2>Description</h2><p><a class="link" href="class-gobjectginterface.html" title="gobject.GInterface"><code class="classname">gobject.GInterface</code></a>
-is an abstract base class that encapsulates a GInterface.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gobjectgpointer.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gobject-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="gobject-functions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gobject.GPointer </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gobject Functions</td></tr></table></div></body></html>
diff --git a/docs/html/class-gobjectgpointer.html b/docs/html/class-gobjectgpointer.html
deleted file mode 100644 (file)
index 258a160..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gobject.GPointer</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gobject-class-reference.html" title="PyGObject Class Reference"><link rel="prev" href="class-gobjectgboxed.html" title="gobject.GBoxed"><link rel="next" href="class-gobjectginterface.html" title="gobject.GInterface"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gobject.GPointer</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gobjectgboxed.html">Prev</a> </td><th width="60%" align="center">PyGObject Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="class-gobjectginterface.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gobject.GPointer"><a name="class-gobjectgpointer"></a><div class="titlepage"></div><div class="refnamediv"><h2>gobject.GPointer</h2><p>gobject.GPointer â€” an object containing a completely opaque chunk of
-    data</p></div><div class="refsect1" title="Synopsis"><a name="id357742"></a><h2>Synopsis</h2><table bgcolor="#D0E0F0" width="100%"><tr><td><pre class="classsynopsis">class <span class="ooclass"><span class="classname">gobject.GPointer</span></span>:
-</pre></td></tr></table></div><div class="refsect1" title="Ancestry"><a name="id357261"></a><h2>Ancestry</h2><pre class="synopsis">+-- <a class="link" href="class-gobjectgpointer.html" title="gobject.GPointer">gobject.GPointer</a>
-</pre></div><div class="refsect1" title="Description"><a name="id376068"></a><h2>Description</h2><p><a class="link" href="class-gobjectgpointer.html" title="gobject.GPointer"><code class="classname">gobject.GPointer</code></a>
-is an abstract base class that encapsulates an opaque chunk of data and
-registers it with the <code class="literal">GLIB</code> type system. A pointer type
-has no methods and generic ways of copying and freeing the data. It
-shouldn't be used in PyGTK.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gobjectgboxed.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gobject-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="class-gobjectginterface.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gobject.GBoxed </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gobject.GInterface</td></tr></table></div></body></html>
diff --git a/docs/html/gio-class-reference.html b/docs/html/gio-class-reference.html
deleted file mode 100644 (file)
index 9b0f9b6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>PyGio Class Reference</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="index.html" title="PyGObject Reference Manual"><link rel="prev" href="gobject-constants.html" title="gobject Constants"><link rel="next" href="class-gioappinfo.html" title="gio.AppInfo"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">PyGio Class Reference</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="gobject-constants.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="class-gioappinfo.html">Next</a></td></tr></table><hr></div><div class="chapter" title="PyGio Class Reference"><div class="titlepage"><div><div><h2 class="title"><a name="gio-class-reference"></a>PyGio Class Reference</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="refentrytitle"><a href="class-gioappinfo.html">gio.AppInfo</a></span><span class="refpurpose"> â€” Information about an installed application and methods to launch it (with file arguments).</span></dt><dt><span class="refentrytitle"><a href="class-gioapplaunchcontext.html">gio.AppLaunchContext</a></span><span class="refpurpose"> â€” Application launch context.</span></dt><dt><span class="refentrytitle"><a href="class-gioasyncresult.html">gio.AsyncResult</a></span><span class="refpurpose"> â€” Asynchronous Function Results.</span></dt><dt><span class="refentrytitle"><a href="class-giobufferedinputstream.html">gio.BufferedInputStream</a></span><span class="refpurpose"> â€” Buffered Input Stream</span></dt><dt><span class="refentrytitle"><a href="class-giobufferedoutputstream.html">gio.BufferedOutputStream</a></span><span class="refpurpose"> â€” Buffered Output Stream</span></dt><dt><span class="refentrytitle"><a href="class-giocancellable.html">gio.Cancellable</a></span><span class="refpurpose"> â€” Thread-safe Operation Cancellation Stack.</span></dt><dt><span class="refentrytitle"><a href="class-giodatainputstream.html">gio.DataInputStream</a></span><span class="refpurpose"> â€” Data Input Stream</span></dt><dt><span class="refentrytitle"><a href="class-giodataoutputstream.html">gio.DataOutputStream</a></span><span class="refpurpose"> â€” Data Output Stream</span></dt><dt><span class="refentrytitle"><a href="class-giodrive.html">gio.Drive</a></span><span class="refpurpose"> â€” Virtual File System drive management.</span></dt><dt><span class="refentrytitle"><a href="class-gioemblem.html">gio.Emblem</a></span><span class="refpurpose"> â€” An object for emblems.</span></dt><dt><span class="refentrytitle"><a href="class-gioemblemedicon.html">gio.EmblemedIcon</a></span><span class="refpurpose"> â€” Icon with emblems.</span></dt><dt><span class="refentrytitle"><a href="class-giofile.html">gio.File</a></span><span class="refpurpose"> â€” File and Directory Handling.</span></dt><dt><span class="refentrytitle"><a href="class-giofileattributeinfo.html">gio.FileAttributeInfo</a></span><span class="refpurpose"> â€” Information about a specific attribute.</span></dt><dt><span class="refentrytitle"><a href="class-giofileenumerator.html">gio.FileEnumerator</a></span><span class="refpurpose"> â€” Enumerated Files Routines.</span></dt><dt><span class="refentrytitle"><a href="class-giofileicon.html">gio.FileIcon</a></span><span class="refpurpose"> â€” Icons pointing to an image file.</span></dt><dt><span class="refentrytitle"><a href="class-giofileinfo.html">gio.FileInfo</a></span><span class="refpurpose"> â€” File Information and Attributes</span></dt><dt><span class="refentrytitle"><a href="class-giofileinputstream.html">gio.FileInputStream</a></span><span class="refpurpose"> â€” Base class for implementing streaming input</span></dt><dt><span class="refentrytitle"><a href="class-giofilemonitor.html">gio.FileMonitor</a></span><span class="refpurpose"> â€” File Monitor</span></dt><dt><span class="refentrytitle"><a href="class-giofileoutputstream.html">gio.FileOutputStream</a></span><span class="refpurpose"> â€” Base class for implementing streaming input</span></dt><dt><span class="refentrytitle"><a href="class-giofilterinputstream.html">gio.FilterInputStream</a></span><span class="refpurpose"> â€” Filter Input Stream</span></dt><dt><span class="refentrytitle"><a href="class-giofilteroutputstream.html">gio.FilterOutputStream</a></span><span class="refpurpose"> â€” Filter Output Stream</span></dt><dt><span class="refentrytitle"><a href="class-gioicon.html">gio.Icon</a></span><span class="refpurpose"> â€” Interface for icons.</span></dt><dt><span class="refentrytitle"><a href="class-gioinputstream.html">gio.InputStream</a></span><span class="refpurpose"> â€” Base class for implementing streaming input</span></dt><dt><span class="refentrytitle"><a href="class-gioloadableicon.html">gio.LoadableIcon</a></span><span class="refpurpose"> â€” Interface for icons.</span></dt><dt><span class="refentrytitle"><a href="class-giomemoryinputstream.html">gio.MemoryInputStream</a></span><span class="refpurpose"> â€” Base class for implementing streaming input</span></dt><dt><span class="refentrytitle"><a href="class-giomemoryoutputstream.html">gio.MemoryOutputStream</a></span><span class="refpurpose"> â€” Streaming output operations on memory chunks</span></dt><dt><span class="refentrytitle"><a href="class-giomount.html">gio.Mount</a></span><span class="refpurpose"> â€” Mount management</span></dt><dt><span class="refentrytitle"><a href="class-giomountoperation.html">gio.MountOperation</a></span><span class="refpurpose"> â€” Authentication methods for mountable locations.</span></dt><dt><span class="refentrytitle"><a href="class-giooutputstream.html">gio.OutputStream</a></span><span class="refpurpose"> â€” Base class for implementing streaming input</span></dt><dt><span class="refentrytitle"><a href="class-gioseekable.html">gio.Seekable</a></span><span class="refpurpose"> â€” Stream seeking interface.</span></dt><dt><span class="refentrytitle"><a href="class-giosimpleasyncresult.html">gio.SimpleAsyncResult</a></span><span class="refpurpose"> â€” Simple asynchronous results implementation.</span></dt><dt><span class="refentrytitle"><a href="class-giothemedicon.html">gio.ThemedIcon</a></span><span class="refpurpose"> â€” Icon theming support.</span></dt><dt><span class="refentrytitle"><a href="class-giovolume.html">gio.Volume</a></span><span class="refpurpose"> â€” Volume management.</span></dt><dt><span class="refentrytitle"><a href="class-giovolumemonitor.html">gio.VolumeMonitor</a></span><span class="refpurpose"> â€” Volume Monitor.</span></dt><dt><span class="refentrytitle"><a href="gio-functions.html">gio Functions</a></span><span class="refpurpose"></span></dt><dt><span class="refentrytitle"><a href="gio-constants.html">gio Constants</a></span><span class="refpurpose"> â€” the built-in constants of the gio module</span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="gobject-constants.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="class-gioappinfo.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gobject Constants </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.AppInfo</td></tr></table></div></body></html>
diff --git a/docs/html/gio-constants.html b/docs/html/gio-constants.html
deleted file mode 100644 (file)
index 074b1d4..0000000
+++ /dev/null
@@ -1,414 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio Constants</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="gio-functions.html" title="gio Functions"><link rel="next" href="giounix-class-reference.html" title="PyGio Unix Class Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio Constants</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="gio-functions.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="giounix-class-reference.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio Constants"><a name="gio-constants"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio Constants</h2><p>gio Constants â€” the built-in constants of the gio module</p></div><div class="refsect1" title="Synopsis"><a name="id536207"></a><h2>Synopsis</h2><pre class="programlisting">
-<a class="xref" href="gio-constants.html#gio-app-info-constants" title="Gio AppInfo Create Flags Constants">Gio AppInfo Create Flags Constants</a>
-<a class="xref" href="gio-constants.html#gio-ask-password-flags-constants" title="Gio Ask Password Flags Constants">Gio Ask Password Flags Constants</a>
-<a class="xref" href="gio-constants.html#gio-data-stream-byte-order-constants" title="Gio Data Stream Byte Order Constants">Gio Data Stream Byte Order Constants</a>
-<a class="xref" href="gio-constants.html#gio-data-stream-newline-type-constants" title="Gio Data Stream Newline Type Constants">Gio Data Stream Newline Type Constants</a>
-<a class="xref" href="gio-constants.html#gio-emblem-origin-constants" title="Gio Emblem Origin Constants">Gio Emblem Origin Constants</a>
-<a class="xref" href="gio-constants.html#gio-error-constants" title="Gio Error Constants">Gio Error Constants</a>
-<a class="xref" href="gio-constants.html#gio-file-attribute-constants" title="Gio File Attribute Constants">Gio File Attribute Constants</a>
-<a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-<a class="xref" href="gio-constants.html#gio-file-attribute-flags-constants" title="Gio File Attribute Flags Constants">Gio File Attribute Flags Constants</a>
-<a class="xref" href="gio-constants.html#gio-file-create-flags-constants" title="Gio File Create Flags Constants">Gio File Create Flags Constants</a>
-<a class="xref" href="gio-constants.html#gio-file-copy-flags-constants" title="Gio File Copy Flags Constants">Gio File Copy Flags Constants</a>
-<a class="xref" href="gio-constants.html#gio-file-monitor-flags-constants" title="Gio File Monitor Flags Constants">Gio File Monitor Flags Constants</a>
-<a class="xref" href="gio-constants.html#gio-file-query-info-flags-constants" title="Gio File Query Info Flags Constants">Gio File Query Info Flags Constants</a>
-<a class="xref" href="gio-constants.html#gio-file-type-constants" title="Gio File Type Constants">Gio File Type Constants</a>
-<a class="xref" href="gio-constants.html#gio-mount-mount-flags-constants" title="Gio Mount Mount Flags Constants">Gio Mount Mount Flags Constants</a>
-<a class="xref" href="gio-constants.html#gio-mount-operation-result-constants" title="Gio Mount Operation Result Constants">Gio Mount Operation Result Constants</a>
-<a class="xref" href="gio-constants.html#gio-mount-unmount-flags-constants" title="Gio Mount Unmount Flags Constants">Gio Mount Unmount Flags Constants</a>
-<a class="xref" href="gio-constants.html#gio-password-save-constants" title="Gio Password Save Constants">Gio Password Save Constants</a>
-</pre></div><div class="refsect1" title="Description"><a name="gio-constants-description"></a><h2>Description</h2><div class="refsect2" title="Gio Ask Password Flags Constants"><a name="gio-ask-password-flags-constants"></a><h3>Gio Ask Password Flags Constants</h3><p>
-         Flags that are used to request specific information from the user, or to
-         notify the user of their choices in an authentication situation.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.ASK_PASSWORD_ANONYMOUS_SUPPORTED</code></span></p></td><td>operation supports anonymous users.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ASK_PASSWORD_NEED_DOMAIN</code></span></p></td><td>operation requires a domain.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ASK_PASSWORD_NEED_PASSWORD</code></span></p></td><td>operation requires a password.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ASK_PASSWORD_NEED_USERNAME</code></span></p></td><td>operation requires a username.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ASK_PASSWORD_SAVING_SUPPORTED</code></span></p></td><td>operation supports saving settings.</td></tr></tbody></table></div><div class="refsect2" title="Gio AppInfo Create Flags Constants"><a name="gio-app-info-constants"></a><h3>Gio AppInfo Create Flags Constants</h3><p>
-         Flags used when creating a <a class="link" href="class-gioappinfo.html" title="gio.AppInfo"><code class="classname">gio.AppInfo</code></a>
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.APP_INFO_CREATE_NONE</code></span></p></td><td>No flags.</td></tr><tr><td><p><span class="term"><code class="literal">gio.APP_INFO_CREATE_NEEDS_TERMINAL</code></span></p></td><td>Application opens in a terminal window. </td></tr><tr><td><p><span class="term"><code class="literal">gio.APP_INFO_CREATE_SUPPORTS_URIS</code></span></p></td><td>Application supports URI arguments. </td></tr></tbody></table></div><div class="refsect2" title="Gio Data Stream Byte Order Constants"><a name="gio-data-stream-byte-order-constants"></a><h3>Gio Data Stream Byte Order Constants</h3><p>
-         Used to ensure proper endianness of streaming data sources across various machine architectures.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.DATA_STREAM_BYTE_ORDER_BIG_ENDIAN</code></span></p></td><td>Selects Big Endian byte order.</td></tr><tr><td><p><span class="term"><code class="literal">gio.DATA_STREAM_BYTE_ORDER_HOST_ENDIAN</code></span></p></td><td>Selects endianness based on host machine's architecture.</td></tr><tr><td><p><span class="term"><code class="literal">gio.DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN</code></span></p></td><td>Selects Little Endian byte order.</td></tr></tbody></table></div><div class="refsect2" title="Gio Data Stream Newline Type Constants"><a name="gio-data-stream-newline-type-constants"></a><h3>Gio Data Stream Newline Type Constants</h3><p>
-         Used when checking for or setting the line endings for a given file.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.DATA_STREAM_NEWLINE_TYPE_LF</code></span></p></td><td>Selects "LF" line endings, common on most modern UNIX platforms.</td></tr><tr><td><p><span class="term"><code class="literal">gio.DATA_STREAM_NEWLINE_TYPE_CR</code></span></p></td><td>Selects "CR" line endings.</td></tr><tr><td><p><span class="term"><code class="literal">gio.DATA_STREAM_NEWLINE_TYPE_CR_LF</code></span></p></td><td>Selects "CR, LF" line ending, common on Microsoft Windows.</td></tr><tr><td><p><span class="term"><code class="literal">gio.DATA_STREAM_NEWLINE_TYPE_ANY</code></span></p></td><td>Automatically try to handle any line ending type.</td></tr></tbody></table></div><div class="refsect2" title="Gio Emblem Origin Constants"><a name="gio-emblem-origin-constants"></a><h3>Gio Emblem Origin Constants</h3><p>
-         GEmblemOrigin is used to add information about the origin of the emblem to GEmblem.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.EMBLEM_ORIGIN_DEVICE</code></span></p></td><td>Embleme adds device-specific information.</td></tr><tr><td><p><span class="term"><code class="literal">gio.EMBLEM_ORIGIN_LIVEMETADATA</code></span></p></td><td>Emblem depicts live metadata, such as "readonly".</td></tr><tr><td><p><span class="term"><code class="literal">gio.EMBLEM_ORIGIN_TAG</code></span></p></td><td>Emblem comes from a user-defined tag, e.g. set by nautilus (in the future).</td></tr><tr><td><p><span class="term"><code class="literal">gio.EMBLEM_ORIGIN_UNKNOWN</code></span></p></td><td>Emblem of unknown origin.</td></tr></tbody></table></div><div class="refsect2" title="Gio Error Constants"><a name="gio-error-constants"></a><h3>Gio Error Constants</h3><p>
-        GIOError Error codes returned by GIO functions.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.ERROR_ALREADY_MOUNTED</code></span></p></td><td>File is already mounted.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_BUSY</code></span></p></td><td>File is busy.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_CANCELLED</code></span></p></td><td>Operation was cancelled. See
-               <a class="link" href="class-giocancellable.html" title="gio.Cancellable"><code class="classname">gio.Cancellable</code></a>.
-           </td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_CANT_CREATE_BACKUP</code></span></p></td><td>Backup couldn't be created.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_CLOSED</code></span></p></td><td>File was closed.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_EXISTS</code></span></p></td><td>File already exists error.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_FAILED</code></span></p></td><td>Generic error condition for when any operation fails.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_FAILED_HANDLED</code></span></p></td><td>Operation failed and a helper program has already interacted with
-           the user. Do not display any error dialog. </td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_FILENAME_TOO_LONG</code></span></p></td><td>Filename is too many characters.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_HOST_NOT_FOUND</code></span></p></td><td>Host couldn't be found (remote operations).</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_INVALID_ARGUMENT</code></span></p></td><td>Invalid argument.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_INVALID_FILENAME</code></span></p></td><td>Filename is invalid or contains invalid characters.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_IS_DIRECTORY</code></span></p></td><td>File is a directory error.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_NOT_DIRECTORY</code></span></p></td><td>File is not a directory.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_NOT_EMPTY</code></span></p></td><td>File is a directory that isn't empty.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_NOT_FOUND</code></span></p></td><td>File not found error.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_NOT_MOUNTABLE_FILE</code></span></p></td><td>File cannot be mounted.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_NOT_MOUNTED</code></span></p></td><td>File isn't mounted. </td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_NOT_REGULAR_FILE</code></span></p></td><td>File is not a regular file.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_NOT_SUPPORTED</code></span></p></td><td>Operation not supported for the current backend.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_NOT_SYMBOLIC_LINK</code></span></p></td><td>File is not a symbolic link.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_NO_SPACE</code></span></p></td><td>No space left on drive. </td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_PENDING</code></span></p></td><td>Operations are still pending.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_PERMISSION_DENIED</code></span></p></td><td>Permission denied.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_READ_ONLY</code></span></p></td><td>File is read only. </td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_TIMED_OUT</code></span></p></td><td>Operation timed out. </td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_TOO_MANY_LINKS</code></span></p></td><td>File contains too many symbolic links. </td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_TOO_MANY_OPEN_FILES</code></span></p></td><td>The current process has too many files open and can't open any
-           more. Duplicate descriptors do count toward this limit. Since 2.20</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_WOULD_BLOCK</code></span></p></td><td>Operation would block.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_WOULD_MERGE</code></span></p></td><td>Operation would merge files.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_WOULD_RECURSE</code></span></p></td><td>Operation would be recursive.</td></tr><tr><td><p><span class="term"><code class="literal">gio.ERROR_WRONG_ETAG</code></span></p></td><td>File's Entity Tag was incorrect. </td></tr></tbody></table></div><div class="refsect2" title="Gio File Attribute Constants"><a name="gio-file-attribute-constants"></a><h3>Gio File Attribute Constants</h3><p>
-         The file attributes.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_TYPE</code></span></p></td><td>
-                "standard::type" A key in the "standard" namespace for storing file types. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32. The value for this key should contain a
-                <a class="xref" href="gio-constants.html#gio-file-type-constants" title="Gio File Type Constants">Gio File Type Constants</a>
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_IS_HIDDEN</code></span></p></td><td>
-                "standard::is-hidden" A key in the "standard" namespace for checking if a file is hidden. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_IS_BACKUP</code></span></p></td><td>
-                "standard::is-backup" A key in the "standard" namespace for checking if a file is a backup file. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_IS_SYMLINK</code></span></p></td><td>
-                "standard::is-symlink" A key in the "standard" namespace for checking if the file is a symlink.
-                Typically the actual type is something else, if we followed the symlink to get the type. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL</code></span></p></td><td>
-                "standard::is-virtual" A key in the "standard" namespace for checking if a file is virtual. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_NAME</code></span></p></td><td>
-                "standard::name" A key in the "standard" namespace for getting the name of the file.
-                The name is the on-disk filename which may not be in any known encoding,
-                and can thus not be generally displayed as is. Use
-                gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME if you need to display the name in a user
-                interface. Corresponding GFileAttributeType is gio.FILE_ATTRIBUTE_TYPE_BYTE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME</code></span></p></td><td>
-                "standard::display-name" A key in the "standard" namespace for getting the display
-                name of the file. A display name is guaranteed to be in UTF8 and can thus be displayed
-                in the UI. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_EDIT_NAME</code></span></p></td><td>
-                "standard::edit-name" A key in the "standard" namespace for edit name of the file.
-                An edit name is similar to the display name, but it is meant to be used when you want
-                to rename the file in the UI. The display name might contain information you don't
-                want in the new filename (such as "(invalid unicode)" if the filename was in an
-                invalid encoding). Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_COPY_NAME</code></span></p></td><td>
-                "standard::copy-name" A key in the "standard" namespace for getting the copy
-                name of the file. The copy name is an optional version of the name. If available
-                it's always in UTF8, and corresponds directly to the original filename (only transcoded
-                to UTF8). This is useful if you want to copy the file to another filesystem that might
-                have a different encoding. If the filename is not a valid string in the encoding selected
-                for the filesystem it is in then the copy name will not be set. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_ICON</code></span></p></td><td>
-                "standard::icon" A key in the "standard" namespace for getting the icon for the file. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_OBJECT. The value for this key should contain a
-                <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE</code></span></p></td><td>
-                "standard::content-type" A key in the "standard" namespace for getting the content type of the file. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING. The value for this key should contain a valid content type.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE</code></span></p></td><td>
-                "standard::fast-content-type" A key in the "standard" namespace for getting the fast
-                content type. The fast content type isn't as reliable as the regular one, as it
-                only uses the filename to guess it, but it is faster to calculate than the regular
-                content type. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_SIZE</code></span></p></td><td>
-                "standard::size" A key in the "standard" namespace for getting the file's size (in bytes). Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT64.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET</code></span></p></td><td>
-                "standard::symlink-target" A key in the "standard" namespace for getting the target URI
-                for the file, in the case of gio.FILE_TYPE_SHORTCUT or gio.FILE_TYPE_MOUNTABLE files. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_SORT_ORDER</code></span></p></td><td>
-                "standard::sort-order" A key in the "standard" namespace for setting the sort order of a file. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_INT32. An example use would be in file managers, which would use this
-                key to set the order files are displayed. Files with smaller sort order should be sorted first,
-                and files without sort order as if sort order was zero.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_ETAG_VALUE</code></span></p></td><td>
-                "etag::value" A key in the "etag" namespace for getting the value of the file's entity tag. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_ID_FILE</code></span></p></td><td>
-                "id::file" A key in the "id" namespace for getting a file identifier. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING. An example use would be during listing files,
-                to avoid recursive directory scanning.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_ID_FILESYSTEM</code></span></p></td><td>
-                "id::filesystem" A key in the "id" namespace for getting the file system identifier. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING. An example use would be during drag and
-                drop to see if the source and target are on the same filesystem (default to move) or not (default to copy).
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_ACCESS_CAN_READ</code></span></p></td><td>
-                "access::can-read" A key in the "access" namespace for getting read privileges. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <code class="literal">True</code>
-                if the user is able to read the file.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_ACCESS_CAN_WRITE</code></span></p></td><td>
-                "access::can-write" A key in the "access" namespace for getting write privileges.Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <code class="literal">True</code>
-                if the user is able to write to the file.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE</code></span></p></td><td>
-                "access::can-execute" A key in the "access" namespace for getting execution privileges. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <code class="literal">True</code>
-                if the user is able to execute the file.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_ACCESS_CAN_DELETE</code></span></p></td><td>
-                "access::can-delete" A key in the "access" namespace for checking deletion privileges. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <code class="literal">True</code>
-                if the user is able to delete the file.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_ACCESS_CAN_TRASH</code></span></p></td><td>
-                "access::can-trash" A key in the "access" namespace for checking trashing privileges. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <code class="literal">True</code>
-                if the user is able to move the file to the trash.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_ACCESS_CAN_RENAME</code></span></p></td><td>
-                "access::can-rename" A key in the "access" namespace for checking renaming privileges. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <code class="literal">True</code>
-                if the user is able to rename the file.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT</code></span></p></td><td>
-                "mountable::can-mount" A key in the "mountable" namespace for checking if
-                a file (of type G_FILE_TYPE_MOUNTABLE) is mountable. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT</code></span></p></td><td>
-                "mountable::can-unmount" A key in the "mountable" namespace for checking if a file
-                (of type G_FILE_TYPE_MOUNTABLE) is unmountable. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT</code></span></p></td><td>
-                "mountable::can-eject" A key in the "mountable" namespace for checking if a file
-                (of type G_FILE_TYPE_MOUNTABLE) can be ejected. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE</code></span></p></td><td>
-                "mountable::unix-device" A key in the "mountable" namespace for getting the unix device. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI</code></span></p></td><td>
-                "mountable::hal-udi" A key in the "mountable" namespace for getting the
-                HAL UDI for the mountable file. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TIME_MODIFIED</code></span></p></td><td>
-                "time::modified" A key in the "time" namespace for getting the time the file was last modified. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the file was modified.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TIME_MODIFIED_USEC</code></span></p></td><td>
-                "time::modified-usec" A key in the "time" namespace for getting the miliseconds
-                of the time the file was last modified. This should be used in conjunction
-                with G_FILE_ATTRIBUTE_TIME_MODIFIED. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TIME_ACCESS</code></span></p></td><td>
-                "time::access" A key in the "time" namespace for getting the time the file was last accessed. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the file was last accessed.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TIME_ACCESS_USEC</code></span></p></td><td>
-                "time::access-usec" A key in the "time" namespace for getting the microseconds of
-                the time the file was last accessed. This should be used in conjunction
-                with G_FILE_ATTRIBUTE_TIME_ACCESS. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TIME_CHANGED</code></span></p></td><td>
-                "time::changed" A key in the "time" namespace for getting the time the
-                file was last changed. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the file was last changed.
-                This corresponds to the traditional UNIX ctime.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TIME_CHANGED_USEC</code></span></p></td><td>
-                "time::changed-usec" A key in the "time" namespace for getting the microseconds
-                of the time the file was last changed. This should be used in conjunction
-                with G_FILE_ATTRIBUTE_TIME_CHANGED. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TIME_CREATED</code></span></p></td><td>
-                "time::created" A key in the "time" namespace for getting the time the file was created. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the file was created.
-                This corresponds to the NTFS ctime.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TIME_CREATED_USEC</code></span></p></td><td>
-                "time::created-usec" A key in the "time" namespace for getting the microseconds of the time the
-                file was created. This should be used in conjunction with G_FILE_ATTRIBUTE_TIME_CREATED. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_UNIX_DEVICE</code></span></p></td><td>
-                "unix::device" A key in the "unix" namespace for getting the device id of the device the file
-                is located on (see stat() documentation). This attribute is only available
-                for UNIX file systems. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_UNIX_INODE</code></span></p></td><td>
-                "unix::inode" A key in the "unix" namespace for getting the inode of the file. This attribute is only
-                available for UNIX file systems. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_UINT64.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_UNIX_MODE</code></span></p></td><td>
-                "unix::mode" A key in the "unix" namespace for getting the mode of the file (e.g.
-                whether the file is a regular file, symlink, etc). See lstat() documentation.
-                This attribute is only available for UNIX file systems. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_UNIX_NLINK</code></span></p></td><td>
-                "unix::nlink" A key in the "unix" namespace for getting the number of hard links
-                for a file. See lstat() documentation. This attribute is only available for UNIX
-                file systems. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_UNIX_UID</code></span></p></td><td>
-                "unix::uid" A key in the "unix" namespace for getting the user ID for the file. This attribute
-                is only available for UNIX file systems. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_UNIX_GID</code></span></p></td><td>
-                "unix::gid" A key in the "unix" namespace for getting the group ID for the file.
-                This attribute is only available for UNIX file systems. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_UNIX_RDEV</code></span></p></td><td>
-                "unix::rdev" A key in the "unix" namespace for getting the device ID for the file
-                (if it is a special file). See lstat() documentation. This attribute is only available
-                for UNIX file systems. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_UNIX_BLOCK_SIZE</code></span></p></td><td>
-                "unix::block-size" A key in the "unix" namespace for getting the block size for
-                the file system. This attribute is only available for UNIX file systems. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_UNIX_BLOCKS</code></span></p></td><td>
-                "unix::blocks" A key in the "unix" namespace for getting the number of blocks allocated
-                for the file. This attribute is only available for UNIX file systems. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_UINT64.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT</code></span></p></td><td>
-                "unix::is-mountpoint" A key in the "unix" namespace for checking if the file represents
-                a UNIX mount point. This attribute is <code class="literal">True</code> if the file is a UNIX mount point.
-                This attribute is only available for UNIX file systems. Corresponding
-                GFileAttributeType
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_DOS_IS_ARCHIVE</code></span></p></td><td>
-                "dos::is-archive" A key in the "dos" namespace for checking if the file's archive
-                flag is set. This attribute is <code class="literal">True</code> if the archive flag is set.
-                This attribute is only available for DOS file systems. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_DOS_IS_SYSTEM</code></span></p></td><td>
-                "dos::is-system" A key in the "dos" namespace for checking if the file's backup
-                flag is set. This attribute is <code class="literal">True</code> if the backup flag is set.
-                This attribute is only available for DOS file systems. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a> is
-                G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_OWNER_USER</code></span></p></td><td>
-                "owner::user" A key in the "owner" namespace for getting the user name
-                of the file's owner. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_OWNER_USER_REAL</code></span></p></td><td>
-                "owner::user-real" A key in the "owner" namespace for getting the real name
-                of the user that owns the file. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a> is
-                G_FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_OWNER_GROUP</code></span></p></td><td>
-                "owner::group" A key in the "owner" namespace for getting the file owner's
-                group. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_THUMBNAIL_PATH</code></span></p></td><td>
-                "thumbnail::path" A key in the "thumbnail" namespace for getting the path
-                to the thumbnail image. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_THUMBNAILING_FAILED</code></span></p></td><td>
-                "thumbnail::failed" A key in the "thumbnail" namespace for checking if thumbnailing failed. This attribute
-                is <code class="literal">True</code> if thumbnailing failed. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a> is
-                G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_PREVIEW_ICON</code></span></p></td><td>
-                "preview::icon" A key in the "preview" namespace for getting a
-                <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-                that can be used to get preview of the file. For example, it
-                may be a low resolution thumbnail without metadata. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a> is
-                G_FILE_ATTRIBUTE_TYPE_OBJECT. The value for this key should contain a GIcon.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_FILESYSTEM_SIZE</code></span></p></td><td>
-                "filesystem::size" A key in the "filesystem" namespace for getting the total
-                size (in bytes) of the file system, used in
-                <code class="methodname"><a class="link" href="class-giofile.html#method-giofile--query-filesystem-info" title="gio.File.query_filesystem_info">query_filesystem_info</a></code>().
-                Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_UINT64.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_FILESYSTEM_FREE</code></span></p></td><td>
-                "filesystem::free" A key in the "filesystem" namespace for getting the number of bytes of free space left
-                on the file system. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_UINT64.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_FILESYSTEM_TYPE</code></span></p></td><td>
-                "filesystem::type" A key in the "filesystem" namespace for getting the file system's type. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_FILESYSTEM_READONLY</code></span></p></td><td>
-                "filesystem::readonly" A key in the "filesystem" namespace for checking if the
-                file system is read only. Is set to <code class="literal">True</code> if the file system
-                is read only. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_GVFS_BACKEND</code></span></p></td><td>
-                "gvfs::backend" A key in the "gvfs" namespace that gets the name of the current GVFS backend in use. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_SELINUX_CONTEXT</code></span></p></td><td>
-                "selinux::context" A key in the "selinux" namespace for getting the file's SELinux context. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-                Note that this attribute is only available if GLib has been built with SELinux support.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TRASH_ITEM_COUNT</code></span></p></td><td>
-                "trash::item-count" A key in the "trash" namespace. When requested against "trash:///" returns the number
-                of (toplevel) items in the trash folder. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_UINT32.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW</code></span></p></td><td>
-                "filesystem::use-preview" A key in the "filesystem" namespace for hinting a file manager
-                application whether it should preview (e.g. thumbnail) files on the file system.
-                The value for this key contain a GFilesystemPreviewType.
-            </td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_STANDARD_DESCRIPTION</code></span></p></td><td>
-                "standard::description" A key in the "standard" namespace for getting the description
-                of the file. The description is a utf8 string that describes the file, generally containing
-                the filename, but can also contain furter information. Example descriptions could be
-                "filename (on hostname)" for a remote file or "filename (in trash)" for a
-                file in the trash. This is useful for instance as the window title when
-                displaying a directory or for a bookmarks menu. Corresponding
-                <a class="xref" href="gio-constants.html#gio-file-attribute-type-constants" title="Gio File Attribute Type Constants">Gio File Attribute Type Constants</a>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </td></tr></tbody></table></div><div class="refsect2" title="Gio File Attribute Type Constants"><a name="gio-file-attribute-type-constants"></a><h3>Gio File Attribute Type Constants</h3><p>
-         The data types for file attributes.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TYPE_BOOLEAN</code></span></p></td><td>a boolean value.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TYPE_BYTE_STRING</code></span></p></td><td>a zero terminated string of non-zero bytes.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TYPE_INT32</code></span></p></td><td>a signed 4-byte/32-bit integer.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TYPE_INT64</code></span></p></td><td>a signed 8-byte/64-bit integer.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TYPE_INVALID</code></span></p></td><td>indicates an invalid or uninitalized type.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TYPE_OBJECT</code></span></p></td><td>a <a class="link" href="class-gobject.html" title="gobject.GObject">gobject.GObject</a>.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TYPE_STRING</code></span></p></td><td>a null terminated UTF8 string.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TYPE_UINT32</code></span></p></td><td>an unsigned 4-byte/32-bit integer.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_TYPE_UINT64</code></span></p></td><td>an unsigned 8-byte/64-bit integer.</td></tr></tbody></table></div><div class="refsect2" title="Gio File Attribute Flags Constants"><a name="gio-file-attribute-flags-constants"></a><h3>Gio File Attribute Flags Constants</h3><p>
-         Flags specifying the behaviour of an attribute.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_INFO_NONE</code></span></p></td><td>no flags set.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_INFO_COPY_WITH_FILE</code></span></p></td><td>copy the attribute values when the file is copied.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED</code></span></p></td><td>copy the attribute values when the file is moved.</td></tr></tbody></table></div><div class="refsect2" title="Gio File Create Flags Constants"><a name="gio-file-create-flags-constants"></a><h3>Gio File Create Flags Constants</h3><p>
-         Flags used when an operation may create a file.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.FILE_CREATE_NONE</code></span></p></td><td>No flags set.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_CREATE_PRIVATE</code></span></p></td><td>Create a file that can only be accessed by the current user.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_CREATE_REPLACE_DESTINATION</code></span></p></td><td>
-               Replace the destination as if it didn't exist before. Don't try
-               to keep any old permissions, replace instead of following links. This is
-               generally useful if you're doing a "copy over" rather than a "save new version of"
-               replace operation. You can think of it as "unlink destination" before writing
-               to it, although the implementation may not be exactly like that.
-           </td></tr></tbody></table></div><div class="refsect2" title="Gio File Copy Flags Constants"><a name="gio-file-copy-flags-constants"></a><h3>Gio File Copy Flags Constants</h3><p>
-         Flags used when copying or moving files.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.FILE_COPY_NONE</code></span></p></td><td>No flags set.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_COPY_OVERWRITE</code></span></p></td><td>Overwrite any existing files.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_COPY_BACKUP</code></span></p></td><td>Make a backup of any existing files.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_COPY_NOFOLLOW_SYMLINKS</code></span></p></td><td>Don't follow symlinks.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_COPY_ALL_METADATA</code></span></p></td><td>Copy all file metadata instead of just default set used for copy
-           (see <a class="link" href="class-giofileinfo.html" title="gio.FileInfo"><code class="classname">gio.FileInfo</code></a>).</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_COPY_NO_FALLBACK_FOR_MOVE</code></span></p></td><td>Don't use copy and delete fallback if native move not supported.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_COPY_TARGET_DEFAULT_PERMS</code></span></p></td><td>Leaves target file with default perms, instead of setting the source file perms.</td></tr></tbody></table></div><div class="refsect2" title="Gio File Monitor Flags Constants"><a name="gio-file-monitor-flags-constants"></a><h3>Gio File Monitor Flags Constants</h3><p>
-            Flags used to set what a
-            <a class="link" href="class-giofilemonitor.html" title="gio.FileMonitor"><code class="classname">gio.FileMonitor</code></a>
-            will watch for.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.FILE_MONITOR_NONE</code></span></p></td><td>No flags set.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_MONITOR_WATCH_MOUNTS</code></span></p></td><td>Watch for mount events.</td></tr></tbody></table></div><div class="refsect2" title="Gio File Query Info Flags Constants"><a name="gio-file-query-info-flags-constants"></a><h3>Gio File Query Info Flags Constants</h3><p>
-         Flags used when querying a
-         <a class="link" href="class-giofile.html" title="gio.File"><code class="classname">gio.FileInfo</code></a>.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.FILE_QUERY_INFO_NONE</code></span></p></td><td>No flags set.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_QUERY_INFO_NOFOLLOW_SYMLINKS</code></span></p></td><td>Don't follow symlinks.</td></tr></tbody></table></div><div class="refsect2" title="Gio File Type Constants"><a name="gio-file-type-constants"></a><h3>Gio File Type Constants</h3><p>
-         Indicates the file's on-disk type.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.FILE_TYPE_DIRECTORY</code></span></p></td><td>File handle represents a directory.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_TYPE_MOUNTABLE</code></span></p></td><td>File is a mountable location.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_TYPE_REGULAR</code></span></p></td><td>File handle represents a regular file.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_TYPE_SHORTCUT</code></span></p></td><td>File is a shortcut (Windows systems).</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_TYPE_SPECIAL</code></span></p></td><td>File is a "special" file, such as a socket, fifo, block device, or character device.</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_TYPE_SYMBOLIC_LINK</code></span></p></td><td>File handle represents a symbolic link (Unix systems).</td></tr><tr><td><p><span class="term"><code class="literal">gio.FILE_TYPE_UNKNOWN</code></span></p></td><td>File's type is unknown.</td></tr></tbody></table></div><div class="refsect2" title="Gio Mount Mount Flags Constants"><a name="gio-mount-mount-flags-constants"></a><h3>Gio Mount Mount Flags Constants</h3><p>
-         Flags used when mounting a mount.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.MOUNT_MOUNT_NONE</code></span></p></td><td>No flags set.</td></tr></tbody></table></div><div class="refsect2" title="Gio Mount Unmount Flags Constants"><a name="gio-mount-unmount-flags-constants"></a><h3>Gio Mount Unmount Flags Constants</h3><p>
-         Flags used when unmounting a mount.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.MOUNT_UNMOUNT_NONE</code></span></p></td><td>No flags set.</td></tr><tr><td><p><span class="term"><code class="literal">gio.MOUNT_UNMOUNT_FORCE</code></span></p></td><td>Unmount even if there are outstanding file operations on the mount.</td></tr></tbody></table></div><div class="refsect2" title="Gio Mount Operation Result Constants"><a name="gio-mount-operation-result-constants"></a><h3>Gio Mount Operation Result Constants</h3><p>
-         returned as a result when a request for information is send by the mounting operation.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.MOUNT_OPERATION_HANDLED</code></span></p></td><td>The request was fulfilled and the user specified data is now available.</td></tr><tr><td><p><span class="term"><code class="literal">gio.MOUNT_OPERATION_ABORTED</code></span></p></td><td>The user requested the mount operation to be aborted.</td></tr><tr><td><p><span class="term"><code class="literal">gio.MOUNT_OPERATION_UNHANDLED</code></span></p></td><td>The request was unhandled (i.e. not implemented).</td></tr></tbody></table></div><div class="refsect2" title="Gio Password Save Constants"><a name="gio-password-save-constants"></a><h3>Gio Password Save Constants</h3><p>
-         is used to indicate the lifespan of a saved password.
-      </p><p>
-         Gvfs stores passwords in the Gnome keyring when this flag allows it to,
-         and later retrieves it again from there.
-      </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gio.PASSWORD_SAVE_FOR_SESSION</code></span></p></td><td>save a password for the session.</td></tr><tr><td><p><span class="term"><code class="literal">gio.PASSWORD_SAVE_NEVER</code></span></p></td><td>never save a password.</td></tr><tr><td><p><span class="term"><code class="literal">gio.PASSWORD_SAVE_PERMANENTLY</code></span></p></td><td>save a password permanently.</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="gio-functions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="giounix-class-reference.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio Functions </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> PyGio Unix Class Reference</td></tr></table></div></body></html>
diff --git a/docs/html/gio-functions.html b/docs/html/gio-functions.html
deleted file mode 100644 (file)
index 77a4ff7..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gio Functions</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gio-class-reference.html" title="PyGio Class Reference"><link rel="prev" href="class-giovolumemonitor.html" title="gio.VolumeMonitor"><link rel="next" href="gio-constants.html" title="gio Constants"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gio Functions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-giovolumemonitor.html">Prev</a> </td><th width="60%" align="center">PyGio Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="gio-constants.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gio Functions"><a name="gio-functions"></a><div class="titlepage"></div><div class="refnamediv"><h2>gio Functions</h2><p>gio Functions</p></div><div class="refsect1" title="Synopsis"><a name="id534717"></a><h2>Synopsis</h2><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gio-functions.html#function-gio--content-type-can-be-executable" title="gio.content_type_can_be_executable">gio.content_type_can_be_executable</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gio-functions.html#function-gio--content-type-equals" title="gio.content_type_equals">gio.content_type_equals</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type1</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type2</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gio-functions.html#function-gio--content-type-from-mime-type" title="gio.content_type_from_mime_type">gio.content_type_from_mime_type</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>mime_type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gio-functions.html#function-gio--content-type-get-description" title="gio.content_type_get_description">gio.content_type_get_description</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gio-functions.html#function-gio--content-type-get-icon" title="gio.content_type_get_icon">gio.content_type_get_icon</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gio-functions.html#function-gio--content-type-get-mime-type" title="gio.content_type_get_mime_type">gio.content_type_get_mime_type</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gio-functions.html#function-gio--content-type-guess" title="gio.content_type_guess">gio.content_type_guess</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>filename</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>want_uncertain</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gio-functions.html#function-gio--content-type-is-a" title="gio.content_type_is_a">gio.content_type_is_a</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>supertype</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gio-functions.html#function-gio--content-type-is-unknown" title="gio.content_type_is_unknown">gio.content_type_is_unknown</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gio-functions.html#function-gio--content-types-get-registered" title="gio.content_types_get_registered">gio.content_types_get_registered</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gio-functions.html#function-gio--io-error-from-errno" title="gio.io_error_from_errno">gio.io_error_from_errno</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>err_no</code></strong></span></span>)</code></pre></div><div class="refsect1" title="Description"><a name="id535062"></a><h2>Description</h2><p>
-           These functions are part of the <code class="literal">PyGObject</code> gio module
-          but are not directly associated with a specific class
-        </p></div><div class="refsect1" title="Functions"><a name="id535080"></a><h2>Functions</h2><div class="refsect2" title="gio.content_type_can_be_executable"><a name="function-gio--content-type-can-be-executable"></a><h3>gio.content_type_can_be_executable</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">content_type_can_be_executable</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a content type string.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the file type corresponds
-                   to a type that can be executable, <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">content_type_can_be_executable</code>() function checks
-               if a content type can be executable. Note that for instance things like text files
-               can be executables (i.e. scripts and batch files).
-            </p></div><div class="refsect2" title="gio.content_type_equals"><a name="function-gio--content-type-equals"></a><h3>gio.content_type_equals</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">content_type_equals</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type1</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type2</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type1</code></em> :</span></p></td><td>a content type string. 
-                   </td></tr><tr><td><p><span class="term"><em class="parameter"><code>type2</code></em> :</span></p></td><td>a content type string. 
-                   </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the two strings are
-                   identical or equivalent, <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">content_type_equals</code>() function compares
-               two content types for equality.
-            </p></div><div class="refsect2" title="gio.content_type_from_mime_type"><a name="function-gio--content-type-from-mime-type"></a><h3>gio.content_type_from_mime_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">content_type_from_mime_type</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>mime_type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>mime_type</code></em> :</span></p></td><td>a mime type string.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>The content type or <code class="literal">None</code> when does not know. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">content_type_from_mime_type</code>() function tries
-               to find a content type based on the mime type name.
-            </p></div><div class="refsect2" title="gio.content_type_get_description"><a name="function-gio--content-type-get-description"></a><h3>gio.content_type_get_description</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">content_type_get_description</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a content type string.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a short description of the content type type. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">content_type_get_description</code>() function
-               gets the human readable description of the content type.
-            </p></div><div class="refsect2" title="gio.content_type_get_icon"><a name="function-gio--content-type-get-icon"></a><h3>gio.content_type_get_icon</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">content_type_get_icon</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a content type string.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>A <a class="link" href="class-gioicon.html" title="gio.Icon"><code class="classname">gio.Icon</code></a>
-                   corresponding to the content type. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">content_type_get_icon</code>() function
-               gets the icon for a content type.
-            </p></div><div class="refsect2" title="gio.content_type_get_mime_type"><a name="function-gio--content-type-get-mime-type"></a><h3>gio.content_type_get_mime_type</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">content_type_get_mime_type</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a content type string.
-                    </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the registered mime-type for the given type,
-                   or <code class="literal">None</code> if unknown. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">content_type_get_mime_type</code>() function
-               gets the mime-type for the content type. If one is registered
-            </p></div><div class="refsect2" title="gio.content_type_guess"><a name="function-gio--content-type-guess"></a><h3>gio.content_type_guess</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">content_type_guess</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>filename</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>want_uncertain</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>filename</code></em> :</span></p></td><td>a string, or <code class="literal">None</code>. 
-                   </td></tr><tr><td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td><td>a stream of data, or <code class="literal">None</code>. 
-                   </td></tr><tr><td><p><span class="term"><em class="parameter"><code>want_uncertain</code></em> :</span></p></td><td>a flag indicating the certainty of the result.
-                   </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a string indicating a guessed content type for the given data.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">content_type_guess</code>() function guesses
-               the content type based on example data. If the function is uncertain,
-               result_uncertain will be set to <code class="literal">True</code>. Either filename
-               or data may be <code class="literal">None</code>, in which case the guess will be
-               based solely on the other argument.
-            </p></div><div class="refsect2" title="gio.content_type_is_a"><a name="function-gio--content-type-is-a"></a><h3>gio.content_type_is_a</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">content_type_is_a</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>supertype</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a content type string. 
-                   </td></tr><tr><td><p><span class="term"><em class="parameter"><code>supertype</code></em> :</span></p></td><td>a string.
-                   </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if type is a kind of
-                   supertype, <code class="literal">False</code> otherwise. 
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">content_type_is_a</code>() function determines
-               if type is a subset of supertype.
-            </p></div><div class="refsect2" title="gio.content_type_is_unknown"><a name="function-gio--content-type-is-unknown"></a><h3>gio.content_type_is_unknown</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">content_type_is_unknown</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a content type string. 
-                   </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the type is the unknown type.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">content_type_is_unknown</code>() function checks if
-               the content type is the generic "unknown" type. On unix this is the
-               "application/octet-stream" mimetype, while on win32 it is "*".
-            </p></div><div class="refsect2" title="gio.content_types_get_registered"><a name="function-gio--content-types-get-registered"></a><h3>gio.content_types_get_registered</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">content_types_get_registered</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of the registered content types.
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">content_types_get_registered</code>() function
-               gets a list of strings containing all the registered content types
-               known to the system.
-            </p></div><div class="refsect2" title="gio.io_error_from_errno"><a name="function-gio--io-error-from-errno"></a><h3>gio.io_error_from_errno</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">io_error_from_errno</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>err_no</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>err_no</code></em> :</span></p></td><td>Error number.
-                   </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a
-                   <a class="xref" href="gio-constants.html#gio-error-constants" title="Gio Error Constants">Gio Error Constants</a>
-                    </td></tr></tbody></table><p>
-                The <code class="methodname">io_error_from_errno</code>() function converts
-               error codes into GIO error codes.
-            </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-giovolumemonitor.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gio-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="gio-constants.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio.VolumeMonitor </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio Constants</td></tr></table></div></body></html>
diff --git a/docs/html/giounix-class-reference.html b/docs/html/giounix-class-reference.html
deleted file mode 100644 (file)
index e91aa73..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>PyGio Unix Class Reference</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="index.html" title="PyGObject Reference Manual"><link rel="prev" href="gio-constants.html" title="gio Constants"><link rel="next" href="class-giounixinputstream.html" title="gio.unix.InputStream"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">PyGio Unix Class Reference</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="gio-constants.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="class-giounixinputstream.html">Next</a></td></tr></table><hr></div><div class="chapter" title="PyGio Unix Class Reference"><div class="titlepage"><div><div><h2 class="title"><a name="giounix-class-reference"></a>PyGio Unix Class Reference</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="refentrytitle"><a href="class-giounixinputstream.html">gio.unix.InputStream</a></span><span class="refpurpose"> â€” Streaming input operations for UNIX file descriptors.</span></dt><dt><span class="refentrytitle"><a href="class-giounixoutputstream.html">gio.unix.OutputStream</a></span><span class="refpurpose"> â€” Streaming output operations for UNIX file descriptors.</span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="gio-constants.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="class-giounixinputstream.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gio Constants </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gio.unix.InputStream</td></tr></table></div></body></html>
diff --git a/docs/html/glib-class-reference.html b/docs/html/glib-class-reference.html
deleted file mode 100644 (file)
index fa78a88..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>PyGlibClass Reference</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="index.html" title="PyGObject Reference Manual"><link rel="prev" href="pygobject-introduction.html" title="Introduction"><link rel="next" href="class-glibmaincontext.html" title="glib.MainContext"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">PyGlibClass Reference</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pygobject-introduction.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="class-glibmaincontext.html">Next</a></td></tr></table><hr></div><div class="chapter" title="PyGlibClass Reference"><div class="titlepage"><div><div><h2 class="title"><a name="glib-class-reference"></a>PyGlibClass Reference</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="refentrytitle"><a href="class-glibmaincontext.html">glib.MainContext</a></span><span class="refpurpose"> â€” an object representing a set of event sources to be handled
-in a <a class="link" href="class-glibmainloop.html" title="glib.MainLoop"><code class="classname">glib.MainLoop</code></a>.</span></dt><dt><span class="refentrytitle"><a href="class-glibmainloop.html">glib.MainLoop</a></span><span class="refpurpose"> â€” an object representing the main event loop of a PyGTK
-    application.</span></dt><dt><span class="refentrytitle"><a href="glib-functions.html">glib Functions</a></span><span class="refpurpose"> â€” miscellaneous functions</span></dt><dt><span class="refentrytitle"><a href="glib-constants.html">glib Constants</a></span><span class="refpurpose"> â€” the built-in constants of the glib module</span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pygobject-introduction.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="class-glibmaincontext.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Introduction </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> glib.MainContext</td></tr></table></div></body></html>
diff --git a/docs/html/glib-constants.html b/docs/html/glib-constants.html
deleted file mode 100644 (file)
index 4e56956..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>glib Constants</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="glib-class-reference.html" title="PyGlibClass Reference"><link rel="prev" href="glib-functions.html" title="glib Functions"><link rel="next" href="gobject-class-reference.html" title="PyGObject Class Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">glib Constants</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="glib-functions.html">Prev</a> </td><th width="60%" align="center">PyGlibClass Reference</th><td width="20%" align="right"> <a accesskey="n" href="gobject-class-reference.html">Next</a></td></tr></table><hr></div><div class="refentry" title="glib Constants"><a name="glib-constants"></a><div class="titlepage"></div><div class="refnamediv"><h2>glib Constants</h2><p>glib Constants â€” the built-in constants of the glib module</p></div><div class="refsect1" title="Synopsis"><a name="id400400"></a><h2>Synopsis</h2><pre class="programlisting">
-<a class="xref" href="glib-constants.html#glib-io-condition-constants" title="Glib IO Condition Constants">Glib IO Condition Constants</a>
-<a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a>
-<a class="xref" href="glib-constants.html#glib-spawn-flag-constants" title="Glib Spawn Flag Constants">Glib Spawn Flag Constants</a>
-<a class="xref" href="glib-constants.html#glib-user-directory-constants" title="Glib User Directory Constants">Glib User Directory Constants</a>
-<a class="xref" href="glib-constants.html#glib-version-constants" title="Glib Version Constants">Glib Version Constants</a>
-</pre></div><div class="refsect1" title="Description"><a name="glib-constants-description"></a><h2>Description</h2><div class="refsect2" title="Glib IO Condition Constants"><a name="glib-io-condition-constants"></a><h3>Glib IO Condition Constants</h3><p>The IO Condition constants are a set of bit-flags that specify a
-condition to watch for on an event source.</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">glib.IO_IN</code></span></p></td><td>There is data to read</td></tr><tr><td><p><span class="term"><code class="literal">glib.IO_OUT</code></span></p></td><td>Data can be written (without blocking).</td></tr><tr><td><p><span class="term"><code class="literal">glib.IO_PRI</code></span></p></td><td>There is urgent data to read.</td></tr><tr><td><p><span class="term"><code class="literal">glib.IO_ERR</code></span></p></td><td>Error condition.</td></tr><tr><td><p><span class="term"><code class="literal">glib.IO_HUP</code></span></p></td><td>Hung up (the connection has been broken, usually for
-           pipes and sockets).</td></tr><tr><td><p><span class="term"><code class="literal">glib.IO_NVAL</code></span></p></td><td>Invalid request. The file descriptor is not
-           open.</td></tr></tbody></table></div><div class="refsect2" title="Glib Priority Constants"><a name="glib-priority-constants"></a><h3>Glib Priority Constants</h3><p>The Priority constants specify </p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">glib.PRIORITY_HIGH</code></span></p></td><td>Use this for high priority event sources.</td></tr><tr><td><p><span class="term"><code class="literal">glib.PRIORITY_DEFAULT</code></span></p></td><td>Use this for default priority event sources.  This
-           priority is used when adding timeout functions with the <a class="link" href="glib-functions.html#function-glib--timeout-add" title="glib.timeout_add"><code class="function">glib.timeout_add</code>()</a>
-           function. This priority is also used for events from the X
-           server.</td></tr><tr><td><p><span class="term"><code class="literal">glib.PRIORITY_HIGH_IDLE</code></span></p></td><td>Use this for high priority idle functions. For example,
-           glib.PRIORITY_HIGH_IDLE + 10 is used for resizing operations;
-           and, glib.PRIORITY_HIGH_IDLE + 20, for redrawing
-           operations. (This is done to ensure that any pending resizes are
-           processed before any pending redraws, so that widgets are not
-           redrawn twice unnecessarily.)</td></tr><tr><td><p><span class="term"><code class="literal">glib.PRIORITY_DEFAULT_IDLE</code></span></p></td><td>Use this for default priority idle functions. This
-           priority is used when adding idle functions with the <a class="link" href="glib-functions.html#function-glib--idle-add" title="glib.idle_add"><code class="function">glib.idle_add</code>()</a>
-           function.</td></tr><tr><td><p><span class="term"><code class="literal">glib.PRIORITY_LOW</code></span></p></td><td>Use this for very low priority background
-           tasks.</td></tr></tbody></table></div><div class="refsect2" title="Glib Spawn Flag Constants"><a name="glib-spawn-flag-constants"></a><h3>Glib Spawn Flag Constants</h3><p>The Spawn Flag constants are a set of bit-flags that can be
-passed to the <a class="link" href="glib-functions.html#function-glib--spawn-async" title="glib.spawn_async"><code class="function">glib.spawn_async</code>()</a>
-function.</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">glib.SPAWN_LEAVE_DESCRIPTORS_OPEN</code></span></p></td><td>the parent's open file descriptors will be inherited by
-the child; otherwise all descriptors except stdin/stdout/stderr will be
-closed before calling <code class="function">exec</code>() in the child.</td></tr><tr><td><p><span class="term"><code class="literal">glib.SPAWN_DO_NOT_REAP_CHILD</code></span></p></td><td>the child will not be automatically reaped; you must
-call <code class="function">waitpid</code>() or handle <code class="literal">SIGCHLD</code>
-yourself, or the child will become a zombie.</td></tr><tr><td><p><span class="term"><code class="literal">glib.SPAWN_SEARCH_PATH</code></span></p></td><td><em class="parameter"><code>argv</code></em>[0] need not be an absolute
-path, it will be looked for in the user's <code class="envar">PATH</code>.</td></tr><tr><td><p><span class="term"><code class="literal">glib.SPAWN_STDOUT_TO_DEV_NULL</code></span></p></td><td>the child's standard output will be discarded, instead
-of going to the same location as the parent's standard output.</td></tr><tr><td><p><span class="term"><code class="literal">glib.SPAWN_STDERR_TO_DEV_NULL</code></span></p></td><td>the child's standard error will be discarded.</td></tr><tr><td><p><span class="term"><code class="literal">glib.SPAWN_CHILD_INHERITS_STDIN</code></span></p></td><td>the child will inherit the parent's standard input (by
-default, the child's standard input is attached to /dev/null).</td></tr><tr><td><p><span class="term"><code class="literal">glib.SPAWN_FILE_AND_ARGV_ZERO</code></span></p></td><td>the first element of <em class="parameter"><code>argv</code></em> is the
-file to execute, while the remaining elements are the actual argument vector
-to pass to the file. Normally <a class="link" href="glib-functions.html#function-glib--spawn-async" title="glib.spawn_async"><code class="function">glib.spawn_async</code>()</a>
-uses <em class="parameter"><code>argv</code></em>[0] as the file to execute, and passes all
-of <em class="parameter"><code>argv</code></em> to the child.</td></tr></tbody></table></div><div class="refsect2" title="Glib User Directory Constants"><a name="glib-user-directory-constants"></a><h3>Glib User Directory Constants</h3><p>The User Directory constants are integer values that are currently used only as arguments to
-        <a class="link" href="glib-functions.html#function-glib--get-user-special-dir" title="glib.get_user_special_dir"><code class="function">glib.get_user_special_dir</code>()</a>
-        function.  See function documentation for details.</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">glib.USER_DIRECTORY_DESKTOP</code></span></p></td><td>the user's Desktop directory</td></tr><tr><td><p><span class="term"><code class="literal">glib.USER_DIRECTORY_DOCUMENTS</code></span></p></td><td>the user's Documents directory</td></tr><tr><td><p><span class="term"><code class="literal">glib.USER_DIRECTORY_DOWNLOAD</code></span></p></td><td>the user's Downloads directory</td></tr><tr><td><p><span class="term"><code class="literal">glib.USER_DIRECTORY_MUSIC</code></span></p></td><td>the user's Music directory</td></tr><tr><td><p><span class="term"><code class="literal">glib.USER_DIRECTORY_PICTURES</code></span></p></td><td>the user's Pictures directory</td></tr><tr><td><p><span class="term"><code class="literal">glib.USER_DIRECTORY_PUBLIC_SHARE</code></span></p></td><td>the user's shared directory</td></tr><tr><td><p><span class="term"><code class="literal">glib.USER_DIRECTORY_TEMPLATES</code></span></p></td><td>the user's Templates directory</td></tr><tr><td><p><span class="term"><code class="literal">glib.USER_DIRECTORY_VIDEOS</code></span></p></td><td>the user's Movies directory</td></tr></tbody></table></div><div class="refsect2" title="Glib Version Constants"><a name="glib-version-constants"></a><h3>Glib Version Constants</h3><p>The Version constants specify the version of
-<code class="literal">Glib</code> used by PyGObject as a 3-tuple containing the major,
-minor and patch release numbers.</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">glib.glib_version</code></span></p></td><td>A 3-tuple containing (major, minor, patch) release
-           numbers of glib.</td></tr><tr><td><p><span class="term"><code class="literal">glib.pyglib_version</code></span></p></td><td>A 3-tuple containing (major, minor, patch) release
-           numbers of the python bindings.</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="glib-functions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="glib-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="gobject-class-reference.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">glib Functions </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> PyGObject Class Reference</td></tr></table></div></body></html>
diff --git a/docs/html/glib-functions.html b/docs/html/glib-functions.html
deleted file mode 100644 (file)
index ffb796f..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>glib Functions</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="glib-class-reference.html" title="PyGlibClass Reference"><link rel="prev" href="class-glibmainloop.html" title="glib.MainLoop"><link rel="next" href="glib-constants.html" title="glib Constants"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">glib Functions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-glibmainloop.html">Prev</a> </td><th width="60%" align="center">PyGlibClass Reference</th><td width="20%" align="right"> <a accesskey="n" href="glib-constants.html">Next</a></td></tr></table><hr></div><div class="refentry" title="glib Functions"><a name="glib-functions"></a><div class="titlepage"></div><div class="refnamediv"><h2>glib Functions</h2><p>glib Functions â€” miscellaneous functions</p></div><div class="refsect1" title="Synopsis"><a name="id406219"></a><h2>Synopsis</h2><pre class="programlisting">
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--idle-add" title="glib.idle_add">glib.idle_add</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>callback</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--timeout-add" title="glib.timeout_add">glib.timeout_add</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>interval</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>callback</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--timeout-add-seconds" title="glib.timeout_add_seconds">glib.timeout_add_seconds</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>interval</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>callback</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--io-add-watch" title="glib.io_add_watch">glib.io_add_watch</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>fd</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>condition</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>callback</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--source-remove" title="glib.source_remove">glib.source_remove</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>tag</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--main-context-default" title="glib.main_context_default">glib.main_context_default</a></span>(<span class="methodparam"></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--markup-escape-text" title="glib.markup_escape_text">glib.markup_escape_text</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>text</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--child-watch-add" title="glib.child_watch_add">glib.child_watch_add</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>pid</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>function</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--spawn-async" title="glib.spawn_async">glib.spawn_async</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>argv</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>envp</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>working_directory</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=0</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>child_setup</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>standard_input</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>standard_output</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>standard_error</code></strong></span><span class="initializer">=None</span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--get-current-time" title="glib.get_current_time">glib.get_current_time</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--get-user-cache-dir" title="glib.get_user_cache_dir">glib.get_user_cache_dir</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--get-user-config-dir" title="glib.get_user_config_dir">glib.get_user_config_dir</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--get-user-data-dir" title="glib.get_user_data_dir">glib.get_user_data_dir</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--get-user-special-dir" title="glib.get_user_special_dir">glib.get_user_special_dir</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>directory</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--main-depth" title="glib.main_depth">glib.main_depth</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--threads-init" title="glib.threads_init">glib.threads_init</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--filename-display-name" title="glib.filename_display_name">glib.filename_display_name</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>filename</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--filename-display-basename" title="glib.filename_display_basename">glib.filename_display_basename</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>filename</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="glib-functions.html#function-glib--filename-from-utf8" title="glib.filename_from_utf8">glib.filename_from_utf8</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>utf8string</code></em></span></span>)</code></pre></div><div class="refsect1" title="Description"><a name="id395853"></a><h2>Description</h2><p>These functions are part of the <code class="literal">PyGObject</code> glib
-module but are not directly associated with a specific class.</p></div><div class="refsect1" title="Functions"><a name="id403508"></a><h2>Functions</h2><div class="refsect2" title="glib.idle_add"><a name="function-glib--idle-add"></a><h3>glib.idle_add</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.idle_add</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>callback</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a function to call when
-<code class="literal">PyGTK</code> is idle</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>optionals arguments to be passed to
-<em class="parameter"><code>callback</code></em></td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an integer ID</td></tr></tbody></table><p>The <code class="function">glib.idle_add</code>() function adds a
-function (specified by <em class="parameter"><code>callback</code></em>) to be called
-whenever there are no higher priority events pending to the default main
-loop. The function is given the default idle priority,
-<code class="literal">glib.PRIORITY_DEFAULT_IDLE</code>. Additional arguments to
-pass to <em class="parameter"><code>callback</code></em> can be specified after
-<em class="parameter"><code>callback</code></em>. The idle priority can be specified as a
-keyword-value pair with the keyword "priority". If
-<em class="parameter"><code>callback</code></em> returns <code class="literal">False</code> it is
-automatically removed from the list of event sources and will not be called
-again.</p></div><div class="refsect2" title="glib.timeout_add"><a name="function-glib--timeout-add"></a><h3>glib.timeout_add</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.timeout_add</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>interval</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>callback</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>interval</code></em> :</span></p></td><td>the time between calls to the function, in
-milliseconds </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>the function to call</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>zero or more arguments that will be passed to
-<em class="parameter"><code>callback</code></em></td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an integer ID of the event
-source</td></tr></tbody></table><p>The <code class="function">glib.timeout_add</code>() function sets a
-function (specified by <em class="parameter"><code>callback</code></em>) to be called at
-regular intervals (specified by <em class="parameter"><code>interval</code></em>, with the
-default priority, <code class="literal">glib.PRIORITY_DEFAULT</code>. Additional
-arguments to pass to <em class="parameter"><code>callback</code></em> can be specified after
-<em class="parameter"><code>callback</code></em>. The idle priority may be specified as a
-keyword-value pair with the keyword "priority".</p><p>The function is called repeatedly until it returns
-<code class="literal">False</code>, at which point the timeout is automatically
-destroyed and the function will not be called again. The first call to the
-function will be at the end of the first interval. Note that timeout
-functions may be delayed, due to the processing of other event sources. Thus
-they should not be relied on for precise timing. After each call to the
-timeout function, the time of the next timeout is recalculated based on the
-current time and the given interval (it does not try to 'catch up' time lost
-in delays).</p></div><div class="refsect2" title="glib.timeout_add_seconds"><a name="function-glib--timeout-add-seconds"></a><h3>glib.timeout_add_seconds</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.timeout_add_seconds</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>interval</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>callback</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>interval</code></em> :</span></p></td><td>the time between calls to the function, in
-seconds </td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>the function to call</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>zero or more arguments that will be passed to
-<em class="parameter"><code>callback</code></em></td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an integer ID of the event
-source</td></tr></tbody></table><p>The <code class="function">glib.timeout_add_seconds</code>() is similar to
-       <code class="function">glib.timeout_add</code>() except
-       that <em class="parameter"><code>interval</code></em> must be specified in seconds, not
-       milliseconds, and the function should cause less CPU wakeups, which is important
-       for laptops' batteries.</p><p>Unlike <code class="function">glib.timeout_add</code>(), this function operates at
-       whole second granularity.  The initial starting point of the timer is determined
-       by the implementation and the implementation is expected to group multiple timers
-       together so that they fire all at the same time.  To allow this grouping, the
-       interval to the first timer is rounded and can deviate up to one second from the
-       specified interval.  Subsequent timer iterations will generally run at the
-       specified interval.</p><p>Note that timeout functions may be delayed, due to the processing of other
-       event sources.  Thus they should not be relied on for precise timing.  After each
-       call to the timeout function, the time of the next timeout is recalculated based
-       on the current time and the given interval.</p><p>The grouping of timers to fire at the same time results in a more power and
-       CPU efficient behavior so if your timer is in multiples of seconds and you don't
-       require the first timer exactly one second from now, the use of
-       <code class="function">glib.timeout_add_seconds</code>() is preferred
-       over <code class="function">glib.timeout_add</code>().</p></div><div class="refsect2" title="glib.io_add_watch"><a name="function-glib--io-add-watch"></a><h3>glib.io_add_watch</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.io_add_watch</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>fd</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>condition</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>callback</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>fd</code></em> :</span></p></td><td>a Python file object or an integer file
-descriptor ID</td></tr><tr><td><p><span class="term"><em class="parameter"><code>condition</code></em> :</span></p></td><td>a condition mask</td></tr><tr><td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td><td>a function to call</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>additional arguments to pass to
-<em class="parameter"><code>callback</code></em></td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an integer ID of the event source</td></tr></tbody></table><p>The <code class="function">glib.io_add_watch</code>() function
-arranges for the file (specified by <em class="parameter"><code>fd</code></em>) to be
-monitored by the main loop for the specified
-<em class="parameter"><code>condition</code></em>. <em class="parameter"><code>fd</code></em> may be a Python
-file object or an integer file descriptor. The value of condition is a
-combination of:</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">glib.IO_IN</code></span></p></td><td>There is data to read.</td></tr><tr><td><p><span class="term"><code class="literal">glib.IO_OUT</code></span></p></td><td>Data can be written (without blocking). </td></tr><tr><td><p><span class="term"><code class="literal">glib.IO_PRI</code></span></p></td><td>There is urgent data to read.</td></tr><tr><td><p><span class="term"><code class="literal">glib.IO_ERR</code></span></p></td><td>Error condition.</td></tr><tr><td><p><span class="term"><code class="literal">glib.IO_HUP</code></span></p></td><td>Hung up (the connection has been broken, usually for
-pipes and sockets).</td></tr></tbody></table><p>Additional arguments to pass to <em class="parameter"><code>callback</code></em>
-can be specified after <em class="parameter"><code>callback</code></em>. The idle priority
-may be specified as a keyword-value pair with the keyword "priority". The
-signature of the callback function is:</p><pre class="programlisting">
-  def callback(source, cb_condition, ...)
-</pre><p>where <em class="parameter"><code>source</code></em> is
-<em class="parameter"><code>fd</code></em>, the file descriptor;
-<em class="parameter"><code>cb_condition</code></em> is the condition that triggered the
-signal; and, <em class="parameter"><code>...</code></em> are the zero or more arguments that
-were passed to the <code class="function">glib.io_add_watch</code>()
-function.</p><p>If the callback function returns <code class="literal">False</code> it
-will be automatically removed from the list of event sources and will not be
-called again. If it returns <code class="literal">True</code> it will be called again
-when the condition is matched.</p></div><div class="refsect2" title="glib.source_remove"><a name="function-glib--source-remove"></a><h3>glib.source_remove</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.source_remove</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>tag</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>tag</code></em> :</span></p></td><td>an integer ID</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if the event source was
-removed</td></tr></tbody></table><p>The <code class="function">glib.source_remove</code>() function
-removes the event source specified by tag (as returned by the <a class="link" href="glib-functions.html#function-glib--idle-add" title="glib.idle_add"><code class="function">glib.idle_add</code>()</a>, 
-<a class="link" href="glib-functions.html#function-glib--timeout-add" title="glib.timeout_add"><code class="function">glib.timeout_add</code></a>() 
-and <a class="link" href="glib-functions.html#function-glib--io-add-watch" title="glib.io_add_watch"><code class="function">glib.io_add_watch</code>()</a> 
-functions)</p></div><div class="refsect2" title="glib.main_context_default"><a name="function-glib--main-context-default"></a><h3>glib.main_context_default</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.main_context_default</span>(<span class="methodparam"></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the default glib.MainContext
-object</td></tr></tbody></table><p>The <code class="function">glib.main_context_default</code>() function
-returns the default glib.MainContext object.</p></div><div class="refsect2" title="glib.markup_escape_text"><a name="function-glib--markup-escape-text"></a><h3>glib.markup_escape_text</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.markup_escape_text</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>text</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>text</code></em> :</span></p></td><td>the UTF-8 string to be
-escaped</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the escaped text</td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.8 and above.</p></div><p>The <code class="function">glib.markup_escape_text</code>() function
-escapes the string specified by <em class="parameter"><code>text</code></em> so that the
-markup parser will parse it verbatim. Less than, greater than, ampersand,
-etc. are replaced with the corresponding entities. This function would
-typically be used when writing out a file to be parsed with the markup
-parser.</p><p>Note that this function doesn't protect whitespace and line
-endings from being processed according to the XML rules for normalization of
-line endings and attribute values.</p></div><div class="refsect2" title="glib.child_watch_add"><a name="function-glib--child-watch-add"></a><h3>glib.child_watch_add</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.child_watch_add</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>pid</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>function</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>data</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>priority</code></strong></span><span class="initializer">=glib.PRIORITY_DEFAULT</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>pid</code></strong> :</span></p></td><td>process id of a child process to watch</td></tr><tr><td><p><span class="term"><strong class="parameter"><code>function</code></strong> :</span></p></td><td>the function to call</td></tr><tr><td><p><span class="term"><strong class="parameter"><code>data</code></strong> :</span></p></td><td>the optional data to pass to
-<em class="parameter"><code>function</code></em></td></tr><tr><td><p><span class="term"><strong class="parameter"><code>priority</code></strong> :</span></p></td><td>the priority of the idle source - one of the
-<a class="xref" href="glib-constants.html#glib-priority-constants" title="Glib Priority Constants">Glib Priority Constants</a></td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the id of event source.</td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.6 and above.</p></div><p>The <code class="function">glib.child_watch_add</code>() function sets
-the function specified by <em class="parameter"><code>function</code></em> to be called with
-the user data specified by <em class="parameter"><code>data</code></em> when the child
-indicated by <em class="parameter"><code>pid</code></em> exits. The signature for the
-callback is:</p><pre class="programlisting">
-def callback(pid, condition, user_data)
-</pre><p>where <em class="parameter"><code>pid</code></em> is is the child process id,
-<em class="parameter"><code>condition</code></em> is the status information about the child
-process and <em class="parameter"><code>user_data</code></em> is <em class="parameter"><code>data</code></em>
-PyGTK supports only a single callback per process id.</p></div><div class="refsect2" title="glib.spawn_async"><a name="function-glib--spawn-async"></a><h3>glib.spawn_async</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.spawn_async</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>argv</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>envp</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>working_directory</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>flags</code></strong></span><span class="initializer">=0</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>child_setup</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>user_data</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>standard_input</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>standard_output</code></strong></span><span class="initializer">=None</span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>standard_error</code></strong></span><span class="initializer">=None</span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>argv</code></strong> :</span></p></td><td>a sequence of strings containing the arguments
-of the child process</td></tr><tr><td><p><span class="term"><strong class="parameter"><code>envp</code></strong> :</span></p></td><td>the child's environment or
-<code class="literal">None</code> to inherit the parent's
-environment.</td></tr><tr><td><p><span class="term"><strong class="parameter"><code>working_directory</code></strong> :</span></p></td><td>the child's current working directory, or
-<code class="literal">None</code> to inherit parent's</td></tr><tr><td><p><span class="term"><strong class="parameter"><code>flags</code></strong> :</span></p></td><td>flags from the <a class="xref" href="glib-constants.html#glib-spawn-flag-constants" title="Glib Spawn Flag Constants">Glib Spawn Flag Constants</a>.</td></tr><tr><td><p><span class="term"><strong class="parameter"><code>child_setup</code></strong> :</span></p></td><td>a function to run in the child just before
-calling <code class="function">exec</code>()</td></tr><tr><td><p><span class="term"><strong class="parameter"><code>user_data</code></strong> :</span></p></td><td>the user data for the
-<em class="parameter"><code>child_setup</code></em> function</td></tr><tr><td><p><span class="term"><strong class="parameter"><code>standard_input</code></strong> :</span></p></td><td>if <code class="literal">True</code> return the file
-descriptor for the child's stdin</td></tr><tr><td><p><span class="term"><strong class="parameter"><code>standard_output</code></strong> :</span></p></td><td>if <code class="literal">True</code> return the file
-descriptor for the child's stdout</td></tr><tr><td><p><span class="term"><strong class="parameter"><code>standard_error</code></strong> :</span></p></td><td>if <code class="literal">True</code> return the file
-descriptor for the child's stderr</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a 4-tuple containing the child's process id and
-the stdin, stdout and stderr file descriptor integers.</td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.6 and above.</p></div><p>The <code class="function">glib.spawn_async</code>() function executes
-a child program asynchronously (your program will not block waiting for the
-child to exit). The child program is specified by the only argument that
-must be provided, <em class="parameter"><code>argv</code></em>. <em class="parameter"><code>argv</code></em>
-should be a sequence of strings, to be passed as the argument vector for the
-child. The first string in <em class="parameter"><code>argv</code></em> is of course the name
-of the program to execute. By default, the name of the program must be a
-full path; the <code class="envar">PATH</code> shell variable will only be searched if
-you pass the <code class="literal">glib.SPAWN_SEARCH_PATH</code> flag in
-<em class="parameter"><code>flags</code></em>. The function returns a 4-tuple containing the
-child's process id and the file descriptors for the child's stdin, stdout
-and stderr. The stdin, stdout and stderr file descriptors are returned only
-ofthe corresponding <em class="parameter"><code>standard_input</code></em>,
-<em class="parameter"><code>standard_output</code></em> or
-<em class="parameter"><code>standard_error</code></em> params are
-<code class="literal">True</code>.</p><p>On Windows, the low-level child process creation API
-(<code class="function">CreateProcess</code>()) doesn't use argument vectors, but a
-command line. The C runtime library's <code class="function">spawn*</code>() family
-of functions (which <a class="link" href="glib-functions.html#function-glib--spawn-async" title="glib.spawn_async"><code class="function">glib.spawn_async</code>()</a>
-eventually calls) paste the argument vector elements into a command line,
-and the C runtime startup code does a corresponding reconstruction of an
-argument vector from the command line, to be passed to
-<code class="function">main</code>(). Complications arise when you have argument
-vector elements that contain spaces of double quotes. The
-<code class="function">spawn*</code>() functions don't do any quoting or escaping,
-but on the other hand the startup code does do unquoting and unescaping in
-order to enable receiving arguments with embedded spaces or double
-quotes. To work around this asymmetry, the <a class="link" href="glib-functions.html#function-glib--spawn-async" title="glib.spawn_async"><code class="function">glib.spawn_async</code>()</a>
-function will do quoting and escaping on argument vector elements that need
-it before calling the C runtime <code class="function">spawn</code>()
-function.</p><p><em class="parameter"><code>envp</code></em> is a sequence of strings, where each
- string has the form <code class="literal">KEY=VALUE</code>. This will become the
- child's environment. If <em class="parameter"><code>envp</code></em> is
- <em class="parameter"><code>None</code></em> or not specified, the child inherits its
- parent's environment.</p><p><em class="parameter"><code>flags</code></em> should be the bitwise
-<code class="literal">OR</code> of the <a class="xref" href="glib-constants.html#glib-spawn-flag-constants" title="Glib Spawn Flag Constants">Glib Spawn Flag Constants</a> you want to affect the
-function's behaviour. The <code class="literal">glib.SPAWN_DO_NOT_REAP_CHILD</code>
-flag means that the child will not automatically be reaped; you must use a
-GChildWatch source to be notified about the death of the child
-process. Eventually you must call g_spawn_close_pid() on the child_pid, in
-order to free resources which may be associated with the child process. (On
-Unix, using a GChildWatch source is equivalent to calling
-<code class="function">waitpid</code>() or handling the <code class="literal">SIGCHLD</code>
-signal manually. On Windows, calling g_spawn_close_pid() is equivalent to
-calling <code class="function">CloseHandle</code>() on the process handle
-returned).</p><p><code class="literal">glib.SPAWN_LEAVE_DESCRIPTORS_OPEN</code> means
-that the parent's open file descriptors will be inherited by the child;
-otherwise all descriptors except stdin/stdout/stderr will be closed before
-calling <code class="function">exec</code>() in the
-child. <code class="literal">glib.SPAWN_SEARCH_PATH</code> means that
-<em class="parameter"><code>argv</code></em>[0] need not be an absolute path, it will be
-looked for in the user's
-<code class="envar">PATH</code>. <code class="literal">glib.SPAWN_STDOUT_TO_DEV_NULL</code>
-means that the child's standard output will be discarded, instead of going
-to the same location as the parent's standard output. If you use this flag,
-<em class="parameter"><code>standard_output</code></em> must be
-<code class="literal">None</code>. <code class="literal">glib.SPAWN_STDERR_TO_DEV_NULL</code>
-means that the child's standard error will be discarded, instead of going to
-the same location as the parent's standard error. If you use this flag,
-<em class="parameter"><code>standard_error</code></em> must be
-<code class="literal">None</code>. <code class="literal">glib.SPAWN_CHILD_INHERITS_STDIN</code>
-means that the child will inherit the parent's standard input (by default,
-the child's standard input is attached to
-<code class="filename">/dev/null</code>). If you use this flag,
-<em class="parameter"><code>standard_input</code></em> must be
-<code class="literal">None</code>. <code class="literal">glib.SPAWN_FILE_AND_ARGV_ZERO</code>
-means that the first element of <em class="parameter"><code>argv</code></em> is the file to
-execute, while the remaining elements are the actual argument vector to pass
-to the file. Normally the <a class="link" href="glib-functions.html#function-glib--spawn-async" title="glib.spawn_async"><code class="function">glib.spawn_async</code>()</a>
-function uses <em class="parameter"><code>argv</code></em>[0] as the file to execute, and
-passes all of <em class="parameter"><code>argv</code></em> to the child.</p><p><em class="parameter"><code>child_setup</code></em> and
-<em class="parameter"><code>user_data</code></em> are a function and user data. On POSIX
-platforms, the function is called in the child after GLib has performed all
-the setup it plans to perform (including creating pipes, closing file
-descriptors, etc.) but before calling <code class="function">exec</code>(). That is,
-<em class="parameter"><code>child_setup</code></em> is called just before calling
-<code class="function">exec</code>() in the child. Obviously actions taken in this
-function will only affect the child, not the parent. On Windows, there is no
-separate <code class="function">fork</code>() and <code class="function">exec</code>()
-functionality. Child processes are created and run right away with one API
-call,
-<code class="function">CreateProcess</code>(). <em class="parameter"><code>child_setup</code></em> is
-called in the parent process just before creating the child process. You
-should carefully consider what you do in <em class="parameter"><code>child_setup</code></em>
-if you intend your software to be portable to Windows.</p><p>The returned child process id can be used to send signals to the
-child, or to wait for the child if you specified the
-<code class="literal">glib.SPAWN_DO_NOT_REAP_CHILD</code> flag.  On Windows, child
-pid will be returned only if you specified the
-<code class="literal">glib.SPAWN_DO_NOT_REAP_CHILD</code> flag.</p><p>The caller of the <a class="link" href="glib-functions.html#function-glib--spawn-async" title="glib.spawn_async"><code class="function">glib.spawn_async</code>()</a>
-must close any returned file descriptors when they are no longer in
-use.</p><p>If <em class="parameter"><code>standard_input</code></em> is
-<code class="literal">None</code>, the child's standard input is attached to
-<code class="filename">/dev/null</code> unless
-<code class="literal">glib.SPAWN_CHILD_INHERITS_STDIN</code> is set.</p><p>If <em class="parameter"><code>standard_error</code></em> is
-<code class="literal">None</code>, the child's standard error goes to the same
-location as the parent's standard error unless
-<code class="literal">glib.SPAWN_STDERR_TO_DEV_NULL</code> is set.</p><p>If <em class="parameter"><code>standard_output</code></em> is
-<code class="literal">None</code>, the child's standard output goes to the same
-location as the parent's standard output unless
-<code class="literal">glib.SPAWN_STDOUT_TO_DEV_NULL</code> is set.</p><p>If an error occurs, the glib.GError exception will be
-raised.</p></div><div class="refsect2" title="glib.get_current_time"><a name="function-glib--get-current-time"></a><h3>glib.get_current_time</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.get_current_time</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the current time as the number of seconds and
-microseconds from the epoch.</td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.8 and above.</p></div><p>The <code class="function">glib.get_current_time</code>() function
-reurns the current time of day as the number of seconds and microseconds
-from the epoch.</p></div><div class="refsect2" title="glib.get_user_cache_dir"><a name="function-glib--get-user-cache-dir"></a><h3>glib.get_user_cache_dir</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.get_user_cache_dir</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>
-              a strings with a path to user's cache directory.
-            </td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGObject 2.18 and above.</p></div><p>Returns a base directory in which to store non-essential,
-        cached data specific to particular user.</p><p>On UNIX platforms this is determined using the mechanisms
-        described in the
-        <a class="ulink" href="http://www.freedesktop.org/Standards/basedir-spec" target="_top">XDG
-          Base Directory Specification</a>.</p></div><div class="refsect2" title="glib.get_user_config_dir"><a name="function-glib--get-user-config-dir"></a><h3>glib.get_user_config_dir</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.get_user_config_dir</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>
-              a strings with a path to user's configuration directory.
-            </td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGObject 2.18 and above.</p></div><p>Returns a base directory in which to store user-specific
-        application configuration information such as user preferences
-        and settings. </p><p>On UNIX platforms this is determined using the mechanisms
-        described in the
-        <a class="ulink" href="http://www.freedesktop.org/Standards/basedir-spec" target="_top">XDG
-          Base Directory Specification</a>.</p></div><div class="refsect2" title="glib.get_user_data_dir"><a name="function-glib--get-user-data-dir"></a><h3>glib.get_user_data_dir</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.get_user_data_dir</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>
-              a strings with a path to user's data directory.
-            </td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGObject 2.18 and above.</p></div><p>Returns a base directory in which to access application
-        data such as icons that is customized for a particular
-        user</p><p>On UNIX platforms this is determined using the mechanisms
-        described in the
-        <a class="ulink" href="http://www.freedesktop.org/Standards/basedir-spec" target="_top">XDG
-          Base Directory Specification</a>.</p></div><div class="refsect2" title="glib.get_user_special_dir"><a name="function-glib--get-user-special-dir"></a><h3>glib.get_user_special_dir</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.get_user_special_dir</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>directory</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>directory</em></span> :</span></p></td><td>
-              the logical id of special directory,
-              see <a class="link" href="glib-constants.html#glib-user-directory-constants" title="Glib User Directory Constants">User
-              Directory constants</a> for the list of supported
-              values
-            </td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>
-              a strings with a path to the requested directory.
-            </td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGObject 2.18 and above.</p></div><p>Returns the full path of a special directory using its
-        logical id.</p><p>On Unix this is done using the XDG special user
-        directories.  For compatibility with existing practise,
-        <a class="link" href="glib-constants.html#glib-user-directory-constants" title="Glib User Directory Constants">glib.USER_DIRECTORY_DESKTOP</a>
-        falls back to <code class="literal">$HOME/Desktop</code> when XDG
-        special user directories have not been set up.</p><p>Depending on the platform, the user might be able to
-        change the path of the special directory without requiring the
-        session to restart; GLib will not reflect any change once the
-        special directories are loaded.</p></div><div class="refsect2" title="glib.main_depth"><a name="function-glib--main-depth"></a><h3>glib.main_depth</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.main_depth</span>()</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the depth of the stack of calls to the main
-context.</td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.8 and above.</p></div><p>The <code class="function">main_depth</code>() function returns the depth
-of the stack of calls in the main context. That is, when called from the
-toplevel, it gives 0. When called from within a callback from the <a class="link" href="class-glibmaincontext.html#method-glibmaincontext--iteration" title="glib.MainContext.iteration"><code class="methodname">glib.MainContext.iteration</code>()</a>
-method (or the <a class="link" href="class-glibmainloop.html#method-glibmainloop--run" title="glib.MainLoop.run"><code class="methodname">glib.MainLoop.run</code>()</a>
-method, etc.) it returns 1. When called from within a callback to a
-recursive call to the <a class="link" href="class-glibmaincontext.html#method-glibmaincontext--iteration" title="glib.MainContext.iteration"><code class="methodname">glib.MainContext.iteration</code>()</a>
-method), it returns 2. And so forth.</p></div><div class="refsect2" title="glib.threads_init"><a name="function-glib--threads-init"></a><h3>glib.threads_init</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.threads_init</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code></code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td></td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.4 and above.</p></div><p>The <code class="function">threads_init</code>() function initializes the
-      the use of Python threading in the glib module. This function is
-      different than the <PYGTKDOCLINK HREF="function-gdk--threads-init"><code class="function">gtk.gdk.threads_init</code>()</PYGTKDOCLINK>
-      function as that function also initializes the gdk threads.</p></div><div class="refsect2" title="glib.signal_accumulator_true_handled"><a name="function-glib--signal-accumulator-true-handled"></a><h3>glib.signal_accumulator_true_handled</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.signal_accumulator_true_handled</span>()</code></pre><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.8 and above.</p></div><p>The <code class="function">signal_accumulator_true_handled</code>()
-      function is only used as accumulator argument when registering
-      signals.</p></div><div class="refsect2" title="glib.filename_display_name"><a name="function-glib--filename-display-name"></a><h3>glib.filename_display_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.filename_display_name</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>filename</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>filename</em></span> :</span></p></td><td>a pathname in the file name
-          encoding</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an UTF8 rendition of
-          <em class="parameter"><code>filename</code></em>.</td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.10 and above.</p></div><p>The <code class="function">filename_display_name</code>() function
-      converts a filename into a valid UTF-8 string. The conversion is not
-      necessarily reversible, so you should keep the original around and use
-      the return value of this function only for display purposes. Unlike
-      g_filename_to_utf8(), the result is guaranteed to be non-None even if
-      the filename actually isn't in the file name encoding.</p><p>If you know the whole pathname of the file you should use the
-      <a class="link" href="glib-functions.html#function-glib--filename-display-basename" title="glib.filename_display_basename"><code class="function">glib.filename_display_basename</code>()</a>
-      function, since that allows location-based translation of
-      filenames.</p></div><div class="refsect2" title="glib.filename_display_basename"><a name="function-glib--filename-display-basename"></a><h3>glib.filename_display_basename</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.filename_display_basename</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>filename</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>filename</em></span> :</span></p></td><td>an absolute pathname in the file name
-          encoding</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>an UTF8 rendition of
-          <em class="parameter"><code>filename</code></em>.</td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.10 and above.</p></div><p>The <code class="function">filename_display_basename</code>() function
-      returns the display basename for the particular filename, guaranteed
-      to be valid UTF-8. The display name might not be identical to the
-      filename, for instance there might be problems converting it to UTF-8,
-      and some files can be translated in the display.</p><p>You must pass the whole absolute pathname to this functions so
-      that translation of well known locations can be done.</p><p>This function is preferred over the <a class="link" href="glib-functions.html#function-glib--filename-display-name" title="glib.filename_display_name"><code class="function">glib.filename_display_name</code>()</a>
-      function if you know the whole path, as it allows translation.</p></div><div class="refsect2" title="glib.filename_from_utf8"><a name="function-glib--filename-from-utf8"></a><h3>glib.filename_from_utf8</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">glib.filename_from_utf8</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>utf8string</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>utf8string</em></span> :</span></p></td><td>a UTF-8 encoded string.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a filename encoded in the GLib filename
-          encoding.</td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.10 and above.</p></div><p>The <code class="function">filename_from_utf8</code>() function converts
-      a string from UTF-8 to the encoding GLib uses for filenames. Note that
-      on Windows GLib uses UTF-8 for filenames.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-glibmainloop.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="glib-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="glib-constants.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">glib.MainLoop </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> glib Constants</td></tr></table></div></body></html>
diff --git a/docs/html/gobject-class-reference.html b/docs/html/gobject-class-reference.html
deleted file mode 100644 (file)
index 80d2cce..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>PyGObject Class Reference</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="index.html" title="PyGObject Reference Manual"><link rel="prev" href="glib-constants.html" title="glib Constants"><link rel="next" href="class-gobject.html" title="gobject.GObject"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">PyGObject Class Reference</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="glib-constants.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="class-gobject.html">Next</a></td></tr></table><hr></div><div class="chapter" title="PyGObject Class Reference"><div class="titlepage"><div><div><h2 class="title"><a name="gobject-class-reference"></a>PyGObject Class Reference</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="refentrytitle"><a href="class-gobject.html">gobject.GObject</a></span><span class="refpurpose"> â€” the base class</span></dt><dt><span class="refentrytitle"><a href="class-gobjectgboxed.html">gobject.GBoxed</a></span><span class="refpurpose"> â€” an object containing an opaque chunk of data</span></dt><dt><span class="refentrytitle"><a href="class-gobjectgpointer.html">gobject.GPointer</a></span><span class="refpurpose"> â€” an object containing a completely opaque chunk of
-    data</span></dt><dt><span class="refentrytitle"><a href="class-gobjectginterface.html">gobject.GInterface</a></span><span class="refpurpose"> â€” an object representing a GInterface</span></dt><dt><span class="refentrytitle"><a href="gobject-functions.html">gobject Functions</a></span><span class="refpurpose"> â€” miscellaneous functions</span></dt><dt><span class="refentrytitle"><a href="gobject-constants.html">gobject Constants</a></span><span class="refpurpose"> â€” the built-in constants of the gobject module</span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="glib-constants.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="class-gobject.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">glib Constants </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gobject.GObject</td></tr></table></div></body></html>
diff --git a/docs/html/gobject-constants.html b/docs/html/gobject-constants.html
deleted file mode 100644 (file)
index 6ff3ee5..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gobject Constants</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gobject-class-reference.html" title="PyGObject Class Reference"><link rel="prev" href="gobject-functions.html" title="gobject Functions"><link rel="next" href="gio-class-reference.html" title="PyGio Class Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gobject Constants</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="gobject-functions.html">Prev</a> </td><th width="60%" align="center">PyGObject Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="gio-class-reference.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gobject Constants"><a name="gobject-constants"></a><div class="titlepage"></div><div class="refnamediv"><h2>gobject Constants</h2><p>gobject Constants â€” the built-in constants of the gobject module</p></div><div class="refsect1" title="Synopsis"><a name="id374449"></a><h2>Synopsis</h2><pre class="programlisting">
-<a class="xref" href="gobject-constants.html#gobject-param-constants" title="GObject Param Flag Constants">GObject Param Flag Constants</a>
-<a class="xref" href="gobject-constants.html#gobject-signal-constants" title="GObject Signal Flag Constants">GObject Signal Flag Constants</a>
-<a class="xref" href="gobject-constants.html#gobject-type-constants" title="GObject Built-in Type Constants">GObject Built-in Type Constants</a>
-<a class="xref" href="gobject-constants.html#gobject-version-constants" title="GObject Version Constants">GObject Version Constants</a>
-</pre></div><div class="refsect1" title="Description"><a name="gobject-constants-description"></a><h2>Description</h2><div class="refsect2" title="GObject Param Flag Constants"><a name="gobject-param-constants"></a><h3>GObject Param Flag Constants</h3><p>The Param Flag constants are a set of bit-flags that specify
-certain aspects of parameters that can be configured.</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gobject.PARAM_READABLE</code></span></p></td><td>The parameter is readable</td></tr><tr><td><p><span class="term"><code class="literal">gobject.PARAM_WRITABLE</code></span></p></td><td>The parameter is writable</td></tr><tr><td><p><span class="term"><code class="literal">gobject.PARAM_CONSTRUCT</code></span></p></td><td>The parameter will be set upon object
-           construction</td></tr><tr><td><p><span class="term"><code class="literal">gobject.PARAM_CONSTRUCT_ONLY</code></span></p></td><td>The parameter will only be set upon object
-           construction</td></tr><tr><td><p><span class="term"><code class="literal">gobject.PARAM_LAX_VALIDATION</code></span></p></td><td>Upon parameter conversion strict validation is not
-           required</td></tr></tbody></table></div><div class="refsect2" title="GObject Signal Flag Constants"><a name="gobject-signal-constants"></a><h3>GObject Signal Flag Constants</h3><p>The Signal Flag constants are a set of bit-flags that specify a
-signal's behavior. The overall signal description outlines how especially
-the <code class="literal">RUN</code> flags control the stages of a signal
-emission.</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_RUN_FIRST</code></span></p></td><td>Invoke the object method handler in the first emission
-           stage.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_RUN_LAST</code></span></p></td><td>Invoke the object method handler in the third emission
-           stage.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_RUN_CLEANUP</code></span></p></td><td>Invoke the object method handler in the last emission
-           stage.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_NO_RECURSE</code></span></p></td><td>Signals being emitted for an object while currently
-           being in emission for this very object will not be emitted
-           recursively, but instead cause the first emission to be
-           restarted.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_DETAILED</code></span></p></td><td>This signal supports "::detail" appendices to the
-           signal name upon handler connections and emissions.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_ACTION</code></span></p></td><td>Action signals are signals that may freely be emitted
-           on alive objects from user code via the <a class="link" href="class-gobject.html#method-gobject--emit" title="gobject.GObject.emit"><code class="methodname">gobject.emit</code>()</a>
-           method and friends, without the need of being embedded into
-           extra code that performs pre or post emission adjustments on the
-           object. They can also be thought of as object methods which can
-           be called generically by third-party code.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_NO_HOOKS</code></span></p></td><td>No emissions hooks are supported for this
-           signal.</td></tr></tbody></table></div><div class="refsect2" title="GObject Spawn Flag Constants"><a name="gobject-spawn-flag-constants"></a><h3>GObject Spawn Flag Constants</h3><p>The Spawn Flag constants are a set of bit-flags that can be
-passed to the <PYGTKDOCLINK HREF="function-gobject--spawn-async"><code class="function">gobject.spawn_async</code>()</PYGTKDOCLINK>
-function.</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gobject.SPAWN_LEAVE_DESCRIPTORS_OPEN</code></span></p></td><td>the parent's open file descriptors will be inherited by
-the child; otherwise all descriptors except stdin/stdout/stderr will be
-closed before calling <code class="function">exec</code>() in the child.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SPAWN_DO_NOT_REAP_CHILD</code></span></p></td><td>the child will not be automatically reaped; you must
-call <code class="function">waitpid</code>() or handle <code class="literal">SIGCHLD</code>
-yourself, or the child will become a zombie.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SPAWN_SEARCH_PATH</code></span></p></td><td><em class="parameter"><code>argv</code></em>[0] need not be an absolute
-path, it will be looked for in the user's <code class="envar">PATH</code>.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SPAWN_STDOUT_TO_DEV_NULL</code></span></p></td><td>the child's standard output will be discarded, instead
-of going to the same location as the parent's standard output.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SPAWN_STDERR_TO_DEV_NULL</code></span></p></td><td>the child's standard error will be discarded.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SPAWN_CHILD_INHERITS_STDIN</code></span></p></td><td>the child will inherit the parent's standard input (by
-default, the child's standard input is attached to /dev/null).</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SPAWN_FILE_AND_ARGV_ZERO</code></span></p></td><td>the first element of <em class="parameter"><code>argv</code></em> is the
-file to execute, while the remaining elements are the actual argument vector
-to pass to the file. Normally <PYGTKDOCLINK HREF="function-gobject--spawn-async"><code class="function">gobject.spawn_async</code>()</PYGTKDOCLINK>
-uses <em class="parameter"><code>argv</code></em>[0] as the file to execute, and passes all
-of <em class="parameter"><code>argv</code></em> to the child.</td></tr></tbody></table></div><div class="refsect2" title="GObject Built-in Type Constants"><a name="gobject-type-constants"></a><h3>GObject Built-in Type Constants</h3><p>The Built-in Type constants specify the pre-defined types used
-by gobject.</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gobject.TYPE_INVALID</code></span></p></td><td>An invalid type, used as error return value in some
-           functions.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_NONE</code></span></p></td><td>A fundamental type indicating no type.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_INTERFACE</code></span></p></td><td>The fundamental type from which all interfaces are
-           derived.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_CHAR</code></span></p></td><td>The fundamental type corresponding to a
-           character. This maps to a string in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_UCHAR</code></span></p></td><td>The fundamental type corresponding to an unsigned
-           character. This maps to a string in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_BOOLEAN</code></span></p></td><td>The fundamental type corresponding to a True or False
-           value. This maps to an integer in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_INT</code></span></p></td><td>The fundamental type corresponding to an
-           integer. This maps to an integer in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_UINT</code></span></p></td><td>he fundamental type corresponding to an unsigned
-           integer. This maps to an integer in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_LONG</code></span></p></td><td>The fundamental type corresponding to a long
-           integer. This maps to an integer in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_ULONG</code></span></p></td><td>The fundamental type corresponding to an unsigned
-           integer. This maps to an integer in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_INT64</code></span></p></td><td>The fundamental type corresponding to an long long
-           integer. This maps to a long integer in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_UINT64</code></span></p></td><td>The fundamental type corresponding to an unsigned long
-           long integer. This maps to a long integer in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_ENUM</code></span></p></td><td>The fundamental type corresponding to an enumeration
-           type. This maps to an integer in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_FLAGS</code></span></p></td><td>The fundamental type corresponding to a flag
-           type. This maps to an integer in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_FLOAT</code></span></p></td><td>The fundamental type corresponding to a floating point
-           number. This maps to a float in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_DOUBLE</code></span></p></td><td>The fundamental type corresponding to a double
-           floating point number. This maps to a float in Python.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_STRING</code></span></p></td><td>The fundamental type corresponding to a string.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_POINTER</code></span></p></td><td>The fundamental type corresponding to a pointer to an
-           anonymous type. This has no corresponding Python type.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_BOXED</code></span></p></td><td>The fundamental type corresponding to a boxed object
-           type.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_PARAM</code></span></p></td><td>The fundamental type corresponding to a GParamSpec
-           type.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_OBJECT</code></span></p></td><td>The fundamental type corresponding to a GObject
-           type.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.TYPE_PYOBJECT</code></span></p></td><td>The fundamental type corresponding to a Python Object
-           type.</td></tr></tbody></table></div><div class="refsect2" title="GObject Version Constants"><a name="gobject-version-constants"></a><h3>GObject Version Constants</h3><p>The Version constants specify the version of
-<code class="literal">GLIB</code> used by PyGTK as a 3-tuple containing the major,
-minor and patch release numbers.</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gobject.glib_version</code></span></p></td><td>A 3-tuple containing (major, minor, patch) release
-           numbers.</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="gobject-functions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gobject-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="gio-class-reference.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gobject Functions </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> PyGio Class Reference</td></tr></table></div></body></html>
diff --git a/docs/html/gobject-functions.html b/docs/html/gobject-functions.html
deleted file mode 100644 (file)
index 3853a06..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>gobject Functions</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="gobject-class-reference.html" title="PyGObject Class Reference"><link rel="prev" href="class-gobjectginterface.html" title="gobject.GInterface"><link rel="next" href="gobject-constants.html" title="gobject Constants"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">gobject Functions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class-gobjectginterface.html">Prev</a> </td><th width="60%" align="center">PyGObject Class Reference</th><td width="20%" align="right"> <a accesskey="n" href="gobject-constants.html">Next</a></td></tr></table><hr></div><div class="refentry" title="gobject Functions"><a name="gobject-functions"></a><div class="titlepage"></div><div class="refnamediv"><h2>gobject Functions</h2><p>gobject Functions â€” miscellaneous functions</p></div><div class="refsect1" title="Synopsis"><a name="id361138"></a><h2>Synopsis</h2><pre class="programlisting">
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--type-name" title="gobject.type_name">gobject.type_name</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--type-from-name" title="gobject.type_from_name">gobject.type_from_name</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type_name</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--type-parent" title="gobject.type_parent">gobject.type_parent</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--type-is-a" title="gobject.type_is_a">gobject.type_is_a</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>parent_type</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--type-children" title="gobject.type_children">gobject.type_children</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--type-interfaces" title="gobject.type_interfaces">gobject.type_interfaces</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--type-register" title="gobject.type_register">gobject.type_register</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>class</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--signal-new" title="gobject.signal_new">gobject.signal_new</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>signal_name</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>flags</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>return_type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>param_types</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--signal-list-names" title="gobject.signal_list_names">gobject.signal_list_names</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--signal-list-ids" title="gobject.signal_list_ids">gobject.signal_list_ids</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--signal-lookup" title="gobject.signal_lookup">gobject.signal_lookup</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>name</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--signal-name" title="gobject.signal_name">gobject.signal_name</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>signal_id</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--signal-query1" title="gobject.signal_query">gobject.signal_query</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>name</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--signal-query2" title="gobject.signal_query">gobject.signal_query</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>signal_id</code></strong></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--list-properties" title="gobject.list_properties">gobject.list_properties</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--new" title="gobject.new">gobject.new</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--signal-accumulator-true-handled" title="gobject.signal_accumulator_true_handled">gobject.signal_accumulator_true_handled</a></span>()</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--add-emission-hook" title="gobject.add_emission_hook">gobject.add_emission_hook</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>name</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>callback</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--remove-emission-hook" title="gobject.remove_emission_hook">gobject.remove_emission_hook</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>name</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>hook_id</code></em></span></span>)</code><br><code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject---install-metaclass" title="gobject._install_metaclass">gobject._install_metaclass</a></span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>metaclass</code></em></span></span>)</code>
-    </pre></div><div class="refsect1" title="Description"><a name="id363851"></a><h2>Description</h2><p>These functions are part of the <code class="literal">PyGTK</code> gobject
-module but are not directly associated with a specific class.</p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
-        Many functions that previously were in this namespace got moved to <a class="link" href="glib-functions.html" title="glib Functions"><code class="literal">glib</code></a> namespace instead.  They
-        are still available in <code class="literal">gobject</code> for backward compatibility, but
-        not documented here.  If you miss documentation for some function, be sure to
-        check <a class="link" href="glib-functions.html" title="glib Functions"><code class="literal">glib</code></a> first.
-      </p></div></div><div class="refsect1" title="Functions"><a name="id427695"></a><h2>Functions</h2><div class="refsect2" title="gobject.type_name"><a name="function-gobject--type-name"></a><h3>gobject.type_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.type_name</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td></td></tr></tbody></table><p>The <code class="function">gobject.type_name</code>() function returns
-the unique name that is assigned to the specified
-<em class="parameter"><code>type</code></em>. <em class="parameter"><code>type</code></em> can be a GObject
-type, type ID or instance. This function raises a TypeError exception
-if <em class="parameter"><code>type</code></em> isn't a <code class="literal">PyGTK</code> type.</p></div><div class="refsect2" title="gobject.type_from_name"><a name="function-gobject--type-from-name"></a><h3>gobject.type_from_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.type_from_name</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type_name</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type_name</code></em> :</span></p></td><td>a string containing the name of a
-type</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the type ID named
-<em class="parameter"><code>type_name</code></em></td></tr></tbody></table><p>The <code class="function">gobject.type_from_name</code>() function
-returns the type ID of the <code class="literal">PyGTK</code> type with the name
-specified by <em class="parameter"><code>type_name</code></em>. This function raises a
-RuntimeError exception if no type matches
-<em class="parameter"><code>type_name</code></em>.</p></div><div class="refsect2" title="gobject.type_parent"><a name="function-gobject--type-parent"></a><h3>gobject.type_parent</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.type_parent</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the parent type ID</td></tr></tbody></table><p>The <code class="function">gobject.type_parent</code>() function returns
-the direct parent type ID of the specified <em class="parameter"><code>type</code></em>.
-<em class="parameter"><code>type</code></em> can be a GObject type, type ID or instance. If
-<em class="parameter"><code>type</code></em> has no parent, i.e. is a fundamental type, the
-RuntimeError exception is raised. </p></div><div class="refsect2" title="gobject.type_is_a"><a name="function-gobject--type-is-a"></a><h3>gobject.type_is_a</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.type_is_a</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>parent_type</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><em class="parameter"><code>parent_type</code></em> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td><code class="literal">True</code> if
-<em class="parameter"><code>parent_type</code></em> is an ancestor of
-<em class="parameter"><code>type</code></em></td></tr></tbody></table><p>The <code class="function">gobject.type_is_a</code>() function returns
-<code class="literal">True</code> if the specified <em class="parameter"><code>type</code></em> is a
-descendant of the type specified by <em class="parameter"><code>parent_type</code></em>. This
-function also returns <code class="literal">True</code> if
-<em class="parameter"><code>parent_type</code></em> is an interface and
-<em class="parameter"><code>type</code></em> conforms to it.</p></div><div class="refsect2" title="gobject.type_children"><a name="function-gobject--type-children"></a><h3>gobject.type_children</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.type_children</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of the child types of
-<em class="parameter"><code>type</code></em></td></tr></tbody></table><p>The <code class="function">gobject.type_children</code>() function
-returns a list containing the child types of the specified
-<em class="parameter"><code>type</code></em>.</p></div><div class="refsect2" title="gobject.type_interfaces"><a name="function-gobject--type-interfaces"></a><h3>gobject.type_interfaces</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.type_interfaces</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of the interface types supported by
-<em class="parameter"><code>type</code></em></td></tr></tbody></table><p>The <code class="function">gobject.type_interfaces</code>() function
-returns a list of the interface types supported by
-<em class="parameter"><code>type</code></em>. <em class="parameter"><code>type</code></em> can be a GObject
-type, type ID or instance. This function returns a RuntimeError exception if
-type is not a valid type or has no interfaces.</p></div><div class="refsect2" title="gobject.type_register"><a name="function-gobject--type-register"></a><h3>gobject.type_register</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.type_register</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>class</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>class</code></em> :</span></p></td><td>a Python class that is a descendant of <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a></td></tr></tbody></table><p>The <code class="function">gobject.type_register</code>() function
-registers the specified Python <em class="parameter"><code>class</code></em> as a PyGTK type.
-class must be a descendant of <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>. The function generates a name for the new type.</p></div><div class="refsect2" title="gobject.signal_new"><a name="function-gobject--signal-new"></a><h3>gobject.signal_new</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.signal_new</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>signal_name</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>flags</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>return_type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>param_types</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>signal_name</code></em> :</span></p></td><td>a string containing the name of the
-signal</td></tr><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>the object type that the signal is associated
-with</td></tr><tr><td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td><td>the signal flags</td></tr><tr><td><p><span class="term"><em class="parameter"><code>return_type</code></em> :</span></p></td><td>the return type of the signal
-handler</td></tr><tr><td><p><span class="term"><em class="parameter"><code>param_types</code></em> :</span></p></td><td>the parameter types passed to the signal
-handler</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a unique integer signal ID</td></tr></tbody></table><p>The <code class="function">gobject.signal_new</code>() function registers
-a signal with the specified <em class="parameter"><code>signal_name</code></em> for the
-specified object <em class="parameter"><code>type</code></em>. The value of
-<em class="parameter"><code>flags</code></em> is a combination of:</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_RUN_FIRST</code></span></p></td><td>Invoke the object method handler in the first emission
-stage. </td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_RUN_LAST</code></span></p></td><td>Invoke the object method handler in the third emission
-stage.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_RUN_CLEANUP</code></span></p></td><td>Invoke the object method handler in the last emission
-stage.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_NO_RECURSE</code></span></p></td><td>Signals being emitted for an object while currently
-being in emission for this very object will not be emitted recursively, but
-instead cause the first emission to be restarted.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_DETAILED</code></span></p></td><td>This signal supports "::detail" appendixes to the
-signal name upon handler connections and emissions.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_ACTION</code></span></p></td><td>Action signals are signals that may freely be emitted
-on alive objects from user code via <a class="link" href="class-gobject.html#method-gobject--emit" title="gobject.GObject.emit"><code class="methodname">gobject.emit()</code>()</a> 
-and friends, without the need of being embedded into extra code that
-performs pre or post emission adjustments on the object. They can also be
-thought of as generically callable object methods.</td></tr><tr><td><p><span class="term"><code class="literal">gobject.SIGNAL_NO_HOOKS</code></span></p></td><td> No emissions hooks are supported for this
-signal.</td></tr></tbody></table><p><em class="parameter"><code>return_type</code></em> is the type of the return
-value from a signal handler and may be a gobject type, type ID or instance.
-The <em class="parameter"><code>param_types</code></em> parameter is a list of additional
-types that are passed to the signal handler. Each parameter type may be
-specified as a gobject type, type ID or instance. For example, to add a
-signal to the gtk.Window type called "my-signal" that calls a handler with a
-gtk.Button widget and an integer value and a return value  that is a
-boolean, use:</p><pre class="programlisting">
-  gobject.signal_new("my_signal", gtk.Window, gobject.SIGNAL_RUN_LAST, gobject.TYPE_BOOLEAN, (gtk.Button, gobject.TYPE_INT))
-</pre></div><div class="refsect2" title="gobject.signal_list_names"><a name="function-gobject--signal-list-names"></a><h3>gobject.signal_list_names</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.signal_list_names</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>type</code></strong> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of the signal names supported by
-<em class="parameter"><code>type</code></em></td></tr></tbody></table><p>The <code class="function">gobject.signal_list_names</code>() function
-returns a list of the names of the signals that are supported by the
-specified GObject <em class="parameter"><code>type</code></em></p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>The type keyword is available in PyGTK 2.6 and above.</p></div></div><div class="refsect2" title="gobject.signal_list_ids"><a name="function-gobject--signal-list-ids"></a><h3>gobject.signal_list_ids</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.signal_list_ids</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>type</code></strong> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of the signal ids supported by
-<em class="parameter"><code>type</code></em></td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This method is available in PyGTK 2.6 and above.</p></div><p>The <code class="function">gobject.signal_list_ids</code>() function
-returns a list of the integer ids of the signals that are supported by the
-GObject specified by <em class="parameter"><code>type</code></em></p></div><div class="refsect2" title="gobject.signal_lookup"><a name="function-gobject--signal-lookup"></a><h3>gobject.signal_lookup</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.signal_lookup</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>name</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>name</code></strong> :</span></p></td><td>the name of a signal for
-<em class="parameter"><code>type</code></em></td></tr><tr><td><p><span class="term"><strong class="parameter"><code>type</code></strong> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the integer id of a signal supported by
-<em class="parameter"><code>type</code></em> or 0.</td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This method is available in PyGTK 2.6 and above.</p></div><p>The <code class="function">gobject.signal_lookup</code>() function
-returns the id of the signal with the name specified by
-<em class="parameter"><code>name</code></em> that is supported by the GObject specified
-specified by<em class="parameter"><code>type</code></em>. 0 is returned if the signal is not
-found.</p></div><div class="refsect2" title="gobject.signal_name"><a name="function-gobject--signal-name"></a><h3>gobject.signal_name</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.signal_name</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>signal_id</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>signal_id</code></strong> :</span></p></td><td>an integer signal id</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the name of the signal or
-<code class="literal">None</code>.</td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This method is available in PyGTK 2.6 and above.</p></div><p>The <code class="function">gobject.signal_name</code>() function returns
-the name of the signal that has the signal id specified by
-<em class="parameter"><code>id</code></em>.</p></div><div class="refsect2" title="gobject.signal_query"><a name="function-gobject--signal-query1"></a><h3>gobject.signal_query</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.signal_query</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>name</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>name</code></strong> :</span></p></td><td>the name of a signal for
-<em class="parameter"><code>type</code></em></td></tr><tr><td><p><span class="term"><strong class="parameter"><code>type</code></strong> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a 6-tuple containing signal information or
-<code class="literal">None</code></td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This method is available in PyGTK 2.6 and above.</p></div><p>The <code class="function">gobject.signal_query</code>() function returns
-a 6-tuple containing information about the signal with the name specified by
-<em class="parameter"><code>name</code></em> that is supported by the GObject specified by
-<em class="parameter"><code>type</code></em>. If the signal is not found
-<code class="literal">None</code> is returned.</p><p>The signal information 6-tuple contains:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">the integer signal id</li><li class="listitem">the signal name</li><li class="listitem">the GType that the signal is registered for</li><li class="listitem">the signal flags (see the <a class="xref" href="gobject-constants.html#gobject-signal-constants" title="GObject Signal Flag Constants">GObject Signal Flag Constants</a>)</li><li class="listitem">the GType of the return from the signal callback
-function</li><li class="listitem">a tuple containing the GTypes of the parameters that are
-passed to the signal callback function. Note that these may not correspond
-exactly to the <code class="literal">PyGTK</code> signal callback parameters.</li></ul></div></div><div class="refsect2" title="gobject.signal_query"><a name="function-gobject--signal-query2"></a><h3>gobject.signal_query</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.signal_query</span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>signal_id</code></strong></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><strong class="parameter"><code>signal_id</code></strong> :</span></p></td><td>the integer id of a signal</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a 6-tuple containing signal information or
-<code class="literal">None</code></td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This method is available in PyGTK 2.6 and above.</p></div><p>The <code class="function">gobject.signal_query</code>() function returns
-a 6-tuple containing information about the signal with the id specified by
-<em class="parameter"><code>signal_id</code></em>. If the signal is not found
-<code class="literal">None</code> is returned.</p><p>The signal information 6-tuple contains:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">the integer signal id</li><li class="listitem">the signal name</li><li class="listitem">the GType that the signal is registered for</li><li class="listitem">the signal flags (see the <a class="xref" href="gobject-constants.html#gobject-signal-constants" title="GObject Signal Flag Constants">GObject Signal Flag Constants</a>)</li><li class="listitem">the GType of the return from the signal callback
-function</li><li class="listitem">a tuple containing the GTypes of the parameters that are
-passed to the signal callback function. Note that these may not correspond
-exactly to the <code class="literal">PyGTK</code> signal callback parameters.</li></ul></div></div><div class="refsect2" title="gobject.list_properties"><a name="function-gobject--list-properties"></a><h3>gobject.list_properties</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.list_properties</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a list of the properties (as GParam objects)
-supported by <em class="parameter"><code>type</code></em></td></tr></tbody></table><p>The <code class="function">gobject.list_properties</code>() function
-returns a list of the properties (as GParam objects) supported by
-<em class="parameter"><code>type</code></em>.</p></div><div class="refsect2" title="gobject.new"><a name="function-gobject--new"></a><h3>gobject.new</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.new</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td><td>a GObject type, type ID or
-instance</td></tr><tr><td><p><span class="term"><em class="parameter"><code>...</code></em> :</span></p></td><td>zero or more property-value
-pairs</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>a new object if the specified
-<em class="parameter"><code>type</code></em></td></tr></tbody></table><p>The <code class="function">gobject.new</code>() function returns a new
-object of the specified <em class="parameter"><code>type</code></em>. type must specify a
-type that is a descendant of <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>. A
-TypeError exception is raised if <em class="parameter"><code>type</code></em> specifies an
-abstract class or a type that is not a descendant of <a class="link" href="class-gobject.html" title="gobject.GObject"><code class="classname">gobject.GObject</code></a>. A set
-of property-value pairs may be specified to set the value of the object's
-properties.</p></div><div class="refsect2" title="gobject.signal_accumulator_true_handled"><a name="function-gobject--signal-accumulator-true-handled"></a><h3>gobject.signal_accumulator_true_handled</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.signal_accumulator_true_handled</span>()</code></pre><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.8 and above.</p></div><p>The <code class="function">signal_accumulator_true_handled</code>()
-      function is only used as accumulator argument when registering
-      signals.</p></div><div class="refsect2" title="gobject.add_emission_hook"><a name="function-gobject--add-emission-hook"></a><h3>gobject.add_emission_hook</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.add_emission_hook</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>name</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>callback</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>...</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>type</em></span> :</span></p></td><td>a Python GObject instance or
-          type</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>name</em></span> :</span></p></td><td>a signal name</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>callback</em></span> :</span></p></td><td>a function</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>...</em></span> :</span></p></td><td>zero or more extra arguments that will be
-          passed to callback.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td>the hook id, for later use with <PYGTKDOCLINK HREF="function-gobject--signal-remove-emission-hook"><code class="function">gobject.signal_remove_emission_hook</code>()</PYGTKDOCLINK>.</td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.8 and above.</p></div><p>The <code class="function">add_emission_hook</code>() function adds an
-      emission hook for the signal specified by <em class="parameter"><code>name</code></em>,
-      which will get called for any emission of that signal, independent of
-      the instance. This is possible only for signals which don't have the
-      <code class="literal">gobject.SIGNAL_NO_HOOKS</code> flag set.</p></div><div class="refsect2" title="gobject.remove_emission_hook"><a name="function-gobject--remove-emission-hook"></a><h3>gobject.remove_emission_hook</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject.remove_emission_hook</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>type</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>name</code></em></span></span>, <span class="methodparam"><span class="parameter"><em class="parameter"><code>hook_id</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>type</em></span> :</span></p></td><td>a Python GObject instance or
-          type</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>name</em></span> :</span></p></td><td>a signal name</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>hook_id</em></span> :</span></p></td><td>the id of the emission hook as returned by the
-          <a class="link" href="gobject-functions.html#function-gobject--add-emission-hook" title="gobject.add_emission_hook"><code class="function">gobject.add_emission_hook</code>()</a>)
-          function.</td></tr><tr><td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td><td></td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.8 and above.</p></div><p>The <code class="function">remove_emission_hook</code>() function deletes
-      an emission hook.</p></div><div class="refsect2" title="gobject._install_metaclass"><a name="function-gobject---install-metaclass"></a><h3>gobject._install_metaclass</h3><pre class="programlisting"><code class="methodsynopsis">    def <span class="methodname">gobject._install_metaclass</span>(<span class="methodparam"><span class="parameter"><em class="parameter"><code>metaclass</code></em></span></span>)</code></pre><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term"><span class="emphasis"><em>metaclass</em></span> :</span></p></td><td></td></tr></tbody></table><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This function is available in PyGTK 2.10 and above.</p></div><p>The <code class="function">_install_metaclass</code>() function installs
-      the metaclass specified by <em class="parameter"><code>metaclass</code></em>.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class-gobjectginterface.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="gobject-class-reference.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="gobject-constants.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">gobject.GInterface </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> gobject Constants</td></tr></table></div></body></html>
diff --git a/docs/html/index.html b/docs/html/index.html
deleted file mode 100644 (file)
index f5b135d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>PyGObject Reference Manual</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><meta name="description" content="This reference describes the classes of the python gobject module."><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="next" href="pygobject-introduction.html" title="Introduction"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">PyGObject Reference Manual</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="pygobject-introduction.html">Next</a></td></tr></table><hr></div><div class="book" title="PyGObject Reference Manual"><div class="titlepage"><div><div><h1 class="title"><a name="pygobject-reference"></a>PyGObject Reference Manual</h1></div><div><p class="releaseinfo">for PyGObject version 2.28.6</p></div><div><p class="pubdate">2011-06-13
-</p></div><div><div class="abstract" title="Abstract"><p class="title"><b>Abstract</b></p><p>This reference describes the classes of the python gobject
-module.</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="pygobject-introduction.html">Introduction</a></span></dt><dd><dl><dt><span class="sect1"><a href="pygobject-introduction.html#pygobject-reference-format">Reference Page Format</a></span></dt></dl></dd><dt><span class="chapter"><a href="glib-class-reference.html">PyGlibClass Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="class-glibmaincontext.html">glib.MainContext</a></span><span class="refpurpose"> â€” an object representing a set of event sources to be handled
-in a <a class="link" href="class-glibmainloop.html" title="glib.MainLoop"><code class="classname">glib.MainLoop</code></a>.</span></dt><dt><span class="refentrytitle"><a href="class-glibmainloop.html">glib.MainLoop</a></span><span class="refpurpose"> â€” an object representing the main event loop of a PyGTK
-    application.</span></dt><dt><span class="refentrytitle"><a href="glib-functions.html">glib Functions</a></span><span class="refpurpose"> â€” miscellaneous functions</span></dt><dt><span class="refentrytitle"><a href="glib-constants.html">glib Constants</a></span><span class="refpurpose"> â€” the built-in constants of the glib module</span></dt></dl></dd><dt><span class="chapter"><a href="gobject-class-reference.html">PyGObject Class Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="class-gobject.html">gobject.GObject</a></span><span class="refpurpose"> â€” the base class</span></dt><dt><span class="refentrytitle"><a href="class-gobjectgboxed.html">gobject.GBoxed</a></span><span class="refpurpose"> â€” an object containing an opaque chunk of data</span></dt><dt><span class="refentrytitle"><a href="class-gobjectgpointer.html">gobject.GPointer</a></span><span class="refpurpose"> â€” an object containing a completely opaque chunk of
-    data</span></dt><dt><span class="refentrytitle"><a href="class-gobjectginterface.html">gobject.GInterface</a></span><span class="refpurpose"> â€” an object representing a GInterface</span></dt><dt><span class="refentrytitle"><a href="gobject-functions.html">gobject Functions</a></span><span class="refpurpose"> â€” miscellaneous functions</span></dt><dt><span class="refentrytitle"><a href="gobject-constants.html">gobject Constants</a></span><span class="refpurpose"> â€” the built-in constants of the gobject module</span></dt></dl></dd><dt><span class="chapter"><a href="gio-class-reference.html">PyGio Class Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="class-gioappinfo.html">gio.AppInfo</a></span><span class="refpurpose"> â€” Information about an installed application and methods to launch it (with file arguments).</span></dt><dt><span class="refentrytitle"><a href="class-gioapplaunchcontext.html">gio.AppLaunchContext</a></span><span class="refpurpose"> â€” Application launch context.</span></dt><dt><span class="refentrytitle"><a href="class-gioasyncresult.html">gio.AsyncResult</a></span><span class="refpurpose"> â€” Asynchronous Function Results.</span></dt><dt><span class="refentrytitle"><a href="class-giobufferedinputstream.html">gio.BufferedInputStream</a></span><span class="refpurpose"> â€” Buffered Input Stream</span></dt><dt><span class="refentrytitle"><a href="class-giobufferedoutputstream.html">gio.BufferedOutputStream</a></span><span class="refpurpose"> â€” Buffered Output Stream</span></dt><dt><span class="refentrytitle"><a href="class-giocancellable.html">gio.Cancellable</a></span><span class="refpurpose"> â€” Thread-safe Operation Cancellation Stack.</span></dt><dt><span class="refentrytitle"><a href="class-giodatainputstream.html">gio.DataInputStream</a></span><span class="refpurpose"> â€” Data Input Stream</span></dt><dt><span class="refentrytitle"><a href="class-giodataoutputstream.html">gio.DataOutputStream</a></span><span class="refpurpose"> â€” Data Output Stream</span></dt><dt><span class="refentrytitle"><a href="class-giodrive.html">gio.Drive</a></span><span class="refpurpose"> â€” Virtual File System drive management.</span></dt><dt><span class="refentrytitle"><a href="class-gioemblem.html">gio.Emblem</a></span><span class="refpurpose"> â€” An object for emblems.</span></dt><dt><span class="refentrytitle"><a href="class-gioemblemedicon.html">gio.EmblemedIcon</a></span><span class="refpurpose"> â€” Icon with emblems.</span></dt><dt><span class="refentrytitle"><a href="class-giofile.html">gio.File</a></span><span class="refpurpose"> â€” File and Directory Handling.</span></dt><dt><span class="refentrytitle"><a href="class-giofileattributeinfo.html">gio.FileAttributeInfo</a></span><span class="refpurpose"> â€” Information about a specific attribute.</span></dt><dt><span class="refentrytitle"><a href="class-giofileenumerator.html">gio.FileEnumerator</a></span><span class="refpurpose"> â€” Enumerated Files Routines.</span></dt><dt><span class="refentrytitle"><a href="class-giofileicon.html">gio.FileIcon</a></span><span class="refpurpose"> â€” Icons pointing to an image file.</span></dt><dt><span class="refentrytitle"><a href="class-giofileinfo.html">gio.FileInfo</a></span><span class="refpurpose"> â€” File Information and Attributes</span></dt><dt><span class="refentrytitle"><a href="class-giofileinputstream.html">gio.FileInputStream</a></span><span class="refpurpose"> â€” Base class for implementing streaming input</span></dt><dt><span class="refentrytitle"><a href="class-giofilemonitor.html">gio.FileMonitor</a></span><span class="refpurpose"> â€” File Monitor</span></dt><dt><span class="refentrytitle"><a href="class-giofileoutputstream.html">gio.FileOutputStream</a></span><span class="refpurpose"> â€” Base class for implementing streaming input</span></dt><dt><span class="refentrytitle"><a href="class-giofilterinputstream.html">gio.FilterInputStream</a></span><span class="refpurpose"> â€” Filter Input Stream</span></dt><dt><span class="refentrytitle"><a href="class-giofilteroutputstream.html">gio.FilterOutputStream</a></span><span class="refpurpose"> â€” Filter Output Stream</span></dt><dt><span class="refentrytitle"><a href="class-gioicon.html">gio.Icon</a></span><span class="refpurpose"> â€” Interface for icons.</span></dt><dt><span class="refentrytitle"><a href="class-gioinputstream.html">gio.InputStream</a></span><span class="refpurpose"> â€” Base class for implementing streaming input</span></dt><dt><span class="refentrytitle"><a href="class-gioloadableicon.html">gio.LoadableIcon</a></span><span class="refpurpose"> â€” Interface for icons.</span></dt><dt><span class="refentrytitle"><a href="class-giomemoryinputstream.html">gio.MemoryInputStream</a></span><span class="refpurpose"> â€” Base class for implementing streaming input</span></dt><dt><span class="refentrytitle"><a href="class-giomemoryoutputstream.html">gio.MemoryOutputStream</a></span><span class="refpurpose"> â€” Streaming output operations on memory chunks</span></dt><dt><span class="refentrytitle"><a href="class-giomount.html">gio.Mount</a></span><span class="refpurpose"> â€” Mount management</span></dt><dt><span class="refentrytitle"><a href="class-giomountoperation.html">gio.MountOperation</a></span><span class="refpurpose"> â€” Authentication methods for mountable locations.</span></dt><dt><span class="refentrytitle"><a href="class-giooutputstream.html">gio.OutputStream</a></span><span class="refpurpose"> â€” Base class for implementing streaming input</span></dt><dt><span class="refentrytitle"><a href="class-gioseekable.html">gio.Seekable</a></span><span class="refpurpose"> â€” Stream seeking interface.</span></dt><dt><span class="refentrytitle"><a href="class-giosimpleasyncresult.html">gio.SimpleAsyncResult</a></span><span class="refpurpose"> â€” Simple asynchronous results implementation.</span></dt><dt><span class="refentrytitle"><a href="class-giothemedicon.html">gio.ThemedIcon</a></span><span class="refpurpose"> â€” Icon theming support.</span></dt><dt><span class="refentrytitle"><a href="class-giovolume.html">gio.Volume</a></span><span class="refpurpose"> â€” Volume management.</span></dt><dt><span class="refentrytitle"><a href="class-giovolumemonitor.html">gio.VolumeMonitor</a></span><span class="refpurpose"> â€” Volume Monitor.</span></dt><dt><span class="refentrytitle"><a href="gio-functions.html">gio Functions</a></span><span class="refpurpose"></span></dt><dt><span class="refentrytitle"><a href="gio-constants.html">gio Constants</a></span><span class="refpurpose"> â€” the built-in constants of the gio module</span></dt></dl></dd><dt><span class="chapter"><a href="giounix-class-reference.html">PyGio Unix Class Reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="class-giounixinputstream.html">gio.unix.InputStream</a></span><span class="refpurpose"> â€” Streaming input operations for UNIX file descriptors.</span></dt><dt><span class="refentrytitle"><a href="class-giounixoutputstream.html">gio.unix.OutputStream</a></span><span class="refpurpose"> â€” Streaming output operations for UNIX file descriptors.</span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="pygobject-introduction.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Introduction</td></tr></table></div></body></html>
diff --git a/docs/html/index.sgml b/docs/html/index.sgml
deleted file mode 100644 (file)
index e9b5432..0000000
+++ /dev/null
@@ -1,532 +0,0 @@
-<ANCHOR id="pygobject-reference" href="pygobject/index.html">
-        <ANCHOR id="class-glibmaincontext" href="pygobject/class-glibmaincontext.html">
-        <ANCHOR id="constructor-glibmaincontext" href="pygobject/class-glibmaincontext.html#constructor-glibmaincontext">
-        <ANCHOR id="method-glibmaincontext--iteration" href="pygobject/class-glibmaincontext.html#method-glibmaincontext--iteration">
-        <ANCHOR id="method-glibmaincontext--pending" href="pygobject/class-glibmaincontext.html#method-glibmaincontext--pending">
-        <ANCHOR id="class-glibmainloop" href="pygobject/class-glibmainloop.html">
-        <ANCHOR id="constructor-glibmainloop" href="pygobject/class-glibmainloop.html#constructor-glibmainloop">
-        <ANCHOR id="method-glibmainloop--get-context" href="pygobject/class-glibmainloop.html#method-glibmainloop--get-context">
-        <ANCHOR id="method-glibmainloop--is-running" href="pygobject/class-glibmainloop.html#method-glibmainloop--is-running">
-        <ANCHOR id="method-glibmainloop--quit" href="pygobject/class-glibmainloop.html#method-glibmainloop--quit">
-        <ANCHOR id="method-glibmainloop--run" href="pygobject/class-glibmainloop.html#method-glibmainloop--run">
-        <ANCHOR id="glib-functions" href="pygobject/glib-functions.html">
-        <ANCHOR id="function-glib--idle-add" href="pygobject/glib-functions.html#function-glib--idle-add">
-        <ANCHOR id="function-glib--timeout-add" href="pygobject/glib-functions.html#function-glib--timeout-add">
-        <ANCHOR id="function-glib--timeout-add-seconds" href="pygobject/glib-functions.html#function-glib--timeout-add-seconds">
-        <ANCHOR id="function-glib--io-add-watch" href="pygobject/glib-functions.html#function-glib--io-add-watch">
-        <ANCHOR id="function-glib--source-remove" href="pygobject/glib-functions.html#function-glib--source-remove">
-        <ANCHOR id="function-glib--main-context-default" href="pygobject/glib-functions.html#function-glib--main-context-default">
-        <ANCHOR id="function-glib--markup-escape-text" href="pygobject/glib-functions.html#function-glib--markup-escape-text">
-        <ANCHOR id="function-glib--child-watch-add" href="pygobject/glib-functions.html#function-glib--child-watch-add">
-        <ANCHOR id="function-glib--spawn-async" href="pygobject/glib-functions.html#function-glib--spawn-async">
-        <ANCHOR id="function-glib--get-current-time" href="pygobject/glib-functions.html#function-glib--get-current-time">
-        <ANCHOR id="function-glib--get-user-cache-dir" href="pygobject/glib-functions.html#function-glib--get-user-cache-dir">
-        <ANCHOR id="function-glib--get-user-config-dir" href="pygobject/glib-functions.html#function-glib--get-user-config-dir">
-        <ANCHOR id="function-glib--get-user-data-dir" href="pygobject/glib-functions.html#function-glib--get-user-data-dir">
-        <ANCHOR id="function-glib--get-user-special-dir" href="pygobject/glib-functions.html#function-glib--get-user-special-dir">
-        <ANCHOR id="function-glib--main-depth" href="pygobject/glib-functions.html#function-glib--main-depth">
-        <ANCHOR id="function-glib--threads-init" href="pygobject/glib-functions.html#function-glib--threads-init">
-        <ANCHOR id="function-glib--signal-accumulator-true-handled" href="pygobject/glib-functions.html#function-glib--signal-accumulator-true-handled">
-        <ANCHOR id="function-glib--filename-display-name" href="pygobject/glib-functions.html#function-glib--filename-display-name">
-        <ANCHOR id="function-glib--filename-display-basename" href="pygobject/glib-functions.html#function-glib--filename-display-basename">
-        <ANCHOR id="function-glib--filename-from-utf8" href="pygobject/glib-functions.html#function-glib--filename-from-utf8">
-        <ANCHOR id="glib-constants" href="pygobject/glib-constants.html">
-        <ANCHOR id="glib-constants-description" href="pygobject/glib-constants.html#glib-constants-description">
-        <ANCHOR id="glib-io-condition-constants" href="pygobject/glib-constants.html#glib-io-condition-constants">
-        <ANCHOR id="glib-priority-constants" href="pygobject/glib-constants.html#glib-priority-constants">
-        <ANCHOR id="glib-spawn-flag-constants" href="pygobject/glib-constants.html#glib-spawn-flag-constants">
-        <ANCHOR id="glib-user-directory-constants" href="pygobject/glib-constants.html#glib-user-directory-constants">
-        <ANCHOR id="glib-version-constants" href="pygobject/glib-constants.html#glib-version-constants">
-        <ANCHOR id="class-gobject" href="pygobject/class-gobject.html">
-        <ANCHOR id="signal-prototypes-gobject" href="pygobject/class-gobject.html#signal-prototypes-gobject">
-        <ANCHOR id="method-gobject--get-property" href="pygobject/class-gobject.html#method-gobject--get-property">
-        <ANCHOR id="method-gobject--get-properties" href="pygobject/class-gobject.html#method-gobject--get-properties">
-        <ANCHOR id="method-gobject--set-property" href="pygobject/class-gobject.html#method-gobject--set-property">
-        <ANCHOR id="method-gobject--set-properties" href="pygobject/class-gobject.html#method-gobject--set-properties">
-        <ANCHOR id="method-gobject--freeze-notify" href="pygobject/class-gobject.html#method-gobject--freeze-notify">
-        <ANCHOR id="method-gobject--notify" href="pygobject/class-gobject.html#method-gobject--notify">
-        <ANCHOR id="method-gobject--thaw-notify" href="pygobject/class-gobject.html#method-gobject--thaw-notify">
-        <ANCHOR id="method-gobject--get-data" href="pygobject/class-gobject.html#method-gobject--get-data">
-        <ANCHOR id="method-gobject--set-data" href="pygobject/class-gobject.html#method-gobject--set-data">
-        <ANCHOR id="method-gobject--connect" href="pygobject/class-gobject.html#method-gobject--connect">
-        <ANCHOR id="method-gobject--connect-after" href="pygobject/class-gobject.html#method-gobject--connect-after">
-        <ANCHOR id="method-gobject--connect-object" href="pygobject/class-gobject.html#method-gobject--connect-object">
-        <ANCHOR id="method-gobject--connect-object-after" href="pygobject/class-gobject.html#method-gobject--connect-object-after">
-        <ANCHOR id="method-gobject--disconnect" href="pygobject/class-gobject.html#method-gobject--disconnect">
-        <ANCHOR id="method-gobject--handler-disconnect" href="pygobject/class-gobject.html#method-gobject--handler-disconnect">
-        <ANCHOR id="method-gobject--handler-is-connected" href="pygobject/class-gobject.html#method-gobject--handler-is-connected">
-        <ANCHOR id="method-gobject--handler-block" href="pygobject/class-gobject.html#method-gobject--handler-block">
-        <ANCHOR id="method-gobject--handler-unblock" href="pygobject/class-gobject.html#method-gobject--handler-unblock">
-        <ANCHOR id="method-gobject--handler-block-by-func" href="pygobject/class-gobject.html#method-gobject--handler-block-by-func">
-        <ANCHOR id="method-gobject--handler-unblock-by-func" href="pygobject/class-gobject.html#method-gobject--handler-unblock-by-func">
-        <ANCHOR id="method-gobject--emit" href="pygobject/class-gobject.html#method-gobject--emit">
-        <ANCHOR id="method-gobject--stop-emission" href="pygobject/class-gobject.html#method-gobject--stop-emission">
-        <ANCHOR id="method-gobject--emit-stop-by-name" href="pygobject/class-gobject.html#method-gobject--emit-stop-by-name">
-        <ANCHOR id="method-gobject--chain" href="pygobject/class-gobject.html#method-gobject--chain">
-        <ANCHOR id="signal-gobject--notify" href="pygobject/class-gobject.html#signal-gobject--notify">
-        <ANCHOR id="class-gobjectgboxed" href="pygobject/class-gobjectgboxed.html">
-        <ANCHOR id="method-gobjectgboxed--copy" href="pygobject/class-gobjectgboxed.html#method-gobjectgboxed--copy">
-        <ANCHOR id="class-gobjectgpointer" href="pygobject/class-gobjectgpointer.html">
-        <ANCHOR id="class-gobjectginterface" href="pygobject/class-gobjectginterface.html">
-        <ANCHOR id="gobject-functions" href="pygobject/gobject-functions.html">
-        <ANCHOR id="function-gobject--type-name" href="pygobject/gobject-functions.html#function-gobject--type-name">
-        <ANCHOR id="function-gobject--type-from-name" href="pygobject/gobject-functions.html#function-gobject--type-from-name">
-        <ANCHOR id="function-gobject--type-parent" href="pygobject/gobject-functions.html#function-gobject--type-parent">
-        <ANCHOR id="function-gobject--type-is-a" href="pygobject/gobject-functions.html#function-gobject--type-is-a">
-        <ANCHOR id="function-gobject--type-children" href="pygobject/gobject-functions.html#function-gobject--type-children">
-        <ANCHOR id="function-gobject--type-interfaces" href="pygobject/gobject-functions.html#function-gobject--type-interfaces">
-        <ANCHOR id="function-gobject--type-register" href="pygobject/gobject-functions.html#function-gobject--type-register">
-        <ANCHOR id="function-gobject--signal-new" href="pygobject/gobject-functions.html#function-gobject--signal-new">
-        <ANCHOR id="function-gobject--signal-list-names" href="pygobject/gobject-functions.html#function-gobject--signal-list-names">
-        <ANCHOR id="function-gobject--signal-list-ids" href="pygobject/gobject-functions.html#function-gobject--signal-list-ids">
-        <ANCHOR id="function-gobject--signal-lookup" href="pygobject/gobject-functions.html#function-gobject--signal-lookup">
-        <ANCHOR id="function-gobject--signal-name" href="pygobject/gobject-functions.html#function-gobject--signal-name">
-        <ANCHOR id="function-gobject--signal-query1" href="pygobject/gobject-functions.html#function-gobject--signal-query1">
-        <ANCHOR id="function-gobject--signal-query2" href="pygobject/gobject-functions.html#function-gobject--signal-query2">
-        <ANCHOR id="function-gobject--list-properties" href="pygobject/gobject-functions.html#function-gobject--list-properties">
-        <ANCHOR id="function-gobject--new" href="pygobject/gobject-functions.html#function-gobject--new">
-        <ANCHOR id="function-gobject--signal-accumulator-true-handled" href="pygobject/gobject-functions.html#function-gobject--signal-accumulator-true-handled">
-        <ANCHOR id="function-gobject--add-emission-hook" href="pygobject/gobject-functions.html#function-gobject--add-emission-hook">
-        <ANCHOR id="function-gobject--remove-emission-hook" href="pygobject/gobject-functions.html#function-gobject--remove-emission-hook">
-        <ANCHOR id="function-gobject---install-metaclass" href="pygobject/gobject-functions.html#function-gobject---install-metaclass">
-        <ANCHOR id="gobject-constants" href="pygobject/gobject-constants.html">
-        <ANCHOR id="gobject-constants-description" href="pygobject/gobject-constants.html#gobject-constants-description">
-        <ANCHOR id="gobject-param-constants" href="pygobject/gobject-constants.html#gobject-param-constants">
-        <ANCHOR id="gobject-signal-constants" href="pygobject/gobject-constants.html#gobject-signal-constants">
-        <ANCHOR id="gobject-spawn-flag-constants" href="pygobject/gobject-constants.html#gobject-spawn-flag-constants">
-        <ANCHOR id="gobject-type-constants" href="pygobject/gobject-constants.html#gobject-type-constants">
-        <ANCHOR id="gobject-version-constants" href="pygobject/gobject-constants.html#gobject-version-constants">
-        <ANCHOR id="class-gioappinfo" href="pygobject/class-gioappinfo.html">
-        <ANCHOR id="constructor-gioappinfo" href="pygobject/class-gioappinfo.html#constructor-gioappinfo">
-        <ANCHOR id="method-gioappinfo--add-supports-type" href="pygobject/class-gioappinfo.html#method-gioappinfo--add-supports-type">
-        <ANCHOR id="method-gioappinfo--can-delete" href="pygobject/class-gioappinfo.html#method-gioappinfo--can-delete">
-        <ANCHOR id="method-gioappinfo--can-remove-supports-type" href="pygobject/class-gioappinfo.html#method-gioappinfo--can-remove-supports-type">
-        <ANCHOR id="method-gioappinfo--delete" href="pygobject/class-gioappinfo.html#method-gioappinfo--delete">
-        <ANCHOR id="method-gioappinfo--dup" href="pygobject/class-gioappinfo.html#method-gioappinfo--dup">
-        <ANCHOR id="method-gioappinfo--equal" href="pygobject/class-gioappinfo.html#method-gioappinfo--equal">
-        <ANCHOR id="method-gioappinfo--get-commandline" href="pygobject/class-gioappinfo.html#method-gioappinfo--get-commandline">
-        <ANCHOR id="method-gioappinfo--get-description" href="pygobject/class-gioappinfo.html#method-gioappinfo--get-description">
-        <ANCHOR id="method-gioappinfo--get-executable" href="pygobject/class-gioappinfo.html#method-gioappinfo--get-executable">
-        <ANCHOR id="method-gioappinfo--get-icon" href="pygobject/class-gioappinfo.html#method-gioappinfo--get-icon">
-        <ANCHOR id="method-gioappinfo--get-id" href="pygobject/class-gioappinfo.html#method-gioappinfo--get-id">
-        <ANCHOR id="method-gioappinfo--get-name" href="pygobject/class-gioappinfo.html#method-gioappinfo--get-name">
-        <ANCHOR id="method-gioappinfo--launch" href="pygobject/class-gioappinfo.html#method-gioappinfo--launch">
-        <ANCHOR id="method-gioappinfo--launch-uris" href="pygobject/class-gioappinfo.html#method-gioappinfo--launch-uris">
-        <ANCHOR id="method-gioappinfo--remove-supports-type" href="pygobject/class-gioappinfo.html#method-gioappinfo--remove-supports-type">
-        <ANCHOR id="method-gioappinfo--set-as-default-for-extension" href="pygobject/class-gioappinfo.html#method-gioappinfo--set-as-default-for-extension">
-        <ANCHOR id="method-gioappinfo--set-as-default-for-type" href="pygobject/class-gioappinfo.html#method-gioappinfo--set-as-default-for-type">
-        <ANCHOR id="method-gioappinfo--should-show" href="pygobject/class-gioappinfo.html#method-gioappinfo--should-show">
-        <ANCHOR id="method-gioappinfo--supports-files" href="pygobject/class-gioappinfo.html#method-gioappinfo--supports-files">
-        <ANCHOR id="method-gioappinfo--supports-uris" href="pygobject/class-gioappinfo.html#method-gioappinfo--supports-uris">
-        <ANCHOR id="function-gio--app-info-get-all" href="pygobject/class-gioappinfo.html#function-gio--app-info-get-all">
-        <ANCHOR id="function-gio--app-info-get-all-for-type" href="pygobject/class-gioappinfo.html#function-gio--app-info-get-all-for-type">
-        <ANCHOR id="function-gio--app-info-get-default-for-type" href="pygobject/class-gioappinfo.html#function-gio--app-info-get-default-for-type">
-        <ANCHOR id="function-gio--app-info-get-default-for-uri-scheme" href="pygobject/class-gioappinfo.html#function-gio--app-info-get-default-for-uri-scheme">
-        <ANCHOR id="function-gio--app-info-reset-type-association" href="pygobject/class-gioappinfo.html#function-gio--app-info-reset-type-association">
-        <ANCHOR id="class-gioapplaunchcontext" href="pygobject/class-gioapplaunchcontext.html">
-        <ANCHOR id="constructor-gioapplaunchcontext" href="pygobject/class-gioapplaunchcontext.html#constructor-gioapplaunchcontext">
-        <ANCHOR id="method-gioapplaunchcontext--get-display" href="pygobject/class-gioapplaunchcontext.html#method-gioapplaunchcontext--get-display">
-        <ANCHOR id="method-gioapplaunchcontext--get-startup-notify-id" href="pygobject/class-gioapplaunchcontext.html#method-gioapplaunchcontext--get-startup-notify-id">
-        <ANCHOR id="method-gioapplaunchcontext--launch-failed" href="pygobject/class-gioapplaunchcontext.html#method-gioapplaunchcontext--launch-failed">
-        <ANCHOR id="class-gioasyncresult" href="pygobject/class-gioasyncresult.html">
-        <ANCHOR id="method-gioasyncresult--get-source-object" href="pygobject/class-gioasyncresult.html#method-gioasyncresult--get-source-object">
-        <ANCHOR id="class-giobufferedinputstream" href="pygobject/class-giobufferedinputstream.html">
-        <ANCHOR id="properties-giobufferedinputstream" href="pygobject/class-giobufferedinputstream.html#properties-giobufferedinputstream">
-        <ANCHOR id="constructor-giobufferedinputstream" href="pygobject/class-giobufferedinputstream.html#constructor-giobufferedinputstream">
-        <ANCHOR id="method-giobufferedinputstream--fill" href="pygobject/class-giobufferedinputstream.html#method-giobufferedinputstream--fill">
-        <ANCHOR id="method-giobufferedinputstream--fill-async" href="pygobject/class-giobufferedinputstream.html#method-giobufferedinputstream--fill-async">
-        <ANCHOR id="method-giobufferedinputstream--fill-finish" href="pygobject/class-giobufferedinputstream.html#method-giobufferedinputstream--fill-finish">
-        <ANCHOR id="method-giobufferedinputstream--get-available" href="pygobject/class-giobufferedinputstream.html#method-giobufferedinputstream--get-available">
-        <ANCHOR id="method-giobufferedinputstream--get-buffer-size" href="pygobject/class-giobufferedinputstream.html#method-giobufferedinputstream--get-buffer-size">
-        <ANCHOR id="method-giobufferedinputstream--read-byte" href="pygobject/class-giobufferedinputstream.html#method-giobufferedinputstream--read-byte">
-        <ANCHOR id="method-giobufferedinputstream--set-buffer-size" href="pygobject/class-giobufferedinputstream.html#method-giobufferedinputstream--set-buffer-size">
-        <ANCHOR id="function-gio--buffered-input-stream-new-sized" href="pygobject/class-giobufferedinputstream.html#function-gio--buffered-input-stream-new-sized">
-        <ANCHOR id="class-giobufferedoutputstream" href="pygobject/class-giobufferedoutputstream.html">
-        <ANCHOR id="properties-giobufferedoutputstream" href="pygobject/class-giobufferedoutputstream.html#properties-giobufferedoutputstream">
-        <ANCHOR id="constructor-giobufferedoutputstream" href="pygobject/class-giobufferedoutputstream.html#constructor-giobufferedoutputstream">
-        <ANCHOR id="method-giobufferedoutputstream--get-auto-grow" href="pygobject/class-giobufferedoutputstream.html#method-giobufferedoutputstream--get-auto-grow">
-        <ANCHOR id="method-giobufferedoutputstream--get-buffer-size" href="pygobject/class-giobufferedoutputstream.html#method-giobufferedoutputstream--get-buffer-size">
-        <ANCHOR id="method-giobufferedoutputstream--set-auto-grow" href="pygobject/class-giobufferedoutputstream.html#method-giobufferedoutputstream--set-auto-grow">
-        <ANCHOR id="method-giobufferedoutputstream--set-buffer-size" href="pygobject/class-giobufferedoutputstream.html#method-giobufferedoutputstream--set-buffer-size">
-        <ANCHOR id="function-gio--buffered-output-stream-new-sized" href="pygobject/class-giobufferedoutputstream.html#function-gio--buffered-output-stream-new-sized">
-        <ANCHOR id="class-giocancellable" href="pygobject/class-giocancellable.html">
-        <ANCHOR id="constructor-giocancellable" href="pygobject/class-giocancellable.html#constructor-giocancellable">
-        <ANCHOR id="method-giocancellable--cancel" href="pygobject/class-giocancellable.html#method-giocancellable--cancel">
-        <ANCHOR id="method-giocancellable--get-fd" href="pygobject/class-giocancellable.html#method-giocancellable--get-fd">
-        <ANCHOR id="method-giocancellable--is-cancelled" href="pygobject/class-giocancellable.html#method-giocancellable--is-cancelled">
-        <ANCHOR id="method-giocancellable--pop-current" href="pygobject/class-giocancellable.html#method-giocancellable--pop-current">
-        <ANCHOR id="method-giocancellable--push-current" href="pygobject/class-giocancellable.html#method-giocancellable--push-current">
-        <ANCHOR id="method-giocancellable--reset" href="pygobject/class-giocancellable.html#method-giocancellable--reset">
-        <ANCHOR id="method-giocancellable--set-error-if-cancelled" href="pygobject/class-giocancellable.html#method-giocancellable--set-error-if-cancelled">
-        <ANCHOR id="function-gio--cancellable-get-current" href="pygobject/class-giocancellable.html#function-gio--cancellable-get-current">
-        <ANCHOR id="class-giodatainputstream" href="pygobject/class-giodatainputstream.html">
-        <ANCHOR id="properties-giodatainputstream" href="pygobject/class-giodatainputstream.html#properties-giodatainputstream">
-        <ANCHOR id="constructor-giodatainputstream" href="pygobject/class-giodatainputstream.html#constructor-giodatainputstream">
-        <ANCHOR id="method-giodatainputstream--get-byte-order" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--get-byte-order">
-        <ANCHOR id="method-giodatainputstream--get-newline-type" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--get-newline-type">
-        <ANCHOR id="method-giodatainputstream--read-byte" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-byte">
-        <ANCHOR id="method-giodatainputstream--read-int16" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-int16">
-        <ANCHOR id="method-giodatainputstream--read-int32" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-int32">
-        <ANCHOR id="method-giodatainputstream--read-int64" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-int64">
-        <ANCHOR id="method-giodatainputstream--read-line" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-line">
-        <ANCHOR id="method-giodatainputstream--read-line-async" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-line-async">
-        <ANCHOR id="method-giodatainputstream--read-line-finish" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-line-finish">
-        <ANCHOR id="method-giodatainputstream--read-uint16" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-uint16">
-        <ANCHOR id="method-giodatainputstream--read-uint32" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-uint32">
-        <ANCHOR id="method-giodatainputstream--read-uint64" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-uint64">
-        <ANCHOR id="method-giodatainputstream--read-until" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-until">
-        <ANCHOR id="method-giodatainputstream--read-until-async" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-until-async">
-        <ANCHOR id="method-giodatainputstream--read-until-finish" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--read-until-finish">
-        <ANCHOR id="method-giodatainputstream--set-byte-order" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--set-byte-order">
-        <ANCHOR id="method-giodatainputstream--set-newline-type" href="pygobject/class-giodatainputstream.html#method-giodatainputstream--set-newline-type">
-        <ANCHOR id="class-giodataoutputstream" href="pygobject/class-giodataoutputstream.html">
-        <ANCHOR id="properties-giodataoutputstream" href="pygobject/class-giodataoutputstream.html#properties-giodataoutputstream">
-        <ANCHOR id="constructor-giodataoutputstream" href="pygobject/class-giodataoutputstream.html#constructor-giodataoutputstream">
-        <ANCHOR id="method-giodataoutputstream--get-byte-order" href="pygobject/class-giodataoutputstream.html#method-giodataoutputstream--get-byte-order">
-        <ANCHOR id="method-giodataoutputstream--put-byte" href="pygobject/class-giodataoutputstream.html#method-giodataoutputstream--put-byte">
-        <ANCHOR id="method-giodataoutputstream--put-int16" href="pygobject/class-giodataoutputstream.html#method-giodataoutputstream--put-int16">
-        <ANCHOR id="method-giodataoutputstream--put-int32" href="pygobject/class-giodataoutputstream.html#method-giodataoutputstream--put-int32">
-        <ANCHOR id="method-giodataoutputstream--put-int64" href="pygobject/class-giodataoutputstream.html#method-giodataoutputstream--put-int64">
-        <ANCHOR id="method-giodataoutputstream--put-string" href="pygobject/class-giodataoutputstream.html#method-giodataoutputstream--put-string">
-        <ANCHOR id="method-giodataoutputstream--put-uint16" href="pygobject/class-giodataoutputstream.html#method-giodataoutputstream--put-uint16">
-        <ANCHOR id="method-giodataoutputstream--put-uint32" href="pygobject/class-giodataoutputstream.html#method-giodataoutputstream--put-uint32">
-        <ANCHOR id="method-giodataoutputstream--put-uint64" href="pygobject/class-giodataoutputstream.html#method-giodataoutputstream--put-uint64">
-        <ANCHOR id="method-giodataoutputstream--set-byte-order" href="pygobject/class-giodataoutputstream.html#method-giodataoutputstream--set-byte-order">
-        <ANCHOR id="class-giodrive" href="pygobject/class-giodrive.html">
-        <ANCHOR id="method-giodrive--can-eject" href="pygobject/class-giodrive.html#method-giodrive--can-eject">
-        <ANCHOR id="method-giodrive--can-poll-for-media" href="pygobject/class-giodrive.html#method-giodrive--can-poll-for-media">
-        <ANCHOR id="method-giodrive--eject" href="pygobject/class-giodrive.html#method-giodrive--eject">
-        <ANCHOR id="method-giodrive--eject-finish" href="pygobject/class-giodrive.html#method-giodrive--eject-finish">
-        <ANCHOR id="method-giodrive--enumerate-identifiers" href="pygobject/class-giodrive.html#method-giodrive--enumerate-identifiers">
-        <ANCHOR id="method-giodrive--get-icon" href="pygobject/class-giodrive.html#method-giodrive--get-icon">
-        <ANCHOR id="method-giodrive--get-identifier" href="pygobject/class-giodrive.html#method-giodrive--get-identifier">
-        <ANCHOR id="method-giodrive--get-name" href="pygobject/class-giodrive.html#method-giodrive--get-name">
-        <ANCHOR id="method-giodrive--get-volumes" href="pygobject/class-giodrive.html#method-giodrive--get-volumes">
-        <ANCHOR id="method-giodrive--has-media" href="pygobject/class-giodrive.html#method-giodrive--has-media">
-        <ANCHOR id="method-giodrive--has-volumes" href="pygobject/class-giodrive.html#method-giodrive--has-volumes">
-        <ANCHOR id="method-giodrive--is-media-check-automatic" href="pygobject/class-giodrive.html#method-giodrive--is-media-check-automatic">
-        <ANCHOR id="method-giodrive--is-media-removable" href="pygobject/class-giodrive.html#method-giodrive--is-media-removable">
-        <ANCHOR id="method-giodrive--poll-for-media" href="pygobject/class-giodrive.html#method-giodrive--poll-for-media">
-        <ANCHOR id="method-giodrive--poll-for-media-finish" href="pygobject/class-giodrive.html#method-giodrive--poll-for-media-finish">
-        <ANCHOR id="class-gioemblem" href="pygobject/class-gioemblem.html">
-        <ANCHOR id="properties-gioemblem" href="pygobject/class-gioemblem.html#properties-gioemblem">
-        <ANCHOR id="constructor-gioemblem" href="pygobject/class-gioemblem.html#constructor-gioemblem">
-        <ANCHOR id="method-gioemblem--get-icon" href="pygobject/class-gioemblem.html#method-gioemblem--get-icon">
-        <ANCHOR id="method-gioemblem--get-origin" href="pygobject/class-gioemblem.html#method-gioemblem--get-origin">
-        <ANCHOR id="function-gio--emblem-new-with-origin" href="pygobject/class-gioemblem.html#function-gio--emblem-new-with-origin">
-        <ANCHOR id="class-gioemblemedicon" href="pygobject/class-gioemblemedicon.html">
-        <ANCHOR id="constructor-gioemblemedicon" href="pygobject/class-gioemblemedicon.html#constructor-gioemblemedicon">
-        <ANCHOR id="method-gioemblemedicon--add-emblem" href="pygobject/class-gioemblemedicon.html#method-gioemblemedicon--add-emblem">
-        <ANCHOR id="method-gioemblemedicon--get-icon" href="pygobject/class-gioemblemedicon.html#method-gioemblemedicon--get-icon">
-        <ANCHOR id="class-giofile" href="pygobject/class-giofile.html">
-        <ANCHOR id="constructor-giofile" href="pygobject/class-giofile.html#constructor-giofile">
-        <ANCHOR id="method-giofile--append-to" href="pygobject/class-giofile.html#method-giofile--append-to">
-        <ANCHOR id="method-giofile--append-to-async" href="pygobject/class-giofile.html#method-giofile--append-to-async">
-        <ANCHOR id="method-giofile--append-to-finish" href="pygobject/class-giofile.html#method-giofile--append-to-finish">
-        <ANCHOR id="method-giofile--copy" href="pygobject/class-giofile.html#method-giofile--copy">
-        <ANCHOR id="method-giofile--copy-async" href="pygobject/class-giofile.html#method-giofile--copy-async">
-        <ANCHOR id="method-giofile--copy-attributes" href="pygobject/class-giofile.html#method-giofile--copy-attributes">
-        <ANCHOR id="method-giofile--copy-finish" href="pygobject/class-giofile.html#method-giofile--copy-finish">
-        <ANCHOR id="method-giofile--create" href="pygobject/class-giofile.html#method-giofile--create">
-        <ANCHOR id="method-giofile--create-async" href="pygobject/class-giofile.html#method-giofile--create-async">
-        <ANCHOR id="method-giofile--create-finish" href="pygobject/class-giofile.html#method-giofile--create-finish">
-        <ANCHOR id="method-giofile--delete" href="pygobject/class-giofile.html#method-giofile--delete">
-        <ANCHOR id="method-giofile--dup" href="pygobject/class-giofile.html#method-giofile--dup">
-        <ANCHOR id="method-giofile--eject-mountable" href="pygobject/class-giofile.html#method-giofile--eject-mountable">
-        <ANCHOR id="method-giofile--eject-mountable-finish" href="pygobject/class-giofile.html#method-giofile--eject-mountable-finish">
-        <ANCHOR id="method-giofile--enumerate-children" href="pygobject/class-giofile.html#method-giofile--enumerate-children">
-        <ANCHOR id="method-giofile--enumerate-children-async" href="pygobject/class-giofile.html#method-giofile--enumerate-children-async">
-        <ANCHOR id="method-giofile--enumerate-children-finish" href="pygobject/class-giofile.html#method-giofile--enumerate-children-finish">
-        <ANCHOR id="method-giofile--equal" href="pygobject/class-giofile.html#method-giofile--equal">
-        <ANCHOR id="method-giofile--find-enclosing-mount" href="pygobject/class-giofile.html#method-giofile--find-enclosing-mount">
-        <ANCHOR id="method-giofile--find-enclosing-mount-async" href="pygobject/class-giofile.html#method-giofile--find-enclosing-mount-async">
-        <ANCHOR id="method-giofile--find-enclosing-mount-finish" href="pygobject/class-giofile.html#method-giofile--find-enclosing-mount-finish">
-        <ANCHOR id="method-giofile--get-basename" href="pygobject/class-giofile.html#method-giofile--get-basename">
-        <ANCHOR id="method-giofile--get-child" href="pygobject/class-giofile.html#method-giofile--get-child">
-        <ANCHOR id="method-giofile--get-child-for-display-name" href="pygobject/class-giofile.html#method-giofile--get-child-for-display-name">
-        <ANCHOR id="method-giofile--get-parent" href="pygobject/class-giofile.html#method-giofile--get-parent">
-        <ANCHOR id="method-giofile--get-parse-name" href="pygobject/class-giofile.html#method-giofile--get-parse-name">
-        <ANCHOR id="method-giofile--get-path" href="pygobject/class-giofile.html#method-giofile--get-path">
-        <ANCHOR id="method-giofile--get-relative-path" href="pygobject/class-giofile.html#method-giofile--get-relative-path">
-        <ANCHOR id="method-giofile--get-uri" href="pygobject/class-giofile.html#method-giofile--get-uri">
-        <ANCHOR id="method-giofile--get-uri-scheme" href="pygobject/class-giofile.html#method-giofile--get-uri-scheme">
-        <ANCHOR id="method-giofile--has-prefix" href="pygobject/class-giofile.html#method-giofile--has-prefix">
-        <ANCHOR id="method-giofile--has-uri-scheme" href="pygobject/class-giofile.html#method-giofile--has-uri-scheme">
-        <ANCHOR id="method-giofile--is-native" href="pygobject/class-giofile.html#method-giofile--is-native">
-        <ANCHOR id="method-giofile--load-contents" href="pygobject/class-giofile.html#method-giofile--load-contents">
-        <ANCHOR id="method-giofile--load-contents-async" href="pygobject/class-giofile.html#method-giofile--load-contents-async">
-        <ANCHOR id="method-giofile--load-contents-finish" href="pygobject/class-giofile.html#method-giofile--load-contents-finish">
-        <ANCHOR id="method-giofile--make-directory" href="pygobject/class-giofile.html#method-giofile--make-directory">
-        <ANCHOR id="method-giofile--make-directory-with-parents" href="pygobject/class-giofile.html#method-giofile--make-directory-with-parents">
-        <ANCHOR id="method-giofile--make-symbolic-link" href="pygobject/class-giofile.html#method-giofile--make-symbolic-link">
-        <ANCHOR id="method-giofile--monitor" href="pygobject/class-giofile.html#method-giofile--monitor">
-        <ANCHOR id="method-giofile--monitor-directory" href="pygobject/class-giofile.html#method-giofile--monitor-directory">
-        <ANCHOR id="method-giofile--monitor-file" href="pygobject/class-giofile.html#method-giofile--monitor-file">
-        <ANCHOR id="method-giofile--mount-enclosing-volume" href="pygobject/class-giofile.html#method-giofile--mount-enclosing-volume">
-        <ANCHOR id="method-giofile--mount-enclosing-volume-finish" href="pygobject/class-giofile.html#method-giofile--mount-enclosing-volume-finish">
-        <ANCHOR id="method-giofile--mount-mountable" href="pygobject/class-giofile.html#method-giofile--mount-mountable">
-        <ANCHOR id="method-giofile--mount-mountable-finish" href="pygobject/class-giofile.html#method-giofile--mount-mountable-finish">
-        <ANCHOR id="method-giofile--move" href="pygobject/class-giofile.html#method-giofile--move">
-        <ANCHOR id="method-giofile--query-default-handler" href="pygobject/class-giofile.html#method-giofile--query-default-handler">
-        <ANCHOR id="method-giofile--query-exists" href="pygobject/class-giofile.html#method-giofile--query-exists">
-        <ANCHOR id="method-giofile--query-file-type" href="pygobject/class-giofile.html#method-giofile--query-file-type">
-        <ANCHOR id="method-giofile--query-filesystem-info" href="pygobject/class-giofile.html#method-giofile--query-filesystem-info">
-        <ANCHOR id="method-giofile--query-filesystem-info-async" href="pygobject/class-giofile.html#method-giofile--query-filesystem-info-async">
-        <ANCHOR id="method-giofile--query-filesystem-info-finish" href="pygobject/class-giofile.html#method-giofile--query-filesystem-info-finish">
-        <ANCHOR id="method-giofile--query-info" href="pygobject/class-giofile.html#method-giofile--query-info">
-        <ANCHOR id="method-giofile--query-info-async" href="pygobject/class-giofile.html#method-giofile--query-info-async">
-        <ANCHOR id="method-giofile--query-info-finish" href="pygobject/class-giofile.html#method-giofile--query-info-finish">
-        <ANCHOR id="method-giofile--query-settable-attributes" href="pygobject/class-giofile.html#method-giofile--query-settable-attributes">
-        <ANCHOR id="method-giofile--query-writable-namespace" href="pygobject/class-giofile.html#method-giofile--query-writable-namespace">
-        <ANCHOR id="method-giofile--read" href="pygobject/class-giofile.html#method-giofile--read">
-        <ANCHOR id="method-giofile--read-async" href="pygobject/class-giofile.html#method-giofile--read-async">
-        <ANCHOR id="method-giofile--read-finish" href="pygobject/class-giofile.html#method-giofile--read-finish">
-        <ANCHOR id="method-giofile--replace" href="pygobject/class-giofile.html#method-giofile--replace">
-        <ANCHOR id="method-giofile--replace-async" href="pygobject/class-giofile.html#method-giofile--replace-async">
-        <ANCHOR id="method-giofile--replace-contents" href="pygobject/class-giofile.html#method-giofile--replace-contents">
-        <ANCHOR id="method-giofile--replace-contents-async" href="pygobject/class-giofile.html#method-giofile--replace-contents-async">
-        <ANCHOR id="method-giofile--replace-contents-finish" href="pygobject/class-giofile.html#method-giofile--replace-contents-finish">
-        <ANCHOR id="method-giofile--replace-finish" href="pygobject/class-giofile.html#method-giofile--replace-finish">
-        <ANCHOR id="method-giofile--resolve-relative-path" href="pygobject/class-giofile.html#method-giofile--resolve-relative-path">
-        <ANCHOR id="method-giofile--set-attribute" href="pygobject/class-giofile.html#method-giofile--set-attribute">
-        <ANCHOR id="method-giofile--set-attribute-byte-string" href="pygobject/class-giofile.html#method-giofile--set-attribute-byte-string">
-        <ANCHOR id="method-giofile--set-attribute-int32" href="pygobject/class-giofile.html#method-giofile--set-attribute-int32">
-        <ANCHOR id="method-giofile--set-attribute-int64" href="pygobject/class-giofile.html#method-giofile--set-attribute-int64">
-        <ANCHOR id="method-giofile--set-attribute-string" href="pygobject/class-giofile.html#method-giofile--set-attribute-string">
-        <ANCHOR id="method-giofile--set-attribute-uint32" href="pygobject/class-giofile.html#method-giofile--set-attribute-uint32">
-        <ANCHOR id="method-giofile--set-attribute-uint64" href="pygobject/class-giofile.html#method-giofile--set-attribute-uint64">
-        <ANCHOR id="method-giofile--set-attributes-async" href="pygobject/class-giofile.html#method-giofile--set-attributes-async">
-        <ANCHOR id="method-giofile--set-attributes-finish" href="pygobject/class-giofile.html#method-giofile--set-attributes-finish">
-        <ANCHOR id="method-giofile--set-attributes-from-info" href="pygobject/class-giofile.html#method-giofile--set-attributes-from-info">
-        <ANCHOR id="method-giofile--set-display-name" href="pygobject/class-giofile.html#method-giofile--set-display-name">
-        <ANCHOR id="method-giofile--set-display-name-async" href="pygobject/class-giofile.html#method-giofile--set-display-name-async">
-        <ANCHOR id="method-giofile--set-display-name-finish" href="pygobject/class-giofile.html#method-giofile--set-display-name-finish">
-        <ANCHOR id="method-giofile--trash" href="pygobject/class-giofile.html#method-giofile--trash">
-        <ANCHOR id="method-giofile--unmount-mountable" href="pygobject/class-giofile.html#method-giofile--unmount-mountable">
-        <ANCHOR id="method-giofile--unmount-mountable-finish" href="pygobject/class-giofile.html#method-giofile--unmount-mountable-finish">
-        <ANCHOR id="function-gio--file-parse-name" href="pygobject/class-giofile.html#function-gio--file-parse-name">
-        <ANCHOR id="class-giofileattributeinfo" href="pygobject/class-giofileattributeinfo.html">
-        <ANCHOR id="attributes-giofileattributeinfo" href="pygobject/class-giofileattributeinfo.html#attributes-giofileattributeinfo">
-        <ANCHOR id="class-giofileenumerator" href="pygobject/class-giofileenumerator.html">
-        <ANCHOR id="properties-giofileenumerator" href="pygobject/class-giofileenumerator.html#properties-giofileenumerator">
-        <ANCHOR id="method-giofileenumerator--close" href="pygobject/class-giofileenumerator.html#method-giofileenumerator--close">
-        <ANCHOR id="method-giofileenumerator--close-async" href="pygobject/class-giofileenumerator.html#method-giofileenumerator--close-async">
-        <ANCHOR id="method-giofileenumerator--close-finish" href="pygobject/class-giofileenumerator.html#method-giofileenumerator--close-finish">
-        <ANCHOR id="method-giofileenumerator--get-container" href="pygobject/class-giofileenumerator.html#method-giofileenumerator--get-container">
-        <ANCHOR id="method-giofileenumerator--has-pending" href="pygobject/class-giofileenumerator.html#method-giofileenumerator--has-pending">
-        <ANCHOR id="method-giofileenumerator--is-closed" href="pygobject/class-giofileenumerator.html#method-giofileenumerator--is-closed">
-        <ANCHOR id="method-giofileenumerator--next-file" href="pygobject/class-giofileenumerator.html#method-giofileenumerator--next-file">
-        <ANCHOR id="method-giofileenumerator--next-files-async" href="pygobject/class-giofileenumerator.html#method-giofileenumerator--next-files-async">
-        <ANCHOR id="method-giofileenumerator--next-files-finish" href="pygobject/class-giofileenumerator.html#method-giofileenumerator--next-files-finish">
-        <ANCHOR id="method-giofileenumerator--set-pending" href="pygobject/class-giofileenumerator.html#method-giofileenumerator--set-pending">
-        <ANCHOR id="class-giofileicon" href="pygobject/class-giofileicon.html">
-        <ANCHOR id="constructor-giofileicon" href="pygobject/class-giofileicon.html#constructor-giofileicon">
-        <ANCHOR id="method-giofileicon--get-file" href="pygobject/class-giofileicon.html#method-giofileicon--get-file">
-        <ANCHOR id="class-giofileinfo" href="pygobject/class-giofileinfo.html">
-        <ANCHOR id="constructor-giofileinfo" href="pygobject/class-giofileinfo.html#constructor-giofileinfo">
-        <ANCHOR id="class-giofileinputstream" href="pygobject/class-giofileinputstream.html">
-        <ANCHOR id="method-giofileinputstream--query-info" href="pygobject/class-giofileinputstream.html#method-giofileinputstream--query-info">
-        <ANCHOR id="method-giofileinputstream--query-info-async" href="pygobject/class-giofileinputstream.html#method-giofileinputstream--query-info-async">
-        <ANCHOR id="method-giofileinputstream--query-info-finish" href="pygobject/class-giofileinputstream.html#method-giofileinputstream--query-info-finish">
-        <ANCHOR id="class-giofilemonitor" href="pygobject/class-giofilemonitor.html">
-        <ANCHOR id="properties-giofilemonitor" href="pygobject/class-giofilemonitor.html#properties-giofilemonitor">
-        <ANCHOR id="signal-prototypes-giofilemonitor" href="pygobject/class-giofilemonitor.html#signal-prototypes-giofilemonitor">
-        <ANCHOR id="class-giofileoutputstream" href="pygobject/class-giofileoutputstream.html">
-        <ANCHOR id="method-giofileoutputstream--get-etag" href="pygobject/class-giofileoutputstream.html#method-giofileoutputstream--get-etag">
-        <ANCHOR id="method-giofileoutputstream--query-info" href="pygobject/class-giofileoutputstream.html#method-giofileoutputstream--query-info">
-        <ANCHOR id="method-giofileoutputstream--query-info-async" href="pygobject/class-giofileoutputstream.html#method-giofileoutputstream--query-info-async">
-        <ANCHOR id="method-giofileoutputstream--query-info-finish" href="pygobject/class-giofileoutputstream.html#method-giofileoutputstream--query-info-finish">
-        <ANCHOR id="class-giofilterinputstream" href="pygobject/class-giofilterinputstream.html">
-        <ANCHOR id="properties-giofilterinputstream" href="pygobject/class-giofilterinputstream.html#properties-giofilterinputstream">
-        <ANCHOR id="method-giofilterinputstream--get-base-stream" href="pygobject/class-giofilterinputstream.html#method-giofilterinputstream--get-base-stream">
-        <ANCHOR id="method-giofilterinputstream--get-close-base-stream" href="pygobject/class-giofilterinputstream.html#method-giofilterinputstream--get-close-base-stream">
-        <ANCHOR id="method-giofilterinputstream--set-close-base-stream" href="pygobject/class-giofilterinputstream.html#method-giofilterinputstream--set-close-base-stream">
-        <ANCHOR id="class-giofilteroutputstream" href="pygobject/class-giofilteroutputstream.html">
-        <ANCHOR id="properties-giofilteroutputstream" href="pygobject/class-giofilteroutputstream.html#properties-giofilteroutputstream">
-        <ANCHOR id="method-giofilteroutputstream--get-base-stream" href="pygobject/class-giofilteroutputstream.html#method-giofilteroutputstream--get-base-stream">
-        <ANCHOR id="method-giofilteroutputstream--get-close-base-stream" href="pygobject/class-giofilteroutputstream.html#method-giofilteroutputstream--get-close-base-stream">
-        <ANCHOR id="method-giofilteroutputstream--set-close-base-stream" href="pygobject/class-giofilteroutputstream.html#method-giofilteroutputstream--set-close-base-stream">
-        <ANCHOR id="class-gioicon" href="pygobject/class-gioicon.html">
-        <ANCHOR id="method-gioicon--equal" href="pygobject/class-gioicon.html#method-gioicon--equal">
-        <ANCHOR id="method-gioicon--to-string" href="pygobject/class-gioicon.html#method-gioicon--to-string">
-        <ANCHOR id="function-gio--icon-new-from-string" href="pygobject/class-gioicon.html#function-gio--icon-new-from-string">
-        <ANCHOR id="class-gioinputstream" href="pygobject/class-gioinputstream.html">
-        <ANCHOR id="method-gioinputstream--clear-pending" href="pygobject/class-gioinputstream.html#method-gioinputstream--clear-pending">
-        <ANCHOR id="method-gioinputstream--close" href="pygobject/class-gioinputstream.html#method-gioinputstream--close">
-        <ANCHOR id="method-gioinputstream--close-async" href="pygobject/class-gioinputstream.html#method-gioinputstream--close-async">
-        <ANCHOR id="method-gioinputstream--close-finish" href="pygobject/class-gioinputstream.html#method-gioinputstream--close-finish">
-        <ANCHOR id="method-gioinputstream--has-pending" href="pygobject/class-gioinputstream.html#method-gioinputstream--has-pending">
-        <ANCHOR id="method-gioinputstream--is-closed" href="pygobject/class-gioinputstream.html#method-gioinputstream--is-closed">
-        <ANCHOR id="method-gioinputstream--read" href="pygobject/class-gioinputstream.html#method-gioinputstream--read">
-        <ANCHOR id="method-gioinputstream--read-async" href="pygobject/class-gioinputstream.html#method-gioinputstream--read-async">
-        <ANCHOR id="method-gioinputstream--read-finish" href="pygobject/class-gioinputstream.html#method-gioinputstream--read-finish">
-        <ANCHOR id="method-gioinputstream--read-part" href="pygobject/class-gioinputstream.html#method-gioinputstream--read-part">
-        <ANCHOR id="method-gioinputstream--set-pending" href="pygobject/class-gioinputstream.html#method-gioinputstream--set-pending">
-        <ANCHOR id="method-gioinputstream--skip" href="pygobject/class-gioinputstream.html#method-gioinputstream--skip">
-        <ANCHOR id="method-gioinputstream--skip-async" href="pygobject/class-gioinputstream.html#method-gioinputstream--skip-async">
-        <ANCHOR id="method-gioinputstream--skip-finish" href="pygobject/class-gioinputstream.html#method-gioinputstream--skip-finish">
-        <ANCHOR id="class-gioloadableicon" href="pygobject/class-gioloadableicon.html">
-        <ANCHOR id="method-gioloadableicon--load" href="pygobject/class-gioloadableicon.html#method-gioloadableicon--load">
-        <ANCHOR id="method-gioloadableicon--load-async" href="pygobject/class-gioloadableicon.html#method-gioloadableicon--load-async">
-        <ANCHOR id="method-gioloadableicon--load-finish" href="pygobject/class-gioloadableicon.html#method-gioloadableicon--load-finish">
-        <ANCHOR id="class-giomemoryinputstream" href="pygobject/class-giomemoryinputstream.html">
-        <ANCHOR id="constructor-giomemoryinputstream" href="pygobject/class-giomemoryinputstream.html#constructor-giomemoryinputstream">
-        <ANCHOR id="method-giomemoryinputstream--add-data" href="pygobject/class-giomemoryinputstream.html#method-giomemoryinputstream--add-data">
-        <ANCHOR id="function-gio--memory-input-stream-new-from-data" href="pygobject/class-giomemoryinputstream.html#function-gio--memory-input-stream-new-from-data">
-        <ANCHOR id="class-giomemoryoutputstream" href="pygobject/class-giomemoryoutputstream.html">
-        <ANCHOR id="constructor-giomemoryoutputstream" href="pygobject/class-giomemoryoutputstream.html#constructor-giomemoryoutputstream">
-        <ANCHOR id="method-giomemoryoutputstream--get-contents" href="pygobject/class-giomemoryoutputstream.html#method-giomemoryoutputstream--get-contents">
-        <ANCHOR id="method-giomemoryoutputstream--get-data-size" href="pygobject/class-giomemoryoutputstream.html#method-giomemoryoutputstream--get-data-size">
-        <ANCHOR id="method-giomemoryoutputstream--get-size" href="pygobject/class-giomemoryoutputstream.html#method-giomemoryoutputstream--get-size">
-        <ANCHOR id="class-giomount" href="pygobject/class-giomount.html">
-        <ANCHOR id="signal-prototypes-giomount" href="pygobject/class-giomount.html#signal-prototypes-giomount">
-        <ANCHOR id="method-giomount--can-eject" href="pygobject/class-giomount.html#method-giomount--can-eject">
-        <ANCHOR id="method-giomount--can-unmount" href="pygobject/class-giomount.html#method-giomount--can-unmount">
-        <ANCHOR id="method-giomount--eject" href="pygobject/class-giomount.html#method-giomount--eject">
-        <ANCHOR id="method-giomount--eject-finish" href="pygobject/class-giomount.html#method-giomount--eject-finish">
-        <ANCHOR id="method-giomount--get-drive" href="pygobject/class-giomount.html#method-giomount--get-drive">
-        <ANCHOR id="method-giomount--get-icon" href="pygobject/class-giomount.html#method-giomount--get-icon">
-        <ANCHOR id="method-giomount--get-name" href="pygobject/class-giomount.html#method-giomount--get-name">
-        <ANCHOR id="method-giomount--get-root" href="pygobject/class-giomount.html#method-giomount--get-root">
-        <ANCHOR id="method-giomount--get-uuid" href="pygobject/class-giomount.html#method-giomount--get-uuid">
-        <ANCHOR id="method-giomount--get-volume" href="pygobject/class-giomount.html#method-giomount--get-volume">
-        <ANCHOR id="method-giomount--guess-content-type" href="pygobject/class-giomount.html#method-giomount--guess-content-type">
-        <ANCHOR id="method-giomount--guess-content-type-finish" href="pygobject/class-giomount.html#method-giomount--guess-content-type-finish">
-        <ANCHOR id="method-giomount--guess-content-type-sync" href="pygobject/class-giomount.html#method-giomount--guess-content-type-sync">
-        <ANCHOR id="method-giomount--is-shadowed" href="pygobject/class-giomount.html#method-giomount--is-shadowed">
-        <ANCHOR id="method-giomount--remount" href="pygobject/class-giomount.html#method-giomount--remount">
-        <ANCHOR id="method-giomount--remount-finish" href="pygobject/class-giomount.html#method-giomount--remount-finish">
-        <ANCHOR id="method-giomount--shadow" href="pygobject/class-giomount.html#method-giomount--shadow">
-        <ANCHOR id="method-giomount--unmount" href="pygobject/class-giomount.html#method-giomount--unmount">
-        <ANCHOR id="method-giomount--unmount-finish" href="pygobject/class-giomount.html#method-giomount--unmount-finish">
-        <ANCHOR id="method-giomount--unshadow" href="pygobject/class-giomount.html#method-giomount--unshadow">
-        <ANCHOR id="signal-giomount--aborted" href="pygobject/class-giomount.html#signal-giomount--aborted">
-        <ANCHOR id="signal-giomount--changed" href="pygobject/class-giomount.html#signal-giomount--changed">
-        <ANCHOR id="signal-giomount--unmounted" href="pygobject/class-giomount.html#signal-giomount--unmounted">
-        <ANCHOR id="class-giomountoperation" href="pygobject/class-giomountoperation.html">
-        <ANCHOR id="properties-giomountoperation" href="pygobject/class-giomountoperation.html#properties-giomountoperation">
-        <ANCHOR id="signal-prototypes-giomountoperation" href="pygobject/class-giomountoperation.html#signal-prototypes-giomountoperation">
-        <ANCHOR id="constructor-giomountoperation" href="pygobject/class-giomountoperation.html#constructor-giomountoperation">
-        <ANCHOR id="method-giomountoperation--get-anonymous" href="pygobject/class-giomountoperation.html#method-giomountoperation--get-anonymous">
-        <ANCHOR id="method-giomountoperation--get-choice" href="pygobject/class-giomountoperation.html#method-giomountoperation--get-choice">
-        <ANCHOR id="method-giomountoperation--get-domain" href="pygobject/class-giomountoperation.html#method-giomountoperation--get-domain">
-        <ANCHOR id="method-giomountoperation--get-password" href="pygobject/class-giomountoperation.html#method-giomountoperation--get-password">
-        <ANCHOR id="method-giomountoperation--get-password-save" href="pygobject/class-giomountoperation.html#method-giomountoperation--get-password-save">
-        <ANCHOR id="method-giomountoperation--get-username" href="pygobject/class-giomountoperation.html#method-giomountoperation--get-username">
-        <ANCHOR id="method-giomountoperation--reply" href="pygobject/class-giomountoperation.html#method-giomountoperation--reply">
-        <ANCHOR id="method-giomountoperation--set-anonymous" href="pygobject/class-giomountoperation.html#method-giomountoperation--set-anonymous">
-        <ANCHOR id="method-giomountoperation--set-choice" href="pygobject/class-giomountoperation.html#method-giomountoperation--set-choice">
-        <ANCHOR id="method-giomountoperation--set-domain" href="pygobject/class-giomountoperation.html#method-giomountoperation--set-domain">
-        <ANCHOR id="method-giomountoperation--set-password" href="pygobject/class-giomountoperation.html#method-giomountoperation--set-password">
-        <ANCHOR id="method-giomountoperation--set-password-save" href="pygobject/class-giomountoperation.html#method-giomountoperation--set-password-save">
-        <ANCHOR id="method-giomountoperation--set-username" href="pygobject/class-giomountoperation.html#method-giomountoperation--set-username">
-        <ANCHOR id="signal-giomountoperation--aborted" href="pygobject/class-giomountoperation.html#signal-giomountoperation--aborted">
-        <ANCHOR id="signal-giomountoperation--ask-password" href="pygobject/class-giomountoperation.html#signal-giomountoperation--ask-password">
-        <ANCHOR id="signal-giomountoperation--ask-question" href="pygobject/class-giomountoperation.html#signal-giomountoperation--ask-question">
-        <ANCHOR id="signal-giomountoperation--reply" href="pygobject/class-giomountoperation.html#signal-giomountoperation--reply">
-        <ANCHOR id="class-giooutputstream" href="pygobject/class-giooutputstream.html">
-        <ANCHOR id="class-gioseekable" href="pygobject/class-gioseekable.html">
-        <ANCHOR id="method-gioseekable--tell" href="pygobject/class-gioseekable.html#method-gioseekable--tell">
-        <ANCHOR id="method-gioseekable--can_seek" href="pygobject/class-gioseekable.html#method-gioseekable--can_seek">
-        <ANCHOR id="method-gioseekable--seek" href="pygobject/class-gioseekable.html#method-gioseekable--seek">
-        <ANCHOR id="method-gioseekable--can_truncate" href="pygobject/class-gioseekable.html#method-gioseekable--can_truncate">
-        <ANCHOR id="method-gioseekable--truncate" href="pygobject/class-gioseekable.html#method-gioseekable--truncate">
-        <ANCHOR id="class-giosimpleasyncresult" href="pygobject/class-giosimpleasyncresult.html">
-        <ANCHOR id="method-giosimpleasyncresult--complete" href="pygobject/class-giosimpleasyncresult.html#method-giosimpleasyncresult--complete">
-        <ANCHOR id="method-giosimpleasyncresult--complete-in-idle" href="pygobject/class-giosimpleasyncresult.html#method-giosimpleasyncresult--complete-in-idle">
-        <ANCHOR id="method-giosimpleasyncresult--get-op-res-gboolean" href="pygobject/class-giosimpleasyncresult.html#method-giosimpleasyncresult--get-op-res-gboolean">
-        <ANCHOR id="method-giosimpleasyncresult--get-op-res-gssize" href="pygobject/class-giosimpleasyncresult.html#method-giosimpleasyncresult--get-op-res-gssize">
-        <ANCHOR id="method-giosimpleasyncresult--propagate-error" href="pygobject/class-giosimpleasyncresult.html#method-giosimpleasyncresult--propagate-error">
-        <ANCHOR id="method-giosimpleasyncresult--set-handle-cancellation" href="pygobject/class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-handle-cancellation">
-        <ANCHOR id="method-giosimpleasyncresult--set-op-res-gboolean" href="pygobject/class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-op-res-gboolean">
-        <ANCHOR id="method-giosimpleasyncresult--set-op-res-gssize" href="pygobject/class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-op-res-gssize">
-        <ANCHOR id="class-giothemedicon" href="pygobject/class-giothemedicon.html">
-        <ANCHOR id="properties-giomountoperation" href="pygobject/class-giothemedicon.html#properties-giomountoperation">
-        <ANCHOR id="constructor-giothemedicon" href="pygobject/class-giothemedicon.html#constructor-giothemedicon">
-        <ANCHOR id="method-giothemedicon--append-name" href="pygobject/class-giothemedicon.html#method-giothemedicon--append-name">
-        <ANCHOR id="method-giothemedicon--get-names" href="pygobject/class-giothemedicon.html#method-giothemedicon--get-names">
-        <ANCHOR id="method-giothemedicon--prepend-name" href="pygobject/class-giothemedicon.html#method-giothemedicon--prepend-name">
-        <ANCHOR id="class-giovolume" href="pygobject/class-giovolume.html">
-        <ANCHOR id="signal-prototypes-giovolume" href="pygobject/class-giovolume.html#signal-prototypes-giovolume">
-        <ANCHOR id="method-giovolume--can-eject" href="pygobject/class-giovolume.html#method-giovolume--can-eject">
-        <ANCHOR id="method-giovolume--can-mount" href="pygobject/class-giovolume.html#method-giovolume--can-mount">
-        <ANCHOR id="method-giovolume--eject" href="pygobject/class-giovolume.html#method-giovolume--eject">
-        <ANCHOR id="method-giovolume--eject-finish" href="pygobject/class-giovolume.html#method-giovolume--eject-finish">
-        <ANCHOR id="method-giovolume--enumerate-identifiers" href="pygobject/class-giovolume.html#method-giovolume--enumerate-identifiers">
-        <ANCHOR id="method-giovolume--get-activation-root" href="pygobject/class-giovolume.html#method-giovolume--get-activation-root">
-        <ANCHOR id="method-giovolume--get-drive" href="pygobject/class-giovolume.html#method-giovolume--get-drive">
-        <ANCHOR id="method-giovolume--get-icon" href="pygobject/class-giovolume.html#method-giovolume--get-icon">
-        <ANCHOR id="method-giovolume--get-identifier" href="pygobject/class-giovolume.html#method-giovolume--get-identifier">
-        <ANCHOR id="method-giovolume--get-mount" href="pygobject/class-giovolume.html#method-giovolume--get-mount">
-        <ANCHOR id="method-giovolume--get-name" href="pygobject/class-giovolume.html#method-giovolume--get-name">
-        <ANCHOR id="method-giovolume--get-uuid" href="pygobject/class-giovolume.html#method-giovolume--get-uuid">
-        <ANCHOR id="method-giovolume--mount" href="pygobject/class-giovolume.html#method-giovolume--mount">
-        <ANCHOR id="method-giovolume--mount-finish" href="pygobject/class-giovolume.html#method-giovolume--mount-finish">
-        <ANCHOR id="method-giovolume--should-automount" href="pygobject/class-giovolume.html#method-giovolume--should-automount">
-        <ANCHOR id="signal-giovolume--changed" href="pygobject/class-giovolume.html#signal-giovolume--changed">
-        <ANCHOR id="signal-giovolume--removed" href="pygobject/class-giovolume.html#signal-giovolume--removed">
-        <ANCHOR id="class-giovolumemonitor" href="pygobject/class-giovolumemonitor.html">
-        <ANCHOR id="signal-prototypes-giovolumemonitor" href="pygobject/class-giovolumemonitor.html#signal-prototypes-giovolumemonitor">
-        <ANCHOR id="method-giovolumemonitor--get-connected-drives" href="pygobject/class-giovolumemonitor.html#method-giovolumemonitor--get-connected-drives">
-        <ANCHOR id="method-giovolumemonitor--get-mount-for-uuid" href="pygobject/class-giovolumemonitor.html#method-giovolumemonitor--get-mount-for-uuid">
-        <ANCHOR id="method-giovolumemonitor--get-mounts" href="pygobject/class-giovolumemonitor.html#method-giovolumemonitor--get-mounts">
-        <ANCHOR id="method-giovolumemonitor--get-volume-for-uuid" href="pygobject/class-giovolumemonitor.html#method-giovolumemonitor--get-volume-for-uuid">
-        <ANCHOR id="method-giovolumemonitor--get-volumes" href="pygobject/class-giovolumemonitor.html#method-giovolumemonitor--get-volumes">
-        <ANCHOR id="function-gio--volume-monitor-adopt-orphan-mount" href="pygobject/class-giovolumemonitor.html#function-gio--volume-monitor-adopt-orphan-mount">
-        <ANCHOR id="function-gio--volume-monitor-get" href="pygobject/class-giovolumemonitor.html#function-gio--volume-monitor-get">
-        <ANCHOR id="signal-giovolumemonitor--drive-changed" href="pygobject/class-giovolumemonitor.html#signal-giovolumemonitor--drive-changed">
-        <ANCHOR id="signal-giovolumemonitor--drive-connected" href="pygobject/class-giovolumemonitor.html#signal-giovolumemonitor--drive-connected">
-        <ANCHOR id="signal-giovolumemonitor--drive-disconnected" href="pygobject/class-giovolumemonitor.html#signal-giovolumemonitor--drive-disconnected">
-        <ANCHOR id="signal-giovolumemonitor--drive-eject-button" href="pygobject/class-giovolumemonitor.html#signal-giovolumemonitor--drive-eject-button">
-        <ANCHOR id="signal-giovolumemonitor--mount-added" href="pygobject/class-giovolumemonitor.html#signal-giovolumemonitor--mount-added">
-        <ANCHOR id="signal-giovolumemonitor--mount-changed" href="pygobject/class-giovolumemonitor.html#signal-giovolumemonitor--mount-changed">
-        <ANCHOR id="signal-giovolumemonitor--mount-pre-unmount" href="pygobject/class-giovolumemonitor.html#signal-giovolumemonitor--mount-pre-unmount">
-        <ANCHOR id="signal-giovolumemonitor--mount-removed" href="pygobject/class-giovolumemonitor.html#signal-giovolumemonitor--mount-removed">
-        <ANCHOR id="signal-giovolumemonitor--volume-added" href="pygobject/class-giovolumemonitor.html#signal-giovolumemonitor--volume-added">
-        <ANCHOR id="signal-giovolumemonitor--volume-changed" href="pygobject/class-giovolumemonitor.html#signal-giovolumemonitor--volume-changed">
-        <ANCHOR id="signal-giovolumemonitor--volume-removed" href="pygobject/class-giovolumemonitor.html#signal-giovolumemonitor--volume-removed">
-        <ANCHOR id="gio-functions" href="pygobject/gio-functions.html">
-        <ANCHOR id="function-gio--content-type-can-be-executable" href="pygobject/gio-functions.html#function-gio--content-type-can-be-executable">
-        <ANCHOR id="function-gio--content-type-equals" href="pygobject/gio-functions.html#function-gio--content-type-equals">
-        <ANCHOR id="function-gio--content-type-from-mime-type" href="pygobject/gio-functions.html#function-gio--content-type-from-mime-type">
-        <ANCHOR id="function-gio--content-type-get-description" href="pygobject/gio-functions.html#function-gio--content-type-get-description">
-        <ANCHOR id="function-gio--content-type-get-icon" href="pygobject/gio-functions.html#function-gio--content-type-get-icon">
-        <ANCHOR id="function-gio--content-type-get-mime-type" href="pygobject/gio-functions.html#function-gio--content-type-get-mime-type">
-        <ANCHOR id="function-gio--content-type-guess" href="pygobject/gio-functions.html#function-gio--content-type-guess">
-        <ANCHOR id="function-gio--content-type-is-a" href="pygobject/gio-functions.html#function-gio--content-type-is-a">
-        <ANCHOR id="function-gio--content-type-is-unknown" href="pygobject/gio-functions.html#function-gio--content-type-is-unknown">
-        <ANCHOR id="function-gio--content-types-get-registered" href="pygobject/gio-functions.html#function-gio--content-types-get-registered">
-        <ANCHOR id="function-gio--io-error-from-errno" href="pygobject/gio-functions.html#function-gio--io-error-from-errno">
-        <ANCHOR id="gio-constants" href="pygobject/gio-constants.html">
-        <ANCHOR id="gio-constants-description" href="pygobject/gio-constants.html#gio-constants-description">
-        <ANCHOR id="gio-ask-password-flags-constants" href="pygobject/gio-constants.html#gio-ask-password-flags-constants">
-        <ANCHOR id="gio-app-info-constants" href="pygobject/gio-constants.html#gio-app-info-constants">
-        <ANCHOR id="gio-data-stream-byte-order-constants" href="pygobject/gio-constants.html#gio-data-stream-byte-order-constants">
-        <ANCHOR id="gio-data-stream-newline-type-constants" href="pygobject/gio-constants.html#gio-data-stream-newline-type-constants">
-        <ANCHOR id="gio-emblem-origin-constants" href="pygobject/gio-constants.html#gio-emblem-origin-constants">
-        <ANCHOR id="gio-error-constants" href="pygobject/gio-constants.html#gio-error-constants">
-        <ANCHOR id="gio-file-attribute-constants" href="pygobject/gio-constants.html#gio-file-attribute-constants">
-        <ANCHOR id="gio-file-attribute-type-constants" href="pygobject/gio-constants.html#gio-file-attribute-type-constants">
-        <ANCHOR id="gio-file-attribute-flags-constants" href="pygobject/gio-constants.html#gio-file-attribute-flags-constants">
-        <ANCHOR id="gio-file-create-flags-constants" href="pygobject/gio-constants.html#gio-file-create-flags-constants">
-        <ANCHOR id="gio-file-copy-flags-constants" href="pygobject/gio-constants.html#gio-file-copy-flags-constants">
-        <ANCHOR id="gio-file-monitor-flags-constants" href="pygobject/gio-constants.html#gio-file-monitor-flags-constants">
-        <ANCHOR id="gio-file-query-info-flags-constants" href="pygobject/gio-constants.html#gio-file-query-info-flags-constants">
-        <ANCHOR id="gio-file-type-constants" href="pygobject/gio-constants.html#gio-file-type-constants">
-        <ANCHOR id="gio-mount-mount-flags-constants" href="pygobject/gio-constants.html#gio-mount-mount-flags-constants">
-        <ANCHOR id="gio-mount-unmount-flags-constants" href="pygobject/gio-constants.html#gio-mount-unmount-flags-constants">
-        <ANCHOR id="gio-mount-operation-result-constants" href="pygobject/gio-constants.html#gio-mount-operation-result-constants">
-        <ANCHOR id="gio-password-save-constants" href="pygobject/gio-constants.html#gio-password-save-constants">
-        <ANCHOR id="class-giounixinputstream" href="pygobject/class-giounixinputstream.html">
-        <ANCHOR id="properties-giounixinputstream" href="pygobject/class-giounixinputstream.html#properties-giounixinputstream">
-        <ANCHOR id="constructor-giounixinputstream" href="pygobject/class-giounixinputstream.html#constructor-giounixinputstream">
-        <ANCHOR id="method-giounixinputstream--get-close-fd" href="pygobject/class-giounixinputstream.html#method-giounixinputstream--get-close-fd">
-        <ANCHOR id="method-giounixinputstream--get-fd" href="pygobject/class-giounixinputstream.html#method-giounixinputstream--get-fd">
-        <ANCHOR id="method-giounixinputstream--set-close-fd" href="pygobject/class-giounixinputstream.html#method-giounixinputstream--set-close-fd">
-        <ANCHOR id="class-giounixoutputstream" href="pygobject/class-giounixoutputstream.html">
-        <ANCHOR id="properties-giounixoutputstream" href="pygobject/class-giounixoutputstream.html#properties-giounixoutputstream">
-        <ANCHOR id="constructor-giounixoutputstream" href="pygobject/class-giounixoutputstream.html#constructor-giounixoutputstream">
-        <ANCHOR id="method-giounixoutputstream--get-close-fd" href="pygobject/class-giounixoutputstream.html#method-giounixoutputstream--get-close-fd">
-        <ANCHOR id="method-giounixoutputstream--get-fd" href="pygobject/class-giounixoutputstream.html#method-giounixoutputstream--get-fd">
-        <ANCHOR id="method-giounixoutputstream--set-close-fd" href="pygobject/class-giounixoutputstream.html#method-giounixoutputstream--set-close-fd">
-        
\ No newline at end of file
diff --git a/docs/html/pygobject-introduction.html b/docs/html/pygobject-introduction.html
deleted file mode 100644 (file)
index bdb81c0..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Introduction</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="PyGObject Reference Manual"><link rel="up" href="index.html" title="PyGObject Reference Manual"><link rel="prev" href="index.html" title="PyGObject Reference Manual"><link rel="next" href="glib-class-reference.html" title="PyGlibClass Reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Introduction</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="glib-class-reference.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Introduction"><div class="titlepage"><div><div><h2 class="title"><a name="pygobject-introduction"></a>Introduction</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="pygobject-introduction.html#pygobject-reference-format">Reference Page Format</a></span></dt></dl></div><p>This document describes many of the <code class="literal">PyGObject</code>
-  version 2.12 classes and their methods and associated
-  functions. Deprecated classes, functions and methods have been
-  specifically left out of this reference though classes that have become
-  deprecated since PyGObject 2.0 have been left in but annotated with a
-  deprecation warning. This document attempts to document as much of the
-  <code class="literal">PyGObject</code> <code class="literal">API</code> as possible but there
-  are undoubtedly errors and omissions. If you discover any of these please
-  file a bug report at <a class="ulink" href="http://bugzilla.gnome.org" target="_top">bugzilla.gnome.org</a> for the
-  <code class="literal">pygobject</code> project. Specific areas that have not been
-  documented include:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">The GParamSpec class</li></ul></div><p>This reference describes the API for <code class="literal">PyGObject</code> as
-  of version 2.11.0+ and assumes that the additional API changes for version
-  2.12 will not be significant. There will undoubtedly be changes that are
-  not reflected in this reference. The differences in the API between
-  version 2.0 and previous versions are denoted in this reference with a
-  Note that describes the availability of the object, constructor, method or
-  function. Any of these that do not have a notation can be assumed to be
-  available in all versions of PyGObject from 2.0 and up. The source code
-  must be consulted if this reference and your version of
-  <code class="literal">PyGObject</code> seem to differ. You are encouraged to use the
-  latest version of <code class="literal">PyGObject</code> that is available. See the
-  <a class="ulink" href="http://www.pygtk.org" target="_top"><code class="literal">PyGTK</code>
-  homepage</a> for more information and more resources on how to use
-  PyGObject as well as help in its development.</p><p> The Reference contains a chapter for each
-  <code class="literal">PyGObject</code> module containing the class descriptions. The
-  class descriptions are arranged alphabetically within the
-  chapters. Currently there is one module chapter:</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term">The <code class="literal">gobject</code> module</span></p></td><td>The classes that are included in the
-<code class="literal">gobject</code> module of <code class="literal">PyGObject</code> and are
-accessed similar to: gobject.GObject. These classes are the base object
-classes that the <code class="literal">gtk</code> and <code class="literal">gtk.gdk</code>
-module classes are built on.</td></tr></tbody></table><div class="sect1" title="Reference Page Format"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="pygobject-reference-format"></a>Reference Page Format</h2></div></div></div><p>Each <code class="literal">PyGObject</code> class is described in a reference
-page that has a number of sections in a fixed format. Each reference page
-will have a subset of the following sections:</p><table border="0" width="100%" bgcolor="#FFECCE"><col align="left" valign="top" width="0*"><tbody><tr><td><p><span class="term">Name</span></p></td><td>The name and a one-line description of the
-class.</td></tr><tr><td><p><span class="term">Synopsis</span></p></td><td>A synopsis of the class and its methods and
-optionally a list of associated functions.</td></tr><tr><td><p><span class="term">Ancestry</span></p></td><td>The list of the parent classes of the class. This
-section may not be present in all class descriptions.</td></tr><tr><td><p><span class="term">Properties</span></p></td><td>A list of the properties (internal state)
-supported by the class. This section may not be present in all classes. The
-property descriptions include the name, the access operations (e.g. Read,
-Write), and a brief description. Properties are accessed using the <a class="link" href="class-gobject.html#method-gobject--set-property" title="gobject.GObject.set_property"><code class="methodname">gobject.set_property</code>()</a> 
-and <a class="link" href="class-gobject.html#method-gobject--get-property" title="gobject.GObject.get_property"><code class="methodname">gobject.get_property</code>()</a> 
-methods that are available to every <code class="literal">PyGObject</code> object. This
-section may not be present in all class descriptions.</td></tr><tr><td><p><span class="term">Attributes</span></p></td><td>A set of internal object state data accessible as Python
-         attributes (e.g. object.attr). The attribute descriptions include
-         a name by which the attribute data is accessed, the access mode
-         (e.g. Read, Write), and a brief description of the attribute. Most
-         <code class="literal">PyGObject</code> classes do not support attributes so
-         this section is not present in most class descriptions.</td></tr><tr><td><p><span class="term">Signal Prototypes</span></p></td><td>A list of the signals supported by the class including
-         the signal name and a synopsis of the signal handler function
-         prototype. This section may not be present in all class
-         descriptions.</td></tr><tr><td><p><span class="term">Description</span></p></td><td>A description of the class and possibly some of
-       the methods supported by the class.</td></tr><tr><td><p><span class="term">Constructor</span></p></td><td>The description of the class object constructor including
-         the synopsis with brief parameter descriptions and a description
-         of th use of the constructor. There may be more than one
-         constructor description if the constructor supports different
-         parameter lists. This section may not be present in all class
-         descriptions.</td></tr><tr><td><p><span class="term">Methods</span></p></td><td>A list of methods supported by the class. Each method
-         description includes: a synopsis of the method and its parameters
-         as well as a brief description of each parameter and return value
-         (if any); and, a description of the use of the method.</td></tr><tr><td><p><span class="term">Functions</span></p></td><td>A list of related functions. Each function description
-         includes a synopsis of the function and its parameters and return
-         value (if any), and a description of the use of the
-         function.</td></tr><tr><td><p><span class="term">Signals</span></p></td><td>A list of signals including a synopsis of the signal
-         handler prototype function with its parameters and return value
-         (if any). The signal emission conditions are briefly
-         described. This section is not present in all class descriptions;
-         specifically, the <code class="literal">gtk.gdk</code> classes do not
-         usually support signals.</td></tr></tbody></table><p>The function and method synopsis parameters are displayed in
-    <span class="bold"><strong>bold</strong></span> to denote Python keyword
-    parameters.  Also if the parameter is optional its default value will be
-    displayed. For example the <a class="link" href="gobject-functions.html#function-gobject--signal-lookup" title="gobject.signal_lookup"><code class="function">gobject.signal_lookup</code>()</a>
-    function synopsis is:</p><pre class="programlisting">
-<code class="methodsynopsis">    def <span class="methodname"><a class="link" href="gobject-functions.html#function-gobject--signal-lookup" title="gobject.signal_lookup">gobject.signal_lookup</a></span>(<span class="methodparam"><span class="parameter"><strong class="parameter"><code>name</code></strong></span></span>, <span class="methodparam"><span class="parameter"><strong class="parameter"><code>type</code></strong></span></span>)</code>
-</pre><p>The parameters <em class="parameter"><code>name</code></em> and
-    <em class="parameter"><code>type</code></em> are keyword parameters that can be specified
-    in a call either by position or keyword (in which case position is not
-    important). The following calls have the same result:</p><pre class="programlisting">
-  id = gobject.signal_lookup("clicked", gtk.Button)
-  id = gobject.signal_lookup("clicked", type=gtk.Button)
-  id = gobject.signal_lookup(name="clicked", type=gtk.Button)
-  id = gobject.signal_lookup(type=gtk.Button, name="clicked")
-</pre><p>Parameters that are not keyword parameters are displayed in
-<span class="emphasis"><em>italic</em></span> and must be specified positionally but may also
-be optional.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="glib-class-reference.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PyGObject Reference Manual </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> PyGlibClass Reference</td></tr></table></div></body></html>
diff --git a/docs/html/pygobject.devhelp b/docs/html/pygobject.devhelp
deleted file mode 100644 (file)
index b37be2a..0000000
+++ /dev/null
@@ -1,525 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<book xmlns="http://www.devhelp.net/book" title="PyGObject Reference Manual" link="index.html" author="" name="pygobject" language="python">
-  <chapters>
-    <sub name="Introduction" link="pygobject-introduction.html">
-      <sub name="Reference Page Format" link="pygobject-introduction.html#pygobject-reference-format"/>
-    </sub>
-    <sub name="PyGlibClass Reference" link="glib-class-reference.html">
-      <sub name="glib.MainContext" link="class-glibmaincontext.html"/>
-      <sub name="glib.MainLoop" link="class-glibmainloop.html"/>
-      <sub name="glib Functions" link="glib-functions.html"/>
-      <sub name="glib Constants" link="glib-constants.html"/>
-    </sub>
-    <sub name="PyGObject Class Reference" link="gobject-class-reference.html">
-      <sub name="gobject.GObject" link="class-gobject.html"/>
-      <sub name="gobject.GBoxed" link="class-gobjectgboxed.html"/>
-      <sub name="gobject.GPointer" link="class-gobjectgpointer.html"/>
-      <sub name="gobject.GInterface" link="class-gobjectginterface.html"/>
-      <sub name="gobject Functions" link="gobject-functions.html"/>
-      <sub name="gobject Constants" link="gobject-constants.html"/>
-    </sub>
-    <sub name="PyGio Class Reference" link="gio-class-reference.html">
-      <sub name="gio.AppInfo" link="class-gioappinfo.html"/>
-      <sub name="gio.AppLaunchContext" link="class-gioapplaunchcontext.html"/>
-      <sub name="gio.AsyncResult" link="class-gioasyncresult.html"/>
-      <sub name="gio.BufferedInputStream" link="class-giobufferedinputstream.html"/>
-      <sub name="gio.BufferedOutputStream" link="class-giobufferedoutputstream.html"/>
-      <sub name="gio.Cancellable" link="class-giocancellable.html"/>
-      <sub name="gio.DataInputStream" link="class-giodatainputstream.html"/>
-      <sub name="gio.DataOutputStream" link="class-giodataoutputstream.html"/>
-      <sub name="gio.Drive" link="class-giodrive.html"/>
-      <sub name="gio.Emblem" link="class-gioemblem.html"/>
-      <sub name="gio.EmblemedIcon" link="class-gioemblemedicon.html"/>
-      <sub name="gio.File" link="class-giofile.html"/>
-      <sub name="gio.FileAttributeInfo" link="class-giofileattributeinfo.html"/>
-      <sub name="gio.FileEnumerator" link="class-giofileenumerator.html"/>
-      <sub name="gio.FileIcon" link="class-giofileicon.html"/>
-      <sub name="gio.FileInfo" link="class-giofileinfo.html"/>
-      <sub name="gio.FileInputStream" link="class-giofileinputstream.html"/>
-      <sub name="gio.FileMonitor" link="class-giofilemonitor.html"/>
-      <sub name="gio.FileOutputStream" link="class-giofileoutputstream.html"/>
-      <sub name="gio.FilterInputStream" link="class-giofilterinputstream.html"/>
-      <sub name="gio.FilterOutputStream" link="class-giofilteroutputstream.html"/>
-      <sub name="gio.Icon" link="class-gioicon.html"/>
-      <sub name="gio.InputStream" link="class-gioinputstream.html"/>
-      <sub name="gio.LoadableIcon" link="class-gioloadableicon.html"/>
-      <sub name="gio.MemoryInputStream" link="class-giomemoryinputstream.html"/>
-      <sub name="gio.MemoryOutputStream" link="class-giomemoryoutputstream.html"/>
-      <sub name="gio.Mount" link="class-giomount.html"/>
-      <sub name="gio.MountOperation" link="class-giomountoperation.html"/>
-      <sub name="gio.OutputStream" link="class-giooutputstream.html"/>
-      <sub name="gio.Seekable" link="class-gioseekable.html"/>
-      <sub name="gio.SimpleAsyncResult" link="class-giosimpleasyncresult.html"/>
-      <sub name="gio.ThemedIcon" link="class-giothemedicon.html"/>
-      <sub name="gio.Volume" link="class-giovolume.html"/>
-      <sub name="gio.VolumeMonitor" link="class-giovolumemonitor.html"/>
-      <sub name="gio Functions" link="gio-functions.html"/>
-      <sub name="gio Constants" link="gio-constants.html"/>
-    </sub>
-    <sub name="PyGio Unix Class Reference" link="giounix-class-reference.html">
-      <sub name="gio.unix.InputStream" link="class-giounixinputstream.html"/>
-      <sub name="gio.unix.OutputStream" link="class-giounixoutputstream.html"/>
-    </sub>
-  </chapters>
-  <functions>
-    <function name="glib.MainContext" link="class-glibmaincontext.html#constructor-glibmaincontext"/>
-    <function name="glib.MainLoop" link="class-glibmainloop.html#constructor-glibmainloop"/>
-    <function name="gio.AppInfo" link="class-gioappinfo.html#constructor-gioappinfo"/>
-    <function name="gio.AppLaunchContext" link="class-gioapplaunchcontext.html#constructor-gioapplaunchcontext"/>
-    <function name="gio.BufferedInputStream" link="class-giobufferedinputstream.html#constructor-giobufferedinputstream"/>
-    <function name="gio.BufferedOutputStream" link="class-giobufferedoutputstream.html#constructor-giobufferedoutputstream"/>
-    <function name="gio.Cancellable" link="class-giocancellable.html#constructor-giocancellable"/>
-    <function name="gio.DataInputStream" link="class-giodatainputstream.html#constructor-giodatainputstream"/>
-    <function name="gio.DataOutputStream" link="class-giodataoutputstream.html#constructor-giodataoutputstream"/>
-    <function name="gio.Emblem" link="class-gioemblem.html#constructor-gioemblem"/>
-    <function name="gio.EmblemedIcon" link="class-gioemblemedicon.html#constructor-gioemblemedicon"/>
-    <function name="gio.File" link="class-giofile.html#constructor-giofile"/>
-    <function name="gio.FileIcon" link="class-giofileicon.html#constructor-giofileicon"/>
-    <function name="gio.FileInfo" link="class-giofileinfo.html#constructor-giofileinfo"/>
-    <function name="gio.MemoryInputStream" link="class-giomemoryinputstream.html#constructor-giomemoryinputstream"/>
-    <function name="gio.MemoryOutputStream" link="class-giomemoryoutputstream.html#constructor-giomemoryoutputstream"/>
-    <function name="gio.MountOperation" link="class-giomountoperation.html#constructor-giomountoperation"/>
-    <function name="gio.ThemedIcon" link="class-giothemedicon.html#constructor-giothemedicon"/>
-    <function name="gio.unix.InputStream" link="class-giounixinputstream.html#constructor-giounixinputstream"/>
-    <function name="gio.unix.OutputStream" link="class-giounixoutputstream.html#constructor-giounixoutputstream"/>
-    <function name="glib.MainContext.iteration" link="class-glibmaincontext.html#method-glibmaincontext--iteration"/>
-    <function name="glib.MainContext.pending" link="class-glibmaincontext.html#method-glibmaincontext--pending"/>
-    <function name="glib.MainLoop.get_context" link="class-glibmainloop.html#method-glibmainloop--get-context"/>
-    <function name="glib.MainLoop.is_running" link="class-glibmainloop.html#method-glibmainloop--is-running"/>
-    <function name="glib.MainLoop.quit" link="class-glibmainloop.html#method-glibmainloop--quit"/>
-    <function name="glib.MainLoop.run" link="class-glibmainloop.html#method-glibmainloop--run"/>
-    <function name="glib.idle_add" link="glib-functions.html#function-glib--idle-add"/>
-    <function name="glib.timeout_add" link="glib-functions.html#function-glib--timeout-add"/>
-    <function name="glib.timeout_add_seconds" link="glib-functions.html#function-glib--timeout-add-seconds"/>
-    <function name="glib.io_add_watch" link="glib-functions.html#function-glib--io-add-watch"/>
-    <function name="glib.source_remove" link="glib-functions.html#function-glib--source-remove"/>
-    <function name="glib.main_context_default" link="glib-functions.html#function-glib--main-context-default"/>
-    <function name="glib.markup_escape_text" link="glib-functions.html#function-glib--markup-escape-text"/>
-    <function name="glib.child_watch_add" link="glib-functions.html#function-glib--child-watch-add"/>
-    <function name="glib.spawn_async" link="glib-functions.html#function-glib--spawn-async"/>
-    <function name="glib.get_current_time" link="glib-functions.html#function-glib--get-current-time"/>
-    <function name="glib.get_user_cache_dir" link="glib-functions.html#function-glib--get-user-cache-dir"/>
-    <function name="glib.get_user_config_dir" link="glib-functions.html#function-glib--get-user-config-dir"/>
-    <function name="glib.get_user_data_dir" link="glib-functions.html#function-glib--get-user-data-dir"/>
-    <function name="glib.get_user_special_dir" link="glib-functions.html#function-glib--get-user-special-dir"/>
-    <function name="glib.main_depth" link="glib-functions.html#function-glib--main-depth"/>
-    <function name="glib.threads_init" link="glib-functions.html#function-glib--threads-init"/>
-    <function name="glib.signal_accumulator_true_handled" link="glib-functions.html#function-glib--signal-accumulator-true-handled"/>
-    <function name="glib.filename_display_name" link="glib-functions.html#function-glib--filename-display-name"/>
-    <function name="glib.filename_display_basename" link="glib-functions.html#function-glib--filename-display-basename"/>
-    <function name="glib.filename_from_utf8" link="glib-functions.html#function-glib--filename-from-utf8"/>
-    <function name="Glib IO Condition Constants" link="glib-constants.html#glib-io-condition-constants"/>
-    <function name="Glib Priority Constants" link="glib-constants.html#glib-priority-constants"/>
-    <function name="Glib Spawn Flag Constants" link="glib-constants.html#glib-spawn-flag-constants"/>
-    <function name="Glib User Directory Constants" link="glib-constants.html#glib-user-directory-constants"/>
-    <function name="Glib Version Constants" link="glib-constants.html#glib-version-constants"/>
-    <function name="gobject.GObject.get_property" link="class-gobject.html#method-gobject--get-property"/>
-    <function name="gobject.GObject.get_properties" link="class-gobject.html#method-gobject--get-properties"/>
-    <function name="gobject.GObject.set_property" link="class-gobject.html#method-gobject--set-property"/>
-    <function name="gobject.GObject.set_properties" link="class-gobject.html#method-gobject--set-properties"/>
-    <function name="gobject.GObject.freeze_notify" link="class-gobject.html#method-gobject--freeze-notify"/>
-    <function name="gobject.GObject.notify" link="class-gobject.html#method-gobject--notify"/>
-    <function name="gobject.GObject.thaw_notify" link="class-gobject.html#method-gobject--thaw-notify"/>
-    <function name="gobject.GObject.get_data" link="class-gobject.html#method-gobject--get-data"/>
-    <function name="gobject.GObject.set_data" link="class-gobject.html#method-gobject--set-data"/>
-    <function name="gobject.GObject.connect" link="class-gobject.html#method-gobject--connect"/>
-    <function name="gobject.GObject.connect_after" link="class-gobject.html#method-gobject--connect-after"/>
-    <function name="gobject.GObject.connect_object" link="class-gobject.html#method-gobject--connect-object"/>
-    <function name="gobject.GObject.connect_object_after" link="class-gobject.html#method-gobject--connect-object-after"/>
-    <function name="gobject.GObject.disconnect" link="class-gobject.html#method-gobject--disconnect"/>
-    <function name="gobject.GObject.handler_disconnect" link="class-gobject.html#method-gobject--handler-disconnect"/>
-    <function name="gobject.GObject.handler_is_connected" link="class-gobject.html#method-gobject--handler-is-connected"/>
-    <function name="gobject.GObject.handler_block" link="class-gobject.html#method-gobject--handler-block"/>
-    <function name="gobject.GObject.handler_unblock" link="class-gobject.html#method-gobject--handler-unblock"/>
-    <function name="gobject.GObject.handler_block_by_func" link="class-gobject.html#method-gobject--handler-block-by-func"/>
-    <function name="gobject.GObject.handler_unblock_by_func" link="class-gobject.html#method-gobject--handler-unblock-by-func"/>
-    <function name="gobject.GObject.emit" link="class-gobject.html#method-gobject--emit"/>
-    <function name="gobject.GObject.stop_emission" link="class-gobject.html#method-gobject--stop-emission"/>
-    <function name="gobject.GObject.emit_stop_by_name" link="class-gobject.html#method-gobject--emit-stop-by-name"/>
-    <function name="gobject.GObject.chain" link="class-gobject.html#method-gobject--chain"/>
-    <function name="The GObject &quot;notify&quot; Signal" link="class-gobject.html#signal-gobject--notify"/>
-    <function name="gobject.GBoxed.copy" link="class-gobjectgboxed.html#method-gobjectgboxed--copy"/>
-    <function name="gobject.type_name" link="gobject-functions.html#function-gobject--type-name"/>
-    <function name="gobject.type_from_name" link="gobject-functions.html#function-gobject--type-from-name"/>
-    <function name="gobject.type_parent" link="gobject-functions.html#function-gobject--type-parent"/>
-    <function name="gobject.type_is_a" link="gobject-functions.html#function-gobject--type-is-a"/>
-    <function name="gobject.type_children" link="gobject-functions.html#function-gobject--type-children"/>
-    <function name="gobject.type_interfaces" link="gobject-functions.html#function-gobject--type-interfaces"/>
-    <function name="gobject.type_register" link="gobject-functions.html#function-gobject--type-register"/>
-    <function name="gobject.signal_new" link="gobject-functions.html#function-gobject--signal-new"/>
-    <function name="gobject.signal_list_names" link="gobject-functions.html#function-gobject--signal-list-names"/>
-    <function name="gobject.signal_list_ids" link="gobject-functions.html#function-gobject--signal-list-ids"/>
-    <function name="gobject.signal_lookup" link="gobject-functions.html#function-gobject--signal-lookup"/>
-    <function name="gobject.signal_name" link="gobject-functions.html#function-gobject--signal-name"/>
-    <function name="gobject.signal_query" link="gobject-functions.html#function-gobject--signal-query1"/>
-    <function name="gobject.signal_query" link="gobject-functions.html#function-gobject--signal-query2"/>
-    <function name="gobject.list_properties" link="gobject-functions.html#function-gobject--list-properties"/>
-    <function name="gobject.new" link="gobject-functions.html#function-gobject--new"/>
-    <function name="gobject.signal_accumulator_true_handled" link="gobject-functions.html#function-gobject--signal-accumulator-true-handled"/>
-    <function name="gobject.add_emission_hook" link="gobject-functions.html#function-gobject--add-emission-hook"/>
-    <function name="gobject.remove_emission_hook" link="gobject-functions.html#function-gobject--remove-emission-hook"/>
-    <function name="gobject._install_metaclass" link="gobject-functions.html#function-gobject---install-metaclass"/>
-    <function name="GObject Param Flag Constants" link="gobject-constants.html#gobject-param-constants"/>
-    <function name="GObject Signal Flag Constants" link="gobject-constants.html#gobject-signal-constants"/>
-    <function name="GObject Spawn Flag Constants" link="gobject-constants.html#gobject-spawn-flag-constants"/>
-    <function name="GObject Built-in Type Constants" link="gobject-constants.html#gobject-type-constants"/>
-    <function name="GObject Version Constants" link="gobject-constants.html#gobject-version-constants"/>
-    <function name="gio.AppInfo.add_supports_type" link="class-gioappinfo.html#method-gioappinfo--add-supports-type"/>
-    <function name="gio.AppInfo.can_delete" link="class-gioappinfo.html#method-gioappinfo--can-delete"/>
-    <function name="gio.AppInfo.can_remove_supports_type" link="class-gioappinfo.html#method-gioappinfo--can-remove-supports-type"/>
-    <function name="gio.AppInfo.delete" link="class-gioappinfo.html#method-gioappinfo--delete"/>
-    <function name="gio.AppInfo.dup" link="class-gioappinfo.html#method-gioappinfo--dup"/>
-    <function name="gio.AppInfo.equal" link="class-gioappinfo.html#method-gioappinfo--equal"/>
-    <function name="gio.AppInfo.get_commandline" link="class-gioappinfo.html#method-gioappinfo--get-commandline"/>
-    <function name="gio.AppInfo.get_description" link="class-gioappinfo.html#method-gioappinfo--get-description"/>
-    <function name="gio.AppInfo.get_executable" link="class-gioappinfo.html#method-gioappinfo--get-executable"/>
-    <function name="gio.AppInfo.get_icon" link="class-gioappinfo.html#method-gioappinfo--get-icon"/>
-    <function name="gio.AppInfo.get_id" link="class-gioappinfo.html#method-gioappinfo--get-id"/>
-    <function name="gio.AppInfo.get_name" link="class-gioappinfo.html#method-gioappinfo--get-name"/>
-    <function name="gio.AppInfo.launch" link="class-gioappinfo.html#method-gioappinfo--launch"/>
-    <function name="gio.AppInfo.launch_uris" link="class-gioappinfo.html#method-gioappinfo--launch-uris"/>
-    <function name="gio.AppInfo.remove_supports_type" link="class-gioappinfo.html#method-gioappinfo--remove-supports-type"/>
-    <function name="gio.AppInfo.set_as_default_for_extension" link="class-gioappinfo.html#method-gioappinfo--set-as-default-for-extension"/>
-    <function name="gio.AppInfo.set_as_default_for_type" link="class-gioappinfo.html#method-gioappinfo--set-as-default-for-type"/>
-    <function name="gio.AppInfo.should_show" link="class-gioappinfo.html#method-gioappinfo--should-show"/>
-    <function name="gio.AppInfo.supports_files" link="class-gioappinfo.html#method-gioappinfo--supports-files"/>
-    <function name="gio.AppInfo.supports_uris" link="class-gioappinfo.html#method-gioappinfo--supports-uris"/>
-    <function name="gio.app_info_get_all" link="class-gioappinfo.html#function-gio--app-info-get-all"/>
-    <function name="gio.app_info_get_all_for_type" link="class-gioappinfo.html#function-gio--app-info-get-all-for-type"/>
-    <function name="gio.app_info_get_default_for_type" link="class-gioappinfo.html#function-gio--app-info-get-default-for-type"/>
-    <function name="gio.app_info_get_default_for_uri_scheme" link="class-gioappinfo.html#function-gio--app-info-get-default-for-uri-scheme"/>
-    <function name="gio.app_info_reset_type_association" link="class-gioappinfo.html#function-gio--app-info-reset-type-association"/>
-    <function name="gio.AppLaunchContext.get_display" link="class-gioapplaunchcontext.html#method-gioapplaunchcontext--get-display"/>
-    <function name="gio.AppLaunchContext.get_startup_notify_id" link="class-gioapplaunchcontext.html#method-gioapplaunchcontext--get-startup-notify-id"/>
-    <function name="gio.AppLaunchContext.launch_failed" link="class-gioapplaunchcontext.html#method-gioapplaunchcontext--launch-failed"/>
-    <function name="gio.AsyncResult.get_source_object" link="class-gioasyncresult.html#method-gioasyncresult--get-source-object"/>
-    <function name="gio.BufferedInputStream.fill" link="class-giobufferedinputstream.html#method-giobufferedinputstream--fill"/>
-    <function name="gio.BufferedInputStream.fill_async" link="class-giobufferedinputstream.html#method-giobufferedinputstream--fill-async"/>
-    <function name="gio.BufferedInputStream.fill_finish" link="class-giobufferedinputstream.html#method-giobufferedinputstream--fill-finish"/>
-    <function name="gio.BufferedInputStream.get_available" link="class-giobufferedinputstream.html#method-giobufferedinputstream--get-available"/>
-    <function name="gio.BufferedInputStream.get_buffer_size" link="class-giobufferedinputstream.html#method-giobufferedinputstream--get-buffer-size"/>
-    <function name="gio.BufferedInputStream.read_byte" link="class-giobufferedinputstream.html#method-giobufferedinputstream--read-byte"/>
-    <function name="gio.BufferedInputStream.set_buffer_size" link="class-giobufferedinputstream.html#method-giobufferedinputstream--set-buffer-size"/>
-    <function name="gio.buffered_input_stream_new_sized" link="class-giobufferedinputstream.html#function-gio--buffered-input-stream-new-sized"/>
-    <function name="gio.BufferedOutputStream.get_auto_grow" link="class-giobufferedoutputstream.html#method-giobufferedoutputstream--get-auto-grow"/>
-    <function name="gio.BufferedOutputStream.get_buffer_size" link="class-giobufferedoutputstream.html#method-giobufferedoutputstream--get-buffer-size"/>
-    <function name="gio.BufferedOutputStream.set_auto_grow" link="class-giobufferedoutputstream.html#method-giobufferedoutputstream--set-auto-grow"/>
-    <function name="gio.BufferedOutputStream.set_buffer_size" link="class-giobufferedoutputstream.html#method-giobufferedoutputstream--set-buffer-size"/>
-    <function name="gio.buffered_output_stream_new_sized" link="class-giobufferedoutputstream.html#function-gio--buffered-output-stream-new-sized"/>
-    <function name="gio.Cancellable.cancel" link="class-giocancellable.html#method-giocancellable--cancel"/>
-    <function name="gio.Cancellable.get_fd" link="class-giocancellable.html#method-giocancellable--get-fd"/>
-    <function name="gio.Cancellable.is_cancelled" link="class-giocancellable.html#method-giocancellable--is-cancelled"/>
-    <function name="gio.Cancellable.pop_current" link="class-giocancellable.html#method-giocancellable--pop-current"/>
-    <function name="gio.Cancellable.push_current" link="class-giocancellable.html#method-giocancellable--push-current"/>
-    <function name="gio.Cancellable.reset" link="class-giocancellable.html#method-giocancellable--reset"/>
-    <function name="gio.Cancellable.set_error_if_cancelled" link="class-giocancellable.html#method-giocancellable--set-error-if-cancelled"/>
-    <function name="gio.cancellable_get_current" link="class-giocancellable.html#function-gio--cancellable-get-current"/>
-    <function name="gio.DataInputStream.get_byte_order" link="class-giodatainputstream.html#method-giodatainputstream--get-byte-order"/>
-    <function name="gio.DataInputStream.get_newline_type" link="class-giodatainputstream.html#method-giodatainputstream--get-newline-type"/>
-    <function name="gio.DataInputStream.read_byte" link="class-giodatainputstream.html#method-giodatainputstream--read-byte"/>
-    <function name="gio.DataInputStream.read_int16" link="class-giodatainputstream.html#method-giodatainputstream--read-int16"/>
-    <function name="gio.DataInputStream.read_int32" link="class-giodatainputstream.html#method-giodatainputstream--read-int32"/>
-    <function name="gio.DataInputStream.read_int64" link="class-giodatainputstream.html#method-giodatainputstream--read-int64"/>
-    <function name="gio.DataInputStream.read_line" link="class-giodatainputstream.html#method-giodatainputstream--read-line"/>
-    <function name="gio.DataInputStream.read_line_async" link="class-giodatainputstream.html#method-giodatainputstream--read-line-async"/>
-    <function name="gio.DataInputStream.read_line_finish" link="class-giodatainputstream.html#method-giodatainputstream--read-line-finish"/>
-    <function name="gio.DataInputStream.read_uint16" link="class-giodatainputstream.html#method-giodatainputstream--read-uint16"/>
-    <function name="gio.DataInputStream.read_uint32" link="class-giodatainputstream.html#method-giodatainputstream--read-uint32"/>
-    <function name="gio.DataInputStream.read_uint64" link="class-giodatainputstream.html#method-giodatainputstream--read-uint64"/>
-    <function name="gio.DataInputStream.read_until" link="class-giodatainputstream.html#method-giodatainputstream--read-until"/>
-    <function name="gio.DataInputStream.read_until_async" link="class-giodatainputstream.html#method-giodatainputstream--read-until-async"/>
-    <function name="gio.DataInputStream.read_until_finish" link="class-giodatainputstream.html#method-giodatainputstream--read-until-finish"/>
-    <function name="gio.DataInputStream.set_byte_order" link="class-giodatainputstream.html#method-giodatainputstream--set-byte-order"/>
-    <function name="gio.DataInputStream.set_newline_type" link="class-giodatainputstream.html#method-giodatainputstream--set-newline-type"/>
-    <function name="gio.DataOutputStream.get_byte_order" link="class-giodataoutputstream.html#method-giodataoutputstream--get-byte-order"/>
-    <function name="gio.DataOutputStream.put_byte" link="class-giodataoutputstream.html#method-giodataoutputstream--put-byte"/>
-    <function name="gio.DataOutputStream.put_int16" link="class-giodataoutputstream.html#method-giodataoutputstream--put-int16"/>
-    <function name="gio.DataOutputStream.put_int32" link="class-giodataoutputstream.html#method-giodataoutputstream--put-int32"/>
-    <function name="gio.DataOutputStream.put_int64" link="class-giodataoutputstream.html#method-giodataoutputstream--put-int64"/>
-    <function name="gio.DataOutputStream.put_string" link="class-giodataoutputstream.html#method-giodataoutputstream--put-string"/>
-    <function name="gio.DataOutputStream.put_uint16" link="class-giodataoutputstream.html#method-giodataoutputstream--put-uint16"/>
-    <function name="gio.DataOutputStream.put_uint32" link="class-giodataoutputstream.html#method-giodataoutputstream--put-uint32"/>
-    <function name="gio.DataOutputStream.put_uint64" link="class-giodataoutputstream.html#method-giodataoutputstream--put-uint64"/>
-    <function name="gio.DataOutputStream.set_byte_order" link="class-giodataoutputstream.html#method-giodataoutputstream--set-byte-order"/>
-    <function name="gio.Drive.can_eject" link="class-giodrive.html#method-giodrive--can-eject"/>
-    <function name="gio.Drive.can_poll_for_media" link="class-giodrive.html#method-giodrive--can-poll-for-media"/>
-    <function name="gio.Drive.eject" link="class-giodrive.html#method-giodrive--eject"/>
-    <function name="gio.Drive.eject_finish" link="class-giodrive.html#method-giodrive--eject-finish"/>
-    <function name="gio.Drive.enumerate_identifiers" link="class-giodrive.html#method-giodrive--enumerate-identifiers"/>
-    <function name="gio.Drive.get_icon" link="class-giodrive.html#method-giodrive--get-icon"/>
-    <function name="gio.Drive.get_identifier" link="class-giodrive.html#method-giodrive--get-identifier"/>
-    <function name="gio.Drive.get_name" link="class-giodrive.html#method-giodrive--get-name"/>
-    <function name="gio.Drive.get_volumes" link="class-giodrive.html#method-giodrive--get-volumes"/>
-    <function name="gio.Drive.has_media" link="class-giodrive.html#method-giodrive--has-media"/>
-    <function name="gio.Drive.has_volumes" link="class-giodrive.html#method-giodrive--has-volumes"/>
-    <function name="gio.Drive.is_media_check_automatic" link="class-giodrive.html#method-giodrive--is-media-check-automatic"/>
-    <function name="gio.Drive.is_media_removable" link="class-giodrive.html#method-giodrive--is-media-removable"/>
-    <function name="gio.Drive.poll_for_media" link="class-giodrive.html#method-giodrive--poll-for-media"/>
-    <function name="gio.Drive.poll_for_media_finish" link="class-giodrive.html#method-giodrive--poll-for-media-finish"/>
-    <function name="gio.Emblem.get_icon" link="class-gioemblem.html#method-gioemblem--get-icon"/>
-    <function name="gio.Emblem.get_origin" link="class-gioemblem.html#method-gioemblem--get-origin"/>
-    <function name="gio.emblem_new_with_origin" link="class-gioemblem.html#function-gio--emblem-new-with-origin"/>
-    <function name="gio.EmblemedIcon.add_emblem" link="class-gioemblemedicon.html#method-gioemblemedicon--add-emblem"/>
-    <function name="gio.EmblemedIcon.get_icon" link="class-gioemblemedicon.html#method-gioemblemedicon--get-icon"/>
-    <function name="gio.File.append_to" link="class-giofile.html#method-giofile--append-to"/>
-    <function name="gio.File.append_to_async" link="class-giofile.html#method-giofile--append-to-async"/>
-    <function name="gio.File.append_to_finish" link="class-giofile.html#method-giofile--append-to-finish"/>
-    <function name="gio.File.copy" link="class-giofile.html#method-giofile--copy"/>
-    <function name="gio.File.copy_async" link="class-giofile.html#method-giofile--copy-async"/>
-    <function name="gio.File.copy_attributes" link="class-giofile.html#method-giofile--copy-attributes"/>
-    <function name="gio.File.copy_finish" link="class-giofile.html#method-giofile--copy-finish"/>
-    <function name="gio.File.create" link="class-giofile.html#method-giofile--create"/>
-    <function name="gio.File.create_async" link="class-giofile.html#method-giofile--create-async"/>
-    <function name="gio.File.create_finish" link="class-giofile.html#method-giofile--create-finish"/>
-    <function name="gio.File.delete" link="class-giofile.html#method-giofile--delete"/>
-    <function name="gio.File.dup" link="class-giofile.html#method-giofile--dup"/>
-    <function name="gio.File.eject_mountable" link="class-giofile.html#method-giofile--eject-mountable"/>
-    <function name="gio.File.eject_mountable_finish" link="class-giofile.html#method-giofile--eject-mountable-finish"/>
-    <function name="gio.File.enumerate_children" link="class-giofile.html#method-giofile--enumerate-children"/>
-    <function name="gio.File.enumerate_children_async" link="class-giofile.html#method-giofile--enumerate-children-async"/>
-    <function name="gio.File.eject_mountable_finish" link="class-giofile.html#method-giofile--enumerate-children-finish"/>
-    <function name="gio.File.equal" link="class-giofile.html#method-giofile--equal"/>
-    <function name="gio.File.find_enclosing_mount" link="class-giofile.html#method-giofile--find-enclosing-mount"/>
-    <function name="gio.File.find_enclosing_mount_async" link="class-giofile.html#method-giofile--find-enclosing-mount-async"/>
-    <function name="gio.File.find_enclosing_mount_finish" link="class-giofile.html#method-giofile--find-enclosing-mount-finish"/>
-    <function name="gio.File.get_basename" link="class-giofile.html#method-giofile--get-basename"/>
-    <function name="gio.File.get_child" link="class-giofile.html#method-giofile--get-child"/>
-    <function name="gio.File.get_child_for_display_name" link="class-giofile.html#method-giofile--get-child-for-display-name"/>
-    <function name="gio.File.get_parent" link="class-giofile.html#method-giofile--get-parent"/>
-    <function name="gio.File.get_parse_name" link="class-giofile.html#method-giofile--get-parse-name"/>
-    <function name="gio.File.get_path" link="class-giofile.html#method-giofile--get-path"/>
-    <function name="gio.File.get_relative_path" link="class-giofile.html#method-giofile--get-relative-path"/>
-    <function name="gio.File.get_uri" link="class-giofile.html#method-giofile--get-uri"/>
-    <function name="gio.File.get_uri_scheme" link="class-giofile.html#method-giofile--get-uri-scheme"/>
-    <function name="gio.File.has_prefix" link="class-giofile.html#method-giofile--has-prefix"/>
-    <function name="gio.File.has_uri_scheme" link="class-giofile.html#method-giofile--has-uri-scheme"/>
-    <function name="gio.File.is_native" link="class-giofile.html#method-giofile--is-native"/>
-    <function name="gio.File.load_contents" link="class-giofile.html#method-giofile--load-contents"/>
-    <function name="gio.File.load_contents_async" link="class-giofile.html#method-giofile--load-contents-async"/>
-    <function name="gio.File.load_contents_finish" link="class-giofile.html#method-giofile--load-contents-finish"/>
-    <function name="gio.File.make_directory" link="class-giofile.html#method-giofile--make-directory"/>
-    <function name="gio.File.make_directory_with_parents" link="class-giofile.html#method-giofile--make-directory-with-parents"/>
-    <function name="gio.File.make_symbolic_link" link="class-giofile.html#method-giofile--make-symbolic-link"/>
-    <function name="gio.File.monitor" link="class-giofile.html#method-giofile--monitor"/>
-    <function name="gio.File.monitor_directory" link="class-giofile.html#method-giofile--monitor-directory"/>
-    <function name="gio.File.monitor_file" link="class-giofile.html#method-giofile--monitor-file"/>
-    <function name="gio.File.mount_enclosing_volume" link="class-giofile.html#method-giofile--mount-enclosing-volume"/>
-    <function name="gio.File.mount_enclosing_volume_finish" link="class-giofile.html#method-giofile--mount-enclosing-volume-finish"/>
-    <function name="gio.File.mount_mountable" link="class-giofile.html#method-giofile--mount-mountable"/>
-    <function name="gio.File.mount_mountable_finish" link="class-giofile.html#method-giofile--mount-mountable-finish"/>
-    <function name="gio.File.move" link="class-giofile.html#method-giofile--move"/>
-    <function name="gio.File.query_default_handler" link="class-giofile.html#method-giofile--query-default-handler"/>
-    <function name="gio.File.query_exists" link="class-giofile.html#method-giofile--query-exists"/>
-    <function name="gio.File.query_file_type" link="class-giofile.html#method-giofile--query-file-type"/>
-    <function name="gio.File.query_filesystem_info" link="class-giofile.html#method-giofile--query-filesystem-info"/>
-    <function name="gio.File.query_filesystem_info_async" link="class-giofile.html#method-giofile--query-filesystem-info-async"/>
-    <function name="gio.File.query_filesystem_info_finish" link="class-giofile.html#method-giofile--query-filesystem-info-finish"/>
-    <function name="gio.File.query_filesystem_info" link="class-giofile.html#method-giofile--query-info"/>
-    <function name="gio.File.query_info_async" link="class-giofile.html#method-giofile--query-info-async"/>
-    <function name="gio.File.query_info_finish" link="class-giofile.html#method-giofile--query-info-finish"/>
-    <function name="gio.File.query_settable_attributes" link="class-giofile.html#method-giofile--query-settable-attributes"/>
-    <function name="gio.File.query_writable_namespace" link="class-giofile.html#method-giofile--query-writable-namespace"/>
-    <function name="gio.File.read" link="class-giofile.html#method-giofile--read"/>
-    <function name="gio.File.read_async" link="class-giofile.html#method-giofile--read-async"/>
-    <function name="gio.File.read_finish" link="class-giofile.html#method-giofile--read-finish"/>
-    <function name="gio.File.replace" link="class-giofile.html#method-giofile--replace"/>
-    <function name="gio.File.replace_async" link="class-giofile.html#method-giofile--replace-async"/>
-    <function name="gio.File.replace_contents" link="class-giofile.html#method-giofile--replace-contents"/>
-    <function name="gio.File.replace_contents_async" link="class-giofile.html#method-giofile--replace-contents-async"/>
-    <function name="gio.File.replace_contents_finish" link="class-giofile.html#method-giofile--replace-contents-finish"/>
-    <function name="gio.File.replace_finish" link="class-giofile.html#method-giofile--replace-finish"/>
-    <function name="gio.File.resolve_relative_path" link="class-giofile.html#method-giofile--resolve-relative-path"/>
-    <function name="gio.File.set_attribute" link="class-giofile.html#method-giofile--set-attribute"/>
-    <function name="gio.File.set_attribute_byte_string" link="class-giofile.html#method-giofile--set-attribute-byte-string"/>
-    <function name="gio.File.set_attribute_int32" link="class-giofile.html#method-giofile--set-attribute-int32"/>
-    <function name="gio.File.set_attribute_int64" link="class-giofile.html#method-giofile--set-attribute-int64"/>
-    <function name="gio.File.set_attribute_string" link="class-giofile.html#method-giofile--set-attribute-string"/>
-    <function name="gio.File.set_attribute_uint32" link="class-giofile.html#method-giofile--set-attribute-uint32"/>
-    <function name="gio.File.set_attribute_uint64" link="class-giofile.html#method-giofile--set-attribute-uint64"/>
-    <function name="gio.File.set_attributes_async" link="class-giofile.html#method-giofile--set-attributes-async"/>
-    <function name="gio.File.set_attributes_finish" link="class-giofile.html#method-giofile--set-attributes-finish"/>
-    <function name="gio.File.set_attributes_from_info" link="class-giofile.html#method-giofile--set-attributes-from-info"/>
-    <function name="gio.File.set_display_name" link="class-giofile.html#method-giofile--set-display-name"/>
-    <function name="gio.File.set_display_name_async" link="class-giofile.html#method-giofile--set-display-name-async"/>
-    <function name="gio.File.set_display_name_finish" link="class-giofile.html#method-giofile--set-display-name-finish"/>
-    <function name="gio.File.trash" link="class-giofile.html#method-giofile--trash"/>
-    <function name="gio.File.unmount_mountable" link="class-giofile.html#method-giofile--unmount-mountable"/>
-    <function name="gio.File.unmount_mountable_finish" link="class-giofile.html#method-giofile--unmount-mountable-finish"/>
-    <function name="gio.file_parse_name" link="class-giofile.html#function-gio--file-parse-name"/>
-    <function name="gio.FileEnumerator.close" link="class-giofileenumerator.html#method-giofileenumerator--close"/>
-    <function name="gio.FileEnumerator.close_async" link="class-giofileenumerator.html#method-giofileenumerator--close-async"/>
-    <function name="gio.FileEnumerator.close_finish" link="class-giofileenumerator.html#method-giofileenumerator--close-finish"/>
-    <function name="gio.FileEnumerator.get_container" link="class-giofileenumerator.html#method-giofileenumerator--get-container"/>
-    <function name="gio.FileEnumerator.has_pending" link="class-giofileenumerator.html#method-giofileenumerator--has-pending"/>
-    <function name="gio.FileEnumerator.is_closed" link="class-giofileenumerator.html#method-giofileenumerator--is-closed"/>
-    <function name="gio.FileEnumerator.next_file" link="class-giofileenumerator.html#method-giofileenumerator--next-file"/>
-    <function name="gio.FileEnumerator.next_files_async" link="class-giofileenumerator.html#method-giofileenumerator--next-files-async"/>
-    <function name="gio.FileEnumerator.next_files_finish" link="class-giofileenumerator.html#method-giofileenumerator--next-files-finish"/>
-    <function name="gio.FileEnumerator.set_pending" link="class-giofileenumerator.html#method-giofileenumerator--set-pending"/>
-    <function name="gio.FileIcon.get_file" link="class-giofileicon.html#method-giofileicon--get-file"/>
-    <function name="gio.FileInputStream.query_info" link="class-giofileinputstream.html#method-giofileinputstream--query-info"/>
-    <function name="gio.FileInputStream.query_info_async" link="class-giofileinputstream.html#method-giofileinputstream--query-info-async"/>
-    <function name="gio.FileInputStream.query_info_finish" link="class-giofileinputstream.html#method-giofileinputstream--query-info-finish"/>
-    <function name="gio.FileOutputStream.get_etag" link="class-giofileoutputstream.html#method-giofileoutputstream--get-etag"/>
-    <function name="gio.FileOutputStream.query_info" link="class-giofileoutputstream.html#method-giofileoutputstream--query-info"/>
-    <function name="gio.FileOutputStream.query_info_async" link="class-giofileoutputstream.html#method-giofileoutputstream--query-info-async"/>
-    <function name="gio.FileOutputStream.query_info_finish" link="class-giofileoutputstream.html#method-giofileoutputstream--query-info-finish"/>
-    <function name="gio.FilterInputStream.get_base_stream" link="class-giofilterinputstream.html#method-giofilterinputstream--get-base-stream"/>
-    <function name="gio.FilterInputStream.get_close_base_stream" link="class-giofilterinputstream.html#method-giofilterinputstream--get-close-base-stream"/>
-    <function name="gio.FilterInputStream.set_close_base_stream" link="class-giofilterinputstream.html#method-giofilterinputstream--set-close-base-stream"/>
-    <function name="gio.FilterOutputStream.get_base_stream" link="class-giofilteroutputstream.html#method-giofilteroutputstream--get-base-stream"/>
-    <function name="gio.FilterOutputStream.get_close_base_stream" link="class-giofilteroutputstream.html#method-giofilteroutputstream--get-close-base-stream"/>
-    <function name="gio.FilterOutputStream.set_close_base_stream" link="class-giofilteroutputstream.html#method-giofilteroutputstream--set-close-base-stream"/>
-    <function name="gio.Icon.equal" link="class-gioicon.html#method-gioicon--equal"/>
-    <function name="gio.Icon.to_string" link="class-gioicon.html#method-gioicon--to-string"/>
-    <function name="gio.icon_new_from_string" link="class-gioicon.html#function-gio--icon-new-from-string"/>
-    <function name="gio.InputStream.clear_pending" link="class-gioinputstream.html#method-gioinputstream--clear-pending"/>
-    <function name="gio.InputStream.close" link="class-gioinputstream.html#method-gioinputstream--close"/>
-    <function name="gio.InputStream.close_async" link="class-gioinputstream.html#method-gioinputstream--close-async"/>
-    <function name="gio.InputStream.close_finish" link="class-gioinputstream.html#method-gioinputstream--close-finish"/>
-    <function name="gio.InputStream.has_pending" link="class-gioinputstream.html#method-gioinputstream--has-pending"/>
-    <function name="gio.InputStream.is_closed" link="class-gioinputstream.html#method-gioinputstream--is-closed"/>
-    <function name="gio.InputStream.read" link="class-gioinputstream.html#method-gioinputstream--read"/>
-    <function name="gio.InputStream.read_async" link="class-gioinputstream.html#method-gioinputstream--read-async"/>
-    <function name="gio.InputStream.read_finish" link="class-gioinputstream.html#method-gioinputstream--read-finish"/>
-    <function name="gio.InputStream.read_part" link="class-gioinputstream.html#method-gioinputstream--read-part"/>
-    <function name="gio.InputStream.set_pending" link="class-gioinputstream.html#method-gioinputstream--set-pending"/>
-    <function name="gio.InputStream.skip" link="class-gioinputstream.html#method-gioinputstream--skip"/>
-    <function name="gio.InputStream.skip_async" link="class-gioinputstream.html#method-gioinputstream--skip-async"/>
-    <function name="gio.InputStream.skip_finish" link="class-gioinputstream.html#method-gioinputstream--skip-finish"/>
-    <function name="gio.LoadableIcon.load" link="class-gioloadableicon.html#method-gioloadableicon--load"/>
-    <function name="gio.LoadableIcon.load_async" link="class-gioloadableicon.html#method-gioloadableicon--load-async"/>
-    <function name="gio.LoadableIcon.load_finish" link="class-gioloadableicon.html#method-gioloadableicon--load-finish"/>
-    <function name="gio.MemoryInputStream.add_data" link="class-giomemoryinputstream.html#method-giomemoryinputstream--add-data"/>
-    <function name="gio.memory_input_stream_new_from_data" link="class-giomemoryinputstream.html#function-gio--memory-input-stream-new-from-data"/>
-    <function name="gio.MemoryOutputStream.get_contents" link="class-giomemoryoutputstream.html#method-giomemoryoutputstream--get-contents"/>
-    <function name="gio.MemoryOutputStream.get_data_size" link="class-giomemoryoutputstream.html#method-giomemoryoutputstream--get-data-size"/>
-    <function name="gio.MemoryOutputStream.get_size" link="class-giomemoryoutputstream.html#method-giomemoryoutputstream--get-size"/>
-    <function name="gio.Mount.can_eject" link="class-giomount.html#method-giomount--can-eject"/>
-    <function name="gio.Mount.can_unmount" link="class-giomount.html#method-giomount--can-unmount"/>
-    <function name="gio.Mount.eject" link="class-giomount.html#method-giomount--eject"/>
-    <function name="gio.Mount.eject_finish" link="class-giomount.html#method-giomount--eject-finish"/>
-    <function name="gio.Mount.get_drive" link="class-giomount.html#method-giomount--get-drive"/>
-    <function name="gio.Mount.get_icon" link="class-giomount.html#method-giomount--get-icon"/>
-    <function name="gio.Mount.get_name" link="class-giomount.html#method-giomount--get-name"/>
-    <function name="gio.Mount.get_root" link="class-giomount.html#method-giomount--get-root"/>
-    <function name="gio.Mount.get_uuid" link="class-giomount.html#method-giomount--get-uuid"/>
-    <function name="gio.Mount.get_volume" link="class-giomount.html#method-giomount--get-volume"/>
-    <function name="gio.Mount.guess_content_type" link="class-giomount.html#method-giomount--guess-content-type"/>
-    <function name="gio.Mount.guess_content_type_finish" link="class-giomount.html#method-giomount--guess-content-type-finish"/>
-    <function name="gio.Mount.guess_content_type_sync" link="class-giomount.html#method-giomount--guess-content-type-sync"/>
-    <function name="gio.Mount.is_shadowed" link="class-giomount.html#method-giomount--is-shadowed"/>
-    <function name="gio.Mount.remount" link="class-giomount.html#method-giomount--remount"/>
-    <function name="gio.Mount.remount_finish" link="class-giomount.html#method-giomount--remount-finish"/>
-    <function name="gio.Mount.shadow" link="class-giomount.html#method-giomount--shadow"/>
-    <function name="gio.Mount.unmount" link="class-giomount.html#method-giomount--unmount"/>
-    <function name="gio.Mount.unmount_finish" link="class-giomount.html#method-giomount--unmount-finish"/>
-    <function name="gio.Mount.unshadow" link="class-giomount.html#method-giomount--unshadow"/>
-    <function name="The &quot;aborted&quot; gio.Mount Signal" link="class-giomount.html#signal-giomount--aborted"/>
-    <function name="The &quot;changed&quot; gio.Mount Signal" link="class-giomount.html#signal-giomount--changed"/>
-    <function name="The &quot;unmounted&quot; gio.Mount Signal" link="class-giomount.html#signal-giomount--unmounted"/>
-    <function name="gio.MountOperation.get_anonymous" link="class-giomountoperation.html#method-giomountoperation--get-anonymous"/>
-    <function name="gio.MountOperation.get_choice" link="class-giomountoperation.html#method-giomountoperation--get-choice"/>
-    <function name="gio.MountOperation.get_domain" link="class-giomountoperation.html#method-giomountoperation--get-domain"/>
-    <function name="gio.MountOperation.get_password" link="class-giomountoperation.html#method-giomountoperation--get-password"/>
-    <function name="gio.MountOperation.get_password_save" link="class-giomountoperation.html#method-giomountoperation--get-password-save"/>
-    <function name="gio.MountOperation.get_username" link="class-giomountoperation.html#method-giomountoperation--get-username"/>
-    <function name="gio.MountOperation.reply" link="class-giomountoperation.html#method-giomountoperation--reply"/>
-    <function name="gio.MountOperation.set_anonymous" link="class-giomountoperation.html#method-giomountoperation--set-anonymous"/>
-    <function name="gio.MountOperation.set_choice" link="class-giomountoperation.html#method-giomountoperation--set-choice"/>
-    <function name="gio.MountOperation.set_domain" link="class-giomountoperation.html#method-giomountoperation--set-domain"/>
-    <function name="gio.MountOperation.set_password" link="class-giomountoperation.html#method-giomountoperation--set-password"/>
-    <function name="gio.MountOperation.set_password_save" link="class-giomountoperation.html#method-giomountoperation--set-password-save"/>
-    <function name="gio.MountOperation.set_username" link="class-giomountoperation.html#method-giomountoperation--set-username"/>
-    <function name="The &quot;aborted&quot; gio.MountOperation Signal" link="class-giomountoperation.html#signal-giomountoperation--aborted"/>
-    <function name="The &quot;ask-password&quot; gio.MountOperation Signal" link="class-giomountoperation.html#signal-giomountoperation--ask-password"/>
-    <function name="The &quot;ask-question&quot; gio.MountOperation Signal" link="class-giomountoperation.html#signal-giomountoperation--ask-question"/>
-    <function name="The &quot;reply&quot; gio.MountOperation Signal" link="class-giomountoperation.html#signal-giomountoperation--reply"/>
-    <function name="gio.Seekable.tell" link="class-gioseekable.html#method-gioseekable--tell"/>
-    <function name="gio.Seekable.can_seek" link="class-gioseekable.html#method-gioseekable--can_seek"/>
-    <function name="gio.Seekable.seek" link="class-gioseekable.html#method-gioseekable--seek"/>
-    <function name="gio.Seekable.can_truncate" link="class-gioseekable.html#method-gioseekable--can_truncate"/>
-    <function name="gio.Seekable.truncate" link="class-gioseekable.html#method-gioseekable--truncate"/>
-    <function name="gio.SimpleAsyncResult.complete" link="class-giosimpleasyncresult.html#method-giosimpleasyncresult--complete"/>
-    <function name="gio.SimpleAsyncResult.complete_in_idle" link="class-giosimpleasyncresult.html#method-giosimpleasyncresult--complete-in-idle"/>
-    <function name="gio.SimpleAsyncResult.get_op_res_gboolean" link="class-giosimpleasyncresult.html#method-giosimpleasyncresult--get-op-res-gboolean"/>
-    <function name="gio.SimpleAsyncResult.get_op_res_gssize" link="class-giosimpleasyncresult.html#method-giosimpleasyncresult--get-op-res-gssize"/>
-    <function name="gio.SimpleAsyncResult.propagate_error" link="class-giosimpleasyncresult.html#method-giosimpleasyncresult--propagate-error"/>
-    <function name="gio.SimpleAsyncResult.set_handle_cancellation" link="class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-handle-cancellation"/>
-    <function name="gio.SimpleAsyncResult.set_op_res_gboolean" link="class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-op-res-gboolean"/>
-    <function name="gio.SimpleAsyncResult.set_op_res_gssize" link="class-giosimpleasyncresult.html#method-giosimpleasyncresult--set-op-res-gssize"/>
-    <function name="gio.ThemedIcon.append_name" link="class-giothemedicon.html#method-giothemedicon--append-name"/>
-    <function name="gio.ThemedIcon.get_names" link="class-giothemedicon.html#method-giothemedicon--get-names"/>
-    <function name="gio.ThemedIcon.prepend_name" link="class-giothemedicon.html#method-giothemedicon--prepend-name"/>
-    <function name="gio.Volume.can_eject" link="class-giovolume.html#method-giovolume--can-eject"/>
-    <function name="gio.Volume.can_mount" link="class-giovolume.html#method-giovolume--can-mount"/>
-    <function name="gio.Volume.eject" link="class-giovolume.html#method-giovolume--eject"/>
-    <function name="gio.Volume.eject_finish" link="class-giovolume.html#method-giovolume--eject-finish"/>
-    <function name="gio.Volume.enumerate_identifiers" link="class-giovolume.html#method-giovolume--enumerate-identifiers"/>
-    <function name="gio.Volume.get_activation_root" link="class-giovolume.html#method-giovolume--get-activation-root"/>
-    <function name="gio.Volume.get_drive" link="class-giovolume.html#method-giovolume--get-drive"/>
-    <function name="gio.Volume.get_icon" link="class-giovolume.html#method-giovolume--get-icon"/>
-    <function name="gio.Volume.get_identifier" link="class-giovolume.html#method-giovolume--get-identifier"/>
-    <function name="gio.Volume.get_mount" link="class-giovolume.html#method-giovolume--get-mount"/>
-    <function name="gio.Volume.get_name" link="class-giovolume.html#method-giovolume--get-name"/>
-    <function name="gio.Volume.get_uuid" link="class-giovolume.html#method-giovolume--get-uuid"/>
-    <function name="gio.Volume.mount" link="class-giovolume.html#method-giovolume--mount"/>
-    <function name="gio.Volume.mount_finish" link="class-giovolume.html#method-giovolume--mount-finish"/>
-    <function name="gio.Volume.should_automount" link="class-giovolume.html#method-giovolume--should-automount"/>
-    <function name="The &quot;changed&quot; gio.Volume Signal" link="class-giovolume.html#signal-giovolume--changed"/>
-    <function name="The &quot;removed&quot; gio.Volume Signal" link="class-giovolume.html#signal-giovolume--removed"/>
-    <function name="gio.VolumeMonitor.get_connected_drives" link="class-giovolumemonitor.html#method-giovolumemonitor--get-connected-drives"/>
-    <function name="gio.VolumeMonitor.get_mount_for_uuid" link="class-giovolumemonitor.html#method-giovolumemonitor--get-mount-for-uuid"/>
-    <function name="gio.VolumeMonitor.get_mounts" link="class-giovolumemonitor.html#method-giovolumemonitor--get-mounts"/>
-    <function name="gio.VolumeMonitor.get_volume_for_uuid" link="class-giovolumemonitor.html#method-giovolumemonitor--get-volume-for-uuid"/>
-    <function name="gio.VolumeMonitor.get_volumes" link="class-giovolumemonitor.html#method-giovolumemonitor--get-volumes"/>
-    <function name="gio.volume_monitor_adopt_orphan_mount" link="class-giovolumemonitor.html#function-gio--volume-monitor-adopt-orphan-mount"/>
-    <function name="gio.volume_monitor_get" link="class-giovolumemonitor.html#function-gio--volume-monitor-get"/>
-    <function name="The &quot;drive-changed&quot; gio.Volume Signal" link="class-giovolumemonitor.html#signal-giovolumemonitor--drive-changed"/>
-    <function name="The &quot;drive-connected&quot; gio.Volume Signal" link="class-giovolumemonitor.html#signal-giovolumemonitor--drive-connected"/>
-    <function name="The &quot;drive-disconnected&quot; gio.Volume Signal" link="class-giovolumemonitor.html#signal-giovolumemonitor--drive-disconnected"/>
-    <function name="The &quot;drive-eject-button&quot; gio.Volume Signal" link="class-giovolumemonitor.html#signal-giovolumemonitor--drive-eject-button"/>
-    <function name="The &quot;mount-added&quot; gio.Volume Signal" link="class-giovolumemonitor.html#signal-giovolumemonitor--mount-added"/>
-    <function name="The &quot;mount-changed&quot; gio.Volume Signal" link="class-giovolumemonitor.html#signal-giovolumemonitor--mount-changed"/>
-    <function name="The &quot;mount-pre-unmount&quot; gio.Volume Signal" link="class-giovolumemonitor.html#signal-giovolumemonitor--mount-pre-unmount"/>
-    <function name="The &quot;mount-removed&quot; gio.Volume Signal" link="class-giovolumemonitor.html#signal-giovolumemonitor--mount-removed"/>
-    <function name="The &quot;volume-added&quot; gio.Volume Signal" link="class-giovolumemonitor.html#signal-giovolumemonitor--volume-added"/>
-    <function name="The &quot;volume-changed&quot; gio.Volume Signal" link="class-giovolumemonitor.html#signal-giovolumemonitor--volume-changed"/>
-    <function name="The &quot;volume-removed&quot; gio.Volume Signal" link="class-giovolumemonitor.html#signal-giovolumemonitor--volume-removed"/>
-    <function name="gio.content_type_can_be_executable" link="gio-functions.html#function-gio--content-type-can-be-executable"/>
-    <function name="gio.content_type_equals" link="gio-functions.html#function-gio--content-type-equals"/>
-    <function name="gio.content_type_from_mime_type" link="gio-functions.html#function-gio--content-type-from-mime-type"/>
-    <function name="gio.content_type_get_description" link="gio-functions.html#function-gio--content-type-get-description"/>
-    <function name="gio.content_type_get_icon" link="gio-functions.html#function-gio--content-type-get-icon"/>
-    <function name="gio.content_type_get_mime_type" link="gio-functions.html#function-gio--content-type-get-mime-type"/>
-    <function name="gio.content_type_guess" link="gio-functions.html#function-gio--content-type-guess"/>
-    <function name="gio.content_type_is_a" link="gio-functions.html#function-gio--content-type-is-a"/>
-    <function name="gio.content_type_is_unknown" link="gio-functions.html#function-gio--content-type-is-unknown"/>
-    <function name="gio.content_types_get_registered" link="gio-functions.html#function-gio--content-types-get-registered"/>
-    <function name="gio.io_error_from_errno" link="gio-functions.html#function-gio--io-error-from-errno"/>
-    <function name="Gio Ask Password Flags Constants" link="gio-constants.html#gio-ask-password-flags-constants"/>
-    <function name="Gio AppInfo Create Flags Constants" link="gio-constants.html#gio-app-info-constants"/>
-    <function name="Gio Data Stream Byte Order Constants" link="gio-constants.html#gio-data-stream-byte-order-constants"/>
-    <function name="Gio Data Stream Newline Type Constants" link="gio-constants.html#gio-data-stream-newline-type-constants"/>
-    <function name="Gio Emblem Origin Constants" link="gio-constants.html#gio-emblem-origin-constants"/>
-    <function name="Gio Error Constants" link="gio-constants.html#gio-error-constants"/>
-    <function name="Gio File Attribute Constants" link="gio-constants.html#gio-file-attribute-constants"/>
-    <function name="Gio File Attribute Type Constants" link="gio-constants.html#gio-file-attribute-type-constants"/>
-    <function name="Gio File Attribute Flags Constants" link="gio-constants.html#gio-file-attribute-flags-constants"/>
-    <function name="Gio File Create Flags Constants" link="gio-constants.html#gio-file-create-flags-constants"/>
-    <function name="Gio File Copy Flags Constants" link="gio-constants.html#gio-file-copy-flags-constants"/>
-    <function name="Gio File Monitor Flags Constants" link="gio-constants.html#gio-file-monitor-flags-constants"/>
-    <function name="Gio File Query Info Flags Constants" link="gio-constants.html#gio-file-query-info-flags-constants"/>
-    <function name="Gio File Type Constants" link="gio-constants.html#gio-file-type-constants"/>
-    <function name="Gio Mount Mount Flags Constants" link="gio-constants.html#gio-mount-mount-flags-constants"/>
-    <function name="Gio Mount Unmount Flags Constants" link="gio-constants.html#gio-mount-unmount-flags-constants"/>
-    <function name="Gio Mount Operation Result Constants" link="gio-constants.html#gio-mount-operation-result-constants"/>
-    <function name="Gio Password Save Constants" link="gio-constants.html#gio-password-save-constants"/>
-    <function name="gio.unix.InputStream.get_close_fd" link="class-giounixinputstream.html#method-giounixinputstream--get-close-fd"/>
-    <function name="gio.unix.InputStream.get_fd" link="class-giounixinputstream.html#method-giounixinputstream--get-fd"/>
-    <function name="gio.unix.InputStream.set_close_fd" link="class-giounixinputstream.html#method-giounixinputstream--set-close-fd"/>
-    <function name="gio.unix.OutputStream.get_close_fd" link="class-giounixoutputstream.html#method-giounixoutputstream--get-close-fd"/>
-    <function name="gio.unix.OutputStream.get_fd" link="class-giounixoutputstream.html#method-giounixoutputstream--get-fd"/>
-    <function name="gio.unix.OutputStream.set_close_fd" link="class-giounixoutputstream.html#method-giounixoutputstream--set-close-fd"/>
-  </functions>
-</book>
diff --git a/docs/reference/entities.docbook.in b/docs/reference/entities.docbook.in
deleted file mode 100644 (file)
index be788f8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<!ENTITY version "@PACKAGE_VERSION@">
diff --git a/docs/reference/pygio-appinfo.xml b/docs/reference/pygio-appinfo.xml
deleted file mode 100644 (file)
index eaeb060..0000000
+++ /dev/null
@@ -1,894 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gioappinfo">
-    <refnamediv>
-        <refname>gio.AppInfo</refname>
-        <refpurpose>Information about an installed application and methods to launch it (with file arguments).</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.AppInfo</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobjectginterface">gobject.GInterface</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-gioappinfo">gio.AppInfo</link></methodname>
-       <methodparam><parameter role="keyword">commandline</parameter></methodparam>
-        <methodparam><parameter role="keyword">application_name</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.APP_INFO_CREATE_NONE</initializer></methodparam>
-    </constructorsynopsis>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--add-supports-type">add_supports_type</link></methodname>
-        <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--can-delete">can_delete</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--can-remove-supports-type">can_remove_supports_type</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--delete">delete</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--dup">dup</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--equal">equal</link></methodname>
-        <methodparam><parameter role="keyword">appinfo2</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--get-commandline">get_commandline</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--get-description">get_description</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--get-executable">get_executable</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--get-icon">get_icon</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--get-id">get_id</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--get-name">get_name</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--launch">launch</link></methodname>
-        <methodparam><parameter role="keyword">files</parameter></methodparam>
-        <methodparam><parameter role="keyword">launch_context</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--launch-uris">launch_uris</link></methodname>
-        <methodparam><parameter role="keyword">uris</parameter></methodparam>
-        <methodparam><parameter role="keyword">launch_context</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--remove-supports-type">remove_supports_type</link></methodname>
-        <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--set-as-default-for-extension">set_as_default_for_extension</link></methodname>
-        <methodparam><parameter role="keyword">extension</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--set-as-default-for-type">set_as_default_for_type</link></methodname>
-        <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--should-show">should_show</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--supports-files">supports_files</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioappinfo--supports-uris">supports_uris</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-<programlisting>
-<emphasis role="bold">Functions</emphasis>
-<methodsynopsis language="python">
-    <methodname><link linkend="function-gio--app-info-get-all">gio.app_info_get_all</link></methodname>
-    <methodparam></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--app-info-get-all-for-type">gio.app_info_get_all_for_type</link></methodname>
-    <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--app-info-get-default-for-type">gio.app_info_get_default_for_type</link></methodname>
-    <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-    <methodparam><parameter role="keyword">must_support_uris</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--app-info-get-default-for-uri-scheme">gio.app_info_get_default_for_uri_scheme</link></methodname>
-    <methodparam><parameter role="keyword">uri_scheme</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--app-info-reset-type-association">gio.app_info_reset_type_association</link></methodname>
-    <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-</methodsynopsis></programlisting>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectginterface">gobject.GInterface</link>
-  +-- <link linkend="class-gioappinfo">gio.AppInfo</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Known Implementation</title>
-        <para>
-            <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link> is implemented by
-            <link linkend="class-giodesktopappinfo"><classname>gio.DesktopAppInfo</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-            and <link linkend="class-gioapplaunchcontext"><classname>gio.AppLaunchContext</classname></link>
-            are used for describing and launching applications installed on the system.
-        </para>
-        <para>
-            As of GLib 2.20, URIs will always be converted to POSIX paths (using
-            <methodname><link linkend="method-giofile--get-path">gio.File.get_path</link></methodname>()) when using
-            <methodname><link linkend="method-gioappinfo--launch">gio.AppInfo.launch</link></methodname>()
-            even if the application requested an URI and not a POSIX path. For example for an desktop-file
-            based application with Exec key totem %U and a single URI, sftp://foo/file.avi, then /home/user/.gvfs/sftp
-            on foo/file.avi will be passed. This will only work if a set of suitable GIO extensions (such as gvfs 2.26
-            compiled with FUSE support), is available and operational; if this is not the case, the URI will be passed
-            unmodified to the application. Some URIs, such as mailto:, of course cannot be mapped to a POSIX path
-            (in gvfs there's no FUSE mount for it); such URIs will be passed unmodified to the application. 
-        </para>
-        <para>
-            Specifically for gvfs 2.26 and later, the POSIX URI will be mapped back to the GIO URI in the
-            <link linkend="class-giofile"><classname>gio.File</classname></link> constructors
-            (since gvfs implements the GVfs extension point). As such, if the application needs to examine the URI,
-            it needs to use
-            <methodname><link linkend="method-giofile--get-uri">gio.File.get_uri</link></methodname>()
-            or similar on
-            <link linkend="class-giofile"><classname>gio.File</classname></link>.
-            In other words, an application cannot assume that the URI passed to e.g.
-            <methodname><link linkend="constructor-giofile">gio.File</link></methodname>() constructor
-            is equal to the result of
-            <methodname><link linkend="method-giofile--get-uri">gio.File.get_uri</link></methodname>().
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-gioappinfo">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.AppInfo</methodname>
-            <methodparam><parameter role="keyword">commandline</parameter></methodparam>
-            <methodparam><parameter role="keyword">application_name</parameter><initializer><literal>None</literal></initializer></methodparam>
-            <methodparam><parameter role="keyword">flags</parameter><initializer>gio.APP_INFO_CREATE_NONE</initializer></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>commandline</parameter>&nbsp;:</term>
-                <listitem><simpara>the commandline to use 
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><parameter>application_name</parameter>&nbsp;:</term>
-                <listitem><simpara>the application name, or <literal>None</literal> to use commandline.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><parameter>flags</parameter>&nbsp;:</term>
-                <listitem><simpara>flags that can specify details of the created,
-                from <xref linkend="gio-app-info-constants" endterm="gio-app-info-constants-title"></xref>
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-                for given command.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-            from the given information.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-gioappinfo--add-supports-type">
-            <title>gio.AppInfo.add_supports_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>add_supports_type</methodname>
-                <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>content_type</parameter>&nbsp;:</term>
-                    <listitem><simpara>A string.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>add_supports_type</methodname>() method adds a content type
-                to the application information to indicate the application is capable of
-                opening files with the given content type.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--can-delete">
-            <title>gio.AppInfo.can_delete</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>can_delete</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if appinfo can be deleted.
-                   </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>can_delete</methodname>() method obtains the information
-               whether the <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-               can be deleted. See
-               <methodname><link linkend="method-gioappinfo--delete">gio.AppInfo.delete</link></methodname>().
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--can-remove-supports-type">
-            <title>gio.AppInfo.can_remove_supports_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>can_remove_supports_type</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if it is possible to remove
-                    supported content types from a given appinfo, <literal>False</literal>
-                    if not. </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>can_remove_supports_type</methodname>() method checks if a
-                supported content type can be removed from an application.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--delete">
-            <title>gio.AppInfo.delete</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>delete</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if appinfo has been deleted.
-                   </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>delete</methodname>() method tries to delete an
-               <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>.
-            </para>
-           <para>
-               On some platforms, there may be a difference between user-defined
-               <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>s
-               which can be deleted, and system-wide ones which cannot. See
-               <methodname><link linkend="method-gioappinfo--can-delete">gio.AppInfo.can_delete</link></methodname>().
-           </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--dup">
-            <title>gio.AppInfo.dup</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>dup</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A duplicate of appinfo.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>dup</methodname>() method creates a duplicate of a
-                <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioappinfo--equal">
-            <title>gio.AppInfo.equal</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>equal</methodname>
-                <methodparam><parameter role="keyword">icon2</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>appinfo2</parameter>&nbsp;:</term>
-                    <listitem><simpara>the second
-                    <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if appinfo1 is equal to appinfo2.
-                    <literal>False</literal> otherwise.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>equal</methodname>() method checks if two
-                <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>s are equal.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--get-commandline">
-            <title>gio.AppInfo.get_commandline</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_commandline</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string containing the appinfo's commandline, or
-                   <literal>None</literal> if this information is not available.
-                   </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_commandline</methodname>() method gets the
-               commandline with which the application will be started.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--get-description">
-            <title>gio.AppInfo.get_description</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_description</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A string containing a description of the application
-                    appinfo, or <literal>None</literal> if none.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_description</methodname>() method gets a human-readable
-                description of an installed application.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--get-executable">
-            <title>gio.AppInfo.get_executable</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_executable</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string containing the appinfo's application
-                    binary's name.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_description</methodname>() method gets the executable's
-                name for the installed application.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--get-icon">
-            <title>gio.AppInfo.get_icon</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_icon</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the default
-                    <link linkend="class-gioicon"><classname>gio.Icon</classname></link> for appinfo.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_icon</methodname>() method gets the icon for the application.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--get-id">
-            <title>gio.AppInfo.get_id</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_id</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string containing the application's ID.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_id</methodname>() method gets the ID of an application.
-                An id is a string that identifies the application. The exact format of the
-                id is platform dependent. For instance, on Unix this is the desktop file id
-                from the xdg menu specification. 
-            </para>
-            <para>
-                Note that the returned ID may be <literal>None</literal>, depending on
-                how the appinfo has been constructed.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--get-name">
-            <title>gio.AppInfo.get_name</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_name</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the name of the application for appinfo.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_name</methodname>() method gets the installed
-                name of the application.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioappinfo--launch">
-            <title>gio.AppInfo.launch</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>launch</methodname>
-                <methodparam><parameter role="keyword">files</parameter></methodparam>
-                <methodparam><parameter role="keyword">launch_context</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>files</parameter>&nbsp;:</term>
-                    <listitem><simpara>a list of <link linkend="class-giofile"><classname>gio.File</classname></link> objects.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>launch_context</parameter>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-gioapplaunchcontext"><classname>gio.AppLaunchContext</classname></link>
-                    or <literal>None</literal>.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> on successful launch,
-                    <literal>False</literal> otherwise.                      
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>launch</methodname>() method launches the application.
-                Passes files to the launched application as arguments, using the optional
-                launch_context to get information about the details of the launcher
-                (like what screen it is on). On error, error will be set accordingly. 
-            </para>
-            <para>
-                To lauch the application without arguments pass a <literal>None</literal> for files list. 
-            </para>
-            <para>
-                Note that even if the launch is successful the application launched can fail
-                to start if it runs into problems during startup. There is no way to detect this. 
-            </para>
-            <para>
-                Some URIs can be changed when passed through a
-                <link linkend="class-giofile"><classname>gio.File</classname></link>
-                (for instance unsupported uris with strange formats like mailto:), so
-                if you have a textual uri you want to pass in as argument, consider using
-                <methodname><link linkend="method-gioappinfo--launch-uris">gio.File.launch_uris</link></methodname>()
-                instead.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioappinfo--launch-uris">
-            <title>gio.AppInfo.launch_uris</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>launch_uris</methodname>
-                <methodparam><parameter role="keyword">uris</parameter></methodparam>
-                <methodparam><parameter role="keyword">launch_context</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>uris</parameter>&nbsp;:</term>
-                    <listitem><simpara>a list containing URIs to launch.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>launch_context</parameter>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-gioapplaunchcontext"><classname>gio.AppLaunchContext</classname></link>
-                    or <literal>None</literal>.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> on successful launch,
-                    <literal>False</literal> otherwise.                      
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>launch_uris</methodname>() method launches the application.
-                Passes uris to the launched application as arguments, using the optional
-                launch_context to get information about the details of the launcher
-                (like what screen it is on). On error, error will be set accordingly. 
-            </para>
-            <para>
-                To lauch the application without arguments pass a <literal>None</literal> for files list. 
-            </para>
-            <para>
-                Note that even if the launch is successful the application launched can fail
-                to start if it runs into problems during startup. There is no way to detect this. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioappinfo--remove-supports-type">
-            <title>gio.AppInfo.remove_supports_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>remove_supports_type</methodname>
-                <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>content_type</parameter>&nbsp;:</term>
-                    <listitem><simpara>A string.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>remove_supports_type</methodname>() method removes a
-                supported type from an application, if possible.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioappinfo--set-as-default-for-extension">
-            <title>gio.AppInfo.set_as_default_for_extension</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_as_default_for_extension</methodname>
-                <methodparam><parameter role="keyword">extension</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>extension</parameter>&nbsp;:</term>
-                    <listitem><simpara>A string containing the file extension (without the dot).
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_as_default_for_extension</methodname>() method sets the
-                application as the default handler for the given file extention.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioappinfo--set-as-default-for-type">
-            <title>gio.AppInfo.set_as_default_for_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_as_default_for_type</methodname>
-                <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>content_type</parameter>&nbsp;:</term>
-                    <listitem><simpara>The content type.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_as_default_for_type</methodname>() method sets the
-                application as the default handler for a given type.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--should-show">
-            <title>gio.AppInfo.should_show</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>should_show</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the appinfo should be shown,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>should_show</methodname>() method checks if the application
-                info should be shown in menus that list available applications.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--supports-files">
-            <title>gio.AppInfo.supports_files</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>supports_files</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the appinfo supports files. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>supports_files</methodname>() method checks if the application
-                accepts files as arguments.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-gioappinfo--supports-uris">
-            <title>gio.AppInfo.supports_uris</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>supports_uris</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the appinfo supports uris. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>supports_uris</methodname>() method checks if the application
-                accepts uris as arguments.
-            </para>
-        </refsect2>
-    </refsect1>
-    
-    <refsect1>
-        <title>Functions</title>
-
-        <refsect2 id="function-gio--app-info-get-all">
-            <title>gio.app_info_get_all</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>app_info_get_all</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A list of <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>s.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>app_info_get_all</methodname>() function gets a list of all of
-                the applications currently registered on this system. 
-            </para>
-            <para>
-                For desktop files, this includes applications that have NoDisplay=true set or are
-                excluded from display by means of OnlyShowIn or NotShowIn. See
-                <methodname><link linkend="method-gioappinfo--should-show">gio.AppInfo.should_show</link></methodname>().
-                The returned list does not include applications which have the Hidden key set.
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--app-info-get-all-for-type">
-            <title>gio.app_info_get_all_for_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>app_info_get_all_for_type</methodname>
-                <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>content_type</parameter>&nbsp;:</term>
-                    <listitem><simpara>the content type to find a
-                    <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-                    for.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A list of <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>s
-                    for a given content type or <literal>None</literal> on error. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>app_info_get_all_for_type</methodname>() function gets a list of all
-                <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>s
-                for a given content type.
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--app-info-get-default-for-type">
-            <title>gio.app_info_get_default_for_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>app_info_get_default_for_type</methodname>
-                <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-                <methodparam><parameter role="keyword">must_support_uris</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>content_type</parameter>&nbsp;:</term>
-                    <listitem><simpara>the content type to find a
-                    <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-                    for.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>must_support_uris</parameter>&nbsp;:</term>
-                    <listitem><simpara>if <literal>True</literal>, the
-                    <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-                    is expected to support URIs </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-                    for given content_type or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>app_info_get_default_for_type</methodname>() function gets the
-                <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-                that correspond to a given content type.
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--app-info-get-default-for-uri-scheme">
-            <title>gio.app_info_get_default_for_uri_scheme</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>app_info_get_default_for_uri_scheme</methodname>
-                <methodparam><parameter role="keyword">uri_scheme</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>uri_scheme</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing a URI scheme.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-                    for given uri_scheme or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>app_info_get_default_for_uri_scheme</methodname>() function gets
-                the default application for launching applications using this URI scheme. A URI
-                scheme is the initial part of the URI, up to but not including the
-                ':', e.g. "http", "ftp" or "sip".
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--app-info-reset-type-association">
-            <title>gio.app_info_reset_type_association</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>app_info_reset_type_association</methodname>
-                <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>content_type</parameter>&nbsp;:</term>
-                    <listitem><simpara>a content type</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>app_info_reset_type_association</methodname>() function
-               removes all changes to the type associations done by
-               <methodname><link linkend="method-gioappinfo--set-as-default-for-type">set_as_default_for_type</link></methodname>(),
-               <methodname><link linkend="method-gioappinfo--set-as-default-for-extension">set_as_default_for_extension</link></methodname>(),
-               <methodname><link linkend="method-gioappinfo--add-supports-type">add_supports_type</link></methodname>() or
-               <methodname><link linkend="method-gioappinfo--remove-supports-type">remove_supports_type</link></methodname>().
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-applaunchcontext.xml b/docs/reference/pygio-applaunchcontext.xml
deleted file mode 100644 (file)
index 66bb229..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gioapplaunchcontext">
-    <refnamediv>
-        <refname>gio.AppLaunchContext</refname>
-        <refpurpose>Application launch context.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.AppLaunchContext</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-gioapplaunchcontext">gio.AppLaunchContext</link></methodname>
-       <methodparam></methodparam>
-    </constructorsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioapplaunchcontext--get-display">get_display</link></methodname>
-        <methodparam><parameter role="keyword">info</parameter></methodparam>
-        <methodparam><parameter role="keyword">files</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioapplaunchcontext--get-startup-notify-id">get_startup_notify_id</link></methodname>
-        <methodparam><parameter role="keyword">info</parameter></methodparam>
-        <methodparam><parameter role="keyword">files</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioapplaunchcontext--launch-failed">launch_failed</link></methodname>
-        <methodparam><parameter role="keyword">startup_notify_id</parameter></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-gioapplaunchcontext">gio.AppLaunchContext</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-gioapplaunchcontext"><classname>gio.AppLaunchContext</classname></link>
-            is used for integrating the launch with the launching application. This is used to handle for
-            instance startup notification and launching the new application on the same screen as the launching window.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-gioapplaunchcontext">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.AppLaunchContext</methodname>
-            <methodparam></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-gioapplaunchcontext"><classname>gio.AppLaunchContext</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new application launch context. This is not normally used, instead
-            you instantiate a subclass of this, such as
-            <link linkend="class-gdkapplaunchcontext"><classname>gtk.gdk.AppLaunchContext</classname></link>.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-gioapplaunchcontext--get-display">
-            <title>gio.AppLaunchContext.get_display</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_display</methodname>
-                <methodparam><parameter role="keyword">info</parameter></methodparam>
-                <methodparam><parameter role="keyword">files</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>info</parameter>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>files</parameter>&nbsp;:</term>
-                    <listitem><simpara>a list of
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    objects.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a display string for the display. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_display</methodname>() method gets the display
-                string for the display. This is used to ensure new applications
-                are started on the same display as the launching application.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioapplaunchcontext--get-startup-notify-id">
-            <title>gio.AppLaunchContext.get_startup_notify_id</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_startup_notify_id</methodname>
-                <methodparam><parameter role="keyword">info</parameter></methodparam>
-                <methodparam><parameter role="keyword">files</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>info</parameter>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>files</parameter>&nbsp;:</term>
-                    <listitem><simpara>a list of
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    objects.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a startup notification ID for the application,
-                    or <literal>None</literal> if not supported. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_startup_notify_id</methodname>() method initiates
-                startup notification for the application and returns the DESKTOP_STARTUP_ID
-                for the launched operation, if supported. 
-            </para>
-            <para>
-                Startup notification IDs are defined in the FreeDesktop.Org Startup Notifications standard.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioapplaunchcontext--launch-failed">
-            <title>gio.AppLaunchContext.launch_failed</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>launch_failed</methodname>
-                <methodparam><parameter role="keyword">startup_notify_id</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>startup_notify_id</parameter>&nbsp;:</term>
-                    <listitem><simpara>the startup notification id that was returned by
-                    <methodname><link linkend="method-gioapplaunchcontext--get-startup-notify-id">get_startup_notify_id</link></methodname>.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a startup notification ID for the application,
-                    or <literal>None</literal> if not supported. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_startup_notify_id</methodname>() method is called
-                when an application has failed to launch, so that it can cancel the application
-                startup notification started in
-                <methodname><link linkend="method-gioapplaunchcontext--get-startup-notify-id">get_startup_notify_id</link></methodname>
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-asyncresult.xml b/docs/reference/pygio-asyncresult.xml
deleted file mode 100644 (file)
index abe56ce..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gioasyncresult">
-    <refnamediv>
-        <refname>gio.AsyncResult</refname>
-        <refpurpose>Asynchronous Function Results.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.AsyncResult</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobjectginterface">gobject.GInterface</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioasyncresult--get-source-object">get_source_object</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectginterface">gobject.GInterface</link>
-  +-- <link linkend="class-gioasyncresult">gio.AsyncResult</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Prerequisites</title>
-        <para>
-            <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link> is required by
-            <link linkend="class-gobject"><classname>gobject.GObject</classname></link>.
-        </para>
-    </refsect1>
-    
-    <refsect1>
-       <title>Known Implementation</title>
-        <para>
-            <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link> is implemented by
-            <link linkend="class-giosimpleasyncresult"><classname>gio.SimpleAsyncResult</classname></link>.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>
-            provides a base class for implementing asynchronous function results.
-        </para>
-        <para>
-            Asynchronous operations are broken up into two separate operations which are chained
-            together by a GAsyncReadyCallback. To begin an asynchronous operation, provide a
-            GAsyncReadyCallback to the asynchronous function. This callback will be triggered when
-            the operation has completed, and will be passed a GAsyncResult instance filled with the
-            details of the operation's success or failure, the object the asynchronous function was
-            started for and any error codes returned. The asynchronous callback function is then expected
-            to call the corresponding "_finish()" function with the object the function was called for,
-            and the <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>
-            instance, and optionally, an error to grab any error conditions that may have occurred. 
-        </para>
-        <para>
-            The purpose of the "_finish()" function is to take the generic result of type GAsyncResult and
-            return the specific result that the operation in question yields (e.g. a
-            <link linkend="class-giofileenumerator"><classname>gio.FileEnumerator</classname></link>
-            for a "enumerate children" operation). If the result or error status of the operation is not needed,
-            there is no need to call the "_finish()" function, GIO will take care of cleaning up the result and error
-            information after the GAsyncReadyCallback returns. It is also allowed to take a reference to the
-            <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>
-            and call "_finish()" later. 
-        </para>
-        <para>
-            The callback for an asynchronous operation is called only once, and is always called, even
-            in the case of a cancelled operation. On cancellation the result is a gio.ERROR_CANCELLED error. 
-        </para>
-        <para>
-            Some ascynchronous operations are implemented using synchronous calls. These are run in a
-            separate thread, if GThread has been initialized, but otherwise they are sent to the Main Event
-            Loop and processed in an idle function. So, if you truly need asynchronous operations, make
-            sure to initialize GThread.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-gioasyncresult--get-source-object">
-            <title>gio.AsyncResult.get_source_object</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_source_object</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the source object for the res.                        
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_source_object</methodname>() method gets the source object
-                from a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-bufferedinputstream.xml b/docs/reference/pygio-bufferedinputstream.xml
deleted file mode 100644 (file)
index 677b1da..0000000
+++ /dev/null
@@ -1,461 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giobufferedinputstream">
-    <refnamediv>
-        <refname>gio.BufferedInputStream</refname>
-        <refpurpose>Buffered Input Stream</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.BufferedInputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-giofilterinputstream">gio.FilterInputStream</link></classname></ooclass>
-
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-giobufferedinputstream">gio.BufferedInputStream</link></methodname>
-       <methodparam><parameter role="keyword">base_stream</parameter></methodparam>
-    </constructorsynopsis>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giobufferedinputstream--fill">fill</link></methodname>
-        <methodparam><parameter role="keyword">count</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giobufferedinputstream--fill-async">fill_async</link></methodname>
-        <methodparam><parameter role="keyword">count</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giobufferedinputstream--fill-finish">fill_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giobufferedinputstream--get-available">get_available</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giobufferedinputstream--get-buffer-size">get_buffer_size</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giobufferedinputstream--read-byte">read_byte</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giobufferedinputstream--set-buffer-size">set_buffer_size</link></methodname>
-        <methodparam><parameter role="keyword">size</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-<programlisting>
-<emphasis role="bold">Functions</emphasis>
-<methodsynopsis language="python">
-    <methodname><link linkend="function-gio--buffered-input-stream-new-sized">gio.buffered_input_stream_new_sized</link></methodname>
-    <methodparam><parameter role="keyword">size</parameter></methodparam>
-</methodsynopsis></programlisting>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-gioinputstream">gio.InputStream</link>
-    +-- <link linkend="class-giofilterinputstream">gio.FilterInputStream</link>
-      +-- <link linkend="class-giobufferedinputstream">gio.BufferedInputStream</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giobufferedinputstream">
-        <title>gio.BufferedInputStream Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"buffer-size"</entry>
-                            <entry>Read - Write - Construct</entry>
-                            <entry>The size of the backend buffer. Allowed values: >= 1. Default value: 4096.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giobufferedinputstream"><classname>gio.BufferedInputStream</classname></link>
-            implements <link linkend="class-giofilterinputstream"><classname>gio.FilterInputStream</classname></link>
-            and provides for buffered reads.
-        </para>
-        <para>
-            By default,
-            <link linkend="class-giobufferedinputstream"><classname>gio.BufferedInputStream</classname></link>'s
-            buffer size is set at 4 kilobytes.
-        </para>
-        <para>
-            To create a buffered input stream, use
-            <methodname><link linkend="constructor-giobufferedinputstream">gio.BufferedInputStream</link></methodname>(),
-            or <methodname><link linkend="function-gio--buffered-input-stream-new-sized">gio.buffered_input_stream_new_sized</link></methodname>()
-            to specify the buffer's size at construction.
-        </para>
-        <para>
-            To get the size of a buffer within a buffered input stream, use
-            <methodname><link linkend="method-giobufferedinputstream--get-buffer-size">get_buffer_size</link></methodname>().
-            To change the size of a buffered input stream's buffer, use
-            <methodname><link linkend="method-giobufferedinputstream--set-buffer-size">set_buffer_size</link></methodname>().
-            Note that the buffer's size cannot be reduced below the size of the data within the buffer.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giobufferedinputstream">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.BufferedInputStream</methodname>
-            <methodparam><parameter role="keyword">base_stream</parameter></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>base_stream</parameter>&nbsp;:</term>
-                <listitem><simpara>a
-                <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>
-                for the given base_stream.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>
-            from the given base_stream, with a buffer set to the default size (4 kilobytes).
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giobufferedinputstream--fill">
-            <title>gio.BufferedInputStream.fill</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>fill</methodname>
-                <methodparam><parameter role="keyword">count</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">count</parameter>&nbsp;:</term>
-                  <listitem><simpara>the number of bytes that will be read from the stream.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the number of bytes read into stream's buffer,
-                    up to count, or -1 on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>fill</methodname>() method tries to read count bytes
-                from the stream into the buffer. Will block during this read.
-            </para>
-            <para>
-                If count is zero, returns zero and does nothing. A value of count
-                larger than G_MAXSSIZE will cause a gio.ERROR_INVALID_ARGUMENT error.
-            </para>
-            <para>
-                On success, the number of bytes read into the buffer is returned. It
-                is not an error if this is not the same as the requested size, as it can
-                happen e.g. near the end of a file. Zero is returned on end of file
-                (or if count is zero), but never otherwise.
-            </para>
-            <para>
-                If count is -1 then the attempted read size is equal to the number
-                of bytes that are required to fill the buffer.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can
-                be cancelled by triggering the cancellable object from another thread.
-                If the operation was cancelled, the error gio.ERROR_CANCELLED will be
-                returned. If an operation was partially finished when the operation was
-                cancelled the partial result will be returned, without an error.
-            </para>
-            <para>
-                On error -1 is returned and error is set accordingly.
-            </para>
-            <para>
-                For the asynchronous, non-blocking, version of this function, see
-                <methodname><link linkend="method-giobufferedinputstream--fill-async">gio.BufferedInputStream.fill_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giobufferedinputstream--fill-async">
-            <title>gio.BufferedInputStream.fill_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>fill_async</methodname>
-                <methodparam><parameter role="keyword">count</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">count</parameter>&nbsp;:</term>
-                  <listitem><simpara>the number of bytes that will be read from the stream.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>fill_async</methodname>() method reads data into stream's
-                buffer asynchronously, up to count size. io_priority can be used to
-                prioritize reads.
-            </para>
-            <para>
-                For the synchronous version of this function, see
-                <methodname><link linkend="method-giobufferedinputstream--fill">gio.BufferedInputStream.fill</link></methodname>().
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be set
-            </para>
-            <para>
-                If count is -1 then the attempted read size is equal to the number of bytes
-                that are required to fill the buffer.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giobufferedinputstream--fill-finish">
-            <title>gio.BufferedInputStream.fill_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>fill_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the size of the read stream, or -1 on an error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>fill_finish</methodname>() method finishes an asynchronous
-                file append operation started with
-                <methodname><link linkend="method-giobufferedinputstream--fill-async">gio.BufferedInputStream.fill_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giobufferedinputstream--get-available">
-            <title>gio.BufferedInputStream.get_available</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_available</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>size of the available stream.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_available</methodname>() method gets the size of
-                the available data within the stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giobufferedinputstream--get-buffer-size">
-            <title>gio.BufferedInputStream.get_buffer_size</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_buffer_size</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the current buffer size.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_buffer_size</methodname>() method gets the size
-                of the input buffer.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giobufferedinputstream--read-byte">
-            <title>gio.BufferedInputStream.read_byte</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_byte</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the byte read from the stream, or -1 on end of stream or error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_byte</methodname>() method tries to read a single
-                byte from the stream or the buffer. Will block during this read.
-            </para>
-            <para>
-                On success, the byte read from the stream is returned. On end of stream -1
-                is returned but it's not an exceptional error and error is not set.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can
-                be cancelled by triggering the cancellable object from another thread.
-                If the operation was cancelled, the error gio.ERROR_CANCELLED will be
-                returned. If an operation was partially finished when the operation was
-                cancelled the partial result will be returned, without an error.
-            </para>
-            <para>
-                On error -1 is returned and error is set accordingly.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giobufferedinputstream--set-buffer-size">
-            <title>gio.BufferedInputStream.set_buffer_size</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_buffer_size</methodname>
-                <methodparam><parameter role="keyword">size</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">size</parameter>&nbsp;:</term>
-                  <listitem><simpara>the new buffer size.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_buffer_size</methodname>() method sets the size
-                of the internal buffer of stream to size, or to the size of the contents
-                of the buffer. The buffer can never be resized smaller than its current contents.
-            </para>
-        </refsect2>
-    </refsect1>
-    
-    <refsect1>
-        <title>Functions</title>
-
-        <refsect2 id="function-gio--buffered-input-stream-new-sized">
-            <title>gio.buffered_input_stream_new_sized</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>buffered_input_stream_new_sized</methodname>
-                <methodparam><parameter role="keyword">size</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>size</parameter>&nbsp;:</term>
-                    <listitem><simpara>the requested buffer size.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A new
-                    <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>buffered_input_stream_new_sized</methodname>() function creates
-                a new <link linkend="class-giobufferedinputstream"><classname>gio.BufferedInputStream</classname></link>
-                from the given base_stream, with a buffer set to size.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-bufferedoutputstream.xml b/docs/reference/pygio-bufferedoutputstream.xml
deleted file mode 100644 (file)
index 6d7900f..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giobufferedoutputstream">
-    <refnamediv>
-        <refname>gio.BufferedOutputStream</refname>
-        <refpurpose>Buffered Output Stream</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.BufferedOutputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-giofilteroutputstream">gio.FilterOutputStream</link></classname></ooclass>
-
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-giobufferedoutputstream">gio.BufferedOutputStream</link></methodname>
-       <methodparam><parameter role="keyword">base_stream</parameter></methodparam>
-    </constructorsynopsis>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giobufferedoutputstream--get-auto-grow">get_auto_grow</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giobufferedoutputstream--get-buffer-size">get_buffer_size</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giobufferedoutputstream--set-auto-grow">set_auto_grow</link></methodname>
-        <methodparam><parameter role="keyword">auto_grow</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giobufferedoutputstream--set-buffer-size">set_buffer_size</link></methodname>
-        <methodparam><parameter role="keyword">size</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-<programlisting>
-<emphasis role="bold">Functions</emphasis>
-<methodsynopsis language="python">
-    <methodname><link linkend="function-gio--buffered-output-stream-new-sized">gio.buffered_output_stream_new_sized</link></methodname>
-    <methodparam><parameter role="keyword">size</parameter></methodparam>
-</methodsynopsis></programlisting>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giooutputstream">gio.OutputStream</link>
-    +-- <link linkend="class-giofilteroutputstream">gio.FilterOutputStream</link>
-      +-- <link linkend="class-giobufferedoutputstream">gio.BufferedOutputStream</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giobufferedoutputstream">
-        <title>gio.BufferedOutputStream Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"auto-grow"</entry>
-                            <entry>Read - Write</entry>
-                            <entry>Whether the buffer should automatically grow. Default value: <literal>False</literal>.</entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"buffer-size"</entry>
-                            <entry>Read - Write - Construct</entry>
-                            <entry>The size of the backend buffer. Allowed values: >= 1. Default value: 4096.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giobufferedoutputstream"><classname>gio.BufferedOutputStream</classname></link>
-            implements <link linkend="class-giofilteroutputstream"><classname>gio.FilterOutputStream</classname></link>
-            and provides for buffered writes.
-        </para>
-        <para>
-            By default,
-            <link linkend="class-giobufferedoutputstream"><classname>gio.BufferedOutputStream</classname></link>'s
-            buffer size is set at 4 kilobytes.
-        </para>
-        <para>
-            To create a buffered output stream, use
-            <methodname><link linkend="constructor-giobufferedoutputstream">gio.BufferedOutputStream</link></methodname>(),
-            or <methodname><link linkend="function-gio--buffered-output-stream-new-sized">gio.buffered_output_stream_new_sized</link></methodname>()
-            to specify the buffer's size at construction.
-        </para>
-        <para>
-            To get the size of a buffer within a buffered output stream, use
-            <methodname><link linkend="method-giobufferedoutputstream--get-buffer-size">gio.BufferedOutputStream.get_buffer_size</link></methodname>().
-            To change the size of a buffered output stream's buffer, use
-            <methodname><link linkend="method-giobufferedoutputstream--set-buffer-size">gio.BufferedOutputStream.set_buffer_size</link></methodname>().
-            Note that the buffer's size cannot be reduced below the size of the data within the buffer.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giobufferedoutputstream">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.BufferedOutputStream</methodname>
-            <methodparam><parameter role="keyword">base_stream</parameter></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>base_stream</parameter>&nbsp;:</term>
-                <listitem><simpara>a
-                <link linkend="class-giooutputstream"><classname>gio.OutputStream</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giooutputstream"><classname>gio.OutputStream</classname></link>
-                for the given base_stream.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new buffered output stream for a base stream.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giobufferedoutputstream--get-auto-grow">
-            <title>gio.BufferedOutputStream.get_auto_grow</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_auto_grow</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the stream's
-                   buffer automatically grows, <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_auto_grow</methodname>() method checks if the
-               buffer automatically grows as data is added.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giobufferedoutputstream--get-buffer-size">
-            <title>gio.BufferedOutputStream.get_buffer_size</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_buffer_size</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the current buffer size.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_buffer_size</methodname>() method gets the size
-                of the buffer in the stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giobufferedoutputstream--set-auto-grow">
-            <title>gio.BufferedOutputStream.set_auto_grow</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_auto_grow</methodname>
-                <methodparam><parameter role="keyword">auto_grow</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">auto_grow</parameter>&nbsp;:</term>
-                  <listitem><simpara>a boolean.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_auto_grow</methodname>() method sets whether or not
-               the stream's buffer should automatically grow. If auto_grow is true,
-               then each write will just make the buffer larger, and you must manually
-               flush the buffer to actually write out the data to the underlying stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giobufferedoutputstream--set-buffer-size">
-            <title>gio.BufferedOutputStream.set_buffer_size</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_buffer_size</methodname>
-                <methodparam><parameter role="keyword">size</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">size</parameter>&nbsp;:</term>
-                  <listitem><simpara>the new buffer size.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_buffer_size</methodname>() method sets the size of
-               the internal buffer to size.
-            </para>
-        </refsect2>
-    </refsect1>
-    
-    <refsect1>
-        <title>Functions</title>
-
-        <refsect2 id="function-gio--buffered-output-stream-new-sized">
-            <title>gio.buffered_output_stream_new_sized</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>buffered_output_stream_new_sized</methodname>
-                <methodparam><parameter role="keyword">size</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>size</parameter>&nbsp;:</term>
-                    <listitem><simpara>the requested buffer size.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A new
-                    <link linkend="class-giooutputstream"><classname>gio.OutputStream</classname></link>
-                   with an internal buffer set to size..
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>buffered_output_stream_new_sized</methodname>() function creates
-                a new <link linkend="class-giobufferedoutputstream"><classname>gio.BufferedOutputStream</classname></link>
-                from the given base_stream, with a buffer set to size.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-cancellable.xml b/docs/reference/pygio-cancellable.xml
deleted file mode 100644 (file)
index c35388d..0000000
+++ /dev/null
@@ -1,290 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giocancellable">
-    <refnamediv>
-        <refname>gio.Cancellable</refname>
-        <refpurpose>Thread-safe Operation Cancellation Stack.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.Cancellable</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-giocancellable">gio.Cancellable</link></methodname>
-       <methodparam></methodparam>
-    </constructorsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giocancellable--cancel">cancel</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giocancellable--get-fd">get_fd</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giocancellable--is-cancelled">is_cancelled</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giocancellable--pop-current">pop_current</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giocancellable--push-current">push_current</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giocancellable--reset">reset</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giocancellable--set-error-if-cancelled">set_error_if_cancelled</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-<programlisting>
-<emphasis role="bold">Functions</emphasis>
-<methodsynopsis language="python">
-    <methodname><link linkend="function-gio--cancellable-get-current">gio.cancellable_get_current</link></methodname>
-    <methodparam></methodparam>
-</methodsynopsis></programlisting>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giocancellable">gio.Cancellable</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-            is a thread-safe operation cancellation stack used throughout GIO to allow for
-            cancellation of synchronous and asynchronous operations.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giocancellable">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.Cancellable</methodname>
-            <methodparam></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link> object.
-        </para>
-        <para>
-            Applications that want to start one or more operations that should be cancellable should create a
-            <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-            and pass it to the operations. 
-        </para>
-        <para>
-            One <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-            can be used in multiple consecutive operations, but not in multiple concurrent operations.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giocancellable--cancel">
-            <title>gio.Cancellable.cancel</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>cancel</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            </variablelist>
-    
-            <para>
-                The <methodname>cancel</methodname>() method will set cancellable to cancelled,
-                and will emit the "cancelled" signal. (However, see the warning about race conditions
-                in the documentation for that signal if you are planning to connect to it.) 
-            </para>
-            <para>
-                This function is thread-safe. In other words, you can safely call it from a thread
-                other than the one running the operation that was passed the cancellable. 
-            </para>
-            <para>
-                The convention within gio is that cancelling an asynchronous operation causes it
-                to complete asynchronously. That is, if you cancel the operation from the same thread
-                in which it is running, then the operation's GAsyncReadyCallback will not be invoked
-                until the application returns to the main loop.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giocancellable--get-fd">
-            <title>gio.Cancellable.get_fd</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_fd</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>A valid file descriptor. -1 if the file descriptor
-                is not supported, or on errors.</simpara></listitem>
-            </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_fd</methodname>() method gets the file descriptor
-                for a cancellable job. This can be used to implement cancellable operations
-                on Unix systems. The returned fd will turn readable when cancellable is cancelled. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giocancellable--is-cancelled">
-            <title>gio.Cancellable.is_cancelled</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>is_cancelled</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara><literal>True</literal> if cancellable is cancelled,
-                <literal>False</literal> if called with <literal>None</literal> or if
-                item is not cancelled. </simpara></listitem>
-            </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_fd</methodname>() method gets the file descriptor
-                for a cancellable job. This can be used to implement cancellable operations
-                on Unix systems. The returned fd will turn readable when cancellable is cancelled. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giocancellable--pop-current">
-            <title>gio.Cancellable.pop_current</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>pop_current</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            </variablelist>
-    
-            <para>
-                The <methodname>pop_current</methodname>() method pops cancellable off
-                the cancellable stack (verifying that cancellable is on the top of the stack).
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giocancellable--push-current">
-            <title>gio.Cancellable.push_current</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>push_current</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            </variablelist>
-    
-            <para>
-                The <methodname>push_current</methodname>() method pushes cancellable onto
-                the cancellable stack. The current cancllable can then be recieved using
-                <methodname><link linkend="function-gio--cancellable-get-current">gio.cancellable_get_current</link></methodname>(). 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giocancellable--reset">
-            <title>gio.Cancellable.reset</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>reset</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            </variablelist>
-    
-            <para>
-                The <methodname>reset</methodname>() method resets cancellable to its uncancelled state.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giocancellable--set-error-if-cancelled">
-            <title>gio.Cancellable.set_error_if_cancelled</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_error_if_cancelled</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if cancellable was cancelled,
-                    <literal>False</literal> if it was not.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_error_if_cancelled</methodname>() method, if the cancellable
-                is cancelled, sets the error to notify that the operation was cancelled.
-            </para>
-        </refsect2>
-    </refsect1>
-    
-    <refsect1>
-        <title>Functions</title>
-
-        <refsect2 id="function-gio--cancellable-get-current">
-            <title>gio.cancellable_get_current</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>cancellable_get_current</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    from the top of the stack, or <literal>None</literal> if the stack is empty.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>cancellable_get_current</methodname>() function gets the top cancellable from the stack.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-classes.xml b/docs/reference/pygio-classes.xml
deleted file mode 100644 (file)
index 17761f8..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-<chapter id="gio-class-reference"
-  xmlns:xi="http://www.w3.org/2001/XInclude">
-
-<title>PyGio Class Reference</title>
-
-<!-- GIO CLASSES -->
-<xi:include href="pygio-appinfo.xml"/>
-<xi:include href="pygio-applaunchcontext.xml"/>
-<xi:include href="pygio-asyncresult.xml"/>
-<xi:include href="pygio-bufferedinputstream.xml"/>
-<xi:include href="pygio-bufferedoutputstream.xml"/>
-<xi:include href="pygio-cancellable.xml"/>
-<xi:include href="pygio-datainputstream.xml"/>
-<xi:include href="pygio-dataoutputstream.xml"/>
-<xi:include href="pygio-drive.xml"/>
-<xi:include href="pygio-emblem.xml"/>
-<xi:include href="pygio-emblemedicon.xml"/>
-<xi:include href="pygio-file.xml"/>
-<xi:include href="pygio-fileattributeinfo.xml"/>
-<xi:include href="pygio-fileenumerator.xml"/>
-<xi:include href="pygio-fileicon.xml"/>
-<xi:include href="pygio-fileinfo.xml"/>
-<xi:include href="pygio-fileinputstream.xml"/>
-<xi:include href="pygio-filemonitor.xml"/>
-<xi:include href="pygio-fileoutputstream.xml"/>
-<xi:include href="pygio-filterinputstream.xml"/>
-<xi:include href="pygio-filteroutputstream.xml"/>
-<xi:include href="pygio-icon.xml"/>
-<xi:include href="pygio-inputstream.xml"/>
-<xi:include href="pygio-loadableicon.xml"/>
-<xi:include href="pygio-memoryinputstream.xml"/>
-<xi:include href="pygio-memoryoutputstream.xml"/>
-<xi:include href="pygio-mount.xml"/>
-<xi:include href="pygio-mountoperation.xml"/>
-<xi:include href="pygio-outputstream.xml"/>
-<xi:include href="pygio-seekable.xml"/>
-<xi:include href="pygio-simpleasyncresult.xml"/>
-<xi:include href="pygio-themedicon.xml"/>
-<xi:include href="pygio-volume.xml"/>
-<xi:include href="pygio-volumemonitor.xml"/>
-<xi:include href="pygio-functions.xml"/>
-<xi:include href="pygio-constants.xml"/>
-
-</chapter>
diff --git a/docs/reference/pygio-constants.xml b/docs/reference/pygio-constants.xml
deleted file mode 100644 (file)
index 343927e..0000000
+++ /dev/null
@@ -1,1540 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="gio-constants">
-  <refnamediv>
-    <refname>gio Constants</refname>
-    <refpurpose>the built-in constants of the gio module</refpurpose>
-  </refnamediv>
-
-  <refsect1>
-    <title>Synopsis</title>
-
-<programlisting>
-<xref linkend="gio-app-info-constants" endterm="gio-app-info-constants-title"></xref>
-<xref linkend="gio-ask-password-flags-constants" endterm="gio-ask-password-flags-constants-title"></xref>
-<xref linkend="gio-data-stream-byte-order-constants" endterm="gio-data-stream-byte-order-constants-title"></xref>
-<xref linkend="gio-data-stream-newline-type-constants" endterm="gio-data-stream-newline-type-constants-title"></xref>
-<xref linkend="gio-emblem-origin-constants" endterm="gio-emblem-origin-constants-title"></xref>
-<xref linkend="gio-error-constants" endterm="gio-error-constants-title"></xref>
-<xref linkend="gio-file-attribute-constants" endterm="gio-file-attribute-constants-title"></xref>
-<xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-<xref linkend="gio-file-attribute-flags-constants" endterm="gio-file-attribute-flags-constants-title"></xref>
-<xref linkend="gio-file-create-flags-constants" endterm="gio-file-create-flags-constants-title"></xref>
-<xref linkend="gio-file-copy-flags-constants" endterm="gio-file-copy-flags-constants-title"></xref>
-<xref linkend="gio-file-monitor-flags-constants" endterm="gio-file-monitor-flags-constants-title"></xref>
-<xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-<xref linkend="gio-file-type-constants" endterm="gio-file-type-constants-title"></xref>
-<xref linkend="gio-mount-mount-flags-constants" endterm="gio-mount-mount-flags-constants-title"></xref>
-<xref linkend="gio-mount-operation-result-constants" endterm="gio-mount-operation-result-constants-title"></xref>
-<xref linkend="gio-mount-unmount-flags-constants" endterm="gio-mount-unmount-flags-constants-title"></xref>
-<xref linkend="gio-password-save-constants" endterm="gio-password-save-constants-title"></xref>
-</programlisting>
-
-  </refsect1>
-
-  <refsect1 id="gio-constants-description">
-    <title>Description</title>
-
-    <refsect2 id="gio-ask-password-flags-constants">
-      <title id="gio-ask-password-flags-constants-title">Gio Ask Password Flags Constants</title>
-
-      <para>
-         Flags that are used to request specific information from the user, or to
-         notify the user of their choices in an authentication situation.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.ASK_PASSWORD_ANONYMOUS_SUPPORTED</literal></term>
-         <listitem>
-           <simpara>operation supports anonymous users.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ASK_PASSWORD_NEED_DOMAIN</literal></term>
-         <listitem>
-           <simpara>operation requires a domain.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ASK_PASSWORD_NEED_PASSWORD</literal></term>
-         <listitem>
-           <simpara>operation requires a password.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ASK_PASSWORD_NEED_USERNAME</literal></term>
-         <listitem>
-           <simpara>operation requires a username.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ASK_PASSWORD_SAVING_SUPPORTED</literal></term>
-         <listitem>
-           <simpara>operation supports saving settings.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-app-info-constants">
-      <title id="gio-app-info-constants-title">Gio AppInfo Create Flags Constants</title>
-
-      <para>
-         Flags used when creating a <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.APP_INFO_CREATE_NONE</literal></term>
-         <listitem>
-           <simpara>No flags.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.APP_INFO_CREATE_NEEDS_TERMINAL</literal></term>
-         <listitem>
-           <simpara>Application opens in a terminal window. </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.APP_INFO_CREATE_SUPPORTS_URIS</literal></term>
-         <listitem>
-           <simpara>Application supports URI arguments. </simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-data-stream-byte-order-constants">
-      <title id="gio-data-stream-byte-order-constants-title">Gio Data Stream Byte Order Constants</title>
-
-      <para>
-         Used to ensure proper endianness of streaming data sources across various machine architectures.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.DATA_STREAM_BYTE_ORDER_BIG_ENDIAN</literal></term>
-         <listitem>
-           <simpara>Selects Big Endian byte order.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.DATA_STREAM_BYTE_ORDER_HOST_ENDIAN</literal></term>
-         <listitem>
-           <simpara>Selects endianness based on host machine's architecture.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN</literal></term>
-         <listitem>
-           <simpara>Selects Little Endian byte order.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-data-stream-newline-type-constants">
-      <title id="gio-data-stream-newline-type-constants-title">Gio Data Stream Newline Type Constants</title>
-
-      <para>
-         Used when checking for or setting the line endings for a given file.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.DATA_STREAM_NEWLINE_TYPE_LF</literal></term>
-         <listitem>
-           <simpara>Selects "LF" line endings, common on most modern UNIX platforms.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.DATA_STREAM_NEWLINE_TYPE_CR</literal></term>
-         <listitem>
-           <simpara>Selects "CR" line endings.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.DATA_STREAM_NEWLINE_TYPE_CR_LF</literal></term>
-         <listitem>
-           <simpara>Selects "CR, LF" line ending, common on Microsoft Windows.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.DATA_STREAM_NEWLINE_TYPE_ANY</literal></term>
-         <listitem>
-           <simpara>Automatically try to handle any line ending type.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-emblem-origin-constants">
-      <title id="gio-emblem-origin-constants-title">Gio Emblem Origin Constants</title>
-
-      <para>
-         GEmblemOrigin is used to add information about the origin of the emblem to GEmblem.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.EMBLEM_ORIGIN_DEVICE</literal></term>
-         <listitem>
-           <simpara>Embleme adds device-specific information.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.EMBLEM_ORIGIN_LIVEMETADATA</literal></term>
-         <listitem>
-           <simpara>Emblem depicts live metadata, such as "readonly".</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.EMBLEM_ORIGIN_TAG</literal></term>
-         <listitem>
-           <simpara>Emblem comes from a user-defined tag, e.g. set by nautilus (in the future).</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.EMBLEM_ORIGIN_UNKNOWN</literal></term>
-         <listitem>
-           <simpara>Emblem of unknown origin.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-error-constants">
-      <title id="gio-error-constants-title">Gio Error Constants</title>
-
-      <para>
-        GIOError Error codes returned by GIO functions.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.ERROR_ALREADY_MOUNTED</literal></term>
-         <listitem>
-           <simpara>File is already mounted.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_BUSY</literal></term>
-         <listitem>
-           <simpara>File is busy.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_CANCELLED</literal></term>
-         <listitem>
-           <simpara>Operation was cancelled. See
-               <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>.
-           </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_CANT_CREATE_BACKUP</literal></term>
-         <listitem>
-           <simpara>Backup couldn't be created.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_CLOSED</literal></term>
-         <listitem>
-           <simpara>File was closed.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_EXISTS</literal></term>
-         <listitem>
-           <simpara>File already exists error.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_FAILED</literal></term>
-         <listitem>
-           <simpara>Generic error condition for when any operation fails.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_FAILED_HANDLED</literal></term>
-         <listitem>
-           <simpara>Operation failed and a helper program has already interacted with
-           the user. Do not display any error dialog. </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_FILENAME_TOO_LONG</literal></term>
-         <listitem>
-           <simpara>Filename is too many characters.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_HOST_NOT_FOUND</literal></term>
-         <listitem>
-           <simpara>Host couldn't be found (remote operations).</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_INVALID_ARGUMENT</literal></term>
-         <listitem>
-           <simpara>Invalid argument.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_INVALID_FILENAME</literal></term>
-         <listitem>
-           <simpara>Filename is invalid or contains invalid characters.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_IS_DIRECTORY</literal></term>
-         <listitem>
-           <simpara>File is a directory error.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_NOT_DIRECTORY</literal></term>
-         <listitem>
-           <simpara>File is not a directory.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_NOT_EMPTY</literal></term>
-         <listitem>
-           <simpara>File is a directory that isn't empty.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_NOT_FOUND</literal></term>
-         <listitem>
-           <simpara>File not found error.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_NOT_MOUNTABLE_FILE</literal></term>
-         <listitem>
-           <simpara>File cannot be mounted.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_NOT_MOUNTED</literal></term>
-         <listitem>
-           <simpara>File isn't mounted. </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_NOT_REGULAR_FILE</literal></term>
-         <listitem>
-           <simpara>File is not a regular file.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_NOT_SUPPORTED</literal></term>
-         <listitem>
-           <simpara>Operation not supported for the current backend.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_NOT_SYMBOLIC_LINK</literal></term>
-         <listitem>
-           <simpara>File is not a symbolic link.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_NO_SPACE</literal></term>
-         <listitem>
-           <simpara>No space left on drive. </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_PENDING</literal></term>
-         <listitem>
-           <simpara>Operations are still pending.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_PERMISSION_DENIED</literal></term>
-         <listitem>
-           <simpara>Permission denied.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_READ_ONLY</literal></term>
-         <listitem>
-           <simpara>File is read only. </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_TIMED_OUT</literal></term>
-         <listitem>
-           <simpara>Operation timed out. </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_TOO_MANY_LINKS</literal></term>
-         <listitem>
-           <simpara>File contains too many symbolic links. </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_TOO_MANY_OPEN_FILES</literal></term>
-         <listitem>
-           <simpara>The current process has too many files open and can't open any
-           more. Duplicate descriptors do count toward this limit. Since 2.20</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_WOULD_BLOCK</literal></term>
-         <listitem>
-           <simpara>Operation would block.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_WOULD_MERGE</literal></term>
-         <listitem>
-           <simpara>Operation would merge files.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_WOULD_RECURSE</literal></term>
-         <listitem>
-           <simpara>Operation would be recursive.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.ERROR_WRONG_ETAG</literal></term>
-         <listitem>
-           <simpara>File's Entity Tag was incorrect. </simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-file-attribute-constants">
-      <title id="gio-file-attribute-constants-title">Gio File Attribute Constants</title>
-
-      <para>
-         The file attributes.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_TYPE</literal></term>
-         <listitem>
-           <simpara>
-                "standard::type" A key in the "standard" namespace for storing file types. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32. The value for this key should contain a
-                <xref linkend="gio-file-type-constants" endterm="gio-file-type-constants-title"></xref>
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_IS_HIDDEN</literal></term>
-         <listitem>
-           <simpara>
-                "standard::is-hidden" A key in the "standard" namespace for checking if a file is hidden. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_IS_BACKUP</literal></term>
-         <listitem>
-           <simpara>
-                "standard::is-backup" A key in the "standard" namespace for checking if a file is a backup file. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_IS_SYMLINK</literal></term>
-         <listitem>
-           <simpara>
-                "standard::is-symlink" A key in the "standard" namespace for checking if the file is a symlink.
-                Typically the actual type is something else, if we followed the symlink to get the type. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL</literal></term>
-         <listitem>
-           <simpara>
-                "standard::is-virtual" A key in the "standard" namespace for checking if a file is virtual. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_NAME</literal></term>
-         <listitem>
-           <simpara>
-                "standard::name" A key in the "standard" namespace for getting the name of the file.
-                The name is the on-disk filename which may not be in any known encoding,
-                and can thus not be generally displayed as is. Use
-                gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME if you need to display the name in a user
-                interface. Corresponding GFileAttributeType is gio.FILE_ATTRIBUTE_TYPE_BYTE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME</literal></term>
-         <listitem>
-           <simpara>
-                "standard::display-name" A key in the "standard" namespace for getting the display
-                name of the file. A display name is guaranteed to be in UTF8 and can thus be displayed
-                in the UI. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_EDIT_NAME</literal></term>
-         <listitem>
-           <simpara>
-                "standard::edit-name" A key in the "standard" namespace for edit name of the file.
-                An edit name is similar to the display name, but it is meant to be used when you want
-                to rename the file in the UI. The display name might contain information you don't
-                want in the new filename (such as "(invalid unicode)" if the filename was in an
-                invalid encoding). Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_COPY_NAME</literal></term>
-         <listitem>
-           <simpara>
-                "standard::copy-name" A key in the "standard" namespace for getting the copy
-                name of the file. The copy name is an optional version of the name. If available
-                it's always in UTF8, and corresponds directly to the original filename (only transcoded
-                to UTF8). This is useful if you want to copy the file to another filesystem that might
-                have a different encoding. If the filename is not a valid string in the encoding selected
-                for the filesystem it is in then the copy name will not be set. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_ICON</literal></term>
-         <listitem>
-           <simpara>
-                "standard::icon" A key in the "standard" namespace for getting the icon for the file. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_OBJECT. The value for this key should contain a
-                <link linkend="class-gioicon"><classname>gio.Icon</classname></link>.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE</literal></term>
-         <listitem>
-           <simpara>
-                "standard::content-type" A key in the "standard" namespace for getting the content type of the file. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING. The value for this key should contain a valid content type.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE</literal></term>
-         <listitem>
-           <simpara>
-                "standard::fast-content-type" A key in the "standard" namespace for getting the fast
-                content type. The fast content type isn't as reliable as the regular one, as it
-                only uses the filename to guess it, but it is faster to calculate than the regular
-                content type. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_SIZE</literal></term>
-         <listitem>
-           <simpara>
-                "standard::size" A key in the "standard" namespace for getting the file's size (in bytes). Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT64.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET</literal></term>
-         <listitem>
-           <simpara>
-                "standard::symlink-target" A key in the "standard" namespace for getting the target URI
-                for the file, in the case of gio.FILE_TYPE_SHORTCUT or gio.FILE_TYPE_MOUNTABLE files. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_SORT_ORDER</literal></term>
-         <listitem>
-           <simpara>
-                "standard::sort-order" A key in the "standard" namespace for setting the sort order of a file. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_INT32. An example use would be in file managers, which would use this
-                key to set the order files are displayed. Files with smaller sort order should be sorted first,
-                and files without sort order as if sort order was zero.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_ETAG_VALUE</literal></term>
-         <listitem>
-           <simpara>
-                "etag::value" A key in the "etag" namespace for getting the value of the file's entity tag. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_ID_FILE</literal></term>
-         <listitem>
-           <simpara>
-                "id::file" A key in the "id" namespace for getting a file identifier. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING. An example use would be during listing files,
-                to avoid recursive directory scanning.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_ID_FILESYSTEM</literal></term>
-         <listitem>
-           <simpara>
-                "id::filesystem" A key in the "id" namespace for getting the file system identifier. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING. An example use would be during drag and
-                drop to see if the source and target are on the same filesystem (default to move) or not (default to copy).
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_ACCESS_CAN_READ</literal></term>
-         <listitem>
-           <simpara>
-                "access::can-read" A key in the "access" namespace for getting read privileges. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <literal>True</literal>
-                if the user is able to read the file.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_ACCESS_CAN_WRITE</literal></term>
-         <listitem>
-           <simpara>
-                "access::can-write" A key in the "access" namespace for getting write privileges.Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <literal>True</literal>
-                if the user is able to write to the file.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE</literal></term>
-         <listitem>
-           <simpara>
-                "access::can-execute" A key in the "access" namespace for getting execution privileges. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <literal>True</literal>
-                if the user is able to execute the file.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_ACCESS_CAN_DELETE</literal></term>
-         <listitem>
-           <simpara>
-                "access::can-delete" A key in the "access" namespace for checking deletion privileges. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <literal>True</literal>
-                if the user is able to delete the file.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_ACCESS_CAN_TRASH</literal></term>
-         <listitem>
-           <simpara>
-                "access::can-trash" A key in the "access" namespace for checking trashing privileges. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <literal>True</literal>
-                if the user is able to move the file to the trash.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_ACCESS_CAN_RENAME</literal></term>
-         <listitem>
-           <simpara>
-                "access::can-rename" A key in the "access" namespace for checking renaming privileges. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_BOOLEAN. This attribute will be <literal>True</literal>
-                if the user is able to rename the file.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT</literal></term>
-         <listitem>
-           <simpara>
-                "mountable::can-mount" A key in the "mountable" namespace for checking if
-                a file (of type G_FILE_TYPE_MOUNTABLE) is mountable. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT</literal></term>
-         <listitem>
-           <simpara>
-                "mountable::can-unmount" A key in the "mountable" namespace for checking if a file
-                (of type G_FILE_TYPE_MOUNTABLE) is unmountable. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT</literal></term>
-         <listitem>
-           <simpara>
-                "mountable::can-eject" A key in the "mountable" namespace for checking if a file
-                (of type G_FILE_TYPE_MOUNTABLE) can be ejected. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE</literal></term>
-         <listitem>
-           <simpara>
-                "mountable::unix-device" A key in the "mountable" namespace for getting the unix device. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI</literal></term>
-         <listitem>
-           <simpara>
-                "mountable::hal-udi" A key in the "mountable" namespace for getting the
-                HAL UDI for the mountable file. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TIME_MODIFIED</literal></term>
-         <listitem>
-           <simpara>
-                "time::modified" A key in the "time" namespace for getting the time the file was last modified. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the file was modified.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TIME_MODIFIED_USEC</literal></term>
-         <listitem>
-           <simpara>
-                "time::modified-usec" A key in the "time" namespace for getting the miliseconds
-                of the time the file was last modified. This should be used in conjunction
-                with G_FILE_ATTRIBUTE_TIME_MODIFIED. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TIME_ACCESS</literal></term>
-         <listitem>
-           <simpara>
-                "time::access" A key in the "time" namespace for getting the time the file was last accessed. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the file was last accessed.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TIME_ACCESS_USEC</literal></term>
-         <listitem>
-           <simpara>
-                "time::access-usec" A key in the "time" namespace for getting the microseconds of
-                the time the file was last accessed. This should be used in conjunction
-                with G_FILE_ATTRIBUTE_TIME_ACCESS. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TIME_CHANGED</literal></term>
-         <listitem>
-           <simpara>
-                "time::changed" A key in the "time" namespace for getting the time the
-                file was last changed. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the file was last changed.
-                This corresponds to the traditional UNIX ctime.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TIME_CHANGED_USEC</literal></term>
-         <listitem>
-           <simpara>
-                "time::changed-usec" A key in the "time" namespace for getting the microseconds
-                of the time the file was last changed. This should be used in conjunction
-                with G_FILE_ATTRIBUTE_TIME_CHANGED. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TIME_CREATED</literal></term>
-         <listitem>
-           <simpara>
-                "time::created" A key in the "time" namespace for getting the time the file was created. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT64, and contains the UNIX time since the file was created.
-                This corresponds to the NTFS ctime.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TIME_CREATED_USEC</literal></term>
-         <listitem>
-           <simpara>
-                "time::created-usec" A key in the "time" namespace for getting the microseconds of the time the
-                file was created. This should be used in conjunction with G_FILE_ATTRIBUTE_TIME_CREATED. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_UNIX_DEVICE</literal></term>
-         <listitem>
-           <simpara>
-                "unix::device" A key in the "unix" namespace for getting the device id of the device the file
-                is located on (see stat() documentation). This attribute is only available
-                for UNIX file systems. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_UNIX_INODE</literal></term>
-         <listitem>
-           <simpara>
-                "unix::inode" A key in the "unix" namespace for getting the inode of the file. This attribute is only
-                available for UNIX file systems. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_UINT64.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_UNIX_MODE</literal></term>
-         <listitem>
-           <simpara>
-                "unix::mode" A key in the "unix" namespace for getting the mode of the file (e.g.
-                whether the file is a regular file, symlink, etc). See lstat() documentation.
-                This attribute is only available for UNIX file systems. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_UNIX_NLINK</literal></term>
-         <listitem>
-           <simpara>
-                "unix::nlink" A key in the "unix" namespace for getting the number of hard links
-                for a file. See lstat() documentation. This attribute is only available for UNIX
-                file systems. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_UNIX_UID</literal></term>
-         <listitem>
-           <simpara>
-                "unix::uid" A key in the "unix" namespace for getting the user ID for the file. This attribute
-                is only available for UNIX file systems. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_UNIX_GID</literal></term>
-         <listitem>
-           <simpara>
-                "unix::gid" A key in the "unix" namespace for getting the group ID for the file.
-                This attribute is only available for UNIX file systems. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_UNIX_RDEV</literal></term>
-         <listitem>
-           <simpara>
-                "unix::rdev" A key in the "unix" namespace for getting the device ID for the file
-                (if it is a special file). See lstat() documentation. This attribute is only available
-                for UNIX file systems. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_UNIX_BLOCK_SIZE</literal></term>
-         <listitem>
-           <simpara>
-                "unix::block-size" A key in the "unix" namespace for getting the block size for
-                the file system. This attribute is only available for UNIX file systems. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is gio.FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_UNIX_BLOCKS</literal></term>
-         <listitem>
-           <simpara>
-                "unix::blocks" A key in the "unix" namespace for getting the number of blocks allocated
-                for the file. This attribute is only available for UNIX file systems. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_UINT64.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT</literal></term>
-         <listitem>
-           <simpara>
-                "unix::is-mountpoint" A key in the "unix" namespace for checking if the file represents
-                a UNIX mount point. This attribute is <literal>True</literal> if the file is a UNIX mount point.
-                This attribute is only available for UNIX file systems. Corresponding
-                GFileAttributeType
-                is gio.FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_DOS_IS_ARCHIVE</literal></term>
-         <listitem>
-           <simpara>
-                "dos::is-archive" A key in the "dos" namespace for checking if the file's archive
-                flag is set. This attribute is <literal>True</literal> if the archive flag is set.
-                This attribute is only available for DOS file systems. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_DOS_IS_SYSTEM</literal></term>
-         <listitem>
-           <simpara>
-                "dos::is-system" A key in the "dos" namespace for checking if the file's backup
-                flag is set. This attribute is <literal>True</literal> if the backup flag is set.
-                This attribute is only available for DOS file systems. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref> is
-                G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_OWNER_USER</literal></term>
-         <listitem>
-           <simpara>
-                "owner::user" A key in the "owner" namespace for getting the user name
-                of the file's owner. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_OWNER_USER_REAL</literal></term>
-         <listitem>
-           <simpara>
-                "owner::user-real" A key in the "owner" namespace for getting the real name
-                of the user that owns the file. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref> is
-                G_FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_OWNER_GROUP</literal></term>
-         <listitem>
-           <simpara>
-                "owner::group" A key in the "owner" namespace for getting the file owner's
-                group. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_THUMBNAIL_PATH</literal></term>
-         <listitem>
-           <simpara>
-                "thumbnail::path" A key in the "thumbnail" namespace for getting the path
-                to the thumbnail image. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_THUMBNAILING_FAILED</literal></term>
-         <listitem>
-           <simpara>
-                "thumbnail::failed" A key in the "thumbnail" namespace for checking if thumbnailing failed. This attribute
-                is <literal>True</literal> if thumbnailing failed. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref> is
-                G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_PREVIEW_ICON</literal></term>
-         <listitem>
-           <simpara>
-                "preview::icon" A key in the "preview" namespace for getting a
-                <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-                that can be used to get preview of the file. For example, it
-                may be a low resolution thumbnail without metadata. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref> is
-                G_FILE_ATTRIBUTE_TYPE_OBJECT. The value for this key should contain a GIcon.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_FILESYSTEM_SIZE</literal></term>
-         <listitem>
-           <simpara>
-                "filesystem::size" A key in the "filesystem" namespace for getting the total
-                size (in bytes) of the file system, used in
-                <methodname><link linkend="method-giofile--query-filesystem-info">query_filesystem_info</link></methodname>().
-                Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_UINT64.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_FILESYSTEM_FREE</literal></term>
-         <listitem>
-           <simpara>
-                "filesystem::free" A key in the "filesystem" namespace for getting the number of bytes of free space left
-                on the file system. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_UINT64.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_FILESYSTEM_TYPE</literal></term>
-         <listitem>
-           <simpara>
-                "filesystem::type" A key in the "filesystem" namespace for getting the file system's type. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_FILESYSTEM_READONLY</literal></term>
-         <listitem>
-           <simpara>
-                "filesystem::readonly" A key in the "filesystem" namespace for checking if the
-                file system is read only. Is set to <literal>True</literal> if the file system
-                is read only. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_BOOLEAN.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_GVFS_BACKEND</literal></term>
-         <listitem>
-           <simpara>
-                "gvfs::backend" A key in the "gvfs" namespace that gets the name of the current GVFS backend in use. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_SELINUX_CONTEXT</literal></term>
-         <listitem>
-           <simpara>
-                "selinux::context" A key in the "selinux" namespace for getting the file's SELinux context. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-                Note that this attribute is only available if GLib has been built with SELinux support.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TRASH_ITEM_COUNT</literal></term>
-         <listitem>
-           <simpara>
-                "trash::item-count" A key in the "trash" namespace. When requested against "trash:///" returns the number
-                of (toplevel) items in the trash folder. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_UINT32.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW</literal></term>
-         <listitem>
-           <simpara>
-                "filesystem::use-preview" A key in the "filesystem" namespace for hinting a file manager
-                application whether it should preview (e.g. thumbnail) files on the file system.
-                The value for this key contain a GFilesystemPreviewType.
-            </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_STANDARD_DESCRIPTION</literal></term>
-         <listitem>
-           <simpara>
-                "standard::description" A key in the "standard" namespace for getting the description
-                of the file. The description is a utf8 string that describes the file, generally containing
-                the filename, but can also contain furter information. Example descriptions could be
-                "filename (on hostname)" for a remote file or "filename (in trash)" for a
-                file in the trash. This is useful for instance as the window title when
-                displaying a directory or for a bookmarks menu. Corresponding
-                <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                is G_FILE_ATTRIBUTE_TYPE_STRING.
-            </simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-file-attribute-type-constants">
-      <title id="gio-file-attribute-type-constants-title">Gio File Attribute Type Constants</title>
-
-      <para>
-         The data types for file attributes.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TYPE_BOOLEAN</literal></term>
-         <listitem>
-           <simpara>a boolean value.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TYPE_BYTE_STRING</literal></term>
-         <listitem>
-           <simpara>a zero terminated string of non-zero bytes.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TYPE_INT32</literal></term>
-         <listitem>
-           <simpara>a signed 4-byte/32-bit integer.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TYPE_INT64</literal></term>
-         <listitem>
-           <simpara>a signed 8-byte/64-bit integer.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TYPE_INVALID</literal></term>
-         <listitem>
-           <simpara>indicates an invalid or uninitalized type.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TYPE_OBJECT</literal></term>
-         <listitem>
-           <simpara>a <link linkend="class-gobject">gobject.GObject</link>.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TYPE_STRING</literal></term>
-         <listitem>
-           <simpara>a null terminated UTF8 string.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TYPE_UINT32</literal></term>
-         <listitem>
-           <simpara>an unsigned 4-byte/32-bit integer.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_TYPE_UINT64</literal></term>
-         <listitem>
-           <simpara>an unsigned 8-byte/64-bit integer.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-file-attribute-flags-constants">
-      <title id="gio-file-attribute-flags-constants-title">Gio File Attribute Flags Constants</title>
-
-      <para>
-         Flags specifying the behaviour of an attribute.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_INFO_NONE</literal></term>
-         <listitem>
-           <simpara>no flags set.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_INFO_COPY_WITH_FILE</literal></term>
-         <listitem>
-           <simpara>copy the attribute values when the file is copied.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED</literal></term>
-         <listitem>
-           <simpara>copy the attribute values when the file is moved.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-file-create-flags-constants">
-      <title id="gio-file-create-flags-constants-title">Gio File Create Flags Constants</title>
-
-      <para>
-         Flags used when an operation may create a file.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.FILE_CREATE_NONE</literal></term>
-         <listitem>
-           <simpara>No flags set.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_CREATE_PRIVATE</literal></term>
-         <listitem>
-           <simpara>Create a file that can only be accessed by the current user.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_CREATE_REPLACE_DESTINATION</literal></term>
-         <listitem>
-           <simpara>
-               Replace the destination as if it didn't exist before. Don't try
-               to keep any old permissions, replace instead of following links. This is
-               generally useful if you're doing a "copy over" rather than a "save new version of"
-               replace operation. You can think of it as "unlink destination" before writing
-               to it, although the implementation may not be exactly like that.
-           </simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-file-copy-flags-constants">
-      <title id="gio-file-copy-flags-constants-title">Gio File Copy Flags Constants</title>
-
-      <para>
-         Flags used when copying or moving files.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.FILE_COPY_NONE</literal></term>
-         <listitem>
-           <simpara>No flags set.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_COPY_OVERWRITE</literal></term>
-         <listitem>
-           <simpara>Overwrite any existing files.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_COPY_BACKUP</literal></term>
-         <listitem>
-           <simpara>Make a backup of any existing files.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_COPY_NOFOLLOW_SYMLINKS</literal></term>
-         <listitem>
-           <simpara>Don't follow symlinks.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_COPY_ALL_METADATA</literal></term>
-         <listitem>
-           <simpara>Copy all file metadata instead of just default set used for copy
-           (see <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>).</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_COPY_NO_FALLBACK_FOR_MOVE</literal></term>
-         <listitem>
-           <simpara>Don't use copy and delete fallback if native move not supported.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_COPY_TARGET_DEFAULT_PERMS</literal></term>
-         <listitem>
-           <simpara>Leaves target file with default perms, instead of setting the source file perms.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-file-monitor-flags-constants">
-      <title id="gio-file-monitor-flags-constants-title">Gio File Monitor Flags Constants</title>
-
-      <para>
-            Flags used to set what a
-            <link linkend="class-giofilemonitor"><classname>gio.FileMonitor</classname></link>
-            will watch for.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.FILE_MONITOR_NONE</literal></term>
-         <listitem>
-           <simpara>No flags set.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_MONITOR_WATCH_MOUNTS</literal></term>
-         <listitem>
-           <simpara>Watch for mount events.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-file-query-info-flags-constants">
-      <title id="gio-file-query-info-flags-constants-title">Gio File Query Info Flags Constants</title>
-
-      <para>
-         Flags used when querying a
-         <link linkend="class-giofile"><classname>gio.FileInfo</classname></link>.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.FILE_QUERY_INFO_NONE</literal></term>
-         <listitem>
-           <simpara>No flags set.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_QUERY_INFO_NOFOLLOW_SYMLINKS</literal></term>
-         <listitem>
-           <simpara>Don't follow symlinks.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-file-type-constants">
-      <title id="gio-file-type-constants-title">Gio File Type Constants</title>
-
-      <para>
-         Indicates the file's on-disk type.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.FILE_TYPE_DIRECTORY</literal></term>
-         <listitem>
-           <simpara>File handle represents a directory.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_TYPE_MOUNTABLE</literal></term>
-         <listitem>
-           <simpara>File is a mountable location.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_TYPE_REGULAR</literal></term>
-         <listitem>
-           <simpara>File handle represents a regular file.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_TYPE_SHORTCUT</literal></term>
-         <listitem>
-           <simpara>File is a shortcut (Windows systems).</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_TYPE_SPECIAL</literal></term>
-         <listitem>
-           <simpara>File is a "special" file, such as a socket, fifo, block device, or character device.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_TYPE_SYMBOLIC_LINK</literal></term>
-         <listitem>
-           <simpara>File handle represents a symbolic link (Unix systems).</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.FILE_TYPE_UNKNOWN</literal></term>
-         <listitem>
-           <simpara>File's type is unknown.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-mount-mount-flags-constants">
-      <title id="gio-mount-mount-flags-constants-title">Gio Mount Mount Flags Constants</title>
-
-      <para>
-         Flags used when mounting a mount.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.MOUNT_MOUNT_NONE</literal></term>
-         <listitem>
-           <simpara>No flags set.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-mount-unmount-flags-constants">
-      <title id="gio-mount-unmount-flags-constants-title">Gio Mount Unmount Flags Constants</title>
-
-      <para>
-         Flags used when unmounting a mount.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.MOUNT_UNMOUNT_NONE</literal></term>
-         <listitem>
-           <simpara>No flags set.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.MOUNT_UNMOUNT_FORCE</literal></term>
-         <listitem>
-           <simpara>Unmount even if there are outstanding file operations on the mount.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-mount-operation-result-constants">
-      <title id="gio-mount-operation-result-constants-title">Gio Mount Operation Result Constants</title>
-
-      <para>
-         returned as a result when a request for information is send by the mounting operation.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.MOUNT_OPERATION_HANDLED</literal></term>
-         <listitem>
-           <simpara>The request was fulfilled and the user specified data is now available.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.MOUNT_OPERATION_ABORTED</literal></term>
-         <listitem>
-           <simpara>The user requested the mount operation to be aborted.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.MOUNT_OPERATION_UNHANDLED</literal></term>
-         <listitem>
-           <simpara>The request was unhandled (i.e. not implemented).</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="gio-password-save-constants">
-      <title id="gio-password-save-constants-title">Gio Password Save Constants</title>
-
-      <para>
-         is used to indicate the lifespan of a saved password.
-      </para>
-      <para>
-         Gvfs stores passwords in the Gnome keyring when this flag allows it to,
-         and later retrieves it again from there.
-      </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gio.PASSWORD_SAVE_FOR_SESSION</literal></term>
-         <listitem>
-           <simpara>save a password for the session.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.PASSWORD_SAVE_NEVER</literal></term>
-         <listitem>
-           <simpara>never save a password.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gio.PASSWORD_SAVE_PERMANENTLY</literal></term>
-         <listitem>
-           <simpara>save a password permanently.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-  </refsect1>
-
-</refentry>
diff --git a/docs/reference/pygio-datainputstream.xml b/docs/reference/pygio-datainputstream.xml
deleted file mode 100644 (file)
index 403bb3e..0000000
+++ /dev/null
@@ -1,799 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giodatainputstream">
-    <refnamediv>
-        <refname>gio.DataInputStream</refname>
-        <refpurpose>Data Input Stream</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.DataInputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-giobufferedinputstream">gio.BufferedInputStream</link></classname></ooclass>
-
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-giodatainputstream">gio.DataInputStream</link></methodname>
-       <methodparam><parameter role="keyword">base_stream</parameter></methodparam>
-    </constructorsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--get-byte-order">get_byte_order</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--get-newline-type">get_newline_type</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-byte">read_byte</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-int16">read_int16</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-int32">read_int32</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-int64">read_int64</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-line">read_line</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-line-async">read_line_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-line-finish">read_line_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-uint16">read_uint16</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-uint32">read_uint32</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-uint64">read_uint64</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-until">read_until</link></methodname>
-        <methodparam><parameter role="keyword">stop_chars</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-until-async">read_until_async</link></methodname>
-        <methodparam><parameter role="keyword">stop_chars</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--read-until-finish">read_until_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--set-byte-order">set_byte_order</link></methodname>
-        <methodparam><parameter role="keyword">order</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodatainputstream--set-newline-type">set_newline_type</link></methodname>
-        <methodparam><parameter role="keyword">type</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-gioinputstream">gio.InputStream</link>
-    +-- <link linkend="class-giofilterinputstream">gio.FilterInputStream</link>
-      +-- <link linkend="class-giobufferedinputstream">gio.BufferedInputStream</link>
-        +-- <link linkend="class-giodatainputstream">gio.DataInputStream</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giodatainputstream">
-        <title>gio.DataInputStream Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"byte-order"</entry>
-                            <entry>Read - Write</entry>
-                            <entry>The byte order. Default value: gio.DATA_STREAM_BYTE_ORDER_BIG_ENDIAN.</entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"newline-type"</entry>
-                            <entry>Read - Write</entry>
-                            <entry>The accepted types of line ending. Default value: gio.DATA_STREAM_NEWLINE_TYPE_LF.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giodatainputstream"><classname>gio.DataInputStream</classname></link>
-            implements <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>
-            and includes functions for reading structured data directly from a binary input stream.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giodatainputstream">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.DataInputStream</methodname>
-            <methodparam><parameter role="keyword">base_stream</parameter></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>base_stream</parameter>&nbsp;:</term>
-                <listitem><simpara>a
-                <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giodatainputstream"><classname>gio.DataInputStream</classname></link>
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new <link linkend="class-giodatainputstream"><classname>gio.DataInputStream</classname></link>
-            from the given base_stream.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giodatainputstream--get-byte-order">
-            <title>gio.DataInputStream.get_byte_order</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_byte_order</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the stream's current
-                    <xref linkend="gio-data-stream-byte-order-constants" endterm="gio-data-stream-byte-order-constants-title"></xref>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_byte_order</methodname>() method gets the byte
-                order for the data input stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--get-newline-type">
-            <title>gio.DataInputStream.get_newline_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_newline_type</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><xref linkend="gio-data-stream-newline-type-constants" endterm="gio-data-stream-newline-type-constants-title"></xref>
-                    for the given stream.                    
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_newline_type</methodname>() method gets the current
-                newline type for the stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-byte">
-            <title>gio.DataInputStream.read_byte</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_byte</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>an unsigned 8-bit/1-byte value read from the
-                    stream or 0 if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_byte</methodname>() method reads an unsigned 8-bit/1-byte value from stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-int16">
-            <title>gio.DataInputStream.read_int16</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_int16</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a signed 16-bit/2-byte value read from stream or 0 if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_int16</methodname>() method reads a 16-bit/2-byte value from stream.
-            </para>
-            <para>
-                In order to get the correct byte order for this read operation, see
-                <methodname><link linkend="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</link></methodname>()
-                and
-                <methodname><link linkend="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</link></methodname>().
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-int32">
-            <title>gio.DataInputStream.read_int32</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_int32</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a signed 32-bit/4-byte value read from the stream
-                    or 0 if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_int32</methodname>() method reads a signed 32-bit/4-byte value from stream.
-            </para>
-            <para>
-                In order to get the correct byte order for this read operation, see
-                <methodname><link linkend="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</link></methodname>()
-                and
-                <methodname><link linkend="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</link></methodname>().
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-int64">
-            <title>gio.DataInputStream.read_int64</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_int64</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a signed 64-bit/8-byte value read from the stream
-                    or 0 if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_int64</methodname>() method reads a signed 64-bit/8-byte value from stream.
-            </para>
-            <para>
-                In order to get the correct byte order for this read operation, see
-                <methodname><link linkend="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</link></methodname>()
-                and
-                <methodname><link linkend="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</link></methodname>().
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-line">
-            <title>gio.DataInputStream.read_line</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_line</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string with the line that was read in (without the newlines).
-                    Set length to a gsize to get the length of the read line. On an error, it will return
-                    <literal>None</literal> and error will be set. If there's no content to read, it
-                    will still return <literal>None</literal>, but error won't be set.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_line</methodname>() reads a line from the data input stream.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can
-                be cancelled by triggering the cancellable object from another thread.
-                If the operation was cancelled, the error gio.ERROR_CANCELLED will be
-                returned. If an operation was partially finished when the operation was
-                cancelled the partial result will be returned, without an error.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-line-async">
-            <title>gio.DataInputStream.read_line_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_line_async</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_line_async</methodname>() method is the asynchronous version of
-                <methodname><link linkend="method-giodatainputstream--read-line">gio.DataInputStream.read_line</link></methodname>().
-                It is an error to have two outstanding calls to this function.
-            </para>
-            <para>
-                For the synchronous version of this function, see
-                <methodname><link linkend="method-giodatainputstream--read-line">gio.DataInputStream.read_line</link></methodname>().
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be set
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-line-finish">
-            <title>gio.DataInputStream.read_line_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_line_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string with the line that was read in (without the newlines).
-                    On an error, it will return <literal>None</literal> and error will be set.
-                    If there's no content to read, it will still return <literal>None</literal>,
-                    but error won't be set.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_line_finish</methodname>() method finishes an asynchronous
-                file append operation started with
-                <methodname><link linkend="method-giodatainputstream--read-line-async">gio.DataInputStream.read_line_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-uint16">
-            <title>gio.DataInputStream.read_uint16</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_uint16</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a signed 16-bit/2-byte value read from stream or 0 if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_uint16</methodname>() method reads a 16-bit/2-byte value from stream.
-            </para>
-            <para>
-                In order to get the correct byte order for this read operation, see
-                <methodname><link linkend="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</link></methodname>()
-                and
-                <methodname><link linkend="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</link></methodname>().
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-uint32">
-            <title>gio.DataInputStream.read_uint32</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_uint32</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a signed 32-bit/4-byte value read from the stream
-                    or 0 if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_uint32</methodname>() method reads a signed 32-bit/4-byte value from stream.
-            </para>
-            <para>
-                In order to get the correct byte order for this read operation, see
-                <methodname><link linkend="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</link></methodname>()
-                and
-                <methodname><link linkend="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</link></methodname>().
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-uint64">
-            <title>gio.DataInputStream.read_uint64</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_uint64</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a signed 64-bit/8-byte value read from the stream
-                    or 0 if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_uint64</methodname>() method reads a signed 64-bit/8-byte value from stream.
-            </para>
-            <para>
-                In order to get the correct byte order for this read operation, see
-                <methodname><link linkend="method-giodatainputstream--get-byte_order">gio.DataInputStream.get_byte_order</link></methodname>()
-                and
-                <methodname><link linkend="method-giodatainputstream--set-byte_order">gio.DataInputStream.set_byte_order</link></methodname>().
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-until">
-            <title>gio.DataInputStream.read_until</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_until</methodname>
-                <methodparam><parameter role="keyword">stop_chars</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">stop_chars</parameter>&nbsp;:</term>
-                  <listitem><simpara>characters to terminate the read.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string with the data that was read before encountering
-                    any of the stop characters. This function will return NULL on an error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_until</methodname>() reads a string from the data input
-                stream, up to the first occurrence of any of the stop characters.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-until-async">
-            <title>gio.DataInputStream.read_until_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_until_async</methodname>
-                <methodparam><parameter role="keyword">stop_chars</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">stop_chars</parameter>&nbsp;:</term>
-                  <listitem><simpara>characters to terminate the read.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_until_async</methodname>() method it's the asynchronous version of
-                <methodname><link linkend="method-giodatainputstream--read-until">gio.DataInputStream.read_until</link></methodname>().
-                It is an error to have two outstanding calls to this function.
-            </para>
-            <para>
-                For the synchronous version of this function, see
-                <methodname><link linkend="method-giodatainputstream--read-until">gio.DataInputStream.read_until</link></methodname>().
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be set
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giodatainputstream--read-until-finish">gio.DataInputStream.read_until_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--read-until-finish">
-            <title>gio.DataInputStream.read_until_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_until_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string with the data that was read before encountering
-                    any of the stop characters. This function will return <literal>None</literal> on an error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_until_finish</methodname>() method finishes an asynchronous
-                file append operation started with
-                <methodname><link linkend="method-giodatainputstream--read-until-async">gio.DataInputStream.read_until_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--set-byte-order">
-            <title>gio.DataInputStream.set_byte_order</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_byte_order</methodname>
-                <methodparam><parameter role="keyword">order</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">order</parameter>&nbsp;:</term>
-                  <listitem><simpara>a
-                  <xref linkend="gio-data-stream-byte-order-constants" endterm="gio-data-stream-byte-order-constants-title"></xref> to set.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_byte_order</methodname>() method sets the byte order for
-                the given stream. All subsequent reads from the stream will be read in the given order.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodatainputstream--set-newline-type">
-            <title>gio.DataInputStream.set_newline_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_newline_type</methodname>
-                <methodparam><parameter role="keyword">type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">type</parameter>&nbsp;:</term>
-                  <listitem><simpara>a
-                  <xref linkend="gio-data-stream-newline-type-constants" endterm="gio-data-stream-newline-type-constants-title"></xref> to set.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_newline_type</methodname>() method sets the newline type for the stream.
-            </para>
-            <note>
-                Note that using gio.DATA_STREAM_NEWLINE_TYPE_ANY is slightly unsafe. If a
-                read chunk ends in "CR" we must read an additional byte to know if this is
-                "CR" or "CR LF", and this might block if there is no more data availible.
-            </note>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-dataoutputstream.xml b/docs/reference/pygio-dataoutputstream.xml
deleted file mode 100644 (file)
index 4cbc904..0000000
+++ /dev/null
@@ -1,504 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giodataoutputstream">
-    <refnamediv>
-        <refname>gio.DataOutputStream</refname>
-        <refpurpose>Data Output Stream</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.DataOutputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-giobufferedoutputstream">gio.BufferedOutputStream</link></classname></ooclass>
-
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-giodataoutputstream">gio.DataOutputStream</link></methodname>
-       <methodparam><parameter role="keyword">base_stream</parameter></methodparam>
-    </constructorsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodataoutputstream--get-byte-order">get_byte_order</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodataoutputstream--put-byte">put_byte</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodataoutputstream--put-int16">put_int16</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodataoutputstream--put-int32">put_int32</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodataoutputstream--put-int64">put_int64</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodataoutputstream--put-string">put_string</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodataoutputstream--put-uint16">put_uint16</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodataoutputstream--put-uint32">put_uint32</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodataoutputstream--put-uint64">put_uint64</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodataoutputstream--set-byte-order">set_byte_order</link></methodname>
-        <methodparam><parameter role="keyword">order</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giooutputstream">gio.OutputStream</link>
-    +-- <link linkend="class-giofilteroutputstream">gio.FilterOutputStream</link>
-      +-- <link linkend="class-giobufferedoutputstream">gio.BufferedOutputStream</link>
-        +-- <link linkend="class-giodataoutputstream">gio.DataOutputStream</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giodataoutputstream">
-        <title>gio.DataOutputStream Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"byte-order"</entry>
-                            <entry>Read - Write</entry>
-                            <entry>Determines the byte ordering that is used when writing
-                           multi-byte entities (such as integers) to the stream.
-                           Default value: gio.DATA_STREAM_BYTE_ORDER_BIG_ENDIAN.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giodataoutputstream"><classname>gio.DataOutputStream</classname></link>
-            implements <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>
-            and includes functions for writing data directly to an output stream.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giodataoutputstream">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.DataOutputStream</methodname>
-            <methodparam><parameter role="keyword">base_stream</parameter></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>base_stream</parameter>&nbsp;:</term>
-                <listitem><simpara>a
-                <link linkend="class-giooutputstream"><classname>gio.OutputStream</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giodataoutputstream"><classname>gio.DataOutputStream</classname></link>
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new <link linkend="class-giodataoutputstream"><classname>gio.DataOutputStream</classname></link>
-            from the given base_stream.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giodataoutputstream--get-byte-order">
-            <title>gio.DataOutputStream.get_byte_order</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_byte_order</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the stream's current
-                    <xref linkend="gio-data-stream-byte-order-constants" endterm="gio-data-stream-byte-order-constants-title"></xref>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_byte_order</methodname>() method gets the byte
-                order for the stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodataoutputstream--put-byte">
-            <title>gio.DataOutputStream.put_byte</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>put_byte</methodname>
-                <methodparam><parameter role="keyword">data</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">data</parameter>&nbsp;:</term>
-                  <listitem><simpara>a char.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if data was successfully added to the stream. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>put_byte</methodname>() method puts a byte into the output stream.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodataoutputstream--put-int16">
-            <title>gio.DataOutputStream.put_int16</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>put_int16</methodname>
-                <methodparam><parameter role="keyword">data</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">data</parameter>&nbsp;:</term>
-                  <listitem><simpara>a gint16.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if data was successfully added to the stream. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>put_int16</methodname>() method puts a signed 16-bit integer into the output stream.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodataoutputstream--put-int32">
-            <title>gio.DataOutputStream.put_int32</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>put_int32</methodname>
-                <methodparam><parameter role="keyword">data</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">data</parameter>&nbsp;:</term>
-                  <listitem><simpara>a gint32.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if data was successfully added to the stream.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>put_int32</methodname>() method puts a signed 32-bit integer into the output stream.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodataoutputstream--put-int64">
-            <title>gio.DataOutputStream.put_int64</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>put_int64</methodname>
-                <methodparam><parameter role="keyword">data</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">data</parameter>&nbsp;:</term>
-                  <listitem><simpara>a gint64.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if data was successfully added to the stream.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>put_int64</methodname>() method puts a signed 64-bit integer into the output stream.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodataoutputstream--put-string">
-            <title>gio.DataOutputStream.put_string</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>put_string</methodname>
-                <methodparam><parameter role="keyword">str</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">str</parameter>&nbsp;:</term>
-                  <listitem><simpara>a string.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if string was successfully added to the stream. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>put_string</methodname>() method puts a string into the output stream.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodataoutputstream--put-uint16">
-            <title>gio.DataOutputStream.put_uint16</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>put_uint16</methodname>
-                <methodparam><parameter role="keyword">data</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">data</parameter>&nbsp;:</term>
-                  <listitem><simpara>a guint16.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if data was successfully added to the stream. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>put_uint16</methodname>() method puts an unsigned 16-bit integer into the output stream.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodataoutputstream--put-uint32">
-            <title>gio.DataOutputStream.put_uint32</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>put_uint32</methodname>
-                <methodparam><parameter role="keyword">data</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">data</parameter>&nbsp;:</term>
-                  <listitem><simpara>a guint32.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if data was successfully added to the stream.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>put_uint32</methodname>() method puts an unsigned 32-bit integer into the output stream.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodataoutputstream--put-uint64">
-            <title>gio.DataOutputStream.put_uint64</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>put_uint64</methodname>
-                <methodparam><parameter role="keyword">data</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">data</parameter>&nbsp;:</term>
-                  <listitem><simpara>a guint64.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if data was successfully added to the stream.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>put_uint64</methodname>() method puts an unsigned 64-bit integer into the output stream.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodataoutputstream--set-byte-order">
-            <title>gio.DataOutputStream.set_byte_order</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_byte_order</methodname>
-                <methodparam><parameter role="keyword">order</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">order</parameter>&nbsp;:</term>
-                  <listitem><simpara>a
-                  <xref linkend="gio-data-stream-byte-order-constants" endterm="gio-data-stream-byte-order-constants-title"></xref> to set.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_byte_order</methodname>() method sets the byte order for
-                the given stream. All subsequent reads from the stream will be read in the given order.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-drive.xml b/docs/reference/pygio-drive.xml
deleted file mode 100644 (file)
index 73766cd..0000000
+++ /dev/null
@@ -1,546 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giodrive">
-    <refnamediv>
-        <refname>gio.Drive</refname>
-        <refpurpose>Virtual File System drive management.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.Drive</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobjectginterface">gobject.GInterface</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--can-eject">can_eject</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--can-poll-for-media">can_poll_for_media</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--eject">eject</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_UNMOUNT_NONE</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--eject-finish">eject_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--enumerate-identifiers">enumerate_identifiers</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--get-icon">get_icon</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--get-identifier">get_identifier</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--get-name">get_name</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--get-volumes">get_volumes</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--has-media">has_media</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--has-volumes">has_volumes</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--is-media-check-automatic">is_media_check_automatic</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--is-media-removable">is_media_removable</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--poll-for-media">poll_for_media</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giodrive--poll-for-media-finish">poll_for_media_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectginterface">gobject.GInterface</link>
-  +-- <link linkend="class-giodrive">gio.Drive</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Prerequisites</title>
-        <para>
-            <link linkend="class-giodrive"><classname>gio.Drive</classname></link> requires
-            <link linkend="class-gobject"><classname>gobject.GObject</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giodrive"><classname>gio.Drive</classname></link>
-            - this represent a piece of hardware connected to the machine. Its generally
-            only created for removable hardware or hardware with removable media. 
-        </para>
-        <para>
-            <link linkend="class-giodrive"><classname>gio.Drive</classname></link>
-            is a container class for GVolume objects that stem from the same piece of media.
-            As such, <link linkend="class-giodrive"><classname>gio.Drive</classname></link>
-            abstracts a drive with (or without) removable media and provides operations for
-            querying whether media is available, determing whether media change is automatically
-            detected and ejecting the media. 
-        </para>
-        <para>
-            If the <link linkend="class-giodrive"><classname>gio.Drive</classname></link>
-            reports that media isn't automatically detected, one can poll for media; typically
-            one should not do this periodically as a poll for media operation is potententially
-            expensive and may spin up the drive creating noise. 
-        </para>
-        <para>
-            For porting from GnomeVFS note that there is no equivalent of
-            <link linkend="class-giodrive"><classname>gio.Drive</classname></link>
-            in that API.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-        
-        <refsect2 id="method-giodrive--can-eject">
-            <title>gio.Drive.can_eject</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>can_eject</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the drive can be ejected,
-                    <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>can_eject</methodname>() method checks if a drive can be ejected.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giodrive--can-poll-for-media">
-            <title>gio.Drive.can_poll_for_media</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>can_poll_for_media</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the drive can be polled
-                    for media changes, <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>can_poll_for_media</methodname>() method checks if a drive
-                can be polled for media changes.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodrive--eject">
-            <title>gio.Drive.eject</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>eject</methodname>
-                <methodparam>
-                    <parameter role="keyword">callback</parameter>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_UNMOUNT_NONE</literal></initializer>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">callback</parameter>&nbsp;:</term>
-                  <listitem><simpara>A GAsyncReadyCallback to call when the request is satisfied.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">flags</parameter>&nbsp;:</term>
-                  <listitem><simpara>flags affecting the unmount if required for eject.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">user_data</parameter>&nbsp;:</term>
-                  <listitem><simpara>The data to pass to callback function.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>eject</methodname>() method asynchronously ejects a drive. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giodrive--eject-finish">gio.Drive.eject_finish</link></methodname>()
-                to obtain the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodrive--eject-finish">
-            <title>gio.Drive.eject_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>eject_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the drive has been ejected
-                    successfully, <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>eject_finish</methodname>() method finishes ejecting a drive.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodrive--enumerate-identifiers">
-            <title>gio.Drive.enumerate_identifiers</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>enumerate_identifiers</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a list of strings containing kinds of identifiers.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>enumerate_identifiers</methodname>() method gets the kinds
-                of identifiers that drive has. Use
-                <methodname><link linkend="method-giodrive--get-identifier">gio.Drive.get_identifier</link></methodname>()
-                to obtain the identifiers themselves.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giodrive--get-icon">
-            <title>gio.Drive.get_icon</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_icon</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-                    for the drive.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_icon</methodname>() method gets the icon for drive.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giodrive--get-identifier">
-            <title>gio.Drive.get_identifier</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_identifier</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A string containing the requested identfier, or
-                    <literal>None</literal> if the
-                    <link linkend="class-giodrive"><classname>gio.Drive</classname></link>
-                    doesn't have this kind of identifier. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_identifier</methodname>() method gets the identifier of
-                the given kind for drive.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giodrive--get-name">
-            <title>gio.Drive.get_name</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_name</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A string containing drive's name.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_name</methodname>() method gets the name of drive.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giodrive--get-volumes">
-            <title>gio.Drive.get_volumes</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_volumes</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A list containing any
-                    <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                    objects on the given drive. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_volumes</methodname>() method get a list of mountable
-                volumes for drive. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodrive--has-media">
-            <title>gio.Drive.has_media</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>has_media</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if drive has media,
-                    <literal>False</literal> otherwise.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>has_media</methodname>() method checks if the drive
-                has media. Note that the OS may not be polling the drive for media changes; see
-                <methodname><link linkend="method-giodrive--is-media-check-automatic">gio.Drive.is_media_check_automatic</link></methodname>()
-                for more details.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodrive--has-volumes">
-            <title>gio.Drive.has_volumes</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>has_volumes</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if drive contains volumes,
-                    <literal>False</literal> otherwise.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>has_volumes</methodname>() method check if drive has any mountable volumes.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodrive--is-media-check-automatic">
-            <title>gio.Drive.is_media_check_automatic</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>is_media_check_automatic</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if drive is capabable
-                    of automatically detecting media changes,
-                    <literal>False</literal> otherwise.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>is_media_check_automatic</methodname>() method checks if
-                drive is capabable of automatically detecting media changes.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodrive--is-media-removable">
-            <title>gio.Drive.is_media_removable</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>is_media_removable</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if drive supports removable media,
-                    <literal>False</literal> otherwise.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>is_media_removable</methodname>() method checks if the
-                drive supports removable media.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodrive--poll-for-media">
-            <title>gio.Drive.poll_for_media</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>poll_for_media</methodname>
-                <methodparam>
-                    <parameter role="keyword">callback</parameter>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">callback</parameter>&nbsp;:</term>
-                  <listitem><simpara>A GAsyncReadyCallback to call when the request is satisfied.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">user_data</parameter>&nbsp;:</term>
-                  <listitem><simpara>The data to pass to callback function.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>poll_for_media</methodname>() method asynchronously polls
-                drive to see if media has been inserted or removed. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giodrive--poll-for-media-finish">gio.Drive.poll_for_media_finish</link></methodname>()
-                to obtain the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giodrive--poll-for-media-finish">
-            <title>gio.Drive.poll_for_media_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>poll_for_media_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the drive has been poll_for_mediaed
-                    successfully, <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>poll_for_media_finish</methodname>() method finishes
-                an operation started with
-                <methodname><link linkend="method-giodrive--poll-for-media">gio.Drive.poll_for_media</link></methodname>()
-                on a drive.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-emblem.xml b/docs/reference/pygio-emblem.xml
deleted file mode 100644 (file)
index 032b0ff..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gioemblem">
-    <refnamediv>
-        <refname>gio.Emblem</refname>
-        <refpurpose>An object for emblems.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.Emblem</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-        <ooclass><classname><link linkend="class-gioicon">gio.Icon</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-gioemblem">gio.Emblem</link></methodname>
-       <methodparam><parameter role="keyword">icon</parameter></methodparam>
-       <methodparam><parameter role="keyword">origin</parameter><initializer><literal>gio.EMBLEM_ORIGIN_UNKNOWN</literal></initializer></methodparam>
-    </constructorsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioemblem--get-icon">get_icon</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioemblem--get-origin">get_origin</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-<programlisting>
-<emphasis role="bold">Functions</emphasis>
-<methodsynopsis language="python">
-    <methodname><link linkend="function-gio--emblem-new-with-origin">gio.emblem_new_with_origin</link></methodname>
-    <methodparam><parameter role="keyword">icon</parameter></methodparam>
-    <methodparam><parameter role="keyword">origin</parameter></methodparam>
-</methodsynopsis></programlisting>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-gioemblem">gio.Emblem</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Implemented Interfaces</title>
-        <para>
-            <link linkend="class-gioemblem"><classname>gio.Emblem</classname></link>
-            implements
-            <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1 id="properties-gioemblem">
-        <title>gio.Emblem Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"icon"</entry>
-                            <entry>Read - Write - Construct Only</entry>
-                            <entry>The actual icon of the emblem.</entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"origin"</entry>
-                            <entry>Read - Write - Construct Only</entry>
-                            <entry>Tells which origin the emblem is derived from.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-gioemblem"><classname>gio.Emblem</classname></link>
-            class is an implementation of <classname><link linkend="class-gioicon">gio.Icon</link></classname>
-            that supports having an emblem, which is an icon with additional properties.
-            It can then be added to a
-            <link linkend="class-gioemblemedicon"><classname>gio.EmblemedIcon</classname></link>.
-        </para>
-        <para>
-            Currently, only metainformation about the emblem's origin is supported.
-            More may be added in the future.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-gioemblem">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.Emblem</methodname>
-            <methodparam><parameter role="keyword">icon</parameter></methodparam>
-            <methodparam><parameter role="keyword">origin</parameter><initializer><literal>gio.EMBLEM_ORIGIN_UNKNOWN</literal></initializer></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>icon</parameter>&nbsp;:</term>
-                <listitem><simpara>a
-                <link linkend="class-gioicon"><classname>gio.Icon</classname></link> containing the icon.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><parameter>origin</parameter>&nbsp;:</term>
-                <listitem><simpara>
-                <link linkend="gio-emblem-origin-constants">origin</link> of the emblem.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-gioemblem"><classname>gio.Emblem</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-
-        <note>
-          Parameter <parameter>origin</parameter> is available since PyGObject 2.20.
-        </note>
-    
-        <para>
-            Creates a new <link linkend="class-gioemblem"><classname>gio.Emblem</classname></link> for icon.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-gioemblem--get-icon">
-            <title>gio.Emblem.get_icon</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_icon</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-gioicon"><classname>gio.Icon</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_icon</methodname>() method gives back the icon from emblem.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioemblem--get-origin">
-            <title>gio.Emblem.get_origin</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_origin</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the origin of the emblem.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_origin</methodname>() method gets the origin of the emblem.
-            </para>
-        </refsect2>
-    </refsect1>
-    
-    <refsect1>
-        <title>Functions</title>
-
-        <refsect2 id="function-gio--emblem-new-with-origin">
-            <title>gio.emblem_new_with_origin</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>emblem_new_with_origin</methodname>
-                <methodparam><parameter role="keyword">icon</parameter></methodparam>
-                <methodparam><parameter role="keyword">origin</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>origin</parameter>&nbsp;:</term>
-                    <listitem><simpara>a <xref linkend="gio-emblem-origin-constants" endterm="gio-emblem-origin-constants-title"></xref>
-                    defining the emblem's origin.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A <link linkend="class-gioemblem"><classname>gio.Emblem</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <note>
-              While this method is not deprecated, with 2.20 and up it is recommended
-              to use the constructor instead.
-            </note>
-
-
-            <para>
-                The <methodname>emblem_new_with_origin</methodname>() function creates
-                a new emblem for icon.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-emblemedicon.xml b/docs/reference/pygio-emblemedicon.xml
deleted file mode 100644 (file)
index 9b5ef8a..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gioemblemedicon">
-    <refnamediv>
-        <refname>gio.EmblemedIcon</refname>
-        <refpurpose>Icon with emblems.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.EmblemedIcon</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-        <ooclass><classname><link linkend="class-gioicon">gio.Icon</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-gioemblemedicon">gio.EmblemedIcon</link></methodname>
-       <methodparam><parameter role="keyword">icon</parameter></methodparam>
-        <methodparam><parameter role="keyword">emblem</parameter></methodparam>
-    </constructorsynopsis>
-    
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioemblemedicon--add-emblem">add_emblem</link></methodname>
-        <methodparam><parameter role="keyword">emblem</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioemblemedicon--get-icon">get_icon</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-gioemblemedicon">gio.EmblemedIcon</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Implemented Interfaces</title>
-        <para>
-            <link linkend="class-gioemblemedicon"><classname>gio.EmblemedIcon</classname></link>
-            implements
-            <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-gioemblemedicon"><classname>gio.EmblemedIcon</classname></link>
-            class is an implementation of <classname><link linkend="class-gioicon">gio.Icon</link></classname>
-            that supports adding an emblem to an icon. Adding multiple emblems to an icon is ensured via
-            <methodname><link linkend="method-gioemblemedicon--add-emblem">gio.EmblemedIcon.add_emblem</link></methodname>().
-        </para>
-        <para>
-            Note that
-            <link linkend="class-gioemblemedicon"><classname>gio.EmblemedIcon</classname></link>
-            allows no control over the position of the emblems. See also
-            <link linkend="class-gioemblem"><classname>gio.Emblem</classname></link>
-            for more information.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-gioemblemedicon">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.EmblemedIcon</methodname>
-            <methodparam><parameter role="keyword">icon</parameter></methodparam>
-            <methodparam><parameter role="keyword">emblem</parameter></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>icon</parameter>&nbsp;:</term>
-                <listitem><simpara>a
-                <link linkend="class-gioicon"><classname>gio.Icon</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><parameter>emblem</parameter>&nbsp;:</term>
-                <listitem><simpara>a
-                <link linkend="class-gioemblem"><classname>gio.Emblem</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-gioicon"><classname>gio.Icon</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-            for icon with the emblem emblem.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-gioemblemedicon--add-emblem">
-            <title>gio.EmblemedIcon.add_emblem</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>add_emblem</methodname>
-                <methodparam><parameter role="keyword">emblem</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>emblem</parameter>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-gioemblem"><classname>gio.Emblem</classname></link>
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>add_emblem</methodname>() method adds emblem to the
-                list of <link linkend="class-gioemblem"><classname>gio.Emblem</classname></link>s.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioemblemedicon--get-icon">
-            <title>gio.EmblemedIcon.get_icon</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_icon</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-                    that is owned by emblemed.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_icon</methodname>() method gets the main icon for emblemed.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-file.xml b/docs/reference/pygio-file.xml
deleted file mode 100644 (file)
index ac85840..0000000
+++ /dev/null
@@ -1,4534 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giofile">
-    <refnamediv>
-        <refname>gio.File</refname>
-        <refpurpose>File and Directory Handling.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.File</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobjectginterface">gobject.GInterface</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-giofile">gio.File</link></methodname>
-       <methodparam><parameter role="keyword">commandline</parameter></methodparam>
-        <methodparam><parameter role="keyword">path</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">uri</parameter><initializer>None</initializer></methodparam>
-    </constructorsynopsis>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--append-to">append_to</link></methodname>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--append-to-async">append_to_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--append-to-finish">append_to_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--copy">copy</link></methodname>
-        <methodparam><parameter role="keyword">destination</parameter></methodparam>
-        <methodparam><parameter role="keyword">progress_callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_COPY_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--copy-async">copy_async</link></methodname>
-        <methodparam><parameter role="keyword">destination</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">progress_callback</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">progress_callback_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--copy-attributes">copy_attributes</link></methodname>
-        <methodparam><parameter role="keyword">destination</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_COPY_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--copy-finish">copy_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--create">create</link></methodname>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--create-async">create_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--create-finish">create_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--delete">delete</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--dup">dup</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--eject-mountable">eject_mountable</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--eject-mountable-finish">eject_mountable_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--enumerate-children">enumerate_children</link></methodname>
-        <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--enumerate-children-async">enumerate_children_async</link></methodname>
-        <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--enumerate-children-finish">enumerate_children_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--equal">equal</link></methodname>
-        <methodparam><parameter role="keyword">file2</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--find-enclosing-mount">find_enclosing_mount</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--find-enclosing-mount-async">find_enclosing_mount_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--find-enclosing-mount-finish">find_enclosing_mount_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--get-basename">get_basename</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--get-child">get_child</link></methodname>
-        <methodparam><parameter role="keyword">name</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--get-child-for-display-name">get_child_for_display_name</link></methodname>
-        <methodparam><parameter role="keyword">display_name</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--get-parent">get_parent</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--get-parse-name">get_parse_name</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--get-path">get_path</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--get-relative-path">get_relative_path</link></methodname>
-        <methodparam><parameter role="keyword">descendant</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--get-uri">get_uri</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--get-uri-scheme">get_uri_scheme</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--has-prefix">has_prefix</link></methodname>
-        <methodparam><parameter role="keyword">prefix</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--has-uri-scheme">has_uri_scheme</link></methodname>
-        <methodparam><parameter role="keyword">uri_scheme</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--is-native">is_native</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--load-contents">load_contents</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--load-contents-async">load_contents_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--load-contents-finish">load_contents_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--make-directory">make_directory</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--make-directory-with-parents">make_directory_with_parents</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--make-symbolic-link">make_symbolic_link</link></methodname>
-        <methodparam><parameter role="keyword">symlink_value</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--monitor">monitor</link></methodname>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_MONITOR_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--monitor-directory">monitor_directory</link></methodname>
-        <methodparam><parameter role="keyword">flags</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--monitor-file">monitor_file</link></methodname>
-        <methodparam><parameter role="keyword">flags</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--mount-enclosing-volume">mount_enclosing_volume</link></methodname>
-        <methodparam><parameter role="keyword">mount_operation</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.MOUNT_MOUNT_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--mount-enclosing-volume-finish">mount_enclosing_volume_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--mount-mountable">mount_mountable</link></methodname>
-        <methodparam><parameter role="keyword">mount_operation</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.MOUNT_MOUNT_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--mount-mountable-finish">mount_mountable_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--move">move</link></methodname>
-        <methodparam><parameter role="keyword">destination</parameter></methodparam>
-        <methodparam><parameter role="keyword">progress_callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_COPY_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--query-default-handler">query_default_handler</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--query-exists">query_exists</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--query-file-type">query_file_type</link></methodname>
-        <methodparam><parameter role="keyword">flags</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--query-filesystem-info">query_filesystem_info</link></methodname>
-        <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--query-filesystem-info-async">query_filesystem_info_async</link></methodname>
-        <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--query-filesystem-info-finish">query_filesystem_info_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--query-info">query_info</link></methodname>
-        <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--query-info-async">query_info_async</link></methodname>
-        <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--query-info-finish">query_info_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--query-settable-attributes">query_settable_attributes</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--query-writable-namespace">query_writable_namespace</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--read">read</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--read-async">read_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--read-finish">read_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--replace">replace</link></methodname>
-        <methodparam><parameter role="keyword">etag</parameter></methodparam>
-        <methodparam><parameter role="keyword">make_backup</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--replace-async">replace_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">etag</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">make_backup</parameter><initializer>True</initializer></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--replace-contents">replace_contents</link></methodname>
-        <methodparam><parameter role="keyword">contents</parameter></methodparam>
-        <methodparam><parameter role="keyword">etag</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">make_backup</parameter><initializer>True</initializer></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--replace-contents-async">replace_contents_async</link></methodname>
-        <methodparam><parameter role="keyword">contents</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">etag</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">make_backup</parameter><initializer>True</initializer></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--replace-contents-finish">replace_contents_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--replace-finish">replace_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--resolve-relative-path">resolve_relative_path</link></methodname>
-        <methodparam><parameter role="keyword">relative_path</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-attribute">set_attribute</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">type</parameter></methodparam>
-        <methodparam><parameter role="keyword">value_p</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-attribute-byte-string">set_attribute_byte_string</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">value</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-attribute-int32">set_attribute_int32</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">value</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-attribute-int64">set_attribute_int64</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">value</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-attribute-string">set_attribute_string</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">value</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-attribute-uint32">set_attribute_uint32</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">value</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-attribute-uint64">set_attribute_uint64</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">value</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-attributes-async">set_attributes_async</link></methodname>
-        <methodparam><parameter role="keyword">info</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-attributes-finish">set_attributes_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-attributes-from-info">set_attributes_from_info</link></methodname>
-        <methodparam><parameter role="keyword">info</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-display-name">set_dispay_name</link></methodname>
-        <methodparam><parameter role="keyword">display_name</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-display-name-async">set_display_name_async</link></methodname>
-        <methodparam><parameter role="keyword">display_name</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--set-display-name-finish">set_display_name_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--trash">trash</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--unmount-mountable">unmount_mountable</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.MOUNT_UNMOUNT_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofile--unmount-mountable-finish">unmount_mountable_finish</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-<programlisting>
-<emphasis role="bold">Functions</emphasis>
-<methodsynopsis language="python">
-    <methodname><link linkend="function-gio--file-parse-name">gio.file_parse_name</link></methodname>
-    <methodparam><parameter role="keyword">parse_name</parameter></methodparam>
-</methodsynopsis></programlisting>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectginterface">gobject.GInterface</link>
-  +-- <link linkend="class-giofile">gio.File</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Prerequisites</title>
-        <para>
-            <link linkend="class-giofile"><classname>gio.File</classname></link> is implemented by
-            <link linkend="class-gobject"><classname>gobject.GObject</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giofile"><classname>gio.File</classname></link> is a high
-            level abstraction for manipulating files on a virtual file system.
-            <link linkend="class-giofile"><classname>gio.File</classname></link>s are lightweight,
-            immutable objects that do no I/O upon creation. It is necessary to understand that
-            <link linkend="class-giofile"><classname>gio.File</classname></link>
-            objects do not represent files, merely an identifier for a file. All file content
-            I/O is implemented as streaming operations (see
-            <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link> and
-            <link linkend="class-giooutputstream"><classname>gio.OutputStream</classname></link>). 
-        </para>
-        <para>
-            To construct a <link linkend="class-giofile"><classname>gio.File</classname></link>, you can use
-            it's constructor either with a path, an uri or a commandline argument.
-            <methodname><link linkend="function-gio--file-parse-name">gio.file_parse_name</link></methodname>()
-            from a utf8 string gotten from
-            <methodname><link linkend="method-giofile--get-parse-name">gio.File.get_parse_name</link></methodname>().
-        </para>
-        <para>
-            One way to think of a <link linkend="class-giofile"><classname>gio.File</classname></link> is as
-            an abstraction of a pathname. For normal files the system pathname is what is stored internally,
-            but as <link linkend="class-giofile"><classname>gio.File</classname></link>s are extensible it
-            could also be something else that corresponds to a pathname in a userspace implementation of a filesystem. 
-        </para>
-        <para>
-            <link linkend="class-giofile"><classname>gio.File</classname></link>s make up hierarchies of
-            directories and files that correspond to the files on a filesystem. You can move through the
-            file system with GFile using
-            <methodname><link linkend="method-giofile--get-parent">gio.File.get_parent</link></methodname>()
-            to get an identifier for the parent directory,
-            <methodname><link linkend="method-giofile--get-child">gio.File.get_child</link></methodname>()
-            to get a child within a directory,
-            <methodname><link linkend="method-giofile--resolve-relative-path">gio.File.resolve_relative_path</link></methodname>()
-            to resolve a relative path between two <link linkend="class-giofile"><classname>gio.File</classname></link>s.
-            There can be multiple hierarchies, so you may not end up at the same root if you repeatedly call
-            <methodname><link linkend="method-giofile--get-parent">gio.File.get_parent</link></methodname>()
-            on two different files. 
-        </para>
-        <para>
-            All <link linkend="class-giofile"><classname>gio.File</classname></link>s have a basename (get with
-            <methodname><link linkend="method-giofile--get-basename">gio.File.get_basename</link></methodname>()
-            ). These names are byte strings that are used to identify the file on the filesystem
-            (relative to its parent directory) and there is no guarantees that they have any particular charset
-            encoding or even make any sense at all. If you want to use filenames in a user interface you should
-            use the display name that you can get by requesting the gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME attribute with
-            <methodname><link linkend="method-giofile--query-info">gio.File.query_info</link></methodname>().
-            This is guaranteed to be in utf8 and can be used in a user interface. But always store the real basename or the
-            GFile to use to actually access the file, because there is no way to go from a display name to the actual name. 
-        </para>
-        <para>
-            Using <link linkend="class-giofile"><classname>gio.File</classname></link> as an identifier has the same
-            weaknesses as using a path in that there may be multiple aliases for the same file. For instance,
-            hard or soft links may cause two different <link linkend="class-giofile"><classname>gio.File</classname></link>s
-            to refer to the same file. Other possible causes for aliases are: case insensitive filesystems, short and
-            long names on Fat/NTFS, or bind mounts in Linux. If you want to check if two GFiles point to the same file
-            you can query for the gio.FILE_ATTRIBUTE_ID_FILE attribute. Note that
-            <link linkend="class-giofile"><classname>gio.File</classname></link> does some trivial canonicalization
-            of pathnames passed in, so that trivial differences in the path string used at creation
-            (duplicated slashes, slash at end of path, "." or ".." path segments, etc) does not create different
-            <link linkend="class-giofile"><classname>gio.File</classname></link>s. 
-        </para>
-        <para>
-            Many <link linkend="class-giofile"><classname>gio.File</classname></link> operations have both synchronous
-            and asynchronous versions to suit your application. Asynchronous versions of synchronous functions simply
-            have _async() appended to their function names. The asynchronous I/O functions call a
-            GAsyncReadyCallback which is then used to finalize the operation, producing a GAsyncResult
-            which is then passed to the function's matching _finish() operation. 
-        </para>
-        <para>
-            Some <link linkend="class-giofile"><classname>gio.File</classname></link> operations do not have
-            synchronous analogs, as they may take a very long time to finish, and blocking may leave an application
-            unusable. Notable cases include:
-            <methodname><link linkend="method-giofile--mount-mountable">gio.File.mount_mountable</link></methodname>()
-            to mount a mountable file.
-            <methodname><link linkend="method-giofile--unmount-mountable">gio.File.unmount_mountable</link></methodname>()
-            to unmount a mountable file.
-            <methodname><link linkend="method-giofile--eject-mountable">gio.File.eject_mountable</link></methodname>()
-            to eject a mountable file. 
-        </para>
-        <para>
-            One notable feature of <link linkend="class-giofile"><classname>gio.File</classname></link>s are
-            entity tags, or "etags" for short. Entity tags are somewhat like a more abstract
-            version of the traditional mtime, and can be used to quickly determine if the file
-            has been modified from the version on the file system. See the HTTP 1.1
-            specification for HTTP Etag headers, which are a very similar concept. 
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giofile">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.File</methodname>
-            <methodparam><parameter role="keyword">commandline</parameter></methodparam>
-            <methodparam><parameter role="keyword">path</parameter><initializer><literal>None</literal></initializer></methodparam>
-            <methodparam><parameter role="keyword">uri</parameter><initializer>None</initializer></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>commandline</parameter>&nbsp;:</term>
-                <listitem><simpara>a command line string. 
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><parameter>path</parameter>&nbsp;:</term>
-                <listitem><simpara>a string containing a relative or absolute path.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><parameter>uri</parameter>&nbsp;:</term>
-                <listitem><simpara>a string containing a URI.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new <link linkend="class-giofile"><classname>gio.File</classname></link> either from a commandline,
-            a path or an uri.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giofile--append-to">
-            <title>gio.File.append_to</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>append_to</methodname>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-create-flags-constants" endterm="gio-file-create-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-giofileoutputstream"><classname>gio.FileOutputStream</classname></link>
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>append_to</methodname>() method gets an output stream for
-                appending data to the file. If the file doesn't already exist it is created. 
-            </para>
-            <para>
-                By default files created are generally readable by everyone, but if you pass
-                gio.FILE_CREATE_PRIVATE in flags the file will be made readable only to the
-                current user, to the level that is supported on the target filesystem. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If
-                the operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-            <para>
-                Some file systems don't allow all file names, and may return an
-                gio.ERROR_INVALID_FILENAME error. If the file is a directory the
-                gio.ERROR_IS_DIRECTORY error will be returned. Other errors are possible too,
-                and depend on what kind of filesystem the file is on.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--append-to-async">
-            <title>gio.File.append_to_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>append_to_async</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-create-flags-constants" endterm="gio-file-create-flags-constants-title"></xref>.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>append_to_async</methodname>() method asynchronously opens file for appending. 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--append-to">gio.File.append_to</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giofile--append-to-finish">gio.File.append_to_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--append-to-finish">
-            <title>gio.File.append_to_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>append_to_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a valid
-                    <link linkend="class-giooutputstream"><classname>gio.OutputStream</classname></link>
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>append_to_finish</methodname>() method finishes an asynchronous
-                file append operation started with
-                <methodname><link linkend="method-giofile--append-to-async">gio.File.append_to_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--copy">
-            <title>gio.File.copy</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>copy</methodname>
-                <methodparam><parameter role="keyword">destination</parameter></methodparam>
-                <methodparam><parameter role="keyword">progress_callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_COPY_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>destination</parameter>&nbsp;:</term>
-                    <listitem><simpara>destination <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>progress_callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>function to callback with progress information.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-copy-flags-constants" endterm="gio-file-copy-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to the progress callback function.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> on success,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>copy</methodname>() method copies the file source to
-                the location specified by destination. Can not handle recursive copies of directories. 
-            </para>
-            <para>
-                If the flag gio.FILE_COPY_OVERWRITE is specified an already existing
-                destination file is overwritten. 
-            </para>
-            <para>
-                If the flag gio.FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks will
-                be copied as symlinks, otherwise the target of the source symlink will be copied. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-            <para>
-                If progress_callback is not <literal>None</literal>, then the operation can be
-                monitored by setting this to a GFileProgressCallback function. user_data
-                will be passed to this function. It is guaranteed that this callback will be
-                called after all data has been transferred with the total number of bytes
-                copied during the operation. 
-            </para>
-            <para>
-                If the source file does not exist then the gio.ERROR_NOT_FOUND error is returned,
-                independent on the status of the destination. 
-            </para>
-            <para>
-                If gio.FILE_COPY_OVERWRITE is not specified and the target exists,
-                then the error gio.ERROR_EXISTS is returned. 
-            </para>
-            <para>
-                If trying to overwrite a file over a directory the gio.ERROR_IS_DIRECTORY error
-                is returned. If trying to overwrite a directory with a directory the
-                gio.ERROR_WOULD_MERGE error is returned. 
-            </para>
-            <para>
-                If the source is a directory and the target does not exist, or gio.FILE_COPY_OVERWRITE
-                is specified and the target is a file, then the gio.ERROR_WOULD_RECURSE error is returned. 
-            </para>
-            <para>
-                If you are interested in copying the
-                <link linkend="class-giofile"><classname>gio.File</classname></link> object
-                itself (not the on-disk file), see
-                <methodname><link linkend="method-giofile--dup">gio.File.dup</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--copy-async">
-            <title>gio.File.copy_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>append_to_async</methodname>
-                <methodparam><parameter role="keyword">destination</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">progress_callback</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">progress_callback_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>destination</parameter>&nbsp;:</term>
-                    <listitem><simpara>destination <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>progress_callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>function to callback with progress information.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-copy-flags-constants" endterm="gio-file-copy-flags-constants-title"></xref>.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>progress_callback_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to the progress callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>copy_async</methodname>() method copies the file source to
-                the location specified by destination asynchronously. For details of the behaviour,
-                see <methodname><link linkend="method-giofile--copy">gio.File.copy</link></methodname>(). 
-            </para>
-            <para>
-                If progress_callback is not <literal>None</literal>, then that function that will
-                be called just like in
-                <methodname><link linkend="method-giofile--copy">gio.File.copy</link></methodname>(),
-                however the callback will run in the main loop, not in the thread that is doing the I/O operation. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giofile--copy-finish">gio.File.copy_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--copy-attributes">
-            <title>gio.File.copy_attributes</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>copy_attributes</methodname>
-                <methodparam><parameter role="keyword">destination</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_COPY_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>destination</parameter>&nbsp;:</term>
-                    <listitem><simpara>destination <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    to copy attributes to.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-copy-flags-constants" endterm="gio-file-copy-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the attributes were copied successfully,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>copy_attributes</methodname>() method copies the file attributes
-                from source to destination. 
-            </para>
-            <para>
-                Normally only a subset of the file attributes are copied, those that are copies
-                in a normal file copy operation (which for instance does not include e.g. owner).
-                However if gio.FILE_COPY_ALL_METADATA is specified in flags, then all the metadata
-                that is possible to copy is copied. This is useful when implementing move by copy + delete source.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--copy-finish">
-            <title>gio.File.copy_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>copy_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> on success,
-                    <literal>False</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>copy_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--copy-async">gio.File.copy_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--create">
-            <title>gio.File.create</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>create</methodname>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-create-flags-constants" endterm="gio-file-create-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-giofileoutputstream"><classname>gio.FileOutputStream</classname></link>
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>create</methodname>() method creates a new file and returns
-                an output stream for writing to it. The file must not already exist. 
-            </para>
-            <para>
-                By default files created are generally readable by everyone, but if you pass
-                gio.FILE_CREATE_PRIVATE in flags the file will be made readable only to the
-                current user, to the level that is supported on the target filesystem. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-            <para>
-                If a file or directory with this name already exists the gio.ERROR_EXISTS
-                error will be returned. Some file systems don't allow all file names, and
-                may return an gio.ERROR_INVALID_FILENAME error, and if the name is to long
-                gio.ERROR_FILENAME_TOO_LONG will be returned. Other errors are possible too,
-                and depend on what kind of filesystem the file is on.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--create-async">
-            <title>gio.File.create_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>create_async</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-copy-flags-constants" endterm="gio-file-copy-flags-constants-title"></xref>.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>create_async</methodname>() method asynchronously creates a new
-                file and returns an output stream for writing to it. The file must not already exist. 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--create">gio.File.create</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giofile--create-finish">gio.File.create_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--create-finish">
-            <title>gio.File.create_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>create_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-giofileoutputstream"><classname>gio.FileOutputStream</classname></link>
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>create_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--create-async">gio.File.create_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--delete">
-            <title>gio.File.delete</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>delete</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the file was deleted,
-                    <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>deleted</methodname>() method deletes a file. If the file is a
-                directory, it will only be deleted if it is empty. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--dup">
-            <title>gio.File.dup</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>dup</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a new <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    that is a duplicate of the given <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>dup</methodname>() method duplicates a
-                <link linkend="class-giofile"><classname>gio.File</classname></link>
-                handle. This operation does not duplicate the actual file or directory represented
-                by the <link linkend="class-giofile"><classname>gio.File</classname></link>; see
-                <methodname><link linkend="method-giofile--copy">gio.File.copy</link></methodname>()
-                if attempting to copy a file. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--eject-mountable">
-            <title>gio.File.eject_mountable</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>eject_mountable</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-copy-flags-constants" endterm="gio-file-copy-flags-constants-title"></xref>.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>eject_mountable</methodname>() method starts an asynchronous eject on a
-                mountable. When this operation has completed, callback will be called with
-                user_user data, and the operation can be finalized with
-                <methodname><link linkend="method-giofile--eject-mountable-finish">gio.File.eject_mountable_finish</link></methodname>(). 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--eject-mountable-finish">
-            <title>gio.File.eject_mountable_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>eject_mountable_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the file was ejected successfully,
-                    <literal>False</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>create_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--create-async">gio.File.create_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--enumerate-children">
-            <title>gio.File.enumerate_children</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>enumerate_children</methodname>
-                <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attributes</parameter>&nbsp;:</term>
-                    <listitem><simpara>an attribute query string.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-giofileenumerator"><classname>gio.FileEnumerator</classname></link>
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>enumerate_children</methodname>() method gets the requested information
-                about the files in a directory. The result is a GFileEnumerator object that will give out
-                <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link> objects
-                for all the files in the directory. 
-            </para>
-            <para>
-                The attribute value is a string that specifies the file attributes that should be gathered.
-                It is not an error if it's not possible to read a particular requested attribute from a file -
-                it just won't be set. attribute should be a comma-separated list of attribute or attribute
-                wildcards. The wildcard "*" means all attributes, and a wildcard like "standard::*" means all
-                attributes in the standard namespace. An example attribute query be "standard::*,owner::user".
-                The standard attributes are available as defines, like gio.FILE_ATTRIBUTE_STANDARD_NAME. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-            <para>
-                If the file does not exist, the gio.ERROR_NOT_FOUND error will be returned. If the file
-                is not a directory, the gio.FILE_ERROR_NOTDIR error will be returned.
-                Other errors are possible too.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--enumerate-children-async">
-            <title>gio.File.enumerate_children_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>enumerate_children_async</methodname>
-                <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attributes</parameter>&nbsp;:</term>
-                    <listitem><simpara>an attribute query string.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>enumerate_children_async</methodname>() method asynchronously gets the
-                requested information about the files in a directory. The result is a
-                <link linkend="class-giofileenumerator"><classname>gio.FileEnumerator</classname></link>
-                object that will give out <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                objects for all the files in the directory. 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--enumerate-children">enumerate_children</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--enumerate-children-finish">
-            <title>gio.File.eject_mountable_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>enumerate_children_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileenumerator"><classname>gio.FileEnumerator</classname></link>
-                    or <literal>None</literal> if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>enumerate_children_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--enumerate-children-async">gio.File.enumerate_children_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--equal">
-            <title>gio.File.equal</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>equal</methodname>
-                <methodparam><parameter role="keyword">file2</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">file2</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if file1 and file2 are equal.
-                    <literal>False</literal> if either is not a
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>equal</methodname>() method checks equality of two given
-                <link linkend="class-giofile"><classname>gio.File</classname></link>s.
-                Note that two <link linkend="class-giofile"><classname>gio.File</classname></link>s
-                that differ can still refer to the same file on the filesystem due to various
-                forms of filename aliasing. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--find-enclosing-mount">
-            <title>gio.File.find_enclosing_mount</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>enumerate_children</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>find_enclosing_mount</methodname>() method gets a
-                <link linkend="class-giomount"><classname>gio.Mount</classname></link> for the
-                <link linkend="class-giofile"><classname>gio.File</classname></link>.
-            </para>
-            <para>
-                If the interface for file does not have a mount (e.g. possibly a remote share),
-                error will be set to gio.ERROR_NOT_FOUND and <literal>None</literal> will be returned. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--find-enclosing-mount-async">
-            <title>gio.File.find_enclosing_mount_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>find_enclosing_mount_async</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>find_enclosing_mount_async</methodname>() method asynchronously
-                gets the mount for the file. 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--find-enclosing-mount">gio.File.find_enclosing_mount</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--find-enclosing-mount-finish">
-            <title>gio.File.find_enclosing_mount_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>find_enclosing_mount_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                    or <literal>None</literal> if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>find_enclosing_mount_finish</methodname>() method finishes an asynchronous
-                find mount started with
-                <methodname><link linkend="method-giofile--find-enclosing-mount-async">gio.File.find_enclosing_mount_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--get-basename">
-            <title>gio.File.get_basename</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_basename</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>string containing the
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>'s
-                    base name, or <literal>None</literal> if given
-                    <link linkend="class-giofile"><classname>gio.File</classname></link> is invalid.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_basename</methodname>() method gets the base name
-                (the last component of the path) for a given
-                <link linkend="class-giofile"><classname>gio.File</classname></link>. 
-            </para>
-            <para>
-                If called for the top level of a system (such as the filesystem root or
-                a uri like sftp://host/) it will return a single directory separator
-                (and on Windows, possibly a drive letter). 
-            </para>
-            <para>
-                The base name is a byte string (*not* UTF-8). It has no defined encoding
-                or rules other than it may not contain zero bytes. If you want to use filenames
-                in a user interface you should use the display name that you can get by requesting
-                the gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME attribute with
-                <methodname><link linkend="method-giofile--query-info">gio.File.query_info</link></methodname>(). 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--get-child">
-            <title>gio.File.get_child</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_child</methodname>
-                <methodparam><parameter role="keyword">name</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">name</parameter>&nbsp;:</term>
-                  <listitem><simpara>string containing the child's basename.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    to a child specified by name.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_child</methodname>() method gets a child of file
-                with basename equal to name. 
-            </para>
-            <para>
-                Note that the file with that specific name might not exist, but you can
-                still have a <link linkend="class-giofile"><classname>gio.File</classname></link>
-                that points to it. You can use this for instance to create that file. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--get-child-for-display-name">
-            <title>gio.File.get_child_for_display_name</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_child_for_display_name</methodname>
-                <methodparam><parameter role="keyword">display_name</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">display_name</parameter>&nbsp;:</term>
-                  <listitem><simpara>string to a possible child.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    to the specified child or <literal>None</literal>
-                    if the display name couldn't be converted.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_child_for_display_name</methodname>() method gets the
-                child of file for a given display_name (i.e. a UTF8 version of the name).
-                If this function fails, it returns NULL and error will be set. This is very
-                useful when constructing a GFile for a new file and the user entered the filename
-                in the user interface, for instance when you select a directory and type a filename
-                in the file selector. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--get-parent">
-            <title>gio.File.get_parent</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_parent</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    structure to the parent of the given
-                    <link linkend="class-giofile"><classname>gio.File</classname></link> or
-                    <literal>None</literal> if there is no parent.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_parent</methodname>() method gets the parent directory for the file.
-                If the file represents the root directory of the file system, then <literal>None</literal>
-                will be returned. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--get-parse-name">
-            <title>gio.File.get_parse_name</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_parse_name</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string containing the
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>'s parse name.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_parse_name</methodname>() method gets the parse name
-                of the file. A parse name is a UTF-8 string that describes the file such
-                that one can get the <link linkend="class-giofile"><classname>gio.File</classname></link>
-                back using
-                <methodname><link linkend="function-gio--file-parse-name">gio.file_parse_name</link></methodname>(). 
-            </para>
-            <para>
-                This is generally used to show the <link linkend="class-giofile"><classname>gio.File</classname></link>
-                as a nice full-pathname kind of string in a user interface, like in a location entry. 
-            </para>
-            <para>
-                For local files with names that can safely be converted to UTF8 the pathname is used,
-                otherwise the IRI is used (a form of URI that allows UTF8 characters unescaped). 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--get-path">
-            <title>gio.File.get_path</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_path</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string containing the
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>'s path,
-                    or <literal>None</literal> if no such path exists.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_path</methodname>() method gets the local pathname for
-                <link linkend="class-giofile"><classname>gio.File</classname></link>, if one exists. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--get-relative-path">
-            <title>gio.File.get_relative_path</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_relative_path</methodname>
-                <methodparam><parameter role="keyword">descendant</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">descendant</parameter>&nbsp;:</term>
-                  <listitem><simpara>input <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>string with the relative path from descendant to parent,
-                    or <literal>None</literal> if descendant doesn't have parent as prefix.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_relative_path</methodname>() method gets the path for
-                descendant relative to parent. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--get-uri">
-            <title>gio.File.get_uri</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_uri</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string containing the
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>'s URI.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_uri</methodname>() method gets the URI for the file. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--get-uri-scheme">
-            <title>gio.File.get_uri_scheme</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_uri_scheme</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string containing the URI scheme for the
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_uri_scheme</methodname>() method gets the URI scheme for a
-                <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                RFC 3986 decodes the scheme as: 
-            </para>
-<programlisting>
-URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
-</programlisting>
-            <para>
-                Common schemes include "file", "http", "ftp", etc. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--has-prefix">
-            <title>gio.File.has_prefix</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>has_prefix</methodname>
-                <methodparam><parameter role="keyword">prefix</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">prefix</parameter>&nbsp;:</term>
-                  <listitem><simpara>input <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the files's parent, grandparent,
-                    etc is prefix. <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>has_prefix</methodname>() method checks whether file has the prefix
-                specified by prefix. In other word, if the names of inital elements of files pathname
-                match prefix. Only full pathname elements are matched, so a path like /foo is not
-                considered a prefix of /foobar, only of /foo/bar. 
-            </para>
-            <para>
-                This call does no blocking i/o, as it works purely on names. As such it can sometimes
-                return <literal>False</literal> even if file is inside a prefix (from a filesystem point
-                of view), because the prefix of file is an alias of prefix.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--has-uri-scheme">
-            <title>gio.File.has_uri_scheme</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>has_uri_scheme</methodname>
-                <methodparam><parameter role="keyword">uri_scheme</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">uri_scheme</parameter>&nbsp;:</term>
-                  <listitem><simpara>a string containing a URI scheme.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>'s
-                    backend supports the given URI scheme, <literal>False</literal> if URI scheme
-                    is <literal>None</literal>, not supported, or
-                    <link linkend="class-giofile"><classname>gio.File</classname></link> is invalid. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>has_uri_scheme</methodname>() method checks to see if a
-                <link linkend="class-giofile"><classname>gio.File</classname></link>
-                has a given URI scheme. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--is-native">
-            <title>gio.File.is_native</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>is_native</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if file is native. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>is_native</methodname>() method checks to see if a file
-                is native to the platform. 
-            </para>
-            <para>
-                A native file s one expressed in the platform-native filename format, e.g.
-                "C:\Windows" or "/usr/bin/". This does not mean the file is local, as it
-                might be on a locally mounted remote filesystem. 
-            </para>
-            <para>
-                On some systems non-native files may be available using the native filesystem
-                via a userspace filesystem (FUSE), in these cases this call will return
-                <literal>False</literal>, but
-                <methodname><link linkend="method-giofile--get-path">gio.File.get_path</link></methodname>()
-                will still return a native path. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--load-contents">
-            <title>gio.File.load_contents</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>load_contents</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a three tuple containing the contents of the file,
-                    the length of the contents of the file and the current entity tag for the file.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>load_contents</methodname>() method loads the content of the file into memory.
-                The data is always zero-terminated, but this is not included in the resultant length.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--load-contents-async">
-            <title>gio.File.load_contents_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>load_contents_async</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>load_contents_async</methodname>() method starts an asynchronous load of the file's contents. 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--load-contents">gio.File.load_contents</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the load operation has completed, callback will be called with user data. To finish
-                the operation, call
-                <methodname><link linkend="method-giofile--load-contents-finish">gio.File.load_contents_finish</link></methodname>()
-                with the GAsyncResult returned by the callback. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--load-contents-finish">
-            <title>gio.File.load_contents_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>load_contents_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a three tuple containing the contents of the file,
-                    the length of the contents of the file and the current entity tag for the file.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>load_contents_finish</methodname>() method finishes an asynchronous
-                find mount started with
-                <methodname><link linkend="method-giofile--load-contents-async">gio.File.load_contents_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--make-directory">
-            <title>gio.File.make_directory</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>make_directory</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> on successful creation,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>make_directory</methodname>() method creates a directory.
-                Note that this will only create a child directory of the immediate parent directory
-                of the path or URI given by the <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                To recursively create directories, see
-                <methodname><link linkend="method-giofile--make-directory-with-parents">gio.File.make_directory_with_parents</link></methodname>().
-                This function will fail if the parent directory does not exist, setting error to
-                gio.ERROR_NOT_FOUND. If the file system doesn't support creating directories, this
-                function will fail, setting error to gio.ERROR_NOT_SUPPORTED. 
-            </para>
-            <para>
-                For a local <link linkend="class-giofile"><classname>gio.File</classname></link> the newly
-                created directory will have the default (current) ownership and permissions of the current process. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--make-directory-with-parents">
-            <title>gio.File.make_directory_with_parents</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>make_directory_with_parents</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if all directories have been successfully created,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>make_directory_with_parents</methodname>() method creates a directory
-                and any parent directories that may not exist similar to 'mkdir -p'. If the file system
-                does not support creating directories, this function will fail, setting error to gio.ERROR_NOT_SUPPORTED. 
-            </para>
-            <para>
-                For a local <link linkend="class-giofile"><classname>gio.File</classname></link> the newly
-                created directories will have the default (current) ownership and permissions of the current process. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--make-symbolic-link">
-            <title>gio.File.make_symbolic_link</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>make_symbolic_link</methodname>
-                <methodparam><parameter role="keyword">symlink_value</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>symlink_value</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string with the value of the new symlink.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> on the creation of a new symlink,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>make_symbolic_link</methodname>() method creates a symbolic link. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--monitor">
-            <title>gio.File.monitor</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>monitor</methodname>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_MONITOR_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>
-                    a <xref linkend="gio-file-monitor-flags-constants" endterm="gio-file-monitor-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofilemonitor"><classname>gio.FileMonitor</classname></link>
-                    for the given file, or <literal>None</literal> on error
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>monitor</methodname>() method obtains a file or directory
-                monitor for the given file, depending on the type of the file. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--monitor-directory">
-            <title>gio.File.monitor_directory</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>monitor_directory</methodname>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_MONITOR_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>
-                    a <xref linkend="gio-file-monitor-flags-constants" endterm="gio-file-monitor-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofilemonitor"><classname>gio.FileMonitor</classname></link>
-                    for the given file, or <literal>None</literal> on error
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>monitor_directory</methodname>() method obtains a directory monitor
-                for the given file. This may fail if directory monitoring is not supported. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--monitor-file">
-            <title>gio.File.monitor_file</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>monitor_file</methodname>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_MONITOR_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>
-                    a <xref linkend="gio-file-monitor-flags-constants" endterm="gio-file-monitor-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofilemonitor"><classname>gio.FileMonitor</classname></link>
-                    for the given file, or <literal>None</literal> on error
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>monitor_file</methodname>() method obtains a file monitor for the
-                given file. If no file notification mechanism exists, then regular polling
-                of the file is used. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--mount-enclosing-volume">
-            <title>gio.File.mount_enclosing_volume</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>mount_enclosing_volume</methodname>
-                <methodparam><parameter role="keyword">mount_operation</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_COPY_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>mount_operation</parameter>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-giomountoperation"><classname>gio.MountOperation</classname></link>
-                    or <literal>None</literal> to avoid user interaction. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request
-                    is satisfied, or <literal>None</literal>. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-mount-mount-flags-constants" endterm="gio-mount-mount-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to the progress callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>mount_enclosing_volume</methodname>() method starts a mount_operation,
-                mounting the volume that contains the file location. 
-            </para>
-            <para>
-                When this operation has completed, callback will be called with user_user data,
-                and the operation can be finalized with
-                <methodname><link linkend="method-giofile--mount-enclosing-volume-finish">gio.File.mount_enclosing_volume_finish</link></methodname>(). 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--mount-enclosing-volume-finish">
-            <title>gio.File.mount_enclosing_volume_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>mount_enclosing_volume_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if successful. If an error has occurred,
-                    this function will return <literal>False</literal> and set error appropriately if present. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>mount_enclosing_volume_finish</methodname>() method finishes an asynchronous
-                find mount started with
-                <methodname><link linkend="method-giofile--mount-enclosing-volume">gio.File.mount_enclosing_volume</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--mount-mountable">
-            <title>gio.File.mount_mountable</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>mount_mountable</methodname>
-                <methodparam><parameter role="keyword">mount_operation</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_COPY_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>mount_operation</parameter>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-giomountoperation"><classname>gio.MountOperation</classname></link>
-                    or <literal>None</literal> to avoid user interaction. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request
-                    is satisfied, or <literal>None</literal>. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-mount-mount-flags-constants" endterm="gio-mount-mount-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to the progress callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>mount_mountable</methodname>() method mounts a file of type
-                gio.FILE_TYPE_MOUNTABLE. Using mount_operation, you can request callbacks when,
-                for instance, passwords are needed during authentication. 
-            </para>
-            <para>
-                When this operation has completed, callback will be called with user_user data,
-                and the operation can be finalized with
-                <methodname><link linkend="method-giofile--mount-mountable-finish">gio.File.mount_mountable_finish</link></methodname>(). 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--mount-mountable-finish">
-            <title>gio.File.mount_mountable_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>mount_mountable_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>mount_mountable_finish</methodname>() method finishes an asynchronous
-                find mount started with
-                <methodname><link linkend="method-giofile--mount-mountable">gio.File.mount_mountable</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--move">
-            <title>gio.File.move</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>copy</methodname>
-                <methodparam><parameter role="keyword">destination</parameter></methodparam>
-                <methodparam><parameter role="keyword">progress_callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_COPY_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>destination</parameter>&nbsp;:</term>
-                    <listitem><simpara>destination <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>progress_callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>function to callback with progress information.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-copy-flags-constants" endterm="gio-file-copy-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to the progress callback function.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> on success,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>move</methodname>() method tries to move the file or directory
-                source to the location specified by destination. If native move operations are
-                supported then this is used, otherwise a copy + delete fallback is used. The native
-                implementation may support moving directories (for instance on moves inside the same
-                filesystem), but the fallback code does not. 
-            </para>
-            <para>
-                If the flag gio.FILE_COPY_OVERWRITE is specified an already existing destination file is overwritten. 
-            </para>
-            <para>
-                If the flag gio.FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks will be copied
-                as symlinks, otherwise the target of the source symlink will be copied. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-            <para>
-                If progress_callback is not <literal>None</literal>, then the operation can be monitored
-                by setting this to a GFileProgressCallback function. progress_callback_data will be passed
-                to this function. It is guaranteed that this callback will be called after all data has been
-                transferred with the total number of bytes copied during the operation. 
-            </para>
-            <para>
-                If the source file does not exist then the gio.ERROR_NOT_FOUND error is returned,
-                independent on the status of the destination. 
-            </para>
-            <para>
-                If gio.FILE_COPY_OVERWRITE is not specified and the target exists, then the error
-                gio.ERROR_EXISTS is returned. 
-            </para>
-            <para>
-                If trying to overwrite a file over a directory the gio.ERROR_IS_DIRECTORY error is returned.
-                If trying to overwrite a directory with a directory the gio.ERROR_WOULD_MERGE error is returned. 
-            </para>
-            <para>
-                If the source is a directory and the target does not exist, or gio.FILE_COPY_OVERWRITE is specified
-                and the target is a file, then the gio.ERROR_WOULD_RECURSE error may be returned
-                (if the native move operation isn't available).
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--query-default-handler">
-            <title>gio.File.query_default_handler</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_default_handler</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link>
-                    if the handle was found, <literal>None</literal> if there were errors.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_default_handler</methodname>() method returns the
-                <link linkend="class-gioappinfo"><classname>gio.AppInfo</classname></link> that
-                is registered as the default application to handle the file specified by file. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be
-                cancelled by triggering the cancellable object from another thread. If the
-                operation was cancelled, the error gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--query-exists">
-            <title>gio.File.query_exists</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_exists</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the file exists (and can be detected
-                    without error), <literal>False</literal> otherwise (or if cancelled). 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_exists</methodname>() method is an tility function to check
-                if a particular file exists. This is implemented using
-                <methodname><link linkend="method-giofile--query-info">gio.File.query_info</link></methodname>()
-                and as such does blocking I/O. 
-            </para>
-            <para>
-                Note that in many cases it is racy to first check for file existence and then execute
-                something based on the outcome of that, because the file might have been created or
-                removed in between the operations. The general approach to handling that is to not check,
-                but just do the operation and handle the errors as they come. 
-            </para>
-            <para>
-                As an example of race-free checking, take the case of reading a file, and if it doesn't
-                exist, creating it. There are two racy versions: read it, and on error create it; and:
-                check if it exists, if not create it. These can both result in two processes creating the
-                file (with perhaps a partially written file as the result). The correct approach is to
-                always try to create the file with
-                <methodname><link linkend="method-giofile--create">gio.File.create</link></methodname>()
-                which will either atomically create the file or fail with a gio.ERROR_EXISTS error. 
-            </para>
-            <para>
-                However, in many cases an existence check is useful in a user interface, for instance
-                to make a menu item sensitive/insensitive, so that you don't have to fool users that
-                something is possible and then just show and error dialog. If you do this, you should
-                make sure to also handle the errors that can happen due to races when you execute the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--query-file-type">
-            <title>gio.File.query_file_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_file_type</methodname>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_MONITOR_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>
-                    a <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>
-                    <xref linkend="gio-file-type-constants" endterm="gio-file-type-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_file_type</methodname>() method it's an utility function to inspect
-                the <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                of a file. This is implemented using
-                <methodname><link linkend="method-giofile--query-info">gio.File.query_info</link></methodname>()
-                and as such does blocking I/O. 
-            </para>
-            <para>
-                The primary use case of this method is to check if a file is a regular file, directory, or symlink.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--query-filesystem-info">
-            <title>gio.File.query_filesystem_info</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_filesystem_info</methodname>
-                <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attributes</parameter>&nbsp;:</term>
-                    <listitem><simpara>an attribute query string.                    
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                    or <literal>None</literal> if there was an error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_filesystem_info</methodname>() method it's similar to
-                <methodname><link linkend="method-giofile--query-info">gio.File.query_info</link></methodname>(),
-                but obtains information about the filesystem the file is on, rather than the
-                file itself. For instance the amount of space available and the type of the filesystem. 
-            </para>
-            <para>
-                The attribute value is a string that specifies the file attributes that should be gathered.
-                It is not an error if it's not possible to read a particular requested attribute from a file -
-                it just won't be set. attribute should be a comma-separated list of attribute or attribute
-                wildcards. The wildcard "*" means all attributes, and a wildcard like "fs:*" means all attributes
-                in the fs namespace. The standard namespace for filesystem attributes is "fs". Common attributes
-                of interest are gio.FILE_ATTRIBUTE_FILESYSTEM_SIZE (the total size of the filesystem in bytes),
-                gio.FILE_ATTRIBUTE_FILESYSTEM_FREE (number of bytes available), and gio.FILE_ATTRIBUTE_FILESYSTEM_TYPE
-                (type of the filesystem). 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-            <para>
-                If the file does not exist, the gio.ERROR_NOT_FOUND error will be returned. Other errors
-                are possible too, and depend on what kind of filesystem the file is on.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--query-filesystem-info-async">
-            <title>gio.File.query_filesystem_info_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_filesystem_info_async</methodname>
-                <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attributes</parameter>&nbsp;:</term>
-                    <listitem><simpara>an attribute query string.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_filesystem_info_async</methodname>() method asynchronously
-                gets the requested information about the filesystem that the specified file is on.
-                The result is a GFileInfo object that contains key-value attributes
-                (such as type or size for the file). 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--query-filesystem-info">query_filesystem_info</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giofile--query-filesystem-info-finish">gio.File.query_filesystem_info_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--query-filesystem-info-finish">
-            <title>gio.File.query_filesystem_info_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_filesystem_info_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                    or <literal>None</literal> if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_filesystem_info_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--query-filesystem-info-async">gio.File.query_filesystem_info_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--query-info">
-            <title>gio.File.query_filesystem_info</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_info</methodname>
-                <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attributes</parameter>&nbsp;:</term>
-                    <listitem><simpara>an attribute query string.                    
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>
-                    a <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                    for the given file or <literal>None</literal> if there was an error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_info</methodname>() method gets the requested
-                information about specified file. The result is a
-                <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                object that contains key-value attributes (such as the type or size of the file). 
-            </para>
-            <para>
-                The attribute value is a string that specifies the file attributes that should
-                be gathered. It is not an error if it's not possible to read a particular
-                requested attribute from a file - it just won't be set. attribute should be
-                a comma-separated list of attribute or attribute wildcards. The wildcard "*"
-                means all attributes, and a wildcard like "standard::*" means all attributes
-                in the standard namespace. An example attribute query be "standard::*,owner::user".
-                The standard attributes are available as defines, like gio.FILE_ATTRIBUTE_STANDARD_NAME. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-            <para>
-                For symlinks, normally the information about the target of the symlink is returned,
-                rather than information about the symlink itself. However if you pass
-                gio.FILE_QUERY_INFO_NOFOLLOW_SYMLINKS in flags the information about
-                the symlink itself will be returned. Also, for symlinks that point to non-existing
-                files the information about the symlink itself will be returned. 
-            </para>
-            <para>
-                If the file does not exist, the gio.ERROR_NOT_FOUND error will be
-                returned. Other errors are possible too, and depend on what kind of
-                filesystem the file is on.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--query-info-async">
-            <title>gio.File.query_info_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_info_async</methodname>
-                <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attributes</parameter>&nbsp;:</term>
-                    <listitem><simpara>an attribute query string.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>
-                    a <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_info_async</methodname>() method asynchronously gets the
-                requested information about specified file. The result is a
-                <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                object that contains key-value attributes (such as type or size for the file). 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--query-info">query_info</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giofile--query-info-finish">gio.File.query_info_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--query-info-finish">
-            <title>gio.File.query_info_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_info_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                    for the given file or <literal>None</literal> if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_info_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--query-info-async">gio.File.query_info_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--query-settable-attributes">
-            <title>gio.File.query_settable_attributes</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_settable_attributes</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a list of
-                    <link linkend="class-giofileattributeinfo"><classname>gio.FileAttributeInfo</classname></link>
-                    describing the settable attributes.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_settable_attributes</methodname>() method obtain the
-                list of settable attributes for the file. 
-            </para>
-            <para>
-                Returns the type and full attribute name of all the attributes that can be
-                set on this file. This doesn't mean setting it will always succeed though,
-                you might get an access failure, or some specific file may not support a specific attribute. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--query-writable-namespace">
-            <title>gio.File.query_writable_namespace</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_writable_namespace</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a list of
-                    <link linkend="class-giofileattributeinfo"><classname>gio.FileAttributeInfo</classname></link>
-                    describing the writable namespaces.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_writable_namespace</methodname>() method obtain the
-                list of attribute namespaces where new attributes can be created by a user.
-                An example of this is extended attributes (in the "xattr" namespace). 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--read">
-            <title>gio.File.read</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a 
-                    <link linkend="class-giofileinputstream"><classname>gio.FileInputStream</classname></link>
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read</methodname>() method opens a file for reading. The result
-                is a <link linkend="class-giofileinputstream"><classname>gio.FileInputStream</classname></link>
-                that can be used to read the contents of the file. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-            <para>
-                If the file does not exist, the gio.ERROR_NOT_FOUND error will be returned.
-                If the file is a directory, the gio.ERROR_IS_DIRECTORY error will be returned.
-                Other errors are possible too, and depend on what kind of filesystem the file is on.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--read-async">
-            <title>gio.File.read_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_async</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_async</methodname>() method asynchronously opens file for reading. 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--read">read</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giofile--read-finish">gio.File.read_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--read-finish">
-            <title>gio.File.read_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileinputstream"><classname>gio.FileInputStream</classname></link>
-                    file or <literal>None</literal> if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--read-async">gio.File.read_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--replace">
-            <title>gio.File.replace</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>replace</methodname>
-                <methodparam><parameter role="keyword">etag</parameter></methodparam>
-                <methodparam><parameter role="keyword">make_backup</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>etag</parameter>&nbsp;:</term>
-                    <listitem><simpara>an optional entity tag for the current
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>,
-                    or <literal>None</literal> to ignore.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>make_backup</parameter>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if a backup should be created. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-create-flags-constants" endterm="gio-file-create-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a 
-                    <link linkend="class-giofileoutputstream"><classname>gio.FileOutputStream</classname></link>
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>replace</methodname>() method returns an output stream for
-                overwriting the file, possibly creating a backup copy of the file first.
-                If the file doesn't exist, it will be created. 
-            </para>
-            <para>
-                This will try to replace the file in the safest way possible so that any
-                errors during the writing will not affect an already existing copy of the file.
-                For instance, for local files it may write to a temporary file and then atomically
-                rename over the destination when the stream is closed. 
-            </para>
-            <para>
-                By default files created are generally readable by everyone, but if you pass
-                gio.FILE_CREATE_PRIVATE in flags the file will be made readable only to
-                the current user, to the level that is supported on the target filesystem. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-            <para>
-                If you pass in a non-<literal>None</literal> etag value, then this value is compared
-                to the current entity tag of the file, and if they differ an gio.ERROR_WRONG_ETAG error
-                is returned. This generally means that the file has been changed since you last read it.
-                You can get the new etag from
-                <methodname><link linkend="method-giofileoutputstream--get-etag">gio.FileOutputStream.get_etag</link></methodname>()
-                after you've finished writing and closed the GFileOutputStream. When you load a new file you can use
-                <methodname><link linkend="method-giofileinputstream--query-info">gio.FileInputStream.query_info</link></methodname>()
-                to get the etag of the file. 
-            </para>
-            <para>
-                If make_backup is <literal>True</literal>, this function will attempt to make a backup
-                of the current file before overwriting it. If this fails a gio.ERROR_CANT_CREATE_BACKUP
-                error will be returned. If you want to replace anyway, try again
-                with make_backup set to <literal>False</literal>. 
-            </para>
-            <para>
-                If the file is a directory the gio.ERROR_IS_DIRECTORY error will be returned, and
-                if the file is some other form of non-regular file then a gio.ERROR_NOT_REGULAR_FILE
-                error will be returned. Some file systems don't allow all file names, and may return an
-                gio.ERROR_INVALID_FILENAME error, and if the name is to long gio.ERROR_FILENAME_TOO_LONG
-                will be returned. Other errors are possible too, and depend on what kind of filesystem the file is on.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--replace-async">
-            <title>gio.File.replace_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>replace_async</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">etag</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">make_backup</parameter><initializer>True</initializer></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>etag</parameter>&nbsp;:</term>
-                    <listitem><simpara>an optional entity tag for the current
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>,
-                    or <literal>None</literal> to ignore.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>make_backup</parameter>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if a backup should be created. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-create-flags-constants" endterm="gio-file-create-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>replace_async</methodname>() method asynchronously overwrites the file,
-                replacing the contents, possibly creating a backup copy of the file first. 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--replace">replace</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giofile--replace-finish">gio.File.replace_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--replace-contents">
-            <title>gio.File.replace_contents</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>replace_contents</methodname>
-                <methodparam><parameter role="keyword">contents</parameter></methodparam>
-                <methodparam><parameter role="keyword">etag</parameter></methodparam>
-                <methodparam><parameter role="keyword">make_backup</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>contents</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing the new contents for file. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>etag</parameter>&nbsp;:</term>
-                    <listitem><simpara>the old entity tag for the document
-                    or <literal>None</literal> to ignore.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>make_backup</parameter>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if a backup should be created. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-create-flags-constants" endterm="gio-file-create-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the new entity tag  for the document.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>replace_contents</methodname>() method replaces the contents
-                of file with contents of length bytes. If etag is specified (not NULL) any existing
-                file must have that etag, or the error gio.ERROR_WRONG_ETAG will be returned. 
-            </para>
-            <para>
-                If make_backup is <literal>True</literal>, this function will attempt to make a backup of file. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-            <para>
-                The returned etag can be used to verify that the file hasn't changed the next time it is saved over.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--replace-contents-async">
-            <title>gio.File.replace_contents_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>replace_contents_async</methodname>
-                <methodparam><parameter role="keyword">contents</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">etag</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">make_backup</parameter><initializer>True</initializer></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_CREATE_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>contents</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing the new contents for file. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>etag</parameter>&nbsp;:</term>
-                    <listitem><simpara>an optional entity tag for the current
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>,
-                    or <literal>None</literal> to ignore.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>make_backup</parameter>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if a backup should be created. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-create-flags-constants" endterm="gio-file-create-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>replace_contents_async</methodname>() method starts an asynchronous
-                replacement of file with the given contents of length bytes. etag will
-                replace the document's current entity tag. 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--replace-contents">replace_contents</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giofile--replace-contents-finish">gio.File.replace_contents_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--replace-contents-finish">
-            <title>gio.File.replace_contents_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>replace_contents_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the new entity tag  for the document.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>replace_contents_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--replace-contents-async">gio.File.replace_contents_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--replace-finish">
-            <title>gio.File.replace_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>replace_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileoutputstream"><classname>gio.FileOutputStream</classname></link>
-                    or <literal>None</literal> if an error occurred.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>replace_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--replace-async">gio.File.replace_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--resolve-relative-path">
-            <title>gio.File.resolve_relative_path</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>resolve_relative_path</methodname>
-                <methodparam><parameter role="keyword">relative_path</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">relative_path</parameter>&nbsp;:</term>
-                  <listitem><simpara>a given relative path string. 
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    to the resolved path. <literal>None</literal> if relative_path is <literal>None</literal>
-                    or if file is invalid.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>resolve_relative_path</methodname>() method resolves a
-                relative path for file to an absolute path. 
-            </para>
-            <para>
-                This call does no blocking i/o.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-attribute">
-            <title>gio.File.set_attribute</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_attribute</methodname>
-                <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-                <methodparam><parameter role="keyword">type</parameter></methodparam>
-                <methodparam><parameter role="keyword">value_p</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attribute</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing the attribute's name. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>type</parameter>&nbsp;:</term>
-                    <listitem><simpara>the type of the attribute .
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>value_p</parameter>&nbsp;:</term>
-                    <listitem><simpara>the value.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the attribute was set,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_attribute</methodname>() method sets an attribute in
-                the file with attribute name attribute to value. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-attribute-byte-string">
-            <title>gio.File.set_attribute_byte_string</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_attribute_byte_string</methodname>
-                <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-                <methodparam><parameter role="keyword">value</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attribute</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing the attribute's name. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>value</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing the attribute's new value.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the attribute was set,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_attribute_byte_string</methodname>() method Sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_BYTE_STRING to value. If attribute is of a different type,
-                this operation will fail, returning <literal>False</literal>. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-attribute-int32">
-            <title>gio.File.set_attribute_int32</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_attribute_int32</methodname>
-                <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-                <methodparam><parameter role="keyword">value</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attribute</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing the attribute's name. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>value</parameter>&nbsp;:</term>
-                    <listitem><simpara>an int containing the attribute's new value.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the attribute was set,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_attribute_int32</methodname>() method sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_INT32 to value. If attribute is of a different type,
-                this operation will fail. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-attribute-int64">
-            <title>gio.File.set_attribute_int64</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_attribute_int64</methodname>
-                <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-                <methodparam><parameter role="keyword">value</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attribute</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing the attribute's name. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>value</parameter>&nbsp;:</term>
-                    <listitem><simpara>a long containing the attribute's new value.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the attribute was set,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_attribute_int64</methodname>() method sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_INT64 to value. If attribute is of a different type,
-                this operation will fail. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-attribute-string">
-            <title>gio.File.set_attribute_string</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_attribute_string</methodname>
-                <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-                <methodparam><parameter role="keyword">value</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attribute</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing the attribute's name. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>value</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing the attribute's new value.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the attribute was set,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_attribute_string</methodname>() method sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_STRING to value. If attribute is of a different type,
-                this operation will fail. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-attribute-uint32">
-            <title>gio.File.set_attribute_uint32</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_attribute_uint32</methodname>
-                <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-                <methodparam><parameter role="keyword">value</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attribute</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing the attribute's name. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>value</parameter>&nbsp;:</term>
-                    <listitem><simpara>an int containing the attribute's new value.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the attribute was set,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_attribute_uint32</methodname>() method sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_UINT32 to value. If attribute is of a different type,
-                this operation will fail. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-attribute-uint64">
-            <title>gio.File.set_attribute_uint64</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_attribute_uint64</methodname>
-                <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-                <methodparam><parameter role="keyword">value</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>attribute</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string containing the attribute's name. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>value</parameter>&nbsp;:</term>
-                    <listitem><simpara>a long containing the attribute's new value.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the attribute was set,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_attribute_uint64</methodname>() method sets attribute of type
-                gio.FILE_ATTRIBUTE_TYPE_UINT64 to value. If attribute is of a different type,
-                this operation will fail. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by triggering
-                the cancellable object from another thread. If the operation was cancelled, the error
-                gio.ERROR_CANCELLED will be returned. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-attributes-async">
-            <title>gio.File.set_attributes_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_attributes_async</methodname>
-                <methodparam><parameter role="keyword">info</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>info</parameter>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_attributes_async</methodname>() method asynchronously
-                sets the attributes of file with info. 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--set-attributes-from-info">set_attributes_from_info</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giofile--set-attributes-finish">gio.File.set_attributes_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-attributes-finish">
-            <title>gio.File.set_attributes_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_attributes_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the attributes were set correctly,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_attributes_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--set-attributes-async">gio.File.set_attributes_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-attributes-from-info">
-            <title>gio.File.set_attributes_from_info</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_attributes_from_info</methodname>
-                <methodparam><parameter role="keyword">info</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>info</parameter>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the attributes were set correctly,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_attributes_from_info</methodname>() method tries to set
-                all attributes in the GFileInfo on the target values, not stopping on the first error. 
-            </para>
-                If there is any error during this operation then error will be set to the
-                first error. Error on particular fields are flagged by setting the "status"
-                field in the attribute value to gio.FILE_ATTRIBUTE_STATUS_ERROR_SETTING,
-                which means you can also detect further errors. 
-            <para>
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-display-name">
-            <title>gio.File.set_display_name</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_display_name</methodname>
-                <methodparam><parameter role="keyword">display_name</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>display_name</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string conaining the name to display.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    specifying what file was renamed to, or <literal>None</literal> if there was an error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_display_name</methodname>() method renames file to
-                the specified display name. 
-            </para>
-            <para>
-                The display name is converted from UTF8 to the correct encoding for the
-                target filesystem if possible and the file is renamed to this. 
-            </para>
-            <para>
-                If you want to implement a rename operation in the user interface the
-                edit name (gio.FILE_ATTRIBUTE_STANDARD_EDIT_NAME) should be used as the
-                initial value in the rename widget, and then the result after editing
-                should be passed to
-                <methodname><link linkend="method-giofile--set-display-name">gio.File.set_dispay_name</link></methodname>(). 
-            </para>
-            <para>
-                On success the resulting converted filename is returned. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-display-name-async">
-            <title>gio.File.set_display_name_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_display_name_async</methodname>
-                <methodparam><parameter role="keyword">display_name</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>display_name</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string conaining the name to display.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_display_name_async</methodname>() method asynchronously
-                sets the display name for a given GFile. 
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-giofile--set-display-name">set_display_name</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giofile--set-display-name-finish">gio.File.set_display_name_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--set-display-name-finish">
-            <title>gio.File.set_display_name_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_display_name_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_display_name_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--set-display-name-async">gio.File.set_display_name_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--trash">
-            <title>gio.File.trash</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>trash</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> on successful trash, <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>trash</methodname>() method sends file to the "Trashcan", if possible.
-                This is similar to deleting it, but the user can recover it before emptying the trashcan.
-                Not all file systems support trashing, so this call can return the gio.ERROR_NOT_SUPPORTED error. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--unmount-mountable">
-            <title>gio.File.unmount_mountable</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>unmount_mountable</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer>gio.FILE_QUERY_INFO_NONE</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-file-query-info-flags-constants" endterm="gio-file-query-info-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>unmount_mountable</methodname>() method unmounts a file of type gio.FILE_TYPE_MOUNTABLE. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giofile--unmount-mountable-finish">gio.File.unmount_mountable_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofile--unmount-mountable-finish">
-            <title>gio.File.unmount_mountable_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>unmount_mountable_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the operation finished successfully,
-                    <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>unmount_mountable_finish</methodname>() method finishes an asynchronous
-                copy operation started with
-                <methodname><link linkend="method-giofile--unmount-mountable">gio.File.unmount_mountable</link></methodname>().
-            </para>
-        </refsect2>
-    </refsect1>
-    
-    <refsect1>
-        <title>Functions</title>
-
-        <refsect2 id="function-gio--file-parse-name">
-            <title>gio.file_parse_name</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>file_parse_name</methodname>
-                <methodparam><parameter role="keyword">parse_name</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>parse_name</parameter>&nbsp;:</term>
-                    <listitem><simpara>a file name or path to be parsed.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a new <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>parse_name</methodname>() function constructs a
-                <link linkend="class-giofile"><classname>gio.File</classname></link>
-                with the given parse_name (i.e. something given by g_file_get_parse_name()).
-                This operation never fails, but the returned object might not support any I/O
-                operation if the parse_name cannot be parsed.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-fileattributeinfo.xml b/docs/reference/pygio-fileattributeinfo.xml
deleted file mode 100644 (file)
index 4b72c27..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giofileattributeinfo">
-    <refnamediv>
-        <refname>gio.FileAttributeInfo</refname>
-        <refpurpose>Information about a specific attribute.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.FileAttributeInfo</classname></ooclass>
-        <ooclass><classname>__builtin__.object</classname></ooclass>    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- __builtin__.object
-  +-- <link linkend="class-giofileattributeinfo">gio.FileAttributeInfo</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-giofileattributeinfo"><classname>gio.FileAttributeInfo</classname></link>
-            contains information about a specific attribute.
-        </para>
-    </refsect1>
-
-    <refsect1 id="attributes-giofileattributeinfo">
-        <title>gio.FileAttributeInfo Attributes</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"name"</entry>
-                            <entry>Read</entry>
-                            <entry>The name of the attribute.</entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"type"</entry>
-                            <entry>Read</entry>
-                            <entry>the
-                            <xref linkend="gio-file-attribute-type-constants" endterm="gio-file-attribute-type-constants-title"></xref>
-                            type of the attribute.</entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"flags"</entry>
-                            <entry>Read</entry>
-                            <entry>a set of
-                            <xref linkend="gio-file-attribute-flags-constants" endterm="gio-file-attribute-flags-constants-title"></xref>.
-                            </entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-fileenumerator.xml b/docs/reference/pygio-fileenumerator.xml
deleted file mode 100644 (file)
index 4b16bf6..0000000
+++ /dev/null
@@ -1,488 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giofileenumerator">
-    <refnamediv>
-        <refname>gio.FileEnumerator</refname>
-        <refpurpose>Enumerated Files Routines.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.FileEnumerator</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileenumerator--close">close</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileenumerator--close-async">close_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer><literal>glib.PRIORITY_DEFAULT</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileenumerator--close-finish">close_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileenumerator--get-container">get_container</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileenumerator--has-pending">has_pending</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileenumerator--is-closed">is_closed</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileenumerator--next-file">next_file</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileenumerator--next-files-async">next_files_async</link></methodname>
-        <methodparam><parameter role="keyword">num_files</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer><literal>glib.PRIORITY_DEFAULT</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileenumerator--next-files-finish">next_files_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileenumerator--set-pending">set_pending</link></methodname>
-        <methodparam><parameter role="keyword">pending</parameter></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giofileenumerator">gio.FileEnumerator</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giofileenumerator">
-        <title>gio.FileEnumerator Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"container"</entry>
-                            <entry>Write - Construct only</entry>
-                            <entry>The container that is being enumerated.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-giofileenumerator"><classname>gio.FileEnumerator</classname></link>
-            allows you to operate on a set of
-            <link linkend="class-giofile"><classname>gio.File</classname></link>s
-            returning a
-            <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-            structure for each file enumerated (e.g.
-            <methodname><link linkend="method-giofile--enumerate-children">gio.File.enumerate_children</link></methodname>()
-            will return a The <link linkend="class-giofileenumerator"><classname>gio.FileEnumerator</classname></link>
-            for each of the children within a directory).
-        </para>
-        <para>
-            To get the next file's information from a
-            The <link linkend="class-giofileenumerator"><classname>gio.FileEnumerator</classname></link> use
-            <methodname><link linkend="method-giofileenumerator--next-file">gio.FileEnumerator.next_file</link></methodname>()
-            or its asynchronous version,
-            <methodname><link linkend="method-giofileenumerator--next-files-async">gio.FileEnumerator.next_files_async</link></methodname>().
-            Note that the asynchronous version will return a list of
-            <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>s,
-            whereas the synchronous will only return the next file in the enumerator. 
-        </para>
-        <para>
-            To close a <link linkend="class-giofileenumerator"><classname>gio.FileEnumerator</classname></link>
-            use <methodname><link linkend="method-giofileenumerator--close">close</link></methodname>,
-            or its asynchronous version,
-            <methodname><link linkend="method-giofileenumerator--close-async">close_async</link></methodname>.
-            Once a <link linkend="class-giofileenumerator"><classname>gio.FileEnumerator</classname></link>
-            is closed, no further actions may be performed on it.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giofileenumerator--close">
-            <title>gio.FileEnumerator.close</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>close</methodname>
-                <methodparam>
-                    <parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> on success or
-                    <literal>False</literal> on error. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>close</methodname>() method releases all resources used by this
-                enumerator, making the
-                <xref linkend="gio-error-constants" endterm="gio-error-constants-title"></xref>
-                return gio.ERROR_CLOSED on all calls. 
-            </para>
-            <para>
-                This will be automatically called when the last reference is dropped,
-                but you might want to call this function to make sure resources are released
-                as early as possible.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileenumerator--close-async">
-            <title>gio.FileEnumerator.close_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>close_async</methodname>
-                <methodparam>
-                    <parameter role="keyword">callback</parameter>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">io_priority</parameter><initializer><literal>glib.PRIORITY_DEFAULT</literal></initializer>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">callback</parameter>&nbsp;:</term>
-                  <listitem><simpara>A GAsyncReadyCallback to call when the request is satisfied.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">io_priority</parameter>&nbsp;:</term>
-                  <listitem><simpara>The
-                  <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref> of the request. 
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">user_data</parameter>&nbsp;:</term>
-                  <listitem><simpara>The data to pass to callback function.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>close_async</methodname>() method asynchronously closes the file enumerator. 
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned in
-                <methodname><link linkend="method-giofileenumerator--close-finish">gio.FileEnumerator.close_finish</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileenumerator--close-finish">
-            <title>gio.FileEnumerator.close_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>close_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a GAsyncResult.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the close operation
-                    has finished successfully.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>close_finish</methodname>() method finishes closing a file enumerator, started from
-                <methodname><link linkend="method-giofileenumerator--close-async">gio.FileEnumerator.close_async</link></methodname>(). 
-            </para>
-            <para>
-                If the file enumerator was already closed when
-                <methodname><link linkend="method-giofileenumerator--close-async">gio.FileEnumerator.close_async</link></methodname>()
-                was called, then this function will report gio.ERROR_CLOSED in error, and return <literal>False</literal>.
-                If the file enumerator had pending operation when the close operation was started, then this function will report
-                gio.ERROR_PENDING, and return <literal>False</literal>. If cancellable was not <literal>None</literal>, then the operation
-                may have been cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be set, and <literal>False</literal> will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileenumerator--get-container">
-            <title>gio.FileEnumerator.get_container</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_container</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    which is being enumerated. </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_container</methodname>() method gets the
-                <link linkend="class-giofile"><classname>gio.File</classname></link>
-                container which is being enumerated.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileenumerator--has-pending">
-            <title>gio.FileEnumerator.has_pending</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>has_pending</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara><literal>True</literal> if the enumerator has pending operations.</simpara></listitem>
-            </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>has_pending</methodname>() method checks if the file enumerator has pending operations.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileenumerator--is-closed">
-            <title>gio.FileEnumerator.is_closed</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>is_closed</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the enumerator is closed.</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>is_closed</methodname>() method checks if the file enumerator has been closed.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileenumerator--next-file">
-            <title>gio.FileEnumerator.next_file</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>next_file</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                    or <literal>None</literal> on error or end of enumerator.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>next_file</methodname>() method returns information for the next
-                file in the enumerated object. Will block until the information is available.
-                The <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                returned from this function will contain attributes that match the attribute string
-                that was passed when the GFileEnumerator was created. 
-            </para>
-            <para>
-                On error, returns <literal>None</literal> and sets error to the error. If the enumerator
-                is at the end, <literal>None</literal> will be returned and error will be unset.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileenumerator--next-files-async">
-            <title>gio.FileEnumerator.next_files_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>next_files_async</methodname>
-                <methodparam><parameter role="keyword">num_files</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam>
-                    <parameter role="keyword">io_priority</parameter><initializer><literal>glib.PRIORITY_DEFAULT</literal></initializer>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">num_files</parameter>&nbsp;:</term>
-                  <listitem><simpara>The number of file info objects to request.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">callback</parameter>&nbsp;:</term>
-                  <listitem><simpara>A GAsyncReadyCallback to call when the request is satisfied.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">io_priority</parameter>&nbsp;:</term>
-                  <listitem><simpara>The
-                  <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref> of the request. 
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">user_data</parameter>&nbsp;:</term>
-                  <listitem><simpara>The data to pass to callback function.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>next_files_async</methodname>() method requests information for a number
-                of files from the enumerator asynchronously. When all i/o for the operation is finished
-                the callback will be called with the requested information. 
-            </para>
-            <para>
-                The callback can be called with less than num_files files in case of error or at the
-                end of the enumerator. In case of a partial error the callback will be called with any
-                succeeding items and no error, and on the next request the error will be reported. If a
-                request is cancelled the callback will be called with gio.ERROR_CANCELLED. 
-            </para>
-            <para>
-                During an async request no other sync and async calls are allowed, and will result in gio.ERROR_PENDING errors. 
-            </para>
-            <para>
-                Any outstanding i/o request with higher priority (lower numerical value) will be executed
-                before an outstanding request with lower priority. Default priority is glib.PRIORITY_DEFAULT.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileenumerator--next-files-finish">
-            <title>gio.FileEnumerator.next_files_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>next_files_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a GAsyncResult.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A list of
-                    <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>s.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>next_files_finish</methodname>() method finishes the
-                asynchronous operation started with
-                <methodname><link linkend="method-giofileenumerator--next-files-async">gio.FileEnumerator.next_files_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileenumerator--set-pending">
-            <title>gio.FileEnumerator.set_pending</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_pending</methodname>
-                <methodparam><parameter role="keyword">pending</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">pending</parameter>&nbsp;:</term>
-                  <listitem><simpara>A boolean value.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>push_current</methodname>() method sets the file enumerator as having pending operations.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-fileicon.xml b/docs/reference/pygio-fileicon.xml
deleted file mode 100644 (file)
index d4a443b..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giofileicon">
-    <refnamediv>
-        <refname>gio.FileIcon</refname>
-        <refpurpose>Icons pointing to an image file.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.FileIcon</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-        <ooclass><classname><link linkend="class-gioicon">gio.Icon</link></classname></ooclass>
-        <ooclass><classname><link linkend="class-gioloadableicon">gio.LoadableIcon</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-giofileicon">gio.FileIcon</link></methodname>
-       <methodparam><parameter role="keyword">file</parameter></methodparam>
-    </constructorsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileicon--get-file">get_file</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giofileicon">gio.FileIcon</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-giofileicon"><classname>gio.FileIcon</classname></link>
-            specifies an icon by pointing to an image file to be used as icon.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giofileicon">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.FileIcon</methodname>
-            <methodparam><parameter role="keyword">file</parameter></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>file</parameter>&nbsp;:</term>
-                <listitem><simpara>a
-                <link linkend="class-giofile"><classname>gio.File</classname></link>
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giofileicon"><classname>gio.FileIcon</classname></link>
-                for the given file, or <literal>None</literal> on error.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new icon for a file.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giofileicon--get-file">
-            <title>gio.FileIcon.get_file</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_file</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <link linkend="class-giofile"><classname>gio.File</classname></link>
-                    or <literal>None</literal>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_file</methodname>() method gets the
-                <link linkend="class-giofile"><classname>gio.File</classname></link>
-                associated with the given icon.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-fileinfo.xml b/docs/reference/pygio-fileinfo.xml
deleted file mode 100644 (file)
index 33eeae7..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giofileinfo">
-    <refnamediv>
-        <refname>gio.FileInfo</refname>
-        <refpurpose>File Information and Attributes</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.FileInfo</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-    <methodname><link linkend="constructor-giofileinfo">gio.FileInfo</link></methodname>
-        <methodparam></methodparam>
-    </constructorsynopsis>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--clear-status">clear_status</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--copy-into">copy_into</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--dup">dup</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-as-string">get_attribute_as_string</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-boolean">get_attribute_boolean</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-byte-string">get_attribute_byte_string</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-data">get_attribute_data</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-int32">get_attribute_int32</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-int64">get_attribute_int64</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-object">get_attribute_object</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-status">get_attribute_status</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-string">get_attribute_string</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-type">get_attribute_type</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-uint32">get_attribute_uint32</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-attribute-uint64">get_attribute_uint64</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-content-type">get_content_type</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-display-name">get_display_name</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-edit-name">get_edit_name</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-etag">get_etag</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-file-type">get_file_type</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-icon">get_icon</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-is-backup">get_is_backup</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-is-hidden">get_is_hidden</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-is-symlink">get_is_symlink</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-modification-time">get_modification_time</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-name">get_name</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-size">get_size</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-sort-order">get_sort_order</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--get-symlink-target">get_symlink_target</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--has-attribute">has_attribute</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--list-attributes">list_attributes</link></methodname>
-        <methodparam><parameter role="keyword">name_space</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--remove-attribute">remove_attribute</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute">set_attribute</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">type</parameter></methodparam>
-        <methodparam><parameter role="keyword">value_p</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute-boolean">set_attribute_boolean</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">attr_value</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute-byte-string">set_attribute_byte_string</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">attr_value</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute-data">set_attribute_data</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">attr_value</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute-int32">set_attribute_int32</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">attr_value</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute-int64">set_attribute_int64</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">attr_value</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute-int64">set_attribute_mask</link></methodname>
-        <methodparam><parameter role="keyword">mask</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute-object">set_attribute_object</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">attr_value</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute-status">set_attribute_status</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">attr_value</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute-string">set_attribute_string</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-        <methodparam><parameter role="keyword">attr_value</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute-uint32">set_attribute_uint32</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-attribute-uint64">set_attribute_uint64</link></methodname>
-        <methodparam><parameter role="keyword">attribute</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-content-type">set_content_type</link></methodname>
-        <methodparam><parameter role="keyword">content_type</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-display-name">set_display_name</link></methodname>
-        <methodparam><parameter role="keyword">display_name</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-edit-name">set_edit_name</link></methodname>
-        <methodparam><parameter role="keyword">edit_name</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-file-type">set_file_type</link></methodname>
-        <methodparam><parameter role="keyword">type</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-icon">set_icon</link></methodname>
-        <methodparam><parameter role="keyword">icon</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-is-hidden">set_is_hidden</link></methodname>
-        <methodparam><parameter role="keyword">is_hidden</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-is-symlink">set_is_symlink</link></methodname>
-        <methodparam><parameter role="keyword">is_symlink</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-modification-time">set_modification_time</link></methodname>
-        <methodparam><parameter role="keyword">mtime</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-name">set_name</link></methodname>
-        <methodparam><parameter role="keyword">name</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-size">set_size</link></methodname>
-        <methodparam><parameter role="keyword">size</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-sort-order">set_sort_order</link></methodname>
-        <methodparam><parameter role="keyword">sort_order</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--set-symlink-tarset">set_symlink_tarset</link></methodname>
-        <methodparam><parameter role="keyword">symlink_target</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinfo--unset-attribute-mask">unset_attribute_mask</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giofileinfo">gio.FileInfo</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            Functionality for manipulating basic metadata for files.
-            <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-            implements methods for getting information that all files should contain,
-            and allows for manipulation of extended attributes.
-        </para>
-        <para>
-            See <link linkend="class-giofileattribute"><classname>gio.FileAttribute</classname></link>
-            for more information on how GIO handles file attributes.
-        </para>
-        <para>
-           To obtain a <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-           for a <link linkend="class-giofile"><classname>gio.File</classname></link>, use
-           <methodname><link linkend="method-giofile--query-info">gio.File.query_info</link></methodname>()
-           (or its async variant). To obtain a
-           <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-           for a file input or output stream, use
-           <methodname><link linkend="method-giofileinputstream--query-info">gio.FileInputStream.query_info</link></methodname>() or
-           <methodname><link linkend="method-giofileoutputstream--query-info">gio.FileOutputStream.query_info</link></methodname>()
-           (or their async variants).
-        </para>
-        <para>
-           To change the actual attributes of a file, you should then set the attribute in the
-           <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link> and call
-           <methodname><link linkend="method-giofile--set-attributes-from-info">gio.File.set_attributes_from_info</link></methodname>() or
-           <methodname><link linkend="method-giofile--set-attributes-async">gio.File.set_attributes_async</link></methodname>()
-           on a <link linkend="class-giofile"><classname>gio.File</classname></link>.
-        </para>
-        <para>
-           However, not all attributes can be changed in the file. For instance, the
-           actual size of a file cannot be changed via
-           <methodname><link linkend="method-giofileinfo--set-size">gio.FileInfo.set_size</link></methodname>(). You may call
-           <methodname><link linkend="method-giofile--query-settable-attributes">gio.File.query_settable_attributes</link></methodname>() and
-           <methodname><link linkend="method-giofile--query-writable-namespace">gio.File.query_writable_namespace</link></methodname>()
-           to discover the settable attributes of a particular file at runtime.
-        </para>
-        <para>
-           <link linkend="class-giofileattributematcher"><classname>gio.FileAttributeMatcher</classname></link>
-           allows for searching through a GFileInfo for attributes.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giofileinfo">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.FileInfo</methodname>
-            <methodparam></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-        <para> Unfinished section, you may want to see the relevant C API docs for methods descriptions.</para>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-fileinputstream.xml b/docs/reference/pygio-fileinputstream.xml
deleted file mode 100644 (file)
index 723dc64..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giofileinputstream">
-    <refnamediv>
-        <refname>gio.FileInputStream</refname>
-        <refpurpose>Base class for implementing streaming input</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.FileInputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-gioinputstream">gio.InputStream</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinputstream--query-info">query_info</link></methodname>
-        <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinputstream--query-info-async">query_info_async</link></methodname>
-        <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileinputstream--query-info-finish">query_info_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-gioinputstream">gio.InputStream</link>
-    +-- <link linkend="class-giofileinputstream">gio.FileInputStream</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Implemented Interfaces</title>
-        <para>
-            <link linkend="class-giofileinputstream"><classname>gio.FileInputStream</classname></link>
-            implements
-            <link linkend="class-gioseekable"><classname>gio.Seekable</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giofileinputstream"><classname>gio.FileInputStream</classname></link>
-            provides input streams that take their content from a file.
-        </para>
-        <para>
-            <link linkend="class-giofileinputstream"><classname>gio.FileInputStream</classname></link>
-            implements <link linkend="class-gioseekable"><classname>gio.Seekable</classname></link>,
-            which allows the input stream to jump to arbitrary positions in the file, provided the filesystem
-            of the file allows it. In addition to the generic g_seekable_ API,
-            <link linkend="class-giofileinputstream"><classname>gio.FileInputStream</classname></link>
-            has its own API for seeking and positioning. To find the position of a file input stream, use
-            <methodname><link linkend="method-gioseekable--tell">gio.Seekable.tell</link></methodname>().
-            To find out if a file input stream supports seeking, use
-            <methodname><link linkend="method-gioseekable--can_seek">gio.Seekable.can_seek</link></methodname>().
-            To position a file input stream, use
-            <methodname><link linkend="method-gioseekable--seek">gio.Seekable.seek</link></methodname>().
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giofileinputstream--query-info">
-            <title>gio.FileInputStream.query_info</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_info</methodname>
-                <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">attributes</parameter>&nbsp;:</term>
-                  <listitem><simpara>a file attribute query string.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>,
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_info</methodname>() method queries a file input stream
-                the given attributes. This function blocks while querying the stream.
-                For the asynchronous (non-blocking) version of this function, see
-                <methodname><link linkend="method-giofileinputstream--query-info-async">gio.FileInputStream.query_info_async</link></methodname>().
-                While the stream is blocked, the stream will set the pending flag internally,
-                and any other operations on the stream will fail with gio.ERROR_PENDING.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileinputstream--query-info-async">
-            <title>gio.FileInputStream.query_info_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_info_async</methodname>
-                <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">attributes</parameter>&nbsp;:</term>
-                  <listitem><simpara>a file attribute query string.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_info_async</methodname>() method queries the stream
-                information asynchronously. When the operation is finished callback will be
-                called. You can then call
-                <methodname><link linkend="method-giofileinputstream--query-info-finish">gio.FileInputStream.query_info_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-            <para>
-                For the synchronous version of this function, see
-                <methodname><link linkend="method-giofileinputstream--query-info">gio.FileInputStream.query_info</link></methodname>().
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be set
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileinputstream--query-info-finish">
-            <title>gio.FileInputStream.query_info_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_info_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>,
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_info_finish</methodname>() method finishes an asynchronous
-                file append operation started with
-                <methodname><link linkend="method-giofileinputstream--query-info-async">gio.FileInputStream.query_info_async</link></methodname>().
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-filemonitor.xml b/docs/reference/pygio-filemonitor.xml
deleted file mode 100644 (file)
index ef9ca33..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giofilemonitor">
-    <refnamediv>
-        <refname>gio.FileMonitor</refname>
-        <refpurpose>File Monitor</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.FileMonitor</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofilemonitor--cancel">cancel</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofilemonitor--emit-event">emit_event</link></methodname>
-        <methodparam><parameter role="keyword">child</parameter></methodparam>
-        <methodparam><parameter role="keyword">other_file</parameter></methodparam>
-        <methodparam><parameter role="keyword">event_type</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofilemonitor--is-cancelled">is_cancelled</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofilemonitor--set-rate-limit">set_rate_limit</link></methodname>
-        <methodparam><parameter role="keyword">limit_msecs</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giofilemonitor">gio.FileMonitor</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giofilemonitor">
-        <title>gio.FileMonitor Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"cancelled"</entry>
-                            <entry>Read</entry>
-                            <entry>
-                                Whether the monitor has been cancelled. Default value: <literal>False</literal>.
-                            </entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"rate-limit"</entry>
-                            <entry>Read/Write</entry>
-                            <entry>
-                                The limit of the monitor to watch for changes, in milliseconds.
-                                Allowed values: >= 0. Default value: 800.
-                            </entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1 id="signal-prototypes-giofilemonitor">
-        <title>gio.FileMonitor Signal Prototypes</title>
-  
-        <para><link linkend="signal-prototypes-gobject">gobject.GObject Signal Prototypes</link></para>
-  
-        <variablelist>
-            <varlistentry>
-                <term><link linkend="signal-giofilemonitor--aborted">"changed"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>filemonitor</parameter></methodparam>
-                        <methodparam><parameter>file</parameter></methodparam>
-                        <methodparam><parameter>other_file</parameter></methodparam>
-                        <methodparam><parameter>event_type</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-        </variablelist>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-giofilemonitor"><classname>gio.FileMonitor</classname></link>
-            monitors a file or directory for changes.
-        </para>
-        <para>
-            To obtain a <link linkend="class-giofilemonitor"><classname>gio.FileMonitor</classname></link>
-            for a file or directory, use
-            <methodname><link linkend="method-giofile--monitor">gio.FileMonitor.monitor</link></methodname>(),
-            <methodname><link linkend="method-giofile--monitor-file">gio.FileMonitor.monitor_file</link></methodname>(), or
-            <methodname><link linkend="method-giofile--monitor-directory">gio.FileMonitor.monitor_directory</link></methodname>().
-        </para>
-        <para>
-            To get informed about changes to the file or directory you are monitoring,
-            connect to the "changed" signal.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-        <para> Unfinished section, you may want to see the relevant C API docs for methods descriptions.</para>
-  </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-fileoutputstream.xml b/docs/reference/pygio-fileoutputstream.xml
deleted file mode 100644 (file)
index f4367d7..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giofileoutputstream">
-    <refnamediv>
-        <refname>gio.FileOutputStream</refname>
-        <refpurpose>Base class for implementing streaming input</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.FileOutputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-giooutputstream">gio.OutputStream</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileoutputstream--get-etag">get_etag</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileoutputstream--query-info">query_info</link></methodname>
-        <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileoutputstream--query-info-async">query_info_async</link></methodname>
-        <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofileoutputstream--query-info-finish">query_info_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giooutputstream">gio.OutputStream</link>
-    +-- <link linkend="class-giofileoutputstream">gio.FileOutputStream</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Implemented Interfaces</title>
-        <para>
-            <link linkend="class-giofileoutputstream"><classname>gio.FileOutputStream</classname></link>
-            implements
-            <link linkend="class-gioseekable"><classname>gio.Seekable</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giofileoutputstream"><classname>gio.FileOutputStream</classname></link>
-            provides output streams that write their content to a file.
-        </para>
-        <para>
-            <link linkend="class-giofileoutputstream"><classname>gio.FileOutputStream</classname></link>
-            implements <link linkend="class-gioseekable"><classname>gio.Seekable</classname></link>,
-            which allows the output stream to jump to arbitrary positions in the file and to truncate
-            the file, provided the filesystem of the file supports these operations. In addition to the
-            generic gio.Seekable. API,
-            <link linkend="class-giofileoutputstream"><classname>gio.FileOutputStream</classname></link>
-            has its own API for seeking and positioning. To find the position of a file output stream, use
-            <methodname><link linkend="method-gioseekable--tell">gio.Seekable.tell</link></methodname>().
-            To find out if a file output stream supports seeking, use
-            <methodname><link linkend="method-gioseekable--can_seek">gio.Seekable.can_seek</link></methodname>().
-            To position a file output stream, use
-            <methodname><link linkend="method-gioseekable--seek">gio.Seekable.seek</link></methodname>().
-            To find out if a file output stream supports truncating, use
-            <methodname><link linkend="method-gioseekable--can_truncate">gio.FileOutputStream.can_truncate</link></methodname>().
-            To truncate a file output stream, use
-            <methodname><link linkend="method-gioseekable--truncate">gio.Seekable.truncate</link></methodname>().
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giofileoutputstream--get-etag">
-            <title>gio.FileOutputStream.get_etag</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_etag</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the entity tag for the stream.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_etag</methodname>() method gets the entity tag
-                for the file when it has been written. This must be called after the
-                stream has been written and closed, as the etag can change while writing.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileoutputstream--query-info">
-            <title>gio.FileOutputStream.query_info</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_info</methodname>
-                <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">attributes</parameter>&nbsp;:</term>
-                  <listitem><simpara>a file attribute query string.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>,
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_info</methodname>() method queries a file input stream
-                the given attributes. This function blocks while querying the stream.
-                For the asynchronous (non-blocking) version of this function, see
-                <methodname><link linkend="method-giofileoutputstream--query-info-async">gio.FileOutputStream.query_info_async</link></methodname>().
-                While the stream is blocked, the stream will set the pending flag internally,
-                and any other operations on the stream will fail with gio.ERROR_PENDING.
-            </para>
-            <para>
-                Can fail if the stream was already closed (with error being set to gio.ERROR_CLOSED),
-                the stream has pending operations (with error being set to gio.ERROR_PENDING), or
-                if querying info is not supported for the stream's interface (with error being set to
-                gio.ERROR_NOT_SUPPORTED). In all cases of failure, NULL will be returned.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be set, and <literal>None</literal> will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileoutputstream--query-info-async">
-            <title>gio.FileOutputStream.query_info_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_info_async</methodname>
-                <methodparam><parameter role="keyword">attributes</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">attributes</parameter>&nbsp;:</term>
-                  <listitem><simpara>a file attribute query string.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_info_async</methodname>() method queries the stream
-                information asynchronously. When the operation is finished callback will be
-                called. You can then call
-                <methodname><link linkend="method-giofileoutputstream--query-info-finish">gio.FileOutputStream.query_info_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-            <para>
-                For the synchronous version of this function, see
-                <methodname><link linkend="method-giofileoutputstream--query-info">gio.FileOutputStream.query_info</link></methodname>().
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was
-                cancelled, the error gio.ERROR_CANCELLED will be set
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofileoutputstream--query-info-finish">
-            <title>gio.FileOutputStream.query_info_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>query_info_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofileinfo"><classname>gio.FileInfo</classname></link>,
-                    or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>query_info_finish</methodname>() method finishes an asynchronous
-                file append operation started with
-                <methodname><link linkend="method-giofileoutputstream--query-info-async">gio.FileOutputStream.query_info_async</link></methodname>().
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-filterinputstream.xml b/docs/reference/pygio-filterinputstream.xml
deleted file mode 100644 (file)
index e6fb90b..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giofilterinputstream">
-    <refnamediv>
-        <refname>gio.FilterInputStream</refname>
-        <refpurpose>Filter Input Stream</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.FilterInputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-gioinputstream">gio.InputStream</link></classname></ooclass>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofilterinputstream--get-base-stream">get_base_stream</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofilterinputstream--get-close-base-stream">get_close_base_stream</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofilterinputstream--set-close-base-stream">set_close_base_stream</link></methodname>
-        <methodparam><parameter role="keyword">close_base</parameter></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-gioinputstream">gio.InputStream</link>
-    +-- <link linkend="class-giofilterinputstream">gio.FilterInputStream</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giofilterinputstream">
-        <title>gio.FilterInputStream Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"base-stream"</entry>
-                            <entry>Read - Write - Construct only</entry>
-                            <entry>The underlying base stream on which the io ops will be done.</entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"close-base-stream"</entry>
-                            <entry>Read - Write - Construct only</entry>
-                            <entry>If the base stream should be closed when the filter stream is closed.
-                            Default value: <literal>True</literal>.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            Filter Input Stream.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giofilterinputstream--get-base-stream">
-            <title>gio.FilterInputStream.get_base_stream</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_base_stream</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A
-                    <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_base_stream</methodname>() method gets the base
-                stream for the filter stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofilterinputstream--get-close-base-stream">
-            <title>gio.FilterInputStream.get_close_base_stream</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_close_base_stream</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the base stream
-                    will be closed.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_close_base_stream</methodname>() method returns
-                whether the base stream will be closed when stream is closed.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofilterinputstream--set-close-base-stream">
-            <title>gio.FilterInputStream.set_close_base_stream</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_close_base_stream</methodname>
-                <methodparam><parameter role="keyword">close_base</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">close_base</parameter>&nbsp;:</term>
-                  <listitem><simpara><literal>True</literal> to close the base stream.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_close_base_stream</methodname>() method sets whether
-                the base stream will be closed when stream is closed.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-filteroutputstream.xml b/docs/reference/pygio-filteroutputstream.xml
deleted file mode 100644 (file)
index 78feaa2..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giofilteroutputstream">
-    <refnamediv>
-        <refname>gio.FilterOutputStream</refname>
-        <refpurpose>Filter Output Stream</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.FilterOutputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-giooutputstream">gio.OutputStream</link></classname></ooclass>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofilteroutputstream--get-base-stream">get_base_stream</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofilteroutputstream--get-close-base-stream">get_close_base_stream</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giofilteroutputstream--set-close-base-stream">set_close_base_stream</link></methodname>
-        <methodparam><parameter role="keyword">close_base</parameter></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giooutputstream">gio.OutputStream</link>
-    +-- <link linkend="class-giofilteroutputstream">gio.FilterOutputStream</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giofilteroutputstream">
-        <title>gio.FilterOutputStream Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"base-stream"</entry>
-                            <entry>Read - Write - Construct only</entry>
-                            <entry>The underlying base stream on which the io ops will be done.</entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"close-base-stream"</entry>
-                            <entry>Read - Write - Construct only</entry>
-                            <entry>If the base stream should be closed when the filter stream is closed.
-                            Default value: <literal>True</literal>.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            Filter Output Stream.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giofilteroutputstream--get-base-stream">
-            <title>gio.FilterOutputStream.get_base_stream</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_base_stream</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A
-                    <link linkend="class-giooutputstream"><classname>gio.OutputStream</classname></link>
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_base_stream</methodname>() method gets the base
-                stream for the filter stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofilteroutputstream--get-close-base-stream">
-            <title>gio.FilterOutputStream.get_close_base_stream</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_close_base_stream</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the base stream
-                    will be closed.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_close_base_stream</methodname>() method returns
-                whether the base stream will be closed when stream is closed.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giofilteroutputstream--set-close-base-stream">
-            <title>gio.FilterOutputStream.set_close_base_stream</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_close_base_stream</methodname>
-                <methodparam><parameter role="keyword">close_base</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">close_base</parameter>&nbsp;:</term>
-                  <listitem><simpara><literal>True</literal> to close the base stream.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_close_base_stream</methodname>() method sets whether
-                the base stream will be closed when stream is closed.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-functions.xml b/docs/reference/pygio-functions.xml
deleted file mode 100644 (file)
index c690a2f..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="gio-functions">
-    <refnamediv>
-        <refname>gio Functions</refname>
-        <refpurpose></refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-<programlisting><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--content-type-can-be-executable">gio.content_type_can_be_executable</link></methodname>
-    <methodparam><parameter role="keyword">type</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--content-type-equals">gio.content_type_equals</link></methodname>
-    <methodparam><parameter role="keyword">type1</parameter></methodparam>
-    <methodparam><parameter role="keyword">type2</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--content-type-from-mime-type">gio.content_type_from_mime_type</link></methodname>
-    <methodparam><parameter role="keyword">mime_type</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--content-type-get-description">gio.content_type_get_description</link></methodname>
-    <methodparam><parameter role="keyword">type</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--content-type-get-icon">gio.content_type_get_icon</link></methodname>
-    <methodparam><parameter role="keyword">type</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--content-type-get-mime-type">gio.content_type_get_mime_type</link></methodname>
-    <methodparam><parameter role="keyword">type</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--content-type-guess">gio.content_type_guess</link></methodname>
-    <methodparam><parameter role="keyword">filename</parameter></methodparam>
-    <methodparam><parameter role="keyword">data</parameter></methodparam>
-    <methodparam><parameter role="keyword">want_uncertain</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--content-type-is-a">gio.content_type_is_a</link></methodname>
-    <methodparam><parameter role="keyword">type</parameter></methodparam>
-    <methodparam><parameter role="keyword">supertype</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--content-type-is-unknown">gio.content_type_is_unknown</link></methodname>
-    <methodparam><parameter role="keyword">type</parameter></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--content-types-get-registered">gio.content_types_get_registered</link></methodname>
-    <methodparam></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--io-error-from-errno">gio.io_error_from_errno</link></methodname>
-    <methodparam><parameter role="keyword">err_no</parameter></methodparam>
-</methodsynopsis></programlisting>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-           These functions are part of the <literal>PyGObject</literal> gio module
-          but are not directly associated with a specific class
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Functions</title>
-
-        <refsect2 id="function-gio--content-type-can-be-executable">
-            <title>gio.content_type_can_be_executable</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>content_type_can_be_executable</methodname>
-                <methodparam><parameter role="keyword">type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>type</parameter>&nbsp;:</term>
-                    <listitem><simpara>a content type string.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the file type corresponds
-                   to a type that can be executable, <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>content_type_can_be_executable</methodname>() function checks
-               if a content type can be executable. Note that for instance things like text files
-               can be executables (i.e. scripts and batch files).
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--content-type-equals">
-            <title>gio.content_type_equals</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>content_type_equals</methodname>
-                <methodparam><parameter role="keyword">type1</parameter></methodparam>
-                <methodparam><parameter role="keyword">type2</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>type1</parameter>&nbsp;:</term>
-                    <listitem><simpara>a content type string. 
-                   </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>type2</parameter>&nbsp;:</term>
-                    <listitem><simpara>a content type string. 
-                   </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the two strings are
-                   identical or equivalent, <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>content_type_equals</methodname>() function compares
-               two content types for equality.
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--content-type-from-mime-type">
-            <title>gio.content_type_from_mime_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>content_type_from_mime_type</methodname>
-                <methodparam><parameter role="keyword">mime_type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>mime_type</parameter>&nbsp;:</term>
-                    <listitem><simpara>a mime type string.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>The content type or <literal>None</literal> when does not know. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>content_type_from_mime_type</methodname>() function tries
-               to find a content type based on the mime type name.
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--content-type-get-description">
-            <title>gio.content_type_get_description</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>content_type_get_description</methodname>
-                <methodparam><parameter role="keyword">type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>type</parameter>&nbsp;:</term>
-                    <listitem><simpara>a content type string.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a short description of the content type type. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>content_type_get_description</methodname>() function
-               gets the human readable description of the content type.
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--content-type-get-icon">
-            <title>gio.content_type_get_icon</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>content_type_get_icon</methodname>
-                <methodparam><parameter role="keyword">type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>type</parameter>&nbsp;:</term>
-                    <listitem><simpara>a content type string.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-                   corresponding to the content type. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>content_type_get_icon</methodname>() function
-               gets the icon for a content type.
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--content-type-get-mime-type">
-            <title>gio.content_type_get_mime_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>content_type_get_mime_type</methodname>
-                <methodparam><parameter role="keyword">type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>type</parameter>&nbsp;:</term>
-                    <listitem><simpara>a content type string.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the registered mime-type for the given type,
-                   or <literal>None</literal> if unknown. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>content_type_get_mime_type</methodname>() function
-               gets the mime-type for the content type. If one is registered
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--content-type-guess">
-            <title>gio.content_type_guess</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>content_type_guess</methodname>
-                <methodparam><parameter role="keyword">filename</parameter></methodparam>
-                <methodparam><parameter role="keyword">data</parameter></methodparam>
-                <methodparam><parameter role="keyword">want_uncertain</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>filename</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string, or <literal>None</literal>. 
-                   </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>data</parameter>&nbsp;:</term>
-                    <listitem><simpara>a stream of data, or <literal>None</literal>. 
-                   </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>want_uncertain</parameter>&nbsp;:</term>
-                    <listitem><simpara>a flag indicating the certainty of the result.
-                   </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string indicating a guessed content type for the given data.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>content_type_guess</methodname>() function guesses
-               the content type based on example data. If the function is uncertain,
-               result_uncertain will be set to <literal>True</literal>. Either filename
-               or data may be <literal>None</literal>, in which case the guess will be
-               based solely on the other argument.
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--content-type-is-a">
-            <title>gio.content_type_is_a</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>content_type_is_a</methodname>
-                <methodparam><parameter role="keyword">type</parameter></methodparam>
-                <methodparam><parameter role="keyword">supertype</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>type</parameter>&nbsp;:</term>
-                    <listitem><simpara>a content type string. 
-                   </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>supertype</parameter>&nbsp;:</term>
-                    <listitem><simpara>a string.
-                   </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if type is a kind of
-                   supertype, <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>content_type_is_a</methodname>() function determines
-               if type is a subset of supertype.
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--content-type-is-unknown">
-            <title>gio.content_type_is_unknown</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>content_type_is_unknown</methodname>
-                <methodparam><parameter role="keyword">type</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>type</parameter>&nbsp;:</term>
-                    <listitem><simpara>a content type string. 
-                   </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the type is the unknown type.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>content_type_is_unknown</methodname>() function checks if
-               the content type is the generic "unknown" type. On unix this is the
-               "application/octet-stream" mimetype, while on win32 it is "*".
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--content-types-get-registered">
-            <title>gio.content_types_get_registered</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>content_types_get_registered</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a list of the registered content types.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>content_types_get_registered</methodname>() function
-               gets a list of strings containing all the registered content types
-               known to the system.
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--io-error-from-errno">
-            <title>gio.io_error_from_errno</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>io_error_from_errno</methodname>
-                <methodparam><parameter role="keyword">err_no</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>err_no</parameter>&nbsp;:</term>
-                    <listitem><simpara>Error number.
-                   </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                   <xref linkend="gio-error-constants" endterm="gio-error-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>io_error_from_errno</methodname>() function converts
-               error codes into GIO error codes.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-icon.xml b/docs/reference/pygio-icon.xml
deleted file mode 100644 (file)
index 5a32d28..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gioicon">
-    <refnamediv>
-        <refname>gio.Icon</refname>
-        <refpurpose>Interface for icons.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.Icon</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobjectginterface">gobject.GInterface</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioicon--equal">equal</link></methodname>
-        <methodparam><parameter role="keyword">icon2</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioicon--to-string">to_string</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-<programlisting>
-<emphasis role="bold">Functions</emphasis>
-<methodsynopsis language="python">
-    <methodname><link linkend="function-gio--icon-new-from-string">gio.icon_new_from_string</link></methodname>
-    <methodparam></methodparam>
-</methodsynopsis></programlisting>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectginterface">gobject.GInterface</link>
-  +-- <link linkend="class-gioicon">gio.Icon</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Known Derived Interfaces</title>
-        <para>
-            <link linkend="class-gioicon"><classname>gio.Icon</classname></link> is required by
-            <link linkend="class-gioloadableicon"><classname>gio.LoadableIcon</classname></link>.
-        </para>
-    </refsect1>
-    
-    <refsect1>
-       <title>Known Implementation</title>
-        <para>
-            <link linkend="class-gioicon"><classname>gio.Icon</classname></link> is implemented by
-            <link linkend="class-giothemedicon"><classname>gio.ThemedIcon</classname></link>,
-            <link linkend="class-giofileicon"><classname>gio.FileIcon</classname></link>,
-            <link linkend="class-gioemblem"><classname>gio.Emblem</classname></link>,
-            <link linkend="class-gioemblemedicon"><classname>gio.EmblemedIcon</classname></link>.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-            is a very minimal interface for icons. It provides functions for checking
-            the equality of two icons, hashing of icons and serializing an icon to and from strings. 
-        </para>
-        <para>
-            <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-            does not provide the actual pixmap for the icon as this is out of GIO's
-            scope, however implementations of
-            <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-            may contain the name of an icon (see
-            <link linkend="class-giothemedicon"><classname>gio.ThemedIcon</classname></link>),
-            or the path to an icon (see
-            <link linkend="class-gioloadableicon"><classname>gio.LoadableIcon</classname></link>).
-        </para>
-        <!--
-        <para>
-            To obtain a hash of a <link linkend="class-gioicon"><classname>gio.Icon</classname></link>, see
-            <methodname><link linkend="method-gioicon- -hash">gio.Icon.hash</link></methodname>().
-        </para>
-        -->
-        <para>
-            To check if two GIcons are equal, see
-            <methodname><link linkend="method-gioicon--equal">gio.Icon.equal</link></methodname>().
-        </para>
-        <para>
-            For serializing a <link linkend="class-gioicon"><classname>gio.Icon</classname></link>,
-            use <methodname><link linkend="method-gioicon- -to-string">gio.Icon.to_string</link></methodname>() and
-            <methodname><link linkend="method-gioicon- -new-from-string">gio.Icon.new_from_string</link></methodname>(). 
-        </para>
-        <para>
-            If your application or library provides one or more
-            <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-            implementations you need to ensure that each GType is registered
-            with the type system prior to calling
-            <methodname><link linkend="function-gioicon--new-from-string">gio.icon_new_from_string</link></methodname>(). 
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-gioicon--equal">
-            <title>gio.Icon.equal</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>equal</methodname>
-                <methodparam><parameter role="keyword">icon2</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>icon2</parameter>&nbsp;:</term>
-                    <listitem><simpara>the second
-                    <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>equal</methodname>() method checks if two icons are equal.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioicon--to-string">
-            <title>gio.Icon.to_string</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>to_string</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>An UTF8 string or <literal>None</literal>
-                   if icon can't be serialized.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>to_string</methodname>() method generates a textual
-               representation of icon that can be used for serialization such as when
-               passing icon to a different process or saving it to persistent storage. Use
-               <methodname><link linkend="function-gio--icon-new-from-string">gio.icon_new_from_string</link></methodname>()
-               to get icon back from the returned string.
-            </para>
-           <para>
-               The encoding of the returned string is proprietary to GIcon except in the following two cases
-           </para>
-           <para>
-               If icon is a <link linkend="class-giofileicon"><classname>gio.FileIcon</classname></link>,
-               the returned string is a native path (such as /path/to/my icon.png) without escaping
-               if the <link linkend="class-giofile"><classname>gio.File</classname></link>
-               for icon is a native file. If the file is not native, the returned string is the result of
-               <methodname><link linkend="method-giofile--get-uri">gio.File.get_uri</link></methodname>()
-               (such as sftp://path/to/my%20icon.png).
-           </para>
-           <para>
-               If icon is a <link linkend="class-giothemedicon"><classname>gio.ThemedIcon</classname></link>
-               with exactly one name, the encoding is simply the name (such as network-server).
-           </para>
-        </refsect2>
-    </refsect1>
-    
-    <refsect1>
-        <title>Functions</title>
-
-        <refsect2 id="function-gio--icon-new-from-string">
-            <title>gio.icon_new_from_string</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>icon_new_from_string</methodname>
-                <methodparam><parameter role="keyword">str</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>str</parameter>&nbsp;:</term>
-                    <listitem><simpara>A string obtained via
-                   <methodname><link linkend="method-gioicon--to-string">gio.Icon.to_string</link></methodname>().
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>An object implementing the
-                   <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-                   interface or <literal>None</literal> if error is set.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>icon_new_from_string</methodname>() function generate a
-               <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-               instance from str. This function can fail if str is not valid - see
-               <methodname><link linkend="method-gioicon--to-string">gio.Icon.to_string</link></methodname>()
-               for discussion.
-            </para>
-            <para>
-                If your application or library provides one or more GIcon implementations you need
-               to ensure that each GType is registered with the type system prior to calling
-               <methodname><link linkend="function-gio--icon-new-from-string">gio.icon_new_from_string</link></methodname>().
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-inputstream.xml b/docs/reference/pygio-inputstream.xml
deleted file mode 100644 (file)
index 1bef333..0000000
+++ /dev/null
@@ -1,730 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gioinputstream">
-    <refnamediv>
-        <refname>gio.InputStream</refname>
-        <refpurpose>Base class for implementing streaming input</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.InputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--clear-pending">clear_pending</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--close">close</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--close-async">close_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--close-finish">close_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--has-pending">has_pending</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--is-closed">is_closed</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--read">read</link></methodname>
-        <methodparam><parameter role="keyword">count</parameter><initializer>-1</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--read-async">read_async</link></methodname>
-        <methodparam><parameter role="keyword">count</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--read-finish">read_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--read-part">read_part</link></methodname>
-        <methodparam><parameter role="keyword">count</parameter><initializer>-1</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--set-pending">set_pending</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--skip">skip</link></methodname>
-        <methodparam><parameter role="keyword">count</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--skip-async">skip_async</link></methodname>
-        <methodparam><parameter role="keyword">count</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioinputstream--skip-finish">skip_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-gioinputstream">gio.InputStream</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>
-            has functions to read from a stream (
-            <methodname><link linkend="method-gioinputstream--read">gio.InputStream.read</link></methodname>()
-            ), to close a stream (
-            <methodname><link linkend="method-gioinputstream--close">gio.InputStream.close</link></methodname>()
-            ) and to skip some content (
-            <methodname><link linkend="method-gioinputstream--skip">gio.InputStream.skip</link></methodname>()
-            ).
-        </para>
-        <para>
-            To copy the content of an input stream to an output stream without manually
-            handling the reads and writes, use
-            <methodname><link linkend="method-giooutputstream--skip">gio.OutputStream.splice</link></methodname>().
-        </para>
-        <para>
-            All of these functions have async variants too.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-gioinputstream--clear-pending">
-            <title>gio.InputStream.clear_pending</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>clear_pending</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            </variablelist>
-    
-            <para>
-                The <methodname>clear_pending</methodname>() method clears the pending flag on stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--close">
-            <title>gio.InputStream.close</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>close</methodname>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> on success
-                    <literal>False</literal> on failure.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>close</methodname>() method closes the stream, releasing
-                resources related to it.
-            </para>
-            <para>
-                Once the stream is closed, all other operations will return gio.ERROR_CLOSED.
-                Closing a stream multiple times will not return an error.
-            </para>
-            <para>
-                Streams will be automatically closed when the last reference is dropped, but
-                you might want to call this function to make sure resources are released as
-                early as possible.
-            </para>
-            <para>
-                Some streams might keep the backing store of the stream (e.g. a file descriptor)
-                open after the stream is closed. See the documentation for the individual
-                stream for details.
-            </para>
-            <para>
-                On failure the first error that happened will be reported, but the close operation
-                will finish as much as possible. A stream that failed to close will still return
-                gio.ERROR_CLOSED for all operations. Still, it is important to check and report
-                the error to the user.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. Cancelling a close will still leave
-                the stream closed, but some streams can use a faster close that doesn't block to e.g.
-                check errors.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--close-async">
-            <title>gio.InputStream.close_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>close_async</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>close_async</methodname>() method asynchronously requests an
-                asynchronous closes of the stream, releasing resources related to it.
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-gioinputstream--close">gio.InputStream.close</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-gioinputstream--close-finish">gio.InputStream.close_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--close-finish">
-            <title>gio.InputStream.close_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>close_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the stream was closed successfully.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>close_finish</methodname>() method finishes an asynchronous
-                file append operation started with
-                <methodname><link linkend="method-gioinputstream--close-async">gio.InputStream.close_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--has-pending">
-            <title>gio.InputStream.has_pending</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>has_pending</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if stream has pending actions.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>has_pending</methodname>() method checks if an input stream has pending actions.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--is-closed">
-            <title>gio.InputStream.is_closed</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>is_closed</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the stream is closed.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>is_closed</methodname>() method checks if an input stream is closed.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--read">
-            <title>gio.InputStream.read</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read</methodname>
-                <methodparam><parameter role="keyword">count</parameter><initializer>-1</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">count</parameter>&nbsp;:</term>
-                  <listitem><simpara>optionally the number of bytes that will be read from the stream.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>The number of bytes read, or -1 on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read</methodname>() method tries to read count bytes from
-                the stream into the buffer starting at buffer. Will block during this read.
-            </para>
-            <para>
-                This function is similar to
-                <methodname><link linkend="method-gioinputstream--read-part">gio.InputStream.read_part</link></methodname>(),
-                except it tries to read as many bytes as requested, only stopping on an error or end of stream.
-            </para>
-            <para>
-                On a successful read of count bytes, or if we reached the end of the stream,
-                <literal>True</literal> is returned, and bytes_read is set to the number of bytes read into buffer.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. Cancelling a close will still leave
-                the stream closed, but some streams can use a faster close that doesn't block to e.g.
-                check errors.
-            </para>
-            <para>
-                If there is an error during the operation <literal>False</literal> is returned and error
-                is set to indicate the error status, bytes_read is updated to contain the number of
-                bytes read into buffer before the error occurred.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--read-async">
-            <title>gio.InputStream.read_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_async</methodname>
-                <methodparam><parameter role="keyword">count</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>count</parameter>&nbsp;:</term>
-                    <listitem><simpara>the number of bytes that will be read from the stream.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_async</methodname>() method requests an asynchronous read
-                of count bytes from the stream into the buffer.
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-gioinputstream--read">gio.InputStream.read</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-gioinputstream--read-finish">gio.InputStream.read_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-            <para>
-                During an async request no other sync and async calls are allowed, and
-                will result in gio.ERROR_PENDING errors.
-            </para>
-            <para>
-                A value of count larger than G_MAXSSIZE will cause a gio.ERROR_INVALID_ARGUMENT error.
-            </para>
-            <para>
-                On success, the number of bytes read into the buffer will be passed to the callback.
-                It is not an error if this is not the same as the requested size, as it can happen e.g.
-                near the end of a file, but generally we try to read as many bytes as requested. Zero
-                is returned on end of file (or if count is zero), but never otherwise.
-            </para>
-            <para>
-                Any outstanding i/o request with higher priority (lower numerical value) will be
-                executed before an outstanding request with lower priority. Default priority is glib.PRIORITY_DEFAULT.
-            </para>
-            <para>
-                The asyncronous methods have a default fallback that uses threads to implement asynchronicity, so
-                they are optional for inheriting classes. However, if you override one you must override all.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--read-finish">
-            <title>gio.InputStream.read_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>The number of bytes read in, or -1 on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_finish</methodname>() method finishes an asynchronous
-                stream read operation started by
-                <methodname><link linkend="method-gioinputstream--read-async">gio.InputStream.read_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--read-part">
-            <title>gio.InputStream.read_part</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>read_part</methodname>
-                <methodparam><parameter role="keyword">count</parameter><initializer>-1</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">count</parameter>&nbsp;:</term>
-                  <listitem><simpara>optionally the number of bytes that will be read from the stream.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>The number of bytes read, or -1 on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>read_part</methodname>() method tries to read count bytes from
-                the stream into the buffer starting at buffer. Will block during this read.
-            </para>
-            <para>
-                If count is zero returns zero and does nothing. A value of count larger than
-                G_MAXSSIZE will cause a gio.ERROR_INVALID_ARGUMENT error.
-            </para>
-            <para>
-                On success, the number of bytes read into the buffer is returned. It is
-                not an error if this is not the same as the requested size, as it can
-                happen e.g. near the end of a file. Zero is returned on end of file
-                (or if count is zero), but never otherwise.
-            </para>
-            <para>
-               If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. Cancelling a close will still leave
-                the stream closed, but some streams can use a faster close that doesn't block to e.g.
-                check errors.
-            </para>
-            <para>
-                On error -1 is returned and error is set accordingly.
-            </para>
-            <note>
-                This method roughly corresponds to C GIO g_input_stream_read.
-            </note>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--set-pending">
-            <title>gio.InputStream.set_pending</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_pending</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if pending was previously
-                    unset and is now set.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_pending</methodname>() method sets stream to have actions pending.
-                If the pending flag is already set or stream is closed,
-                it will return <literal>False</literal> and set error.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--skip">
-            <title>gio.InputStream.skip</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>skip</methodname>
-                <methodparam><parameter role="keyword">count</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">count</parameter>&nbsp;:</term>
-                  <listitem><simpara>the number of bytes that will be skipped from the stream.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>The number of bytes skipped, or -1 on error
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>skip</methodname>() method tries to skip count bytes
-                from the stream. Will block during the operation.
-            </para>
-            <para>
-                This is identical to
-                <methodname><link linkend="method-gioinputstream--read">read</link></methodname>(),
-                from a behaviour standpoint, but the bytes that are skipped are not
-                returned to the user. Some streams have an implementation that is more
-                efficient than reading the data.
-            </para>
-            <para>
-                This function is optional for inherited classes, as the default implementation emulates it using read.
-            </para>
-            <para>
-               If cancellable is not <literal>None</literal>, then the operation can be cancelled by
-                triggering the cancellable object from another thskip. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned. Cancelling a close will still leave
-                the stream closed, but some streams can use a faster close that doesn't block to e.g.
-                check errors.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--skip-async">
-            <title>gio.InputStream.skip_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>skip_async</methodname>
-                <methodparam><parameter role="keyword">count</parameter></methodparam>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>count</parameter>&nbsp;:</term>
-                    <listitem><simpara>the number of bytes that will be skipped from the stream.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncskipyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>io_priority</parameter>&nbsp;:</term>
-                    <listitem><simpara>the
-                    <xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-                    of the request. 
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>skip_async</methodname>() method request an asynchronous
-                skip of count bytes from the stream.
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-gioinputstream--skip">gio.InputStream.skip</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-gioinputstream--skip-finish">gio.InputStream.skip_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-            <para>
-                During an async request no other sync and async calls are allowed, and
-                will result in gio.ERROR_PENDING errors.
-            </para>
-            <para>
-                A value of count larger than G_MAXSSIZE will cause a gio.ERROR_INVALID_ARGUMENT error.
-            </para>
-            <para>
-                On success, the number of bytes skipped will be passed to the callback. It is
-                not an error if this is not the same as the requested size, as it can happen
-                e.g. near the end of a file, but generally we try to skip as many bytes as requested.
-                Zero is returned on end of file (or if count is zero), but never otherwise.
-            </para>
-            <para>
-                Any outstanding i/o request with higher priority (lower numerical value) will be
-                executed before an outstanding request with lower priority. Default priority is glib.PRIORITY_DEFAULT.
-            </para>
-            <para>
-                The asyncronous methods have a default fallback that uses thskips to implement asynchronicity, so
-                they are optional for inheriting classes. However, if you override one you must override all.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioinputstream--skip-finish">
-            <title>gio.InputStream.skip_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>skip_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>The number of bytes skipped in, or -1 on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>skip_finish</methodname>() method finishes an asynchronous
-                stream skip operation started by
-                <methodname><link linkend="method-gioinputstream--skip-async">gio.InputStream.skip_async</link></methodname>().
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-loadableicon.xml b/docs/reference/pygio-loadableicon.xml
deleted file mode 100644 (file)
index 93198c4..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gioloadableicon">
-    <refnamediv>
-        <refname>gio.LoadableIcon</refname>
-        <refpurpose>Interface for icons.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.LoadableIcon</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobjectginterface">gobject.GInterface</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioloadableicon--load">load</link></methodname>
-        <methodparam><parameter role="keyword">size</parameter><initializer>0</initializer></methodparam>
-       <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioloadableicon--load-async">load_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-       <methodparam><parameter role="keyword">size</parameter><initializer>0</initializer></methodparam>
-       <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-       <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioloadableicon--load-finish">load_finish</link></methodname>
-       <methodparam><parameter role="keyword">res</parameter></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectginterface">gobject.GInterface</link>
-  +-- <link linkend="class-gioloadableicon">gio.LoadableIcon</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Prerequisites</title>
-        <para>
-            <link linkend="class-gioloadableicon"><classname>gio.LoadableIcon</classname></link> requires
-            <link linkend="class-gioicon"><classname>gio.Icon</classname></link>. and
-           <link linkend="class-gobject"><classname>gobject.GObject</classname></link>
-        </para>
-    </refsect1>
-    
-    <refsect1>
-       <title>Known Implementation</title>
-        <para>
-            <link linkend="class-gioloadableicon"><classname>gio.LoadableIcon</classname></link> is implemented by
-            <link linkend="class-giofileicon"><classname>gio.FileIcon</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-gioloadableicon"><classname>gio.LoadableIcon</classname></link>
-            extends the <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-           interface and adds the ability to load icons from streams.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-gioloadableicon--load">
-            <title>gio.LoadableIcon.load</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>load</methodname>
-                <methodparam><parameter role="keyword">size</parameter><initializer>0</initializer></methodparam>
-               <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>size</parameter>&nbsp;:</term>
-                    <listitem><simpara>an integer
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a 2 tuple containing a
-                   <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>
-                   to read the icon from and a string containing the icon type.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>load</methodname>() method loads a loadable icon.
-               For the asynchronous version of this function, see
-               <methodname><link linkend="method-gioloadableicon--load-async">gio.LoadableIcon.load_async</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioloadableicon--load-async">
-            <title>gio.LoadableIcon.load_async</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>load_async</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-               <methodparam><parameter role="keyword">size</parameter><initializer>0</initializer></methodparam>
-               <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-               <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>callback</parameter>&nbsp;:</term>
-                    <listitem><simpara>a GAsyncReadyCallback to call when the request is satisfied.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>size</parameter>&nbsp;:</term>
-                    <listitem><simpara>an integer
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>optional
-                    <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    object, <literal>None</literal> to ignore.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_data</parameter>&nbsp;:</term>
-                    <listitem><simpara>the data to pass to callback function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>load_async</methodname>() method loads an icon asynchronously.
-            </para>
-            <para>
-                For more details, see
-                <methodname><link linkend="method-gioloadableicon--load">gio.LoadableIcon.load</link></methodname>()
-                which is the synchronous version of this call. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-gioloadableicon--load-finish">gio.LoadableIcon.load_finish</link></methodname>()
-                to get the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioloadableicon--load-finish">
-            <title>gio.LoadableIcon.load_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>load_finish</methodname>
-                <methodparam><parameter role="keyword">res</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>res</parameter>&nbsp;:</term>
-                    <listitem><simpara>a
-                   <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a 2 tuple containing a
-                   <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>
-                   to read the icon from and a string containing the icon type.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>load_finish</methodname>() method finishes an asynchronous
-                icon load started in 
-                <methodname><link linkend="method-gioloadableicon--load-async">gio.LoadableIcon.load_async</link></methodname>().
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-memoryinputstream.xml b/docs/reference/pygio-memoryinputstream.xml
deleted file mode 100644 (file)
index 7d8cffb..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giomemoryinputstream">
-    <refnamediv>
-        <refname>gio.MemoryInputStream</refname>
-        <refpurpose>Base class for implementing streaming input</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.MemoryInputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-gioinputstream">gio.InputStream</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-giomemoryinputstream">gio.MemoryInputStream</link></methodname>
-       <methodparam></methodparam>
-    </constructorsynopsis>
-    
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomemoryinputstream--add-data">add_data</link></methodname>
-        <methodparam><parameter role="keyword">data</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-<programlisting>
-<emphasis role="bold">Functions</emphasis>
-<methodsynopsis language="python">
-    <methodname><link linkend="function-gio--memory-input-stream-new-from-data">gio.memory_input_stream_new_from_data</link></methodname>
-    <methodparam><parameter role="keyword">data</parameter></methodparam>
-</methodsynopsis></programlisting>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-gioinputstream">gio.InputStream</link>
-    +-- <link linkend="class-giomemoryinputstream">gio.MemoryInputStream</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Implemented Interfaces</title>
-        <para>
-            <link linkend="class-giomemoryinputstream"><classname>gio.MemoryInputStream</classname></link>
-            implements
-            <link linkend="class-gioseekable"><classname>gio.Seekable</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giomemoryinputstream"><classname>gio.MemoryInputStream</classname></link>
-            is a class for using arbitrary memory chunks as input for GIO streaming input operations.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giomemoryinputstream">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.MemoryInputStream</methodname>
-            <methodparam><parameter role="keyword">icon</parameter></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giomemoryinputstream"><classname>gio.MemoryInputStream</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates an empty
-            <link linkend="class-giomemoryinputstream"><classname>gio.MemoryInputStream</classname></link>.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giomemoryinputstream--add-data">
-            <title>gio.MemoryInputStream.add_data</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>add_data</methodname>
-                <methodparam><parameter role="keyword">data</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">data</parameter>&nbsp;:</term>
-                  <listitem><simpara>input data.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>add_data</methodname>() method appends data to data
-                that can be read from the input stream
-            </para>
-        </refsect2>
-    </refsect1>
-    
-    <refsect1>
-        <title>Functions</title>
-
-        <refsect2 id="function-gio--memory-input-stream-new-from-data">
-            <title>gio.memory_input_stream_new_from_data</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>memory_input_stream_new_from_data</methodname>
-                <methodparam><parameter role="keyword">data</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>data</parameter>&nbsp;:</term>
-                    <listitem><simpara>input data.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A new
-                    <link linkend="class-giomemoryinputstream"><classname>gio.MemoryInputStream</classname></link>
-                    read from data
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>memory_input_stream_new_from_data</methodname>() function creates
-                a new <link linkend="class-giomemoryinputstream"><classname>gio.MemoryInputStream</classname></link>
-                with data in memory.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-memoryoutputstream.xml b/docs/reference/pygio-memoryoutputstream.xml
deleted file mode 100644 (file)
index f044496..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giomemoryoutputstream">
-    <refnamediv>
-        <refname>gio.MemoryOutputStream</refname>
-        <refpurpose>Streaming output operations on memory chunks</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.MemoryOutputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-giooutputstream">gio.OutputStream</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-giomemoryoutputstream">gio.MemoryOutputStream</link></methodname>
-       <methodparam></methodparam>
-    </constructorsynopsis>
-    
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomemoryoutputstream--get-contents">get_contents</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomemoryoutputstream--get-data-size">get_data_size</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomemoryoutputstream--get-size">get_size</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giooutputstream">gio.OutputStream</link>
-    +-- <link linkend="class-giomemoryoutputstream">gio.MemoryOutputStream</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Implemented Interfaces</title>
-        <para>
-            <link linkend="class-giomemoryoutputstream"><classname>gio.MemoryOutputStream</classname></link>
-            implements
-            <link linkend="class-gioseekable"><classname>gio.Seekable</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giomemoryoutputstream"><classname>gio.MemoryOutputStream</classname></link>
-            is a class for using arbitrary memory chunks as output for GIO streaming output operations.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giomemoryoutputstream">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.MemoryOutputStream</methodname>
-            <methodparam></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giomemoryoutputstream"><classname>gio.MemoryOutputStream</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new
-            <link linkend="class-giomemoryoutputstream"><classname>gio.MemoryOutputStream</classname></link>.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giomemoryoutputstream--get-contents">
-            <title>gio.MemoryOutputStream.get_contents</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_contents</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the stream's data
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_contents</methodname>() method gets any loaded data
-                from the ostream.
-            </para>
-            <para>
-                Note that the returned data may become invalid on the next write or truncate
-                operation on the stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomemoryoutputstream--get-data-size">
-            <title>gio.MemoryOutputStream.get_data_size</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_data_size</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the number of bytes written to the stream
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_data_size</methodname>() method returns the number
-                of bytes from the start up to including the last byte written in the
-                stream that has not been truncated away.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomemoryoutputstream--get-size">
-            <title>gio.MemoryOutputStream.get_size</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_size</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the number of bytes allocated for the data buffer
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_size</methodname>() method gets the size of the
-                currently allocated data area (availible from
-                <methodname><link linkend="method-giomemoryoutputstream--get-contents">gio.MemoryOutputStream.get_contents</link></methodname>()
-                ).
-            </para>
-            <para>
-                Note that for growable streams the returned size may become invalid on the next write or truncate operation on the stream.
-            </para>
-            <para>
-                If you want the number of bytes currently written to the stream, use
-                <methodname><link linkend="method-giomemoryoutputstream--get-data-size">gio.MemoryOutputStream.get_data_size</link></methodname>().
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-mount.xml b/docs/reference/pygio-mount.xml
deleted file mode 100644 (file)
index f01b155..0000000
+++ /dev/null
@@ -1,962 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giomount">
-    <refnamediv>
-        <refname>gio.Mount</refname>
-        <refpurpose>Mount management</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.Mount</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobjectginterface">gobject.GInterface</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--can-eject">can_eject</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis><methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--can-unmount">can_unmount</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--eject">eject</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_UNMOUNT_NONE</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--eject-finish">eject_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--get-drive">get_drive</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--get-icon">get_icon</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--get-name">get_name</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--get-root">get_root</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--get-uuid">get_uuid</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--get-volume">get_volume</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--guess-content-type">guess_content_type</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">force_rescan</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--guess-content-type-finish">guess_content_type_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--guess-content-type-sync">guess_content_type_sync</link></methodname>
-        <methodparam><parameter role="keyword">force_rescan</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--is-shadowed">is_shadowed</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--remount">remount</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_UNMOUNT_NONE</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">mount_operation</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--remount-finish">remount_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--shadow">shadow</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--unmount">unmount</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_UNMOUNT_NONE</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--unmount-finish">unmount_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomount--unshadow">unshadow</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectginterface">gobject.GInterface</link>
-  +-- <link linkend="class-giomount">gio.Mount</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Prerequisites</title>
-        <para>
-            <link linkend="class-giomount"><classname>gio.Mount</classname></link> requires
-            <link linkend="class-gobject"><classname>gobject.GObject</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1 id="signal-prototypes-giomount">
-        <title>gio.Mount Signal Prototypes</title>
-  
-        <para><link linkend="signal-prototypes-gobject">gobject.GObject Signal Prototypes</link></para>
-  
-        <variablelist>
-            <varlistentry>
-                <term><link linkend="signal-giomount--aborted">"aborted"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>mount</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giomount--changed">"changed"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>mount</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giomount--unmounted">"unmounted"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>mount</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-        </variablelist>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-            interface represents user-visible mounts. Note, when porting from GnomeVFS,
-            <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-            is the moral equivalent of GnomeVFSVolume.
-            
-        </para>
-        <para>
-            <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-            is a "mounted" filesystem that you can access. Mounted is in quotes because
-            it's not the same as a unix mount, it might be a gvfs mount, but you can still
-            access the files on it if you use GIO. Might or might not be related to a volume object.
-        </para>
-        <para>
-            Unmounting a GMount instance is an asynchronous operation. For more information
-            about asynchronous operations, see GAsyncReady and GSimpleAsyncReady. To unmount
-            a <link linkend="class-giomount"><classname>gio.Mount</classname></link> instance,
-            first call
-            g_mount_unmount()
-            with (at least) the GMount instance and a GAsyncReadyCallback. The callback will
-            be fired when the operation has resolved (either with success or failure), and a
-            GAsyncReady structure will be passed to the callback. That callback should then call
-            g_mount_unmount_finish()
-            with the GMount and the GAsyncReady data to see if the operation was completed successfully.
-            If an error is present when g_mount_unmount_finish() is called, then it will be filled
-            with any error information.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-        
-        <refsect2 id="method-giomount--can-eject">
-            <title>gio.Mount.can_eject</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>can_eject</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the mount can be ejected,
-                    <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>can_eject</methodname>() method checks if a mount can be ejected.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giomount--can-unmount">
-            <title>gio.Mount.can_unmount</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>can_unmount</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the mount can be unmounted,
-                    <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>can_eject</methodname>() method checks if a mount can be unmounted.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomount--eject">
-            <title>gio.Mount.eject</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>eject</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_UNMOUNT_NONE</literal></initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">callback</parameter>&nbsp;:</term>
-                  <listitem><simpara>A GAsyncReadyCallback to call when the request is satisfied.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">flags</parameter>&nbsp;:</term>
-                  <listitem><simpara>flags affecting the unmount if required for eject
-                  <xref linkend="gio-mount-unmount-flags-constants" endterm="gio-mount-unmount-flags-constants-title"></xref>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">user_data</parameter>&nbsp;:</term>
-                  <listitem><simpara>The data to pass to callback function.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>eject</methodname>() method asynchronously ejects a mount. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giomount--eject-finish">gio.Mount.eject_finish</link></methodname>()
-                to obtain the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomount--eject-finish">
-            <title>gio.Mount.eject_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>eject_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the mount has been ejected
-                    successfully, <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>eject_finish</methodname>() method finishes ejecting a mount.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giomount--get-drive">
-            <title>gio.Mount.get_drive</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_drive</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><link linkend="class-giodrive"><classname>gio.Drive</classname></link>
-                    or <literal>None</literal> if mount is not associated with a volume or a drive.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_drive</methodname>() method gets the drive for the mount.
-            </para>
-            <para>
-                This is a convenience method for getting the
-                <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                and then using that object to get the
-                <link linkend="class-giodrive"><classname>gio.Drive</classname></link>.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giomount--get-icon">
-            <title>gio.Mount.get_icon</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_icon</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-                    for the mount.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_icon</methodname>() method gets the icon for mount.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giomount--get-name">
-            <title>gio.Mount.get_name</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_name</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the name for the given mount.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_name</methodname>() method gets the name of mount.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giomount--get-root">
-            <title>gio.Mount.get_root</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_root</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giofile"><classname>gio.File</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_root</methodname>() method gets the root directory on mount.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giomount--get-uuid">
-            <title>gio.Mount.get_uuid</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_uuid</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the UUID for mount or <literal>None</literal>
-                    if no UUID can be computed.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_uuid</methodname>() method gets the UUID for the mount.
-                The reference is typically based on the file system UUID for the mount in
-                question and should be considered an opaque string. Returns <literal>None</literal>
-                if there is no UUID available
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giomount--get-volume">
-            <title>gio.Mount.get_volume</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_volume</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                    or <literal>None</literal> if mount is not associated with a volume.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_volume</methodname>() method gets the volume for the mount.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomount--guess-content-type">
-            <title>gio.Mount.guess_content_type</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>guess_content_type</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">force_rescan</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">callback</parameter>&nbsp;:</term>
-                  <listitem><simpara>A GAsyncReadyCallback to call when the request is satisfied.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">force_rescan</parameter>&nbsp;:</term>
-                  <listitem><simpara>Whether to force a rescan of the content. Otherwise a cached result will be used if available.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">user_data</parameter>&nbsp;:</term>
-                  <listitem><simpara>The data to pass to callback function.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>guess_content_type</methodname>() method asynchronously tries to guess the type of
-                content stored on mount. Returns one or more textual identifiers of well-known content
-                types (typically prefixed with "x-content/"), e.g. x-content/image-dcf for camera memory
-                cards. See the shared-mime-info specification for more on x-content types.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giomount--guess-content-type-finish">gio.Mount.guess_content_type_finish</link></methodname>()
-                to obtain the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomount--guess-content-type-finish">
-            <title>gio.Mount.guess_content_type_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>guess_content_type_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A list of types or <literal>None</literal> on error.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <!-- XXX This description must be incorrect! -->
-            <para>
-                The <methodname>guess_content_type_finish</methodname>() method finishes guessing content
-                types of mount. If any errors occured during the operation, error will be set to
-                contain the errors and <literal>False</literal> will be returned. In particular, you may get an
-                gio.ERROR_NOT_SUPPORTED if the mount does not support content guessing.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomount--guess-content-type-sync">
-            <title>gio.Mount.guess_content_type_sync</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>guess_content_type_sync</methodname>
-                <methodparam><parameter role="keyword">force_rescan</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">force_rescan</parameter>&nbsp;:</term>
-                  <listitem><simpara>Whether to force a rescan of the content. Otherwise a cached result will be used if available.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>guess_content_type_sync</methodname>() method tries to guess
-                the type of content stored on mount. Returns one or more textual identifiers
-                of well-known content types (typically prefixed with "x-content/"), e.g.
-                x-content/image-dcf for camera memory cards. See the shared-mime-info specification
-                for more on x-content types.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-            <para>
-                This is an synchronous operation and as such may block doing IO; see
-                <methodname><link linkend="method-giomount--guess-content-type">gio.Mount.guess_content_type</link></methodname>()
-                for the asynchronous version.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giomount--is-shadowed">
-            <title>gio.Mount.is_shadowed</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>is_shadowed</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if mount is shadowed.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>is_shadowed</methodname>() method determines if mount
-                is shadowed. Applications or libraries should avoid displaying mount
-                in the user interface if it is shadowed.
-            </para>
-            <para>
-                A mount is said to be shadowed if there exists one or more user visible
-                objects (currently
-                <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                objects) with a root that is inside the root of mount.
-            </para>
-            <para>
-                One application of shadow mounts is when exposing a single file system
-                that is used to address several logical volumes. In this situation, a
-                <link linkend="class-giovolumemonitor"><classname>gio.VolumeMonitor</classname></link>
-                implementation would create two
-                <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                objects (for example, one for the camera functionality of the device
-                and one for a SD card reader on the device) with activation URIs
-                gphoto2://[usb:001,002]/store1/ and gphoto2://[usb:001,002]/store2/.
-                When the underlying mount (with root gphoto2://[usb:001,002]/) is
-                mounted, said
-                <link linkend="class-giovolumemonitor"><classname>gio.VolumeMonitor</classname></link>
-                implementation would create two
-                <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                objects (each with their root matching the corresponding volume
-                activation root) that would shadow the original mount.
-            </para>
-            <para>
-                The proxy monitor in GVfs 2.26 and later, automatically creates and
-                manage shadow mounts (and shadows the underlying mount) if the activation
-                root on a <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                is set.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomount--remount">
-            <title>gio.Mount.remount</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>remount</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_UNMOUNT_NONE</literal></initializer></methodparam>
-                <methodparam><parameter role="keyword">mount_operation</parameter><initializer><literal>None</literal></initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">callback</parameter>&nbsp;:</term>
-                  <listitem><simpara>A GAsyncReadyCallback to call when the request is satisfied.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">flags</parameter>&nbsp;:</term>
-                  <listitem><simpara>flags affecting the unmount if required for eject
-                  <xref linkend="gio-mount-unmount-flags-constants" endterm="gio-mount-unmount-flags-constants-title"></xref>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">mount_operation</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-giomountoperation"><classname>gio.MountOperation</classname></link>
-                  or <literal>None</literal> to avoid user interaction.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">user_data</parameter>&nbsp;:</term>
-                  <listitem><simpara>The data to pass to callback function.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>remount</methodname>() method asynchronously remounts a mount.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giomount--remount-finish">gio.Mount.remount_finish</link></methodname>()
-                to obtain the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomount--remount-finish">
-            <title>gio.Mount.remount_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>remount_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the mount has been remounted
-                    successfully, <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>remount_finish</methodname>() method finishes remounting a mount.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giomount--shadow">
-            <title>gio.Mount.shadow</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>shadow</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            </variablelist>
-    
-            <para>
-                The <methodname>shadow</methodname>() method increments the shadow
-                count on mount. Usually used by
-                <link linkend="class-giovolumemonitor"><classname>gio.VolumeMonitor</classname></link>
-                implementations when creating a shadow mount for mount, see
-                <methodname><link linkend="method-giomount--is-shadowed">gio.Mount.is_shadowed</link></methodname>()
-                for more information. The caller will need to emit the "changed"
-                signal on mount manually.
-            </para>
-            
-        </refsect2>
-
-        <refsect2 id="method-giomount--unmount">
-            <title>gio.Mount.unmount</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>unmount</methodname>
-                <methodparam><parameter role="keyword">callback</parameter></methodparam>
-                <methodparam><parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_UNMOUNT_NONE</literal></initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-                <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">callback</parameter>&nbsp;:</term>
-                  <listitem><simpara>A GAsyncReadyCallback to call when the request is satisfied.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">flags</parameter>&nbsp;:</term>
-                  <listitem><simpara>flags affecting the unmount if required for eject
-                  <xref linkend="gio-mount-unmount-flags-constants" endterm="gio-mount-unmount-flags-constants-title"></xref>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">user_data</parameter>&nbsp;:</term>
-                  <listitem><simpara>The data to pass to callback function.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>unmount</methodname>() method asynchronously unmounts a mount.
-            </para>
-            <para>
-                If cancellable is not <literal>None</literal>, then the operation can be cancelled
-                by triggering the cancellable object from another thread. If the operation was cancelled,
-                the error gio.ERROR_CANCELLED will be returned.
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giomount--unmount-finish">gio.Mount.unmount_finish</link></methodname>()
-                to obtain the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomount--unmount-finish">
-            <title>gio.Mount.unmount_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>unmount_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the mount has been unmounted
-                    successfully, <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>unmount_finish</methodname>() method finishes unmounting a mount.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giomount--unshadow">
-            <title>gio.Mount.unshadow</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>unshadow</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            </variablelist>
-    
-            <para>
-                The <methodname>unshadow</methodname>() method decrements the shadow
-                count on mount. Usually used by
-                <link linkend="class-giovolumemonitor"><classname>gio.VolumeMonitor</classname></link>
-                implementations when destroying a shadow mount for mount, see
-                <methodname><link linkend="method-giomount--is-shadowed">gio.Mount.is_shadowed</link></methodname>()
-                for more information. The caller will need to emit the "changed"
-                signal on mount manually.
-            </para>
-            
-        </refsect2>
-    </refsect1>
-
-    <refsect1>
-        <title>Signals</title>
-    
-        <refsect2 id="signal-giomount--aborted">
-            <title>The "aborted" gio.Mount Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>mount</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>mount</parameter>&nbsp;:</term>
-                    <listitem><simpara>the mount</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted by the backend when e.g. a device becomes unavailable while a
-                mount operation is in progress.
-            </para>
-            <para>
-                Implementations of <link linkend="class-giomountoperation"><classname>gio.MountOperation</classname></link>
-                should handle this signal by dismissing open password dialogs.
-            </para>
-        </refsect2>
-        <refsect2 id="signal-giomount--changed">
-            <title>The "changed" gio.Mount Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>mount</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>mount</parameter>&nbsp;:</term>
-                    <listitem><simpara>the mount</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when the mount has been changed.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giomount--unmounted">
-            <title>The "unmounted" gio.Mount Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>mount</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>mount</parameter>&nbsp;:</term>
-                    <listitem><simpara>the mount</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                This signal is emitted when the
-                <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                have been unmounted.
-            </para>
-        </refsect2>
-  
-  </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-mountoperation.xml b/docs/reference/pygio-mountoperation.xml
deleted file mode 100644 (file)
index 34dec13..0000000
+++ /dev/null
@@ -1,726 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giomountoperation">
-    <refnamediv>
-        <refname>gio.MountOperation</refname>
-        <refpurpose>Authentication methods for mountable locations.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.MountOperation</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-    <methodname><link linkend="constructor-giomountoperation">gio.MountOperation</link></methodname>
-    <methodparam></methodparam>
-    </constructorsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--get-anonymous">get_anonymous</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--get-choice">get_choice</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--get-domain">get_domain</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--get-password">get_password</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--get-password-save">get_password_save</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--get-username">get_username</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--reply">replay</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--set-anonymous">set_anonymous</link></methodname>
-        <methodparam><parameter role="keyword">anonymous</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--set-choice">set_choice</link></methodname>
-        <methodparam><parameter role="keyword">choice</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--set-domain">set_domain</link></methodname>
-        <methodparam><parameter role="keyword">domain</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--set-password">set_password</link></methodname>
-        <methodparam><parameter role="keyword">password</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--set-password-save">set_password_save</link></methodname>
-        <methodparam><parameter role="keyword">save</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giomountoperation--set-username">set_username</link></methodname>
-        <methodparam><parameter role="keyword">username</parameter></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giomountoperation">gio.MountOperation</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giomountoperation">
-        <title>gio.MountOperation Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"anonymous"</entry>
-                            <entry>Read/Write</entry>
-                            <entry>
-                                Whether to use an anonymous user when authenticating.
-                                Default value: <literal>False</literal>
-                            </entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"choice"</entry>
-                            <entry>Read/Write</entry>
-                            <entry>
-                                The index of the user's choice when a question is asked during
-                                the mount operation. See the "ask-question" signal.
-                                Allowed values: >= 0 Default value: 0
-                            </entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"domain"</entry>
-                            <entry>Read/Write</entry>
-                            <entry>
-                                The domain to use for the mount operation. Default value: <literal>None</literal>
-                            </entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"password"</entry>
-                            <entry>Read/Write</entry>
-                            <entry>
-                                The password that is used for authentication when carrying out the
-                                mount operation. Default value: <literal>None</literal>
-                            </entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"password-save"</entry>
-                            <entry>Read/Write</entry>
-                            <entry>
-                                Determines if and how the password information should be saved.
-                                Default value: gio.PASSWORD_SAVE_NEVER
-                            </entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"username"</entry>
-                            <entry>Read/Write</entry>
-                            <entry>
-                                The user name that is used for authentication when carrying out the
-                                mount operation. Default value: <literal>None</literal>
-                            </entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1 id="signal-prototypes-giomountoperation">
-        <title>gio.MountOperation Signal Prototypes</title>
-  
-        <para><link linkend="signal-prototypes-gobject">gobject.GObject Signal Prototypes</link></para>
-  
-        <variablelist>
-            <varlistentry>
-                <term><link linkend="signal-giomountoperation--aborted">"aborted"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>mountoperation</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giomountoperation--ask-password">"ask-password"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>mountoperation</parameter></methodparam>
-                        <methodparam><parameter>message</parameter></methodparam>
-                        <methodparam><parameter>default_user</parameter></methodparam>
-                        <methodparam><parameter>default_domain</parameter></methodparam>
-                        <methodparam><parameter>flags</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giomountoperation--ask-question">"ask-question"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>mountoperation</parameter></methodparam>
-                        <methodparam><parameter>message</parameter></methodparam>
-                        <methodparam><parameter>choices</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giomountoperation--reply">"reply"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>mountoperation</parameter></methodparam>
-                        <methodparam><parameter>result</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-        </variablelist>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-giomountoperation"><classname>gio.MountOperation</classname></link>
-        provides a mechanism for authenticating mountable operations, such as loop mounting files,
-        hard drive partitions or server locations.
-        </para>
-        <para>
-            Mounting operations are handed a
-            <link linkend="class-giomountoperation"><classname>gio.MountOperation</classname></link>
-            that then can use if they require any privileges or authentication for their volumes to be
-            mounted (e.g. a hard disk partition or an encrypted filesystem), or if they are implementing
-            a remote server protocol which requires user credentials such as FTP or WebDAV.
-        </para>
-        <para>
-            Users should instantiate a subclass of this that implements all the various callbacks
-            to show the required dialogs, such as
-            <link linkend="class-gtkmountoperation"><classname>gtk.MountOperation</classname></link>.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giomountoperation">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.MountOperation</methodname>
-            <methodparam></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giomountoperation"><classname>gio.MountOperation</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new mount operation.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giomountoperation--get-anonymous">
-            <title>gio.MountOperation.get_anonymous</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_anonymous</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if mount operation is anonymous.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_anonymous</methodname>() method check to see whether
-                the mount operation is being used for an anonymous user
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--get-choice">
-            <title>gio.MountOperation.get_choice</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_choice</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>an integer containing an index of the user's
-                    choice from the choice's list, or 0.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_anonymous</methodname>() method gets a choice
-                from the mount operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--get-domain">
-            <title>gio.MountOperation.get_domain</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_domain</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string set to the domain.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_domain</methodname>() method gets the domain
-                of the mount operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--get-password">
-            <title>gio.MountOperation.get_password</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_password</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string containing the password within
-                    the mountoperation.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_password</methodname>() method gets a password
-                from the mount operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--get-password-save">
-            <title>gio.MountOperation.get_password_save</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_password_save</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <xref linkend="gio-password-save-constants" endterm="gio-password-save-constants-title"></xref>
-                    flag.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_password_save</methodname>() method gets the state
-                of saving passwords for the mount operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--get-username">
-            <title>gio.MountOperation.get_username</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_username</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a string containing the user name.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_username</methodname>() method get the user
-                name from the mount operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--reply">
-            <title>gio.MountOperation.reply</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>reply</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>result</parameter>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <xref linkend="gio-mount-operation-result-constants" endterm="gio-mount-operation-result-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>reply</methodname>() method emits the "reply" signal.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--set-anonymous">
-            <title>gio.MountOperation.set_anonymous</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_anonymous</methodname>
-                <methodparam><parameter role="keyword">anonymous</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>anonymous</parameter>&nbsp;:</term>
-                    <listitem><simpara>boolean value.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_anonymous</methodname>() method sets the mount operation
-                to use an anonymous user if anonymous is <literal>True</literal>.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--set-choice">
-            <title>gio.MountOperation.set_choice</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_choice</methodname>
-                <methodparam><parameter role="keyword">choice</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>choice</parameter>&nbsp;:</term>
-                    <listitem><simpara>an integer.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_choice</methodname>() method sets a default choice for the mount operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--set-domain">
-            <title>gio.MountOperation.set_domain</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_domain</methodname>
-                <methodparam><parameter role="keyword">domain</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>domain</parameter>&nbsp;:</term>
-                    <listitem><simpara>the domain to set.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_domain</methodname>() method sets the mount operation's domain.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--set-password">
-            <title>gio.MountOperation.set_password</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_password</methodname>
-                <methodparam><parameter role="keyword">password</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>password</parameter>&nbsp;:</term>
-                    <listitem><simpara>password to set.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_password</methodname>() method sets the mount
-                operation's password to password.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--set-password-save">
-            <title>gio.MountOperation.set_password_save</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_password_save</methodname>
-                <methodparam><parameter role="keyword">save</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>save</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-password-save-constants" endterm="gio-password-save-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_password_save</methodname>() method sets the state
-                of saving passwords for the mount operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giomountoperation--set-username">
-            <title>gio.MountOperation.set_username</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_username</methodname>
-                <methodparam><parameter role="keyword">username</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>username</parameter>&nbsp;:</term>
-                    <listitem><simpara>input username.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_anonymous</methodname>() method sets the user
-                name within op to username.
-            </para>
-        </refsect2>
-    </refsect1>
-
-    <refsect1>
-        <title>Signals</title>
-    
-        <refsect2 id="signal-giomountoperation--aborted">
-            <title>The "aborted" gio.MountOperation Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>mountoperation</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>mountoperation</parameter>&nbsp;:</term>
-                    <listitem><simpara>the mountoperation</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted by the backend when e.g. a device becomes unavailable while a mount operation is in progress.
-                Implementations of <link linkend="class-giomountoperation"><classname>gio.MountOperation</classname></link>
-                should handle this signal by dismissing open password dialogs.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giomountoperation--ask-password">
-            <title>The "ask-password" gio.MountOperation Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>mountoperation</parameter></methodparam>
-                <methodparam><parameter>message</parameter></methodparam>
-                <methodparam><parameter>default_user</parameter></methodparam>
-                <methodparam><parameter>default_domain</parameter></methodparam>
-                <methodparam><parameter>flags</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>mountoperation</parameter>&nbsp;:</term>
-                    <listitem><simpara>the mountoperation</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>message</parameter>&nbsp;:</term>
-                    <listitem><simpara>string containing a message to display to the user.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>default_user</parameter>&nbsp;:</term>
-                    <listitem><simpara>string containing the default user name.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>default_domain</parameter>&nbsp;:</term>
-                    <listitem><simpara>string containing the default domain.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>flags</parameter>&nbsp;:</term>
-                    <listitem><simpara>a set of
-                    <xref linkend="gio-ask-password-flags-constants" endterm="gio-ask-password-flags-constants-title"></xref>
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                This signal is emitted when a mount operation asks the user for a password.
-                If the message contains a line break, the first line should be presented as a heading.
-                For example, it may be used as the primary text in a
-                <link linkend="class-gtkmessagedialog"><classname>gtk.MessageDialog</classname></link>.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giomountoperation--ask-question">
-            <title>The "ask-question" gio.MountOperation Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>mountoperation</parameter></methodparam>
-                <methodparam><parameter>message</parameter></methodparam>
-                <methodparam><parameter>choices</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>mountoperation</parameter>&nbsp;:</term>
-                    <listitem><simpara>the mountoperation</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>message</parameter>&nbsp;:</term>
-                    <listitem><simpara>string containing a message to display to the user.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>choices</parameter>&nbsp;:</term>
-                    <listitem><simpara>a list of strings for each possible choice.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                This signal is emitted when asking the user a question and gives a list of choices
-                for the user to choose from. If the message contains a line break, the first line should be
-                presented as a heading. For example, it may be used as the primary text in a
-                <link linkend="class-gtkmessagedialog"><classname>gtk.MessageDialog</classname></link>.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giomountoperation--reply">
-            <title>The "reply" gio.MountOperation Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>mountoperation</parameter></methodparam>
-                <methodparam><parameter>result</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>mountoperation</parameter>&nbsp;:</term>
-                    <listitem><simpara>the mountoperation</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>result</parameter>&nbsp;:</term>
-                    <listitem><simpara>a
-                    <xref linkend="gio-mount-operation-result-constants" endterm="gio-mount-operation-result-constants-title"></xref>
-                    indicating how the request was handled</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                This signal is emitted when the user has replied to the mount operation.
-            </para>
-        </refsect2>
-  
-  </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-outputstream.xml b/docs/reference/pygio-outputstream.xml
deleted file mode 100644 (file)
index 00ddf2e..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giooutputstream">
-    <refnamediv>
-        <refname>gio.OutputStream</refname>
-        <refpurpose>Base class for implementing streaming input</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.OutputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--clear-pending">clear_pending</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--close">close</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--close-async">close_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--close-finish">close_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--flush">flush</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--flush-async">flush_async</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--flush-finish">flush_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--has-pending">has_pending</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--is-closed">is_closed</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--set-pending">set_pending</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--splice">splice</link></methodname>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.OUTPUT_STREAM_SPLICE_NONE</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--splice-async">splice_async</link></methodname>
-        <methodparam><parameter role="keyword">source</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer>gio.OUTPUT_STREAM_SPLICE_NONE</initializer></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--splice-finish">splice_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--write">write</link></methodname>
-        <methodparam><parameter role="keyword">buffer</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--write-async">write_async</link></methodname>
-        <methodparam><parameter role="keyword">buffer</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">io_priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giooutputstream--write-finish">write_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giooutputstream">gio.OutputStream</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giooutputstream"><classname>gio.OutputStream</classname></link>
-            has functions to write from a stream (
-            <methodname><link linkend="method-giooutputstream--write">gio.OutputStream.write</link></methodname>()
-            ), to close a stream (
-            <methodname><link linkend="method-giooutputstream--close">gio.OutputStream.close</link></methodname>()
-            ) and to flush pending writes (
-            <methodname><link linkend="method-giooutputstream--flush">gio.OutputStream.flush</link></methodname>()
-            ).
-        </para>
-        <para>
-            To copy the content of an input stream to an output stream without manually
-            handling the reads and writes, use
-            <methodname><link linkend="method-giooutputstream--splice">gio.OutputStream.splice</link></methodname>().
-        </para>
-        <para>
-            All of these functions have async variants too.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-        <para> Unfinished section, you may want to see the relevant C API docs for methods descriptions.</para>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-seekable.xml b/docs/reference/pygio-seekable.xml
deleted file mode 100644 (file)
index 1081143..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gioseekable">
-    <refnamediv>
-        <refname>gio.Seekable</refname>
-        <refpurpose>Stream seeking interface.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.Seekable</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobjectginterface">gobject.GInterface</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioseekable--tell">tell</link></methodname>
-    </methodsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioseekable--can_seek">can_seek</link></methodname>
-    </methodsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioseekable--seek">seek</link></methodname>
-        <methodparam><parameter role="keyword">offset</parameter></methodparam>
-        <methodparam><parameter role="keyword">type</parameter><initializer>0</initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioseekable--can_truncate">can_truncate</link></methodname>
-    </methodsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-gioseekable--truncate">truncate</link></methodname>
-        <methodparam><parameter role="keyword">offset</parameter></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectginterface">gobject.GInterface</link>
-  +-- <link linkend="class-gioseekable">gio.Seekable</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1>
-       <title>Known Implementation</title>
-        <para>
-            <link linkend="class-gioseekable"><classname>gio.Seekable</classname></link> is implemented by
-            <link linkend="class-giofileoutputstream"><classname>gio.FileOutputStream</classname></link>,
-            <link linkend="class-giomemoryinputstream"><classname>gio.MemoryInputStream</classname></link>,
-            <link linkend="class-giofileinputstream"><classname>gio.FileInputStream</classname></link> and
-            <link linkend="class-giomemoryoutputstream"><classname>gio.MemoryOutputStream</classname></link>.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-gioseekable"><classname>gio.Seekable</classname></link>
-            is implemented by streams (implementations of 
-            <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link> or
-            <link linkend="class-giooutputstream"><classname>gio.OutputStream</classname></link>)
-            that support seeking.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-gioseekable--tell">
-            <title>gio.Seekable.tell</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>tell</methodname>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>
-                            the offset from the beginning of the buffer
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                Tells the current position within the stream.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-gioseekable--can_seek">
-            <title>gio.Seekable.can_seek</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>can_seek</methodname>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if this
-                    <classname>gio.Seekable</classname> can be seeked with
-                    the <methodname>seek</methodname>() method, <literal>False</literal>
-                    if not. </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>can_seek</methodname>() method checks if the
-                <link linkend="method-gioseekable--seek"><methodname>seek</methodname>()</link>
-                can be used on this <classname>gio.Seekable</classname>.
-            </para>
-        </refsect2>
-        <refsect2 id="method-gioseekable--seek">
-            <title>gio.Seekable.seek</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>seek</methodname>
-                <methodparam><parameter role="keyword">offset</parameter></methodparam>
-                <methodparam><parameter role="keyword">type</parameter><initializer>0</initializer></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>offset</parameter>&nbsp;:</term>
-                    <listitem><simpara>the offset that is added to the position determined by the <literal>type</literal> parameter.
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>type</parameter>&nbsp;:</term>
-                    <listitem><simpara>0=current position, 1=start of the file, 2=end of the file.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    or <literal>None</literal>.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> on successful seek,
-                    <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                Seeks in the stream by the given <literal>offset</literal>, modified by <literal>type</literal>.
-            </para>
-            <para>
-                If <literal>cancellable</literal> is not <literal>None</literal>, then the
-                operation can be cancelled by triggering the cancellable object from another thread.
-            </para>
-        </refsect2>
-        <refsect2 id="method-gioseekable--can_truncate">
-            <title>gio.Seekable.can_truncate</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>can_truncate</methodname>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if this
-                    <classname>gio.Seekable</classname> can be truncated with
-                    the <methodname>truncate</methodname>() method, <literal>False</literal>
-                    if not. </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>can_truncate</methodname>() method checks if the
-                <link linkend="method-gioseekable--truncate"><methodname>truncate</methodname>()</link>
-                can be used on this <classname>gio.Seekable</classname>.
-            </para>
-        </refsect2>
-        <refsect2 id="method-gioseekable--truncate">
-            <title>gio.Seekable.truncate</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>truncate</methodname>
-                <methodparam><parameter role="keyword">offset</parameter></methodparam>
-                <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>offset</parameter>&nbsp;:</term>
-                    <listitem><simpara>the offset at which the stream should be truncated
-                    </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>cancellable</parameter>&nbsp;:</term>
-                    <listitem><simpara>a <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                    or <literal>None</literal>.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if successful,
-                    <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                Truncates a stream with a given <literal>offset</literal>.
-            </para>
-            <para>
-                If <literal>cancellable</literal> is not <literal>None</literal>, then the
-                operation can be cancelled by triggering the cancellable object from another thread.
-            </para>
-            <para>
-                If an operation was partially finished when the operation was cancelled the
-                partial result will be returned, without an error.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-simpleasyncresult.xml b/docs/reference/pygio-simpleasyncresult.xml
deleted file mode 100644 (file)
index f6a0787..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giosimpleasyncresult">
-    <refnamediv>
-        <refname>gio.SimpleAsyncResult</refname>
-        <refpurpose>Simple asynchronous results implementation.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.SimpleAsyncResult</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giosimpleasyncresult--complete">complete</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giosimpleasyncresult--complete-in-idle">complete_in_idle</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giosimpleasyncresult--get-op-res-gboolean">get_op_res_gboolean</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giosimpleasyncresult--get-op-res-gssize">get_op_res_gssize</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giosimpleasyncresult--propagate-error">propagate_error</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giosimpleasyncresult--set-handle-cancellation">set_handle_cancellation</link></methodname>
-        <methodparam><parameter role="keyword">handle_cancellation</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giosimpleasyncresult--set-op-res-gboolean">set_op_res_gboolean</link></methodname>
-        <methodparam><parameter role="keyword">op_res</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giosimpleasyncresult--set-op-res-gssize">set_op_res_gssize</link></methodname>
-        <methodparam><parameter role="keyword">op_res</parameter></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giosimpleasyncresult">gio.SimpleAsyncResult</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-       <title>Implemented Interface</title>
-        <para>
-            <link linkend="class-giosimpleasyncresult"><classname>gio.SimpleAsyncResult</classname></link> implements
-            <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            Implements <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>
-            for simple cases. Most of the time, this will be all an application needs, and will be used transparently
-            Because of this, GSimpleAsyncResult is used throughout GIO for handling asynchronous functions.            
-        </para>
-        <para>
-            <link linkend="class-giosimpleasyncresult"><classname>gio.SimpleAsyncResult</classname></link>
-            handles GAsyncReadyCallbacks, error reporting, operation cancellation and the final state of an
-            operation, completely transparent to the application. Results can be returned as a pointer e.g.
-            for functions that return data that is collected asynchronously, a boolean value for checking the
-            success or failure of an operation, or a gssize for operations which return the number of bytes modified
-            by the operation; all of the simple return cases are covered. 
-        </para>
-        <para>
-            Most of the time, an application will not need to know of the details of this API; it is handled
-            transparently, and any necessary operations are handled by GAsyncResult's interface. However, if
-            implementing a new GIO module, for writing language bindings, or for complex applications that need
-            better control of how asynchronous operations are completed, it is important to understand this functionality. 
-        </para>
-        <para>
-            <link linkend="class-giosimpleasyncresult"><classname>gio.SimpleAsyncResult</classname></link>
-            are tagged with the calling function to ensure that asynchronous functions and
-            their finishing functions are used together correctly. 
-        </para>
-        <!-- NEEDS LOVE
-        <para>
-            To create a new <link linkend="class-giosimpleasyncresult"><classname>gio.SimpleAsyncResult</classname></link>,
-            call g_simple_async_result_new(). If the result needs to be created for a GError, use g_simple_async_result_new_from_error().
-            If a GError is not available (e.g. the asynchronous operation's doesn't take a GError argument), but the result still needs
-            to be created for an error condition, use g_simple_async_result_new_error() (or g_simple_async_result_set_error_va()
-            if your application or binding requires passing a variable argument list directly), and the error can then be propegated
-            through the use of g_simple_async_result_propagate_error(). 
-        </para>
-        -->
-        <para>
-            An asynchronous operation can be made to ignore a cancellation event by calling
-            <methodname><link linkend="method-giosimpleasyncresult--set-handle-cancellation">gio.SimpleAsyncResult.set_handle_cancellation</link></methodname>()
-            with a
-            <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>
-            for the operation and <literal>False</literal>. This is useful for operations that are dangerous to cancel,
-            such as close (which would cause a leak if cancelled before being run). 
-        </para>
-        <para>
-            <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>
-            can integrate into GLib's event loop, GMainLoop, or it can use GThreads if available.
-            <methodname><link linkend="method-giosimpleasyncresult--complete">gio.SimpleAsyncResult.complete</link></methodname>()
-            will finish an I/O task directly within the main event loop.
-            <methodname><link linkend="method-giosimpleasyncresult--complete-in-idle">gio.SimpleAsyncResult.complete_in_idle</link></methodname>()
-            will integrate the I/O task into the main event loop as an idle function.
-            <!--
-            and g_simple_async_result_run_in_thread()
-            will run the job in a separate thread.
-            -->
-        </para>
-        <para>
-            To set the results of an asynchronous function,
-            <methodname><link linkend="method-giosimpleasyncresult--set-op-res-gboolean">gio.SimpleAsyncResult.set_op_res_gboolean</link></methodname>(), and
-            <methodname><link linkend="method-giosimpleasyncresult--set-op-res-gssize">gio.SimpleAsyncResult.set_op_res_gssize</link></methodname>()
-            are provided, setting the operation's result to a gboolean, or gssize, respectively. 
-        </para>
-        <para>
-            Likewise, to get the result of an asynchronous function,
-            <methodname><link linkend="method-giosimpleasyncresult--get-op-res-gboolean">gio.SimpleAsyncResult.get_op_res_gboolean</link></methodname>() and
-            <methodname><link linkend="method-giosimpleasyncresult--get-op-res-gssize">gio.SimpleAsyncResult.get_op_res_gssize</link></methodname>()
-            are provided, getting the operation's result as a gboolean and gssize, respectively.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giosimpleasyncresult--complete">
-            <title>gio.SimpleAsyncResult.complete</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>complete</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            </variablelist>
-    
-            <para>
-                The <methodname>complete</methodname>() method completes an asynchronous I/O job.
-                Must be called in the main thread, as it invokes the callback that should be called
-                in the main thread. If you are in a different thread use
-                <methodname><link linkend="method-giosimpleasyncresult--complete-in-idle">gio.SimpleAsyncResult.complete_in_idle</link></methodname>().
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giosimpleasyncresult--complete-in-idle">
-            <title>gio.SimpleAsyncResult.complete_in_idle</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>complete_in_idle</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-            </variablelist>
-    
-            <para>
-                The <methodname>complete_in_idle</methodname>() method completes an asynchronous
-                function in the main event loop using an idle function.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giosimpleasyncresult--get-op-res-gboolean">
-            <title>gio.SimpleAsyncResult.get_op_res_gboolean</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_op_res_gboolean</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the operation's result was
-                    <literal>True</literal>, <literal>False</literal> if the operation's result
-                    was <literal>False</literal>. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_op_res_gboolean</methodname>() method gets the operation
-                result boolean from within the asynchronous result.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giosimpleasyncresult--get-op-res-gssize">
-            <title>gio.SimpleAsyncResult.get_op_res_gssize</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_op_res_gssize</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a gssize returned from the asynchronous function.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_op_res_gssize</methodname>() method gets a gssize
-                from the asynchronous result.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giosimpleasyncresult--propagate-error">
-            <title>gio.SimpleAsyncResult.propagate_error</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>propagate_error</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the error was propegated
-                    to dest. <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>propagate_error</methodname>() method propagates an error
-                from within the simple asynchronous result to a given destination.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giosimpleasyncresult--set-handle-cancellation">
-            <title>gio.SimpleAsyncResult.set_handle_cancellation</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_handle_cancellation</methodname>
-                <methodparam><parameter role="keyword">handle_cancellation</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">handle_cancellation</parameter>&nbsp;:</term>
-                  <listitem><simpara>a boolean.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_handle_cancellation</methodname>() method sets whether
-                to handle cancellation within the asynchronous operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giosimpleasyncresult--set-op-res-gboolean">
-            <title>gio.SimpleAsyncResult.set_op_res_gboolean</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_op_res_gboolean</methodname>
-                <methodparam><parameter role="keyword">op_res</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">op_res</parameter>&nbsp;:</term>
-                  <listitem><simpara>a boolean.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_op_res_gboolean</methodname>() method sets the operation
-                result to a boolean within the asynchronous result.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giosimpleasyncresult--set-op-res-gssize">
-            <title>gio.SimpleAsyncResult.set_op_res_gssize</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_op_res_gssize</methodname>
-                <methodparam><parameter role="keyword">op_res</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">op_res</parameter>&nbsp;:</term>
-                  <listitem><simpara>a gssize.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_op_res_gssize</methodname>() method sets the operation
-                result within the asynchronous result to the given op_res.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-themedicon.xml b/docs/reference/pygio-themedicon.xml
deleted file mode 100644 (file)
index fe0e44c..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giothemedicon">
-    <refnamediv>
-        <refname>gio.ThemedIcon</refname>
-        <refpurpose>Icon theming support.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.ThemedIcon</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-    
-    <constructorsynopsis language="python">
-    <methodname><link linkend="constructor-giothemedicon">gio.ThemedIcon</link></methodname>
-    <methodparam></methodparam>
-    </constructorsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giothemedicon--append-name">append_name</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giothemedicon--get-names">get_names</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giothemedicon--prepend-name">prepend_name</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giothemedicon">gio.ThemedIcon</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giomountoperation">
-        <title>gio.ThemedIcon Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"name"</entry>
-                            <entry>Write/Contruct Only</entry>
-                            <entry>
-                                The icon name. Default value: <literal>None</literal>
-                            </entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"names"</entry>
-                            <entry>Read/Write/Contruct Only</entry>
-                            <entry>
-                                A list of icon names.
-                            </entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"use-default-fallbacks"</entry>
-                            <entry>Read/Write/Contruct Only</entry>
-                            <entry>
-                                Whether to use the default fallbacks found by shortening the
-                                icon name at '-' characters. If the "names" array has more
-                                than one element, ignores any past the first.
-                            </entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giothemedicon"><classname>gio.ThemedIcon</classname></link>
-            is an implementation of <link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-            that supports icon themes. GThemedIcon contains a list of all of the icons present in an icon
-            theme, so that icons can be looked up quickly.
-        </para>
-        <para>
-            <link linkend="class-giothemedicon"><classname>gio.ThemedIcon</classname></link>
-            does not provide actual pixmaps for icons, just the icon names. Ideally something like
-            <methodname><link linkend="method-gtkicontheme--choose-icon">gtk.IconTheme.choose_icon</link></methodname>()
-            should be used to resolve the list of names so that fallback icons work nicely
-            with themes that inherit other themes
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giothemedicon">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.ThemedIcon</methodname>
-            <methodparam><parameter>name</parameter></methodparam>
-            <methodparam><parameter>use_default_fallbacks</parameter><initializer><literal>False</literal></initializer></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>name</parameter>&nbsp;:</term>
-                <listitem><simpara>a string containing an icon name.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giothemedicon"><classname>gio.ThemedIcon</classname></link>.
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new themed icon from icon name, if instead of an icon name you
-            provide a list of icon names, the <link linkend="class-giothemedicon"><classname>gio.ThemedIcon</classname></link>
-            will be constructed using the items in the list.
-        </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giothemedicon--append-name">
-            <title>gio.ThemedIcon.append_name</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>append_name</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>name</emphasis>&nbsp;:</term>
-                    <listitem><simpara>name of icon to append to list of icons from within icon.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>append_name</methodname>() method appends a name to
-                the list of icons from within icon.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giothemedicon--get-names">
-            <title>gio.ThemedIcon.get_names</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_names</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a list of icon names.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_names</methodname>() method gets the names
-                of icons from within icon.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giothemedicon--prepend-name">
-            <title>gio.ThemedIcon.prepend_name</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>prepend_name</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>name</emphasis>&nbsp;:</term>
-                    <listitem><simpara>name of icon to prepend to list of icons from within icon.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>prepend_name</methodname>() method prepends a name to
-                the list of icons from within icon.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-unixinputstream.xml b/docs/reference/pygio-unixinputstream.xml
deleted file mode 100644 (file)
index 5ef4cde..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giounixinputstream">
-    <refnamediv>
-        <refname>gio.unix.InputStream</refname>
-        <refpurpose>Streaming input operations for UNIX file descriptors.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.unix.InputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-gioinputstream">gio.InputStream</link></classname></ooclass>
-
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-giounixinputstream">gio.unix.InputStream</link></methodname>
-       <methodparam><parameter role="keyword">fd</parameter></methodparam>
-       <methodparam><parameter role="keyword">close_fd</parameter></methodparam>
-    </constructorsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giounixinputstream--get-close-fd">get_close_fd</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giounixinputstream--get-fd">get_fd</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giounixinputstream--set-close-fd">set_close_fd</link></methodname>
-        <methodparam><parameter role="keyword">close_fd</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-gioinputstream">gio.InputStream</link>
-    +-- <link linkend="class-giounixinputstream">gio.unix.InputStream</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giounixinputstream">
-        <title>gio.unix.InputStream Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"close-fd"</entry>
-                            <entry>Read - Write</entry>
-                            <entry>Whether to close the file descriptor when the stream is closed.
-                           Default value: <literal>True</literal>.</entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"fd"</entry>
-                            <entry>Read - Write - Construct only</entry>
-                            <entry>The file descriptor that the stream reads from. Default value: -1.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giounixinputstream"><classname>gio.unix.InputStream</classname></link>
-            implements <link linkend="class-gioinputstream"><classname>gio.InputStream</classname></link>
-           for reading from a UNIX file descriptor, including asynchronous operations.
-           The file descriptor must be selectable, so it doesn't work with opened files.
-       </para>
-       <para>
-           Note that <link linkend="class-giounixinputstream"><classname>gio.unix.InputStream</classname></link>
-           belongs to the UNIX-specific GIO interfaces, thus you have to use the gio-unix-2.0.pc pkg-config file
-           when using it.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giounixinputstream">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.unix.InputStream</methodname>
-            <methodparam><parameter role="keyword">fd</parameter></methodparam>
-           <methodparam><parameter role="keyword">close_fd</parameter></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>fd</parameter>&nbsp;:</term>
-                <listitem><simpara>a UNIX file descriptor.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><parameter>close_fd</parameter>&nbsp;:</term>
-                <listitem><simpara><literal>True</literal>
-               to close the file descriptor when done 
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giounixinputstream"><classname>gio.unix.InputStream</classname></link>
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new <link linkend="class-giounixinputstream"><classname>gio.unix.InputStream</classname></link>
-            from the given fd.
-        </para>
-       <para>
-           If close_fd is <literal>True</literal>, the file descriptor will be closed when the stream is closed.
-       </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giounixinputstream--get-close-fd">
-            <title>gio.unix.InputStream.get_close_fd</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_close_fd</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the file descriptor is closed when done.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_close_fd</methodname>() method returns whether the file
-               descriptor of stream will be closed when the stream is closed.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giounixinputstream--get-fd">
-            <title>gio.unix.InputStream.get_fd</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_fd</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>The file descriptor of stream.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_fd</methodname>() method return the UNIX file descriptor
-               that the stream reads from.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giounixinputstream--set-close-fd">
-            <title>gio.unix.InputStream.set_close_fd</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_close_fd</methodname>
-                <methodparam><parameter role="keyword">close_fd</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">close_fd</parameter>&nbsp;:</term>
-                  <listitem><simpara><literal>True</literal> to close the file descriptor when done .
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_close_fd</methodname>() method sets whether the file descriptor
-               of stream shall be closed when the stream is closed.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-unixoutputstream.xml b/docs/reference/pygio-unixoutputstream.xml
deleted file mode 100644 (file)
index 02e4be8..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giounixoutputstream">
-    <refnamediv>
-        <refname>gio.unix.OutputStream</refname>
-        <refpurpose>Streaming output operations for UNIX file descriptors.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.unix.OutputStream</classname></ooclass>
-        <ooclass><classname><link linkend="class-giooutputstream">gio.OutputStream</link></classname></ooclass>
-
-    <constructorsynopsis language="python">
-       <methodname><link linkend="constructor-giounixoutputstream">gio.unix.OutputStream</link></methodname>
-       <methodparam><parameter role="keyword">fd</parameter></methodparam>
-       <methodparam><parameter role="keyword">close_fd</parameter></methodparam>
-    </constructorsynopsis>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giounixoutputstream--get-close-fd">get_close_fd</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giounixoutputstream--get-fd">get_fd</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giounixoutputstream--set-close-fd">set_close_fd</link></methodname>
-        <methodparam><parameter role="keyword">close_fd</parameter></methodparam>
-    </methodsynopsis>
-
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giooutputstream">gio.OutputStream</link>
-    +-- <link linkend="class-giounixoutputstream">gio.unix.OutputStream</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="properties-giounixoutputstream">
-        <title>gio.unix.OutputStream Properties</title>
-    
-        <blockquote role="properties">
-            <informaltable pgwide="1" frame="none">
-                <tgroup cols="3">
-                    <colspec column="1" colwidth="1in"/>
-                    <colspec column="2" colwidth="1in"/>
-                    <colspec column="3" colwidth="4in"/>
-                    <tbody>
-                        <row valign="top">
-                            <entry>"close-fd"</entry>
-                            <entry>Read - Write</entry>
-                            <entry>Whether to close the file descriptor when the stream is closed.
-                           Default value: <literal>True</literal>.</entry>
-                        </row>
-                        <row valign="top">
-                            <entry>"fd"</entry>
-                            <entry>Read - Write - Construct only</entry>
-                            <entry>The file descriptor that the stream writes to. Default value: -1.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </informaltable>
-        </blockquote>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            <link linkend="class-giounixoutputstream"><classname>gio.unix.OutputStream</classname></link>
-            implements <link linkend="class-giooutputstream"><classname>gio.OutputStream</classname></link>
-           for writing to a UNIX file descriptor, including asynchronous operations.
-           The file descriptor must be selectable, so it doesn't work with opened files.
-       </para>
-       <para>
-           Note that <link linkend="class-giounixoutputstream"><classname>gio.unix.OutputStream</classname></link>
-           belongs to the UNIX-specific GIO interfaces, thus you have to use the gio-unix-2.0.pc pkg-config file
-           when using it.
-        </para>
-    </refsect1>
-
-    <refsect1 id="constructor-giounixoutputstream">
-        <title>Constructor</title>
-  
-        <programlisting><constructorsynopsis language="python">
-            <methodname>gio.unix.OutputStream</methodname>
-            <methodparam><parameter role="keyword">fd</parameter></methodparam>
-           <methodparam><parameter role="keyword">close_fd</parameter></methodparam>
-        </constructorsynopsis></programlisting>
-        <variablelist>
-            <varlistentry>
-                <term><parameter>fd</parameter>&nbsp;:</term>
-                <listitem><simpara>a UNIX file descriptor.
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><parameter>close_fd</parameter>&nbsp;:</term>
-                <listitem><simpara><literal>True</literal>
-               to close the file descriptor when done 
-                </simpara></listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                <listitem><simpara>a new
-                <link linkend="class-giounixoutputstream"><classname>gio.unix.OutputStream</classname></link>
-                </simpara></listitem>
-            </varlistentry>
-        </variablelist>
-    
-        <para>
-            Creates a new <link linkend="class-giounixoutputstream"><classname>gio.unix.OutputStream</classname></link>
-            from the given fd.
-        </para>
-       <para>
-           If close_fd is <literal>True</literal>, the file descriptor will be closed when the stream is closed.
-       </para>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giounixoutputstream--get-close-fd">
-            <title>gio.unix.OutputStream.get_close_fd</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_close_fd</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the file descriptor is closed when done.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_close_fd</methodname>() method returns whether the file
-               descriptor of stream will be closed when the stream is closed.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giounixoutputstream--get-fd">
-            <title>gio.unix.OutputStream.get_fd</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_fd</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>The file descriptor of stream.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_fd</methodname>() method return the UNIX file descriptor
-               that the stream reads from.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giounixoutputstream--set-close-fd">
-            <title>gio.unix.OutputStream.set_close_fd</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>set_close_fd</methodname>
-                <methodparam><parameter role="keyword">close_fd</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">close_fd</parameter>&nbsp;:</term>
-                  <listitem><simpara><literal>True</literal> to close the file descriptor when done .
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>set_close_fd</methodname>() method sets whether the file descriptor
-               of stream shall be closed when the stream is closed.
-            </para>
-        </refsect2>
-    </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-volume.xml b/docs/reference/pygio-volume.xml
deleted file mode 100644 (file)
index cf0fa50..0000000
+++ /dev/null
@@ -1,718 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giovolume">
-    <refnamediv>
-        <refname>gio.Volume</refname>
-        <refpurpose>Volume management.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.Volume</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobjectginterface">gobject.GInterface</link></classname></ooclass>
-
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--can-eject">can_eject</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--can-mount">can_mount</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--eject">eject</link></methodname>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_UNMOUNT_NONE</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--eject-finish">eject_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--enumerate-identifiers">enumerate_identifiers</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--get-activation-root">get_activation_root</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--get-drive">get_drive</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--get-icon">get_icon</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--get-identifier">get_identifier</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--get-mount">get_mount</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--get-name">get_name</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--get-uuid">get_uuid</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--mount">mount</link></methodname>
-        <methodparam><parameter role="keyword">mount_operation</parameter></methodparam>
-        <methodparam><parameter role="keyword">callback</parameter></methodparam>
-        <methodparam><parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_MOUNT_NONE</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer></methodparam>
-        <methodparam><parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--mount-finish">mount_finish</link></methodname>
-        <methodparam><parameter role="keyword">result</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolume--should-automount">should_automount</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectginterface">gobject.GInterface</link>
-  +-- <link linkend="class-giovolume">gio.Volume</link>
-</synopsis>
-
-    </refsect1>
-    
-    <refsect1>
-        <title>Prerequisites</title>
-        <para>
-            <link linkend="class-giovolume"><classname>gio.Volume</classname></link> requires
-            <link linkend="class-gobject"><classname>gobject.GObject</classname></link>
-        </para>
-    </refsect1>
-
-    <refsect1 id="signal-prototypes-giovolume">
-        <title>gio.Volume Signal Prototypes</title>
-  
-        <para><link linkend="signal-prototypes-gobject">gobject.GObject Signal Prototypes</link></para>
-  
-        <variablelist>
-            <varlistentry>
-                <term><link linkend="signal-giovolume--changed">"changed"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giovolume--removed">"removed"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-        </variablelist>
-  
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-            interface represents user-visible objects that can be mounted. Note, when porting
-            from GnomeVFS, <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-            is the moral equivalent of GnomeVFSDrive. 
-        </para>
-        <para>
-            Mounting a <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-            instance is an asynchronous operation. For more information about asynchronous operations.
-            To mount a <link linkend="class-giovolume"><classname>gio.Volume</classname></link>, first call
-            <methodname><link linkend="method-giovolume--mount">gio.Volume.mount</link></methodname>()
-            with (at least) the <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-            instance, optionally a
-            <link linkend="class-giomountoperation"><classname>gio.MountOperation</classname></link>
-            object and a GAsyncReadyCallback. 
-        </para>
-        <para>
-            Typically, one will only want to pass <literal>None</literal> for the GMountOperation
-            if automounting all volumes when a desktop session starts since it's not desirable
-            to put up a lot of dialogs asking for credentials. 
-        </para>
-        <para>
-            The callback will be fired when the operation has resolved (either with success or failure),
-            and a GAsyncReady structure will be passed to the callback. That callback should then call
-            <methodname><link linkend="method-giovolume--mount-finish">gio.Volume.mount_finish</link></methodname>()
-            with the GVolume instance and the GAsyncReady data to see if the operation was completed
-            successfully. If an error is present when
-            <methodname><link linkend="method-giovolume--mount-finish">gio.Volume.mount_finish</link></methodname>()
-            is called, then it will be filled with any error information. 
-        </para>
-        <para>
-            It is sometimes necessary to directly access the underlying operating system object behind a volume
-            (e.g. for passing a volume to an application via the commandline). For this purpose, GIO allows to obtain
-            an 'identifier' for the volume. There can be different kinds of identifiers, such as Hal UDIs,
-            filesystem labels, traditional Unix devices (e.g. /dev/sda2), uuids. GIO uses predefind strings
-            as names for the different kinds of identifiers:
-            "hal-udi", "label", etc. Use
-            <methodname><link linkend="method-giovolume--get-identifier">gio.Volume.get_identifier</link></methodname>()
-            to obtain an identifier for a volume. 
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-        
-        <refsect2 id="method-giovolume--can-eject">
-            <title>gio.Volume.can_eject</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>can_eject</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the volume can be ejected,
-                    <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>can_eject</methodname>() method checks if a volume can be ejected.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giovolume--can-mount">
-            <title>gio.Volume.can_mount</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>can_mount</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the volume can be mounted
-                    for media changes, <literal>False</literal> otherwise. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>can_mount</methodname>() method checks if a volume
-                can be mounted.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giovolume--eject">
-            <title>gio.Volume.eject</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>eject</methodname>
-                <methodparam>
-                    <parameter role="keyword">callback</parameter>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_UNMOUNT_NONE</literal></initializer>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">callback</parameter>&nbsp;:</term>
-                  <listitem><simpara>A GAsyncReadyCallback to call when the request is satisfied.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">flags</parameter>&nbsp;:</term>
-                  <listitem><simpara>flags affecting the unmount if required for eject.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">user_data</parameter>&nbsp;:</term>
-                  <listitem><simpara>The data to pass to callback function.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>eject</methodname>() method asynchronously ejects a volume. 
-            </para>
-            <para>
-                When the operation is finished, callback will be called. You can then call
-                <methodname><link linkend="method-giovolume--eject-finish">gio.Volume.eject_finish</link></methodname>()
-                to obtain the result of the operation.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giovolume--eject-finish">
-            <title>gio.Volume.eject_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>eject_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the volume has been ejected
-                    successfully, <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>eject_finish</methodname>() method finishes ejecting a volume.
-                If any errors occured during the operation, error will be set to contain the
-                errors and <literal>False</literal> will be returned.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giovolume--enumerate-identifiers">
-            <title>gio.Volume.enumerate_identifiers</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>enumerate_identifiers</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a list of strings containing kinds of identifiers.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>enumerate_identifiers</methodname>() method gets the kinds
-                of identifiers that volume has. Use
-                <methodname><link linkend="method-giovolume--get-identifier">gio.Volume.get_identifier</link></methodname>()
-                to obtain the identifiers themselves.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giovolume--get-activation-root">
-            <title>gio.Volume.get_activation_root</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_activation_root</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the activation root of volume or <literal>None</literal>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_activation_root</methodname>() method gets the activation
-                root for a <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                if it is known ahead of mount time. Returns <literal>None</literal> otherwise.
-                If not <literal>None</literal> and if volume is mounted, then the result of
-                <methodname><link linkend="method-giomount--get-root">gio.Mount.get_root</link></methodname>()
-                on the GMount object obtained from
-                <methodname><link linkend="method-giovolume--get-mount">gio.Volume.get_mount</link></methodname>()
-                will always either be equal or a prefix of what this function returns.
-                In other words, in code:
-            </para>
-<programlisting>
-mount = volume.get_mount() # mounted, so never None
-mount_root = mount.get_root()
-volume_activation_root = volume.get_activation_root() # assume not None
-</programlisting>
-            <para>
-                then the expression
-            </para>
-<programlisting>
-volume_activation_root.has_prefix(mount_root) || volume_activation_root.equal(mount_root)
-</programlisting>
-            <para>
-                will always be <literal>True</literal>.
-            </para>
-            <para>
-                Activation roots are typically used in
-                <link linkend="class-giovolumemonitor"><classname>gio.VolumeMonitor</classname></link>
-                implementations to find the underlying mount to shadow, see
-                <methodname><link linkend="method-giomount--is-shadowed">gio.Mount.is_shadowed</link></methodname>()
-                for more details.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giovolume--get-drive">
-            <title>gio.Volume.get_drive</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_drive</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A <link linkend="class-giodrive"><classname>gio.Drive</classname></link>
-                    or <literal>None</literal> if volume is not associated with a drive.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_drive</methodname>() method gets the drive for the volume.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giovolume--get-icon">
-            <title>gio.Volume.get_icon</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_icon</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><link linkend="class-gioicon"><classname>gio.Icon</classname></link>
-                    for the volume.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_icon</methodname>() method gets the icon for volume.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giovolume--get-identifier">
-            <title>gio.Volume.get_identifier</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_identifier</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A string containing the requested identfier, or
-                    <literal>None</literal> if the
-                    <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                    doesn't have this kind of identifier. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_identifier</methodname>() method gets the identifier of
-                the given kind for volume.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giovolume--get-mount">
-            <title>gio.Volume.get_mount</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_mount</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A 
-                    <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                    or <literal>None</literal> if volume isn't mounted.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_mount</methodname>() method gets the mount for the volume.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giovolume--get-name">
-            <title>gio.Volume.get_name</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_name</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A string containing volume's name.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_name</methodname>() method gets the name of volume.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giovolume--get-uuid">
-            <title>gio.Volume.get_uuid</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_uuid</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>the UUID for volume or <literal>None</literal>
-                    if no UUID can be computed.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_uuid</methodname>() method gets the UUID for the volume.
-                The reference is typically based on the file system UUID for the volume in
-                question and should be considered an opaque string.
-                Returns <literal>None</literal> if there is no UUID available.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giovolume--mount">
-            <title>gio.Volume.mount</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>mount</methodname>
-                <methodparam>
-                    <parameter role="keyword">mount_operation</parameter>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">callback</parameter>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">flags</parameter><initializer><literal>gio.MOUNT_MOUNT_NONE</literal></initializer>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">cancellable</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-                <methodparam>
-                    <parameter role="keyword">user_data</parameter><initializer><literal>None</literal></initializer>
-                </methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">mount_operation</parameter>&nbsp;:</term>
-                  <listitem><simpara>A
-                  <link linkend="class-giomountoperation"><classname>gio.MountOperation</classname></link>
-                  or <literal>None</literal> to avoid user interaction. 
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">callback</parameter>&nbsp;:</term>
-                  <listitem><simpara>A GAsyncReadyCallback to call when the request is satisfied.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">flags</parameter>&nbsp;:</term>
-                  <listitem><simpara>Flags affecting the operation 
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">cancellable</parameter>&nbsp;:</term>
-                  <listitem><simpara>Optional
-                  <link linkend="class-giocancellable"><classname>gio.Cancellable</classname></link>
-                  object, <literal>None</literal> to ignore.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                  <term><parameter role="keyword">user_data</parameter>&nbsp;:</term>
-                  <listitem><simpara>The data to pass to callback function.
-                  </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>mount</methodname>() method mounts a volume. This is an
-                asynchronous operation, and is finished by calling
-                <methodname><link linkend="method-giovolume--mount-finish">gio.Volume.mount_finish</link></methodname>()
-                with the volume and GAsyncResult returned in the callback.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giovolume--mount-finish">
-            <title>gio.Volume.mount_finish</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>mount_finish</methodname>
-                <methodparam><parameter role="keyword">result</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">result</parameter>&nbsp;:</term>
-                  <listitem><simpara>a <link linkend="class-gioasyncresult"><classname>gio.AsyncResult</classname></link>.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the volume has been mounted
-                    successfully, <literal>False</literal> otherwise.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>mounted</methodname>() method finishes mounting a volume.
-                If any errors occured during the operation, error will be set to contain
-                the errors and <literal>False</literal> will be returned. 
-            </para>
-            <para>
-                If the mount operation succeeded,
-                <methodname><link linkend="method-giovolume--get-mount">get_mount</link></methodname>()
-                on volume is guaranteed to return the mount right after calling this function;
-                there's no need to listen for the 'mount-added' signal on
-                <link linkend="class-giovolumemonitor"><classname>gio.VolumeMonitor</classname></link>.
-            </para>
-        </refsect2>
-        
-        <refsect2 id="method-giovolume--should-automount">
-            <title>gio.Volume.should_automount</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>should_automount</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara><literal>True</literal> if the volume should
-                    be automatically mounted. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>should_automount</methodname>() method returns whether
-                the volume should be automatically mounted.
-            </para>
-        </refsect2>
-    </refsect1>
-
-    <refsect1>
-        <title>Signals</title>
-    
-        <refsect2 id="signal-giovolume--changed">
-            <title>The "changed" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when the volume has been changed.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giovolume--removed">
-            <title>The "removed" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                This signal is emitted when the
-                <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                have been removed. If the recipient is holding references to the object
-                they should release them so the object can be finalized.
-            </para>
-        </refsect2>
-  
-  </refsect1>
-</refentry>
diff --git a/docs/reference/pygio-volumemonitor.xml b/docs/reference/pygio-volumemonitor.xml
deleted file mode 100644 (file)
index 399d07e..0000000
+++ /dev/null
@@ -1,844 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-giovolumemonitor">
-    <refnamediv>
-        <refname>gio.VolumeMonitor</refname>
-        <refpurpose>Volume Monitor.</refpurpose>
-    </refnamediv>
-
-    <refsect1>
-        <title>Synopsis</title>
-
-    <classsynopsis language="python">
-        <ooclass><classname>gio.VolumeMonitor</classname></ooclass>
-        <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
-    
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolumemonitor--get-connected-drives">get_connected_drives</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolumemonitor--get-mount-for-uuid">get_mount_for_uuid</link></methodname>
-        <methodparam><parameter role="keyword">uuid</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolumemonitor--get-mounts">get_mounts</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolumemonitor--get-volume-for-uuid">get_volume_for_uuid</link></methodname>
-        <methodparam><parameter role="keyword">uuid</parameter></methodparam>
-    </methodsynopsis>
-    <methodsynopsis language="python">
-        <methodname><link linkend="method-giovolumemonitor--get-volumes">get_volumes</link></methodname>
-        <methodparam></methodparam>
-    </methodsynopsis>
-    
-    </classsynopsis>
-
-<programlisting>
-<emphasis role="bold">Functions</emphasis>
-<methodsynopsis language="python">
-    <methodname><link linkend="function-gio--volume-monitor-adopt-orphan-mount">gio.volume_monitor_adopt_orphan_mount</link></methodname>
-    <methodparam></methodparam>
-</methodsynopsis><methodsynopsis language="python">
-    <methodname><link linkend="function-gio--volume-monitor-get">gio.volume_monitor_get</link></methodname>
-    <methodparam></methodparam>
-</methodsynopsis></programlisting>
-
-    </refsect1>
-
-    <refsect1>
-        <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-  +-- <link linkend="class-giovolumemonitor">gio.VolumeMonitor</link>
-</synopsis>
-
-    </refsect1>
-
-    <refsect1 id="signal-prototypes-giovolumemonitor">
-        <title>gio.VolumeMonitor Signal Prototypes</title>
-  
-        <para><link linkend="signal-prototypes-gobject">gobject.GObject Signal Prototypes</link></para>
-  
-        <variablelist>
-            <varlistentry>
-                <term><link linkend="signal-giovolumemonitor--drive-changed">"drive-changed"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume_monitor</parameter></methodparam>
-                        <methodparam><parameter>drive</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giovolumemonitor--drive-connected">"drive-connected"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume_monitor</parameter></methodparam>
-                        <methodparam><parameter>drive</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giovolumemonitor--drive-disconnected">"drive-disconnected"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume_monitor</parameter></methodparam>
-                        <methodparam><parameter>drive</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giovolumemonitor--drive-eject-button">"drive-eject-button"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume_monitor</parameter></methodparam>
-                        <methodparam><parameter>drive</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giovolumemonitor--mount-added">"mount-added"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume_monitor</parameter></methodparam>
-                        <methodparam><parameter>mount</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giovolumemonitor--mount-changed">"mount-changed"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume_monitor</parameter></methodparam>
-                        <methodparam><parameter>mount</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giovolumemonitor--mount-pre-unmount">"mount-pre-unmount"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume_monitor</parameter></methodparam>
-                        <methodparam><parameter>mount</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giovolumemonitor--mount-removed">"mount-removed"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume_monitor</parameter></methodparam>
-                        <methodparam><parameter>mount</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giovolumemonitor--volume-added">"volume-added"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume_monitor</parameter></methodparam>
-                        <methodparam><parameter>volume</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giovolumemonitor--volume-changed">"volume-changed"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume_monitor</parameter></methodparam>
-                        <methodparam><parameter>volume</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term><link linkend="signal-giovolumemonitor--volume-removed">"volume-removed"</link></term>
-                <listitem>
-                    <methodsynopsis language="python"><methodname>callback</methodname>
-                        <methodparam><parameter>volume_monitor</parameter></methodparam>
-                        <methodparam><parameter>volume</parameter></methodparam>
-                        <methodparam><parameter>user_param1</parameter></methodparam>
-                        <methodparam><parameter>...</parameter></methodparam>
-                    </methodsynopsis>
-                </listitem>
-            </varlistentry>
-        </variablelist>
-    </refsect1>
-
-    <refsect1>
-        <title>Description</title>
-
-        <para>
-            The <link linkend="class-giovolumemonitor"><classname>gio.VolumeMonitor</classname></link>
-            is for listing the user interesting devices and volumes on the computer. In other words,
-            what a file selector or file manager would show in a sidebar.
-        </para>
-    </refsect1>
-
-    <refsect1>
-        <title>Methods</title>
-
-        <refsect2 id="method-giovolumemonitor--get-connected-drives">
-            <title>gio.VolumeMonitor.get_connected_drives</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_connected_drives</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>a list of connected
-                    <link linkend="class-giodrive"><classname>gio.Drive</classname></link> objects. 
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_connected_drives</methodname>() method gets a list
-                of drives connected to the system. 
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giovolumemonitor--get-mount-for-uuid">
-            <title>gio.VolumeMonitor.get_mount_for_uuid</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_mount_for_uuid</methodname>
-                <methodparam><parameter role="keyword">uuid</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">uuid</parameter>&nbsp;:</term>
-                  <listitem><simpara>The UUID to look for.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A
-                    <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                    or <literal>None</literal> if no such mount is available.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_mount_for_uuid</methodname>() method finds a
-                <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                object by it's UUID (see
-                <methodname><link linkend="method-giomount--get-uuid">gio.Mount.get_uuid</link></methodname>())
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giovolumemonitor--get-mounts">
-            <title>gio.VolumeMonitor.get_mounts</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_mounts</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A list of
-                    <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                    objects.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_mounts</methodname>() method gets a list of the mounts on the system.
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giovolumemonitor--get-volume-for-uuid">
-            <title>gio.VolumeMonitor.get_volume_for_uuid</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_volume_for_uuid</methodname>
-                <methodparam><parameter role="keyword">uuid</parameter></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                  <term><parameter role="keyword">uuid</parameter>&nbsp;:</term>
-                  <listitem><simpara>The UUID to look for.
-                  </simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A
-                    <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                    or <literal>None</literal> if no such volume is available.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_mount_for_uuid</methodname>() method finds a
-                <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                object by it's UUID (see
-                <methodname><link linkend="method-giomount--get-uuid">gio.Mount.get_uuid</link></methodname>())
-            </para>
-        </refsect2>
-
-        <refsect2 id="method-giovolumemonitor--get-volumes">
-            <title>gio.VolumeMonitor.get_volumes</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>get_volumes</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A list of
-                    <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                    objects.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-    
-            <para>
-                The <methodname>get_volumes</methodname>() method gets a list of the volumes on the system.
-            </para>
-        </refsect2>
-    </refsect1>
-    
-    <refsect1>
-        <title>Functions</title>
-
-        <refsect2 id="function-gio--volume-monitor-adopt-orphan-mount">
-            <title>gio.volume_monitor_adopt_orphan_mount</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>volume_monitor_adopt_orphan_mount</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>The <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                    object that is the parent for mount or <literal>None</literal> if no wants to adopt the
-                    <link linkend="class-giomount"><classname>gio.Mount</classname></link>.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <warning>
-                <para>This method will be deprecated starting from GIO 2.20</para>
-            </warning>
-
-            <para>
-                The <methodname>volume_monitor_adopt_orphan_mount</methodname>() function should
-                be called by any <link linkend="class-giovolumemonitor"><classname>gio.VolumeMonitor</classname></link>
-                implementation when a new <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                object is created that is not associated with a
-                <link linkend="class-giovolume"><classname>gio.Volume</classname></link> object.
-                It must be called just before emitting the mount_added signal.
-            </para>
-            <para>
-                If the return value is not <literal>None</literal>, the caller must associate the returned
-                <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                object with the
-                <link linkend="class-giomount"><classname>gio.Mount</classname></link>.
-                This involves returning it in it's
-                <methodname><link linkend="method-giomount--get-volumes">gio.Mount.get_volumes</link></methodname>()
-                implementation. The caller must also listen for the "removed" signal on the
-                returned object and give up it's reference when handling that signal 
-            </para>
-            <para>
-                Similary, if implementing
-                <methodname><link linkend="function-gio--volume-monitor-adopt-orphan-mount">gio.volume_monitor_adopt_orphan_mount</link></methodname>(),
-                the implementor must take a reference to mount and return it in it's
-                <methodname><link linkend="method-giovolume--get-mount">gio.Volume.get_mount</link></methodname>()
-                implemented. Also, the implementor must listen for the "unmounted" signal
-                on mount and give up it's reference upon handling that signal. 
-            </para>
-            <para>
-                There are two main use cases for this function. 
-            </para>
-            <para>
-                One is when implementing a user space file system driver that reads blocks of
-                a block device that is already represented by the native volume monitor
-                (for example a CD Audio file system driver). Such a driver will generate it's own
-                <link linkend="class-giomount"><classname>gio.Mount</classname></link>
-                object that needs to be assoicated with the
-                <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                object that represents the volume. 
-            </para>
-            <para>
-                The other is for implementing a
-                <link linkend="class-giovolumemonitor"><classname>gio.VolumeMonitor</classname></link>
-                whose sole purpose is to return
-                <link linkend="class-giovolume"><classname>gio.Volume</classname></link>
-                objects representing entries in the users "favorite servers" list or similar.
-            </para>
-        </refsect2>
-
-        <refsect2 id="function-gio--volume-monitor-get">
-            <title>gio.volume_monitor_get</title>
-
-            <programlisting><methodsynopsis language="python">
-                <methodname>volume_monitor_get</methodname>
-                <methodparam></methodparam>
-            </methodsynopsis></programlisting>
-            
-            <variablelist>
-                <varlistentry>
-                    <term><emphasis>Returns</emphasis>&nbsp;:</term>
-                    <listitem><simpara>A reference to the
-                    <link linkend="class-giovolumemonitor"><classname>gio.VolumeMonitor</classname></link>
-                    used by gio.
-                    </simpara></listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The <methodname>volume_monitor_get</methodname>() function gets the
-                volume monitor used by gio.
-            </para>
-        </refsect2>
-    </refsect1>
-
-    <refsect1>
-        <title>Signals</title>
-    
-        <refsect2 id="signal-giovolumemonitor--drive-changed">
-            <title>The "drive-changed" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume_monitor</parameter></methodparam>
-                <methodparam><parameter>drive</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume_monitor</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume monitor</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>drive</parameter>&nbsp;:</term>
-                    <listitem><simpara>the drive that changed</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when a drive changes.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giovolumemonitor--drive-connected">
-            <title>The "drive-connected" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume_monitor</parameter></methodparam>
-                <methodparam><parameter>drive</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume_monitor</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume monitor</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>drive</parameter>&nbsp;:</term>
-                    <listitem><simpara>the drive that was connected</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when a drive is connected to the system.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giovolumemonitor--drive-disconnected">
-            <title>The "drive-disconnected" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume_monitor</parameter></methodparam>
-                <methodparam><parameter>drive</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume_monitor</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume monitor</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>drive</parameter>&nbsp;:</term>
-                    <listitem><simpara>the drive that was disconnected</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when a drive is disconnected from the system.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giovolumemonitor--drive-eject-button">
-            <title>The "drive-eject-button" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume_monitor</parameter></methodparam>
-                <methodparam><parameter>drive</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume_monitor</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume monitor</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>drive</parameter>&nbsp;:</term>
-                    <listitem><simpara>the drive where the eject button was pressed</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when the eject button is pressed on drive.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giovolumemonitor--mount-added">
-            <title>The "mount-added" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume</parameter></methodparam>
-                <methodparam><parameter>mount</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume_monitor</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume monitor</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>mount</parameter>&nbsp;:</term>
-                    <listitem><simpara>a Mount that was added.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when a mount is added.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giovolumemonitor--mount-changed">
-            <title>The "mount-changed" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume_monitor</parameter></methodparam>
-                <methodparam><parameter>mount</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume_monitor</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume monitor</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>mount</parameter>&nbsp;:</term>
-                    <listitem><simpara>the Mount that changed.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when a mount changes.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giovolumemonitor--mount-pre-unmount">
-            <title>The "mount-pre-unmount" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume_monitor</parameter></methodparam>
-                <methodparam><parameter>mount</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume_monitor</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume monitor</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>mount</parameter>&nbsp;:</term>
-                    <listitem><simpara>the Mount that is being unmounted.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when a mount is about to be removed.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giovolumemonitor--mount-removed">
-            <title>The "mount-removed" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume_monitor</parameter></methodparam>
-                <methodparam><parameter>mount</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume_monitor</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume monitor</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>mount</parameter>&nbsp;:</term>
-                    <listitem><simpara>the Mount that was removed.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when a mount is removed.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giovolumemonitor--volume-added">
-            <title>The "volume-added" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume_monitor</parameter></methodparam>
-                <methodparam><parameter>volume</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume_monitor</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume monitor</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>volume</parameter>&nbsp;:</term>
-                    <listitem><simpara>a Volume that was added.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when a mountable volume is added to the system.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giovolumemonitor--volume-changed">
-            <title>The "volume-changed" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume_monitor</parameter></methodparam>
-                <methodparam><parameter>volume</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume_monitor</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume monitor</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>volume</parameter>&nbsp;:</term>
-                    <listitem><simpara>a Volume that changed.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when mountable volume is changed.
-            </para>
-        </refsect2>
-    
-        <refsect2 id="signal-giovolumemonitor--volume-removed">
-            <title>The "volume-removed" gio.Volume Signal</title>
-      
-            <programlisting><methodsynopsis language="python"><methodname>callback</methodname>
-                <methodparam><parameter>volume_monitor</parameter></methodparam>
-                <methodparam><parameter>volume</parameter></methodparam>
-                <methodparam><parameter>user_param1</parameter></methodparam>
-                <methodparam><parameter>...</parameter></methodparam>
-            </methodsynopsis></programlisting>
-      
-            <variablelist>
-                <varlistentry>
-                    <term><parameter>volume_monitor</parameter>&nbsp;:</term>
-                    <listitem><simpara>the volume monitor</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>volume</parameter>&nbsp;:</term>
-                    <listitem><simpara>a Volume that was removed.</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>user_param1</parameter>&nbsp;:</term>
-                    <listitem><simpara>the first user parameter (if any) specified
-                    with the <link
-                    linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-                    method</simpara></listitem>
-                </varlistentry>
-                <varlistentry>
-                    <term><parameter>...</parameter>&nbsp;:</term>
-                    <listitem><simpara>additional user parameters (if any)</simpara></listitem>
-                </varlistentry>
-            </variablelist>
-      
-            <para>
-                Emitted when a mountable volume is removed from the system.
-            </para>
-        </refsect2>  
-  </refsect1>
-</refentry>
diff --git a/docs/reference/pygiounix-classes.xml b/docs/reference/pygiounix-classes.xml
deleted file mode 100644 (file)
index 72b0081..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-<chapter id="giounix-class-reference"
-  xmlns:xi="http://www.w3.org/2001/XInclude">
-
-<title>PyGio Unix Class Reference</title>
-
-<!-- GIOUNIX CLASSES -->
-<xi:include href="pygio-unixinputstream.xml"/>
-<xi:include href="pygio-unixoutputstream.xml"/>
-
-</chapter>
diff --git a/docs/reference/pyglib-classes.xml b/docs/reference/pyglib-classes.xml
deleted file mode 100644 (file)
index ecc4e5b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-<chapter id="glib-class-reference"
-  xmlns:xi="http://www.w3.org/2001/XInclude">
-
-<title>PyGlibClass Reference</title>
-
-<!-- GLIB CLASSES -->
-<xi:include href="pyglib-maincontext.xml"/>
-<xi:include href="pyglib-mainloop.xml"/>
-<xi:include href="pyglib-functions.xml"/>
-<xi:include href="pyglib-constants.xml"/>
-
-</chapter>
diff --git a/docs/reference/pyglib-constants.xml b/docs/reference/pyglib-constants.xml
deleted file mode 100644 (file)
index 0f1bf8d..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="glib-constants">
-  <refnamediv>
-    <refname>glib Constants</refname>
-    <refpurpose>the built-in constants of the glib module</refpurpose>
-  </refnamediv>
-
-  <refsect1>
-    <title>Synopsis</title>
-
-    <programlisting>
-<xref linkend="glib-io-condition-constants" endterm="glib-io-condition-constants-title"></xref>
-<xref linkend="glib-priority-constants" endterm="glib-priority-constants-title"></xref>
-<xref linkend="glib-spawn-flag-constants" endterm="glib-spawn-flag-constants-title"></xref>
-<xref linkend="glib-user-directory-constants" endterm="glib-user-directory-constants-title"></xref>
-<xref linkend="glib-version-constants" endterm="glib-version-constants-title"></xref>
-</programlisting>
-
-  </refsect1>
-
-  <refsect1 id="glib-constants-description">
-    <title>Description</title>
-
-    <refsect2 id="glib-io-condition-constants">
-      <title id="glib-io-condition-constants-title">Glib IO Condition Constants</title>
-
-      <para>The IO Condition constants are a set of bit-flags that specify a
-condition to watch for on an event source.</para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>glib.IO_IN</literal></term>
-         <listitem>
-           <simpara>There is data to read</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.IO_OUT</literal></term>
-         <listitem>
-           <simpara>Data can be written (without blocking).</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.IO_PRI</literal></term>
-         <listitem>
-           <simpara>There is urgent data to read.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.IO_ERR</literal></term>
-         <listitem>
-           <simpara>Error condition.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.IO_HUP</literal></term>
-         <listitem>
-           <simpara>Hung up (the connection has been broken, usually for
-           pipes and sockets).</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.IO_NVAL</literal></term>
-         <listitem>
-           <simpara>Invalid request. The file descriptor is not
-           open.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-    </refsect2>
-
-    <refsect2 id="glib-priority-constants">
-      <title id="glib-priority-constants-title">Glib Priority Constants</title>
-
-      <para>The Priority constants specify </para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>glib.PRIORITY_HIGH</literal></term>
-         <listitem>
-           <simpara>Use this for high priority event sources.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.PRIORITY_DEFAULT</literal></term>
-         <listitem>
-           <simpara>Use this for default priority event sources.  This
-           priority is used when adding timeout functions with the <link
-           linkend="function-glib--timeout-add"><function>glib.timeout_add</function>()</link>
-           function. This priority is also used for events from the X
-           server.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.PRIORITY_HIGH_IDLE</literal></term>
-         <listitem>
-           <simpara>Use this for high priority idle functions. For example,
-           glib.PRIORITY_HIGH_IDLE + 10 is used for resizing operations;
-           and, glib.PRIORITY_HIGH_IDLE + 20, for redrawing
-           operations. (This is done to ensure that any pending resizes are
-           processed before any pending redraws, so that widgets are not
-           redrawn twice unnecessarily.)</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.PRIORITY_DEFAULT_IDLE</literal></term>
-         <listitem>
-           <simpara>Use this for default priority idle functions. This
-           priority is used when adding idle functions with the <link
-           linkend="function-glib--idle-add"><function>glib.idle_add</function>()</link>
-           function.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.PRIORITY_LOW</literal></term>
-         <listitem>
-           <simpara>Use this for very low priority background
-           tasks.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-    </refsect2>
-
-    <refsect2 id="glib-spawn-flag-constants">
-      <title id="glib-spawn-flag-constants-title">Glib Spawn Flag Constants</title>
-
-      <para>The Spawn Flag constants are a set of bit-flags that can be
-passed to the <link
-linkend="function-glib--spawn-async"><function>glib.spawn_async</function>()</link>
-function.</para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>glib.SPAWN_LEAVE_DESCRIPTORS_OPEN</literal></term>
-         <listitem>
-           <simpara>the parent's open file descriptors will be inherited by
-the child; otherwise all descriptors except stdin/stdout/stderr will be
-closed before calling <function>exec</function>() in the child.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.SPAWN_DO_NOT_REAP_CHILD</literal></term>
-         <listitem>
-           <simpara>the child will not be automatically reaped; you must
-call <function>waitpid</function>() or handle <literal>SIGCHLD</literal>
-yourself, or the child will become a zombie.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.SPAWN_SEARCH_PATH</literal></term>
-         <listitem>
-           <simpara><parameter>argv</parameter>[0] need not be an absolute
-path, it will be looked for in the user's <envar>PATH</envar>.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.SPAWN_STDOUT_TO_DEV_NULL</literal></term>
-         <listitem>
-           <simpara>the child's standard output will be discarded, instead
-of going to the same location as the parent's standard output.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.SPAWN_STDERR_TO_DEV_NULL</literal></term>
-         <listitem>
-           <simpara>the child's standard error will be discarded.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.SPAWN_CHILD_INHERITS_STDIN</literal></term>
-         <listitem>
-           <simpara>the child will inherit the parent's standard input (by
-default, the child's standard input is attached to /dev/null).</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.SPAWN_FILE_AND_ARGV_ZERO</literal></term>
-         <listitem>
-           <simpara>the first element of <parameter>argv</parameter> is the
-file to execute, while the remaining elements are the actual argument vector
-to pass to the file. Normally <link
-linkend="function-glib--spawn-async"><function>glib.spawn_async</function>()</link>
-uses <parameter>argv</parameter>[0] as the file to execute, and passes all
-of <parameter>argv</parameter> to the child.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-    </refsect2>
-
-    <refsect2 id="glib-user-directory-constants">
-      <title id="glib-user-directory-constants-title">Glib User Directory Constants</title>
-
-      <para>The User Directory constants are integer values that are currently used only as arguments to
-        <link linkend="function-glib--get-user-special-dir"><function>glib.get_user_special_dir</function>()</link>
-        function.  See function documentation for details.</para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>glib.USER_DIRECTORY_DESKTOP</literal></term>
-         <listitem>
-           <simpara>the user's Desktop directory</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.USER_DIRECTORY_DOCUMENTS</literal></term>
-         <listitem>
-           <simpara>the user's Documents directory</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.USER_DIRECTORY_DOWNLOAD</literal></term>
-         <listitem>
-           <simpara>the user's Downloads directory</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.USER_DIRECTORY_MUSIC</literal></term>
-         <listitem>
-           <simpara>the user's Music directory</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.USER_DIRECTORY_PICTURES</literal></term>
-         <listitem>
-           <simpara>the user's Pictures directory</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.USER_DIRECTORY_PUBLIC_SHARE</literal></term>
-         <listitem>
-           <simpara>the user's shared directory</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.USER_DIRECTORY_TEMPLATES</literal></term>
-         <listitem>
-           <simpara>the user's Templates directory</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.USER_DIRECTORY_VIDEOS</literal></term>
-         <listitem>
-           <simpara>the user's Movies directory</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-    </refsect2>
-
-    <refsect2 id="glib-version-constants">
-      <title id="glib-version-constants-title">Glib Version Constants</title>
-      <para>The Version constants specify the version of
-<literal>Glib</literal> used by PyGObject as a 3-tuple containing the major,
-minor and patch release numbers.</para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>glib.glib_version</literal></term>
-         <listitem>
-           <simpara>A 3-tuple containing (major, minor, patch) release
-           numbers of glib.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.pyglib_version</literal></term>
-         <listitem>
-           <simpara>A 3-tuple containing (major, minor, patch) release
-           numbers of the python bindings.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-    </refsect2>
-
-  </refsect1>
-
-</refentry>
diff --git a/docs/reference/pyglib-functions.xml b/docs/reference/pyglib-functions.xml
deleted file mode 100644 (file)
index 3e11251..0000000
+++ /dev/null
@@ -1,1047 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="glib-functions">
-  <refnamediv>
-    <refname>glib Functions</refname>
-    <refpurpose>miscellaneous functions</refpurpose>
-  </refnamediv>
-
-  <refsect1>
-    <title>Synopsis</title>
-
-    <programlisting>
-<methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--idle-add">glib.idle_add</link></methodname>
-       <methodparam><parameter>callback</parameter></methodparam>
-       <methodparam><parameter>...</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--timeout-add">glib.timeout_add</link></methodname>
-       <methodparam><parameter>interval</parameter></methodparam>
-       <methodparam><parameter>callback</parameter></methodparam>
-       <methodparam><parameter>...</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--timeout-add-seconds">glib.timeout_add_seconds</link></methodname>
-       <methodparam><parameter>interval</parameter></methodparam>
-       <methodparam><parameter>callback</parameter></methodparam>
-       <methodparam><parameter>...</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--io-add-watch">glib.io_add_watch</link></methodname>
-       <methodparam><parameter>fd</parameter></methodparam>
-       <methodparam><parameter>condition</parameter></methodparam>
-       <methodparam><parameter>callback</parameter></methodparam>
-       <methodparam><parameter>...</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--source-remove">glib.source_remove</link></methodname>
-       <methodparam><parameter>tag</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--main-context-default">glib.main_context_default</link></methodname>
-       <methodparam></methodparam>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--markup-escape-text">glib.markup_escape_text</link></methodname>
-       <methodparam><parameter role="keyword">text</parameter></methodparam>
-      </methodsynopsis><methodsynopsis language="python">
-        <methodname><link linkend="function-glib--child-watch-add">glib.child_watch_add</link></methodname>
-        <methodparam><parameter role="keyword">pid</parameter></methodparam>
-        <methodparam><parameter role="keyword">function</parameter></methodparam>
-        <methodparam><parameter role="keyword">data</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--spawn-async">glib.spawn_async</link></methodname>
-       <methodparam><parameter role="keyword">argv</parameter></methodparam>
-       <methodparam><parameter role="keyword">envp</parameter><initializer>None</initializer></methodparam>
-       <methodparam><parameter role="keyword">working_directory</parameter><initializer>None</initializer></methodparam>
-       <methodparam><parameter role="keyword">flags</parameter><initializer>0</initializer></methodparam>
-       <methodparam><parameter role="keyword">child_setup</parameter><initializer>None</initializer></methodparam>
-       <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-       <methodparam><parameter role="keyword">standard_input</parameter><initializer>None</initializer></methodparam>
-       <methodparam><parameter role="keyword">standard_output</parameter><initializer>None</initializer></methodparam>
-       <methodparam><parameter role="keyword">standard_error</parameter><initializer>None</initializer></methodparam>
-     </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--get-current-time">glib.get_current_time</link></methodname>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-          linkend="function-glib--get-user-cache-dir">glib.get_user_cache_dir</link></methodname>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-          linkend="function-glib--get-user-config-dir">glib.get_user_config_dir</link></methodname>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-          linkend="function-glib--get-user-data-dir">glib.get_user_data_dir</link></methodname>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-          linkend="function-glib--get-user-special-dir">glib.get_user_special_dir</link></methodname>
-       <methodparam><parameter role="keyword">directory</parameter></methodparam>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--main-depth">glib.main_depth</link></methodname>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--threads-init">glib.threads_init</link></methodname>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--filename-display-name">glib.filename_display_name</link></methodname>
-       <methodparam><parameter>filename</parameter></methodparam>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--filename-display-basename">glib.filename_display_basename</link></methodname>
-       <methodparam><parameter>filename</parameter></methodparam>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-glib--filename-from-utf8">glib.filename_from_utf8</link></methodname>
-       <methodparam><parameter>utf8string</parameter></methodparam>
-      </methodsynopsis></programlisting>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Description</title>
-
-    <para>These functions are part of the <literal>PyGObject</literal> glib
-module but are not directly associated with a specific class.</para>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Functions</title>
-
-    <refsect2 id="function-glib--idle-add">
-      <title>glib.idle_add</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>glib.idle_add</methodname>
-         <methodparam><parameter>callback</parameter></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>callback</parameter>&nbsp;:</term>
-         <listitem><simpara>a function to call when
-<literal>PyGTK</literal> is idle</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>optionals arguments to be passed to
-<parameter>callback</parameter></simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>an integer ID</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>glib.idle_add</function>() function adds a
-function (specified by <parameter>callback</parameter>) to be called
-whenever there are no higher priority events pending to the default main
-loop. The function is given the default idle priority,
-<literal>glib.PRIORITY_DEFAULT_IDLE</literal>. Additional arguments to
-pass to <parameter>callback</parameter> can be specified after
-<parameter>callback</parameter>. The idle priority can be specified as a
-keyword-value pair with the keyword "priority". If
-<parameter>callback</parameter> returns <literal>False</literal> it is
-automatically removed from the list of event sources and will not be called
-again.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--timeout-add">
-      <title>glib.timeout_add</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>glib.timeout_add</methodname>
-         <methodparam><parameter>interval</parameter></methodparam>
-         <methodparam><parameter>callback</parameter></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>interval</parameter>&nbsp;:</term>
-         <listitem><simpara>the time between calls to the function, in
-milliseconds </simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>callback</parameter>&nbsp;:</term>
-         <listitem><simpara>the function to call</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>zero or more arguments that will be passed to
-<parameter>callback</parameter></simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>an integer ID of the event
-source</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>glib.timeout_add</function>() function sets a
-function (specified by <parameter>callback</parameter>) to be called at
-regular intervals (specified by <parameter>interval</parameter>, with the
-default priority, <literal>glib.PRIORITY_DEFAULT</literal>. Additional
-arguments to pass to <parameter>callback</parameter> can be specified after
-<parameter>callback</parameter>. The idle priority may be specified as a
-keyword-value pair with the keyword "priority".</para>
-
-      <para>The function is called repeatedly until it returns
-<literal>False</literal>, at which point the timeout is automatically
-destroyed and the function will not be called again. The first call to the
-function will be at the end of the first interval. Note that timeout
-functions may be delayed, due to the processing of other event sources. Thus
-they should not be relied on for precise timing. After each call to the
-timeout function, the time of the next timeout is recalculated based on the
-current time and the given interval (it does not try to 'catch up' time lost
-in delays).</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--timeout-add-seconds">
-      <title>glib.timeout_add_seconds</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>glib.timeout_add_seconds</methodname>
-         <methodparam><parameter>interval</parameter></methodparam>
-         <methodparam><parameter>callback</parameter></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>interval</parameter>&nbsp;:</term>
-         <listitem><simpara>the time between calls to the function, in
-seconds </simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>callback</parameter>&nbsp;:</term>
-         <listitem><simpara>the function to call</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>zero or more arguments that will be passed to
-<parameter>callback</parameter></simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>an integer ID of the event
-source</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>glib.timeout_add_seconds</function>() is similar to
-       <function>glib.timeout_add</function>() except
-       that <parameter>interval</parameter> must be specified in seconds, not
-       milliseconds, and the function should cause less CPU wakeups, which is important
-       for laptops' batteries.</para>
-
-      <para>Unlike <function>glib.timeout_add</function>(), this function operates at
-       whole second granularity.  The initial starting point of the timer is determined
-       by the implementation and the implementation is expected to group multiple timers
-       together so that they fire all at the same time.  To allow this grouping, the
-       interval to the first timer is rounded and can deviate up to one second from the
-       specified interval.  Subsequent timer iterations will generally run at the
-       specified interval.</para>
-
-      <para>Note that timeout functions may be delayed, due to the processing of other
-       event sources.  Thus they should not be relied on for precise timing.  After each
-       call to the timeout function, the time of the next timeout is recalculated based
-       on the current time and the given interval.</para>
-
-      <para>The grouping of timers to fire at the same time results in a more power and
-       CPU efficient behavior so if your timer is in multiples of seconds and you don't
-       require the first timer exactly one second from now, the use of
-       <function>glib.timeout_add_seconds</function>() is preferred
-       over <function>glib.timeout_add</function>().</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--io-add-watch">
-      <title>glib.io_add_watch</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>glib.io_add_watch</methodname>
-         <methodparam><parameter>fd</parameter></methodparam>
-         <methodparam><parameter>condition</parameter></methodparam>
-         <methodparam><parameter>callback</parameter></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>fd</parameter>&nbsp;:</term>
-         <listitem><simpara>a Python file object or an integer file
-descriptor ID</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>condition</parameter>&nbsp;:</term>
-         <listitem><simpara>a condition mask</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>callback</parameter>&nbsp;:</term>
-         <listitem><simpara>a function to call</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>additional arguments to pass to
-<parameter>callback</parameter></simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>an integer ID of the event source</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>glib.io_add_watch</function>() function
-arranges for the file (specified by <parameter>fd</parameter>) to be
-monitored by the main loop for the specified
-<parameter>condition</parameter>. <parameter>fd</parameter> may be a Python
-file object or an integer file descriptor. The value of condition is a
-combination of:</para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>glib.IO_IN</literal></term>
-         <listitem>
-           <simpara>There is data to read.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.IO_OUT</literal></term>
-         <listitem>
-           <simpara>Data can be written (without blocking). </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.IO_PRI</literal></term>
-         <listitem>
-           <simpara>There is urgent data to read.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.IO_ERR</literal></term>
-         <listitem>
-           <simpara>Error condition.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>glib.IO_HUP</literal></term>
-         <listitem>
-           <simpara>Hung up (the connection has been broken, usually for
-pipes and sockets).</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>Additional arguments to pass to <parameter>callback</parameter>
-can be specified after <parameter>callback</parameter>. The idle priority
-may be specified as a keyword-value pair with the keyword "priority". The
-signature of the callback function is:</para>
-
-      <programlisting>
-  def callback(source, cb_condition, ...)
-</programlisting>
-
-      <para>where <parameter>source</parameter> is
-<parameter>fd</parameter>, the file descriptor;
-<parameter>cb_condition</parameter> is the condition that triggered the
-signal; and, <parameter>...</parameter> are the zero or more arguments that
-were passed to the <function>glib.io_add_watch</function>()
-function.</para>
-
-      <para>If the callback function returns <literal>False</literal> it
-will be automatically removed from the list of event sources and will not be
-called again. If it returns <literal>True</literal> it will be called again
-when the condition is matched.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--source-remove">
-      <title>glib.source_remove</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>glib.source_remove</methodname>
-         <methodparam><parameter>tag</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>tag</parameter>&nbsp;:</term>
-         <listitem><simpara>an integer ID</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara><literal>True</literal> if the event source was
-removed</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>glib.source_remove</function>() function
-removes the event source specified by tag (as returned by the <link
-linkend="function-glib--idle-add"><function>glib.idle_add</function>()</link>, 
-<link
-linkend="function-glib--timeout-add"><function>glib.timeout_add</function></link>() 
-and <link
-linkend="function-glib--io-add-watch"><function>glib.io_add_watch</function>()</link> 
-functions)</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--main-context-default">
-      <title>glib.main_context_default</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>glib.main_context_default</methodname>
-         <methodparam></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>the default glib.MainContext
-object</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>glib.main_context_default</function>() function
-returns the default glib.MainContext object.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--markup-escape-text">
-      <title>glib.markup_escape_text</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>glib.markup_escape_text</methodname>
-         <methodparam><parameter>text</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>text</parameter>&nbsp;:</term>
-         <listitem><simpara>the UTF-8 string to be
-escaped</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>the escaped text</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <note>
-        <para>This function is available in PyGTK 2.8 and above.</para>
-      </note>
-
-      <para>The <function>glib.markup_escape_text</function>() function
-escapes the string specified by <parameter>text</parameter> so that the
-markup parser will parse it verbatim. Less than, greater than, ampersand,
-etc. are replaced with the corresponding entities. This function would
-typically be used when writing out a file to be parsed with the markup
-parser.</para>
-
-      <para>Note that this function doesn't protect whitespace and line
-endings from being processed according to the XML rules for normalization of
-line endings and attribute values.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--child-watch-add">
-      <title>glib.child_watch_add</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.child_watch_add</methodname>
-        <methodparam><parameter role="keyword">pid</parameter></methodparam>
-        <methodparam><parameter role="keyword">function</parameter></methodparam>
-        <methodparam><parameter role="keyword">data</parameter><initializer>None</initializer></methodparam>
-        <methodparam><parameter role="keyword">priority</parameter><initializer>glib.PRIORITY_DEFAULT</initializer></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><parameter role="keyword">pid</parameter>&nbsp;:</term>
-          <listitem><simpara>process id of a child process to watch</simpara></listitem>
-        </varlistentry>
-        <varlistentry><term><parameter role="keyword">function</parameter>&nbsp;:</term>
-          <listitem><simpara>the function to call</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><parameter role="keyword">data</parameter>&nbsp;:</term>
-          <listitem><simpara>the optional data to pass to
-<parameter>function</parameter></simpara></listitem>
-        </varlistentry>
-         <varlistentry>
-          <term><parameter role="keyword">priority</parameter>&nbsp;:</term>
-          <listitem><simpara>the priority of the idle source - one of the
-<xref linkend="glib-priority-constants"
-endterm="glib-priority-constants-title"></xref></simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem><simpara>the id of event source.</simpara></listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGTK 2.6 and above.</para>
-      </note>
-
-      <para>The <function>glib.child_watch_add</function>() function sets
-the function specified by <parameter>function</parameter> to be called with
-the user data specified by <parameter>data</parameter> when the child
-indicated by <parameter>pid</parameter> exits. The signature for the
-callback is:</para>
-
-      <programlisting>
-def callback(pid, condition, user_data)
-</programlisting>
-
-      <para>where <parameter>pid</parameter> is is the child process id,
-<parameter>condition</parameter> is the status information about the child
-process and <parameter>user_data</parameter> is <parameter>data</parameter>
-PyGTK supports only a single callback per process id.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--spawn-async">
-      <title>glib.spawn_async</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.spawn_async</methodname>
-          <methodparam><parameter role="keyword">argv</parameter></methodparam>
-          <methodparam><parameter role="keyword">envp</parameter><initializer>None</initializer></methodparam>
-          <methodparam><parameter role="keyword">working_directory</parameter><initializer>None</initializer></methodparam>
-          <methodparam><parameter role="keyword">flags</parameter><initializer>0</initializer></methodparam>
-          <methodparam><parameter role="keyword">child_setup</parameter><initializer>None</initializer></methodparam>
-          <methodparam><parameter role="keyword">user_data</parameter><initializer>None</initializer></methodparam>
-          <methodparam><parameter role="keyword">standard_input</parameter><initializer>None</initializer></methodparam>
-          <methodparam><parameter role="keyword">standard_output</parameter><initializer>None</initializer></methodparam>
-          <methodparam><parameter role="keyword">standard_error</parameter><initializer>None</initializer></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><parameter role="keyword">argv</parameter>&nbsp;:</term>
-          <listitem><simpara>a sequence of strings containing the arguments
-of the child process</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><parameter role="keyword">envp</parameter>&nbsp;:</term>
-          <listitem><simpara>the child's environment or
-<literal>None</literal> to inherit the parent's
-environment.</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><parameter role="keyword">working_directory</parameter>&nbsp;:</term>
-          <listitem><simpara>the child's current working directory, or
-<literal>None</literal> to inherit parent's</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><parameter role="keyword">flags</parameter>&nbsp;:</term>
-          <listitem><simpara>flags from the <xref
-linkend="glib-spawn-flag-constants"
-endterm="glib-spawn-flag-constants-title"></xref>.</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><parameter role="keyword">child_setup</parameter>&nbsp;:</term>
-          <listitem><simpara>a function to run in the child just before
-calling <function>exec</function>()</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><parameter role="keyword">user_data</parameter>&nbsp;:</term>
-          <listitem><simpara>the user data for the
-<parameter>child_setup</parameter> function</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><parameter role="keyword">standard_input</parameter>&nbsp;:</term>
-          <listitem><simpara>if <literal>True</literal> return the file
-descriptor for the child's stdin</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><parameter role="keyword">standard_output</parameter>&nbsp;:</term>
-          <listitem><simpara>if <literal>True</literal> return the file
-descriptor for the child's stdout</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><parameter role="keyword">standard_error</parameter>&nbsp;:</term>
-          <listitem><simpara>if <literal>True</literal> return the file
-descriptor for the child's stderr</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem><simpara>a 4-tuple containing the child's process id and
-the stdin, stdout and stderr file descriptor integers.</simpara></listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGTK 2.6 and above.</para>
-      </note>
-
-      <para>The <function>glib.spawn_async</function>() function executes
-a child program asynchronously (your program will not block waiting for the
-child to exit). The child program is specified by the only argument that
-must be provided, <parameter>argv</parameter>. <parameter>argv</parameter>
-should be a sequence of strings, to be passed as the argument vector for the
-child. The first string in <parameter>argv</parameter> is of course the name
-of the program to execute. By default, the name of the program must be a
-full path; the <envar>PATH</envar> shell variable will only be searched if
-you pass the <literal>glib.SPAWN_SEARCH_PATH</literal> flag in
-<parameter>flags</parameter>. The function returns a 4-tuple containing the
-child's process id and the file descriptors for the child's stdin, stdout
-and stderr. The stdin, stdout and stderr file descriptors are returned only
-ofthe corresponding <parameter>standard_input</parameter>,
-<parameter>standard_output</parameter> or
-<parameter>standard_error</parameter> params are
-<literal>True</literal>.</para>
-
-      <para>On Windows, the low-level child process creation API
-(<function>CreateProcess</function>()) doesn't use argument vectors, but a
-command line. The C runtime library's <function>spawn*</function>() family
-of functions (which <link
-linkend="function-glib--spawn-async"><function>glib.spawn_async</function>()</link>
-eventually calls) paste the argument vector elements into a command line,
-and the C runtime startup code does a corresponding reconstruction of an
-argument vector from the command line, to be passed to
-<function>main</function>(). Complications arise when you have argument
-vector elements that contain spaces of double quotes. The
-<function>spawn*</function>() functions don't do any quoting or escaping,
-but on the other hand the startup code does do unquoting and unescaping in
-order to enable receiving arguments with embedded spaces or double
-quotes. To work around this asymmetry, the <link
-linkend="function-glib--spawn-async"><function>glib.spawn_async</function>()</link>
-function will do quoting and escaping on argument vector elements that need
-it before calling the C runtime <function>spawn</function>()
-function.</para>
-
-      <para><parameter>envp</parameter> is a sequence of strings, where each
- string has the form <literal>KEY=VALUE</literal>. This will become the
- child's environment. If <parameter>envp</parameter> is
- <parameter>None</parameter> or not specified, the child inherits its
- parent's environment.</para>
-
-      <para><parameter>flags</parameter> should be the bitwise
-<literal>OR</literal> of the <xref linkend="glib-spawn-flag-constants"
-endterm="glib-spawn-flag-constants-title"></xref> you want to affect the
-function's behaviour. The <literal>glib.SPAWN_DO_NOT_REAP_CHILD</literal>
-flag means that the child will not automatically be reaped; you must use a
-GChildWatch source to be notified about the death of the child
-process. Eventually you must call g_spawn_close_pid() on the child_pid, in
-order to free resources which may be associated with the child process. (On
-Unix, using a GChildWatch source is equivalent to calling
-<function>waitpid</function>() or handling the <literal>SIGCHLD</literal>
-signal manually. On Windows, calling g_spawn_close_pid() is equivalent to
-calling <function>CloseHandle</function>() on the process handle
-returned).</para>
-
-      <para><literal>glib.SPAWN_LEAVE_DESCRIPTORS_OPEN</literal> means
-that the parent's open file descriptors will be inherited by the child;
-otherwise all descriptors except stdin/stdout/stderr will be closed before
-calling <function>exec</function>() in the
-child. <literal>glib.SPAWN_SEARCH_PATH</literal> means that
-<parameter>argv</parameter>[0] need not be an absolute path, it will be
-looked for in the user's
-<envar>PATH</envar>. <literal>glib.SPAWN_STDOUT_TO_DEV_NULL</literal>
-means that the child's standard output will be discarded, instead of going
-to the same location as the parent's standard output. If you use this flag,
-<parameter>standard_output</parameter> must be
-<literal>None</literal>. <literal>glib.SPAWN_STDERR_TO_DEV_NULL</literal>
-means that the child's standard error will be discarded, instead of going to
-the same location as the parent's standard error. If you use this flag,
-<parameter>standard_error</parameter> must be
-<literal>None</literal>. <literal>glib.SPAWN_CHILD_INHERITS_STDIN</literal>
-means that the child will inherit the parent's standard input (by default,
-the child's standard input is attached to
-<filename>/dev/null</filename>). If you use this flag,
-<parameter>standard_input</parameter> must be
-<literal>None</literal>. <literal>glib.SPAWN_FILE_AND_ARGV_ZERO</literal>
-means that the first element of <parameter>argv</parameter> is the file to
-execute, while the remaining elements are the actual argument vector to pass
-to the file. Normally the <link
-linkend="function-glib--spawn-async"><function>glib.spawn_async</function>()</link>
-function uses <parameter>argv</parameter>[0] as the file to execute, and
-passes all of <parameter>argv</parameter> to the child.</para>
-
-      <para><parameter>child_setup</parameter> and
-<parameter>user_data</parameter> are a function and user data. On POSIX
-platforms, the function is called in the child after GLib has performed all
-the setup it plans to perform (including creating pipes, closing file
-descriptors, etc.) but before calling <function>exec</function>(). That is,
-<parameter>child_setup</parameter> is called just before calling
-<function>exec</function>() in the child. Obviously actions taken in this
-function will only affect the child, not the parent. On Windows, there is no
-separate <function>fork</function>() and <function>exec</function>()
-functionality. Child processes are created and run right away with one API
-call,
-<function>CreateProcess</function>(). <parameter>child_setup</parameter> is
-called in the parent process just before creating the child process. You
-should carefully consider what you do in <parameter>child_setup</parameter>
-if you intend your software to be portable to Windows.</para>
-
-      <para>The returned child process id can be used to send signals to the
-child, or to wait for the child if you specified the
-<literal>glib.SPAWN_DO_NOT_REAP_CHILD</literal> flag.  On Windows, child
-pid will be returned only if you specified the
-<literal>glib.SPAWN_DO_NOT_REAP_CHILD</literal> flag.</para>
-
-      <para>The caller of the <link
-linkend="function-glib--spawn-async"><function>glib.spawn_async</function>()</link>
-must close any returned file descriptors when they are no longer in
-use.</para>
-
-      <para>If <parameter>standard_input</parameter> is
-<literal>None</literal>, the child's standard input is attached to
-<filename>/dev/null</filename> unless
-<literal>glib.SPAWN_CHILD_INHERITS_STDIN</literal> is set.</para>
-
-      <para>If <parameter>standard_error</parameter> is
-<literal>None</literal>, the child's standard error goes to the same
-location as the parent's standard error unless
-<literal>glib.SPAWN_STDERR_TO_DEV_NULL</literal> is set.</para>
-
-      <para>If <parameter>standard_output</parameter> is
-<literal>None</literal>, the child's standard output goes to the same
-location as the parent's standard output unless
-<literal>glib.SPAWN_STDOUT_TO_DEV_NULL</literal> is set.</para>
-
-      <para>If an error occurs, the glib.GError exception will be
-raised.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--get-current-time">
-      <title>glib.get_current_time</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.get_current_time</methodname>
-       </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem><simpara>the current time as the number of seconds and
-microseconds from the epoch.</simpara></listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGTK 2.8 and above.</para>
-      </note>
-
-      <para>The <function>glib.get_current_time</function>() function
-reurns the current time of day as the number of seconds and microseconds
-from the epoch.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--get-user-cache-dir">
-      <title>glib.get_user_cache_dir</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.get_user_cache_dir</methodname>
-      </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem>
-            <simpara>
-              a strings with a path to user's cache directory.
-            </simpara>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGObject 2.18 and above.</para>
-      </note>
-
-      <para>Returns a base directory in which to store non-essential,
-        cached data specific to particular user.</para>
-
-      <para>On UNIX platforms this is determined using the mechanisms
-        described in the
-        <ulink url="http://www.freedesktop.org/Standards/basedir-spec">XDG
-          Base Directory Specification</ulink>.</para>
-    </refsect2>
-
-    <refsect2 id="function-glib--get-user-config-dir">
-      <title>glib.get_user_config_dir</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.get_user_config_dir</methodname>
-      </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem>
-            <simpara>
-              a strings with a path to user's configuration directory.
-            </simpara>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGObject 2.18 and above.</para>
-      </note>
-
-      <para>Returns a base directory in which to store user-specific
-        application configuration information such as user preferences
-        and settings. </para>
-
-      <para>On UNIX platforms this is determined using the mechanisms
-        described in the
-        <ulink url="http://www.freedesktop.org/Standards/basedir-spec">XDG
-          Base Directory Specification</ulink>.</para>
-    </refsect2>
-
-    <refsect2 id="function-glib--get-user-data-dir">
-      <title>glib.get_user_data_dir</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.get_user_data_dir</methodname>
-      </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem>
-            <simpara>
-              a strings with a path to user's data directory.
-            </simpara>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGObject 2.18 and above.</para>
-      </note>
-
-      <para>Returns a base directory in which to access application
-        data such as icons that is customized for a particular
-        user</para>
-
-      <para>On UNIX platforms this is determined using the mechanisms
-        described in the
-        <ulink url="http://www.freedesktop.org/Standards/basedir-spec">XDG
-          Base Directory Specification</ulink>.</para>
-    </refsect2>
-
-    <refsect2 id="function-glib--get-user-special-dir">
-      <title>glib.get_user_special_dir</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.get_user_special_dir</methodname>
-        <methodparam><parameter>directory</parameter></methodparam>
-      </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>directory</emphasis>&nbsp;:</term>
-          <listitem>
-            <simpara>
-              the logical id of special directory,
-              see <link linkend="glib-user-directory-constants">User
-              Directory constants</link> for the list of supported
-              values
-            </simpara>
-          </listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem>
-            <simpara>
-              a strings with a path to the requested directory.
-            </simpara>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGObject 2.18 and above.</para>
-      </note>
-
-      <para>Returns the full path of a special directory using its
-        logical id.</para>
-
-      <para>On Unix this is done using the XDG special user
-        directories.  For compatibility with existing practise,
-        <link linkend="glib-user-directory-constants">glib.USER_DIRECTORY_DESKTOP</link>
-        falls back to <literal>$HOME/Desktop</literal> when XDG
-        special user directories have not been set up.</para>
-
-      <para>Depending on the platform, the user might be able to
-        change the path of the special directory without requiring the
-        session to restart; GLib will not reflect any change once the
-        special directories are loaded.</para>
-    </refsect2>
-
-    <refsect2 id="function-glib--main-depth">
-      <title>glib.main_depth</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.main_depth</methodname>
-       </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem><simpara>the depth of the stack of calls to the main
-context.</simpara></listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGTK 2.8 and above.</para>
-      </note>
-
-      <para>The <function>main_depth</function>() function returns the depth
-of the stack of calls in the main context. That is, when called from the
-toplevel, it gives 0. When called from within a callback from the <link
-linkend="method-glibmaincontext--iteration"><methodname>glib.MainContext.iteration</methodname>()</link>
-method (or the <link
-linkend="method-glibmainloop--run"><methodname>glib.MainLoop.run</methodname>()</link>
-method, etc.) it returns 1. When called from within a callback to a
-recursive call to the <link
-linkend="method-glibmaincontext--iteration"><methodname>glib.MainContext.iteration</methodname>()</link>
-method), it returns 2. And so forth.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--threads-init">
-      <title>glib.threads_init</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.threads_init</methodname>
-        <methodparam><parameter></parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem><simpara></simpara></listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGTK 2.4 and above.</para>
-      </note>
-
-      <para>The <function>threads_init</function>() function initializes the
-      the use of Python threading in the glib module. This function is
-      different than the <link
-      linkend="function-gdk--threads-init"><function>gtk.gdk.threads_init</function>()</link>
-      function as that function also initializes the gdk threads.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--signal-accumulator-true-handled">
-      <title>glib.signal_accumulator_true_handled</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.signal_accumulator_true_handled</methodname>
-       </methodsynopsis></programlisting>
-
-      <note>
-        <para>This function is available in PyGTK 2.8 and above.</para>
-      </note>
-
-      <para>The <function>signal_accumulator_true_handled</function>()
-      function is only used as accumulator argument when registering
-      signals.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--filename-display-name">
-      <title>glib.filename_display_name</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.filename_display_name</methodname>
-        <methodparam><parameter>filename</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>filename</emphasis>&nbsp;:</term>
-          <listitem><simpara>a pathname in the file name
-          encoding</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem><simpara>an UTF8 rendition of
-          <parameter>filename</parameter>.</simpara></listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGTK 2.10 and above.</para>
-      </note>
-
-      <para>The <function>filename_display_name</function>() function
-      converts a filename into a valid UTF-8 string. The conversion is not
-      necessarily reversible, so you should keep the original around and use
-      the return value of this function only for display purposes. Unlike
-      g_filename_to_utf8(), the result is guaranteed to be non-None even if
-      the filename actually isn't in the file name encoding.</para>
-
-      <para>If you know the whole pathname of the file you should use the
-      <link
-      linkend="function-glib--filename-display-basename"><function>glib.filename_display_basename</function>()</link>
-      function, since that allows location-based translation of
-      filenames.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--filename-display-basename">
-      <title>glib.filename_display_basename</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.filename_display_basename</methodname>
-        <methodparam><parameter>filename</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>filename</emphasis>&nbsp;:</term>
-          <listitem><simpara>an absolute pathname in the file name
-          encoding</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem><simpara>an UTF8 rendition of
-          <parameter>filename</parameter>.</simpara></listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGTK 2.10 and above.</para>
-      </note>
-
-      <para>The <function>filename_display_basename</function>() function
-      returns the display basename for the particular filename, guaranteed
-      to be valid UTF-8. The display name might not be identical to the
-      filename, for instance there might be problems converting it to UTF-8,
-      and some files can be translated in the display.</para>
-
-      <para>You must pass the whole absolute pathname to this functions so
-      that translation of well known locations can be done.</para>
-
-      <para>This function is preferred over the <link
-      linkend="function-glib--filename-display-name"><function>glib.filename_display_name</function>()</link>
-      function if you know the whole path, as it allows translation.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-glib--filename-from-utf8">
-      <title>glib.filename_from_utf8</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>glib.filename_from_utf8</methodname>
-       <methodparam><parameter>utf8string</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>utf8string</emphasis>&nbsp;:</term>
-          <listitem><simpara>a UTF-8 encoded string.</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem><simpara>a filename encoded in the GLib filename
-          encoding.</simpara></listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGTK 2.10 and above.</para>
-      </note>
-
-      <para>The <function>filename_from_utf8</function>() function converts
-      a string from UTF-8 to the encoding GLib uses for filenames. Note that
-      on Windows GLib uses UTF-8 for filenames.</para>
-
-    </refsect2>
-
-  </refsect1>
-
-</refentry>
diff --git a/docs/reference/pyglib-maincontext.xml b/docs/reference/pyglib-maincontext.xml
deleted file mode 100644 (file)
index ee1e985..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-glibmaincontext">
-  <refnamediv>
-    <refname>glib.MainContext</refname>
-
-    <refpurpose>an object representing a set of event sources to be handled
-in a <link
-linkend="class-glibmainloop"><classname>glib.MainLoop</classname></link>.</refpurpose>
-  </refnamediv>
-
-  <refsect1>
-    <title>Synopsis</title>
-
-<classsynopsis language="python">
-  <ooclass><classname>glib.MainContext</classname></ooclass>
-<constructorsynopsis language="python">
-    <methodname><link linkend="constructor-glibmaincontext">glib.MainContext</link></methodname>
-  </constructorsynopsis>
-<methodsynopsis language="python">
-    <methodname><link linkend="method-glibmaincontext--iteration">iteration</link></methodname>
-    <methodparam><parameter>may_block</parameter></methodparam>
-  </methodsynopsis>
-<methodsynopsis language="python">
-    <methodname><link linkend="method-glibmaincontext--pending">pending</link></methodname>
-  </methodsynopsis>
-</classsynopsis>
-
-</refsect1>
-
-  <refsect1>
-    <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-glibmaincontext">glib.MainContext</link>
-</synopsis>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Description</title>
-
-    <para>A <link
-linkend="class-glibmaincontext"><classname>glib.MainContext</classname></link>
-represents a set of event sources that can be run in a single thread. File
-descriptors (plain files, pipes or sockets) and timeouts are the standard
-event sources for <literal>GTK</literal> and <literal>PyGTK</literal> though
-others can be added. Each event source is assigned a priority. The default
-priority, <literal>glib.PRIORITY_DEFAULT</literal>, is 0. Values less
-than 0 denote higher priorities. Values greater than 0 denote lower
-priorities. Events from high priority sources are always processed before
-events from lower priority sources. Single iterations of a <link
-linkend="class-glibmaincontext"><classname>glib.MainContext</classname></link>
-can be run with the <link
-linkend="method-glibmaincontext--iteration"><methodname>iteration</methodname>()</link>
-method.</para>
-
-  </refsect1>
-
-  <refsect1 id="constructor-glibmaincontext">
-    <title>Constructor</title>
-
-    <programlisting><constructorsynopsis language="python">
-        <methodname>glib.MainContext</methodname>
-      </constructorsynopsis></programlisting>
-    <variablelist>
-      <varlistentry>
-        <term><emphasis>Returns</emphasis>&nbsp;:</term>
-        <listitem><simpara>a new <link
-        linkend="class-glibmaincontext"><classname>glib.MainContext</classname></link>
-        object.</simpara></listitem>
-      </varlistentry>
-    </variablelist>
-
-    <para>Creates a new <link
-linkend="class-glibmaincontext"><classname>glib.MainContext</classname></link>
-object.</para>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Methods</title>
-
-    <refsect2 id="method-glibmaincontext--iteration">
-      <title>glib.MainContext.iteration</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>iteration</methodname>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>may_block</parameter>&nbsp;:</term>
-         <listitem><simpara>if <literal>True</literal> the call may block
-         waiting for an event.</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-       <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara><literal>True</literal> if events were
-         dispatched.</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>iteration</methodname>() method runs a single
-iteration. This involves:</para>
-
-    <itemizedlist>
-      <listitem>
-       <simpara>checking to see if any associated event sources are ready
-to be processed;</simpara>
-      </listitem>
-      <listitem>
-       <simpara>then if no events sources are ready and
-<parameter>may_block</parameter> is <literal>True</literal>, waiting for a
-source to become ready;</simpara>
-      </listitem>
-      <listitem>
-       <simpara>and finally, dispatching the highest priority events
-sources that are ready</simpara>
-      </listitem>
-   </itemizedlist>
-
-      <para>Note that even when <parameter>may_block</parameter> is
-<literal>True</literal>, it is still possible for
-<methodname>iteration</methodname>() to return <literal>False</literal>,
-since the the wait may be interrupted for other reasons than an event source
-becoming ready.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-glibmaincontext--pending">
-      <title>glib.MainContext.pending</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>pending</methodname>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-       <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara><literal>True</literal> if events are
-         pending.</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>pending</methodname>() method checks if any
-associated sources have pending events.</para>
-
-    </refsect2>
-
-  </refsect1>
-
-</refentry>
diff --git a/docs/reference/pyglib-mainloop.xml b/docs/reference/pyglib-mainloop.xml
deleted file mode 100644 (file)
index 913e743..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-glibmainloop">
-  <refnamediv>
-    <refname>glib.MainLoop</refname>
-
-    <refpurpose>an object representing the main event loop of a PyGTK
-    application.</refpurpose>
-  </refnamediv>
-
-  <refsect1>
-    <title>Synopsis</title>
-
-<classsynopsis language="python">
-  <ooclass><classname>glib.MainLoop</classname></ooclass>
-<constructorsynopsis language="python">
-    <methodname><link linkend="constructor-glibmainloop">glib.MainLoop</link></methodname>
-    <methodparam><parameter>context</parameter><initializer>None</initializer></methodparam>
-    <methodparam><parameter>is_running</parameter><initializer>0</initializer></methodparam>
-  </constructorsynopsis>
-<methodsynopsis language="python">
-    <methodname><link linkend="method-glibmainloop--get-context">get_context</link></methodname>
-  </methodsynopsis>
-<methodsynopsis language="python">
-    <methodname><link linkend="method-glibmainloop--is-running">is_running</link></methodname>
-  </methodsynopsis>
-<methodsynopsis language="python">
-    <methodname><link linkend="method-glibmainloop--quit">quit</link></methodname>
-  </methodsynopsis>
-<methodsynopsis language="python">
-    <methodname><link linkend="method-glibmainloop--run">run</link></methodname>
-  </methodsynopsis>
-</classsynopsis>
-
-</refsect1>
-
-  <refsect1>
-    <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-glibmainloop">glib.MainLoop</link>
-</synopsis>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Description</title>
-
-    <para><link
-linkend="class-glibmainloop"><classname>glib.MainLoop</classname></link>
-represents a main event loop. A <link
-linkend="class-glibmainloop"><classname>glib.MainLoop</classname></link>
-is created with the <link
-linkend="constructor-glibmainloop">glib.MainLoop</link>()
-constructor. After adding the initial event sources, the <link
-linkend="method-glibmainloop--run"><methodname>run</methodname>()</link>
-method is called. This continuously checks for new events from each of the
-event sources and dispatches them. Finally, the processing of an event from
-one of the sources leads to a call to the <link
-linkend="method-glibmainloop--quit"><methodname>quit</methodname>()</link>
-method to exit the main loop, and the <link
-linkend="method-glibmainloop--run"><methodname>run</methodname>()</link>
-method returns.</para>
-
-    <para>It is possible to create new instances of <link
-linkend="class-glibmainloop"><classname>glib.MainLoop</classname></link>
-recursively. This is often used in <literal>PyGTK</literal> applications
-when showing modal dialog boxes. Note that event sources are associated with
-a particular <link
-linkend="class-glibmaincontext"><classname>glib.MainContext</classname></link>,
-and will be checked and dispatched for all main loops associated with that
-<link
-linkend="class-glibmaincontext"><classname>glib.MainContext</classname></link>.</para>
-
-    <para><literal>PyGTK</literal> contains wrappers of some of these
-functions, e.g. the <link
-linkend="function-gtk--main"><function>gtk.main</function>()</link>, <link
-linkend="function-gtk--main-quit"><function>gtk.main_quit</function>()</link>
-and <link
-linkend="function-gtk--events-pending"><function>gtk.events_pending</function>()</link>
-functions.</para>
-
-  </refsect1>
-
-  <refsect1 id="constructor-glibmainloop">
-    <title>Constructor</title>
-
-    <programlisting><constructorsynopsis language="python">
-       <methodname>glib.MainLoop</methodname>
-       <methodparam><parameter>context</parameter><initializer>None</initializer></methodparam>
-       <methodparam><parameter>is_running</parameter><initializer>None</initializer></methodparam>
-      </constructorsynopsis></programlisting>
-    <variablelist>
-      <varlistentry>
-       <term><parameter>context</parameter>&nbsp;:</term>
-       <listitem><simpara>a <link
-       linkend="class-glibmaincontext"><classname>glib.MainContext</classname></link>
-       or <literal>None</literal> to use the default
-       context.</simpara></listitem>
-      </varlistentry>
-      <varlistentry>
-       <term><parameter>is_running</parameter>&nbsp;:</term>
-       <listitem><simpara>if <literal>True</literal> indicates that the
-       loop is running. This is not very important since calling the <link
-       linkend="method-glibmainloop--run"><methodname>run</methodname>()</link>
-       method will set this to <literal>True</literal>
-       anyway.</simpara></listitem>
-      </varlistentry>
-      <varlistentry>
-       <term><emphasis>Returns</emphasis>&nbsp;:</term>
-       <listitem><simpara>a new <link
-       linkend="class-glibmainloop"><classname>glib.MainLoop</classname></link>
-       object.</simpara></listitem>
-      </varlistentry>
-    </variablelist>
-
-    <para>Creates a new <link
-linkend="class-glibmainloop"><classname>glib.MainLoop</classname></link>
-object.</para>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Methods</title>
-
-    <refsect2 id="method-glibmainloop--get-context">
-      <title>glib.MainLoop.get_context</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>get_context</methodname>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-       <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>the <link
-         linkend="class-glibmaincontext"><classname>glib.MainContext</classname></link>
-         the mainloop is associated with</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>get_context</methodname>() method returns the
-<link
-linkend="class-glibmaincontext"><classname>glib.MainContext</classname></link>
-that the mainloop was created with.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-glibmainloop--is-running">
-      <title>glib.MainLoop.is_running</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>is_running</methodname>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-       <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara><literal>True</literal> if the mainloop is
-         currently being run.</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>is_running</methodname>() method checks to see
-if the mainloop is currently being run via the <link
-linkend="method-glibmainloop--run"><methodname>run</methodname>()</link>
-method.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-glibmainloop--quit">
-      <title>glib.MainLoop.quit</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>quit</methodname>
-       </methodsynopsis></programlisting>
-
-      <para>The <methodname>quit</methodname>() method stops the mainloop
-from running. Any subsequent calls to the <link
-linkend="method-glibmainloop--run"><methodname>run</methodname>()</link>
-method will return immediately.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-glibmainloop--run">
-      <title>glib.MainLoop.run</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>run</methodname>
-       </methodsynopsis></programlisting>
-
-      <para>The <methodname>run</methodname>() method runs a mainloop until
-the <link
-linkend="method-glibmainloop--quit"><methodname>quit</methodname>()</link>
-method is called. If this is called for the thread of the loop's <link
-linkend="class-glibmaincontext"><classname>glib.MainContext</classname></link>,
-it will process events from the loop, otherwise it will simply wait.</para>
-
-    </refsect2>
-
-  </refsect1>
-
-</refentry>
diff --git a/docs/reference/pygobject-classes.xml b/docs/reference/pygobject-classes.xml
deleted file mode 100644 (file)
index 17f925c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-<chapter id="gobject-class-reference"
-  xmlns:xi="http://www.w3.org/2001/XInclude">
-
-<title>PyGObject Class Reference</title>
-
-<!-- GOBJECT CLASSES -->
-<xi:include href="pygobject.xml"/>
-<xi:include href="pygobject-gboxed.xml"/>
-<xi:include href="pygobject-gpointer.xml"/>
-<xi:include href="pygobject-ginterface.xml"/>
-<xi:include href="pygobject-functions.xml"/>
-<xi:include href="pygobject-constants.xml"/>
-
-</chapter>
diff --git a/docs/reference/pygobject-constants.xml b/docs/reference/pygobject-constants.xml
deleted file mode 100644 (file)
index a8f9711..0000000
+++ /dev/null
@@ -1,390 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="gobject-constants">
-  <refnamediv>
-    <refname>gobject Constants</refname>
-    <refpurpose>the built-in constants of the gobject module</refpurpose>
-  </refnamediv>
-
-  <refsect1>
-    <title>Synopsis</title>
-
-    <programlisting>
-<xref linkend="gobject-param-constants" endterm="gobject-param-constants-title"></xref>
-<xref linkend="gobject-signal-constants" endterm="gobject-signal-constants-title"></xref>
-<xref linkend="gobject-type-constants" endterm="gobject-type-constants-title"></xref>
-<xref linkend="gobject-version-constants" endterm="gobject-version-constants-title"></xref>
-</programlisting>
-
-  </refsect1>
-
-  <refsect1 id="gobject-constants-description">
-    <title>Description</title>
-
-    <refsect2 id="gobject-param-constants">
-      <title id="gobject-param-constants-title">GObject Param Flag Constants</title>
-
-      <para>The Param Flag constants are a set of bit-flags that specify
-certain aspects of parameters that can be configured.</para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gobject.PARAM_READABLE</literal></term>
-         <listitem>
-           <simpara>The parameter is readable</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.PARAM_WRITABLE</literal></term>
-         <listitem>
-           <simpara>The parameter is writable</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.PARAM_CONSTRUCT</literal></term>
-         <listitem>
-           <simpara>The parameter will be set upon object
-           construction</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.PARAM_CONSTRUCT_ONLY</literal></term>
-         <listitem>
-           <simpara>The parameter will only be set upon object
-           construction</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.PARAM_LAX_VALIDATION</literal></term>
-         <listitem>
-           <simpara>Upon parameter conversion strict validation is not
-           required</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-    </refsect2>
-
-    <refsect2 id="gobject-signal-constants">
-      <title id="gobject-signal-constants-title">GObject Signal Flag Constants</title>
-
-      <para>The Signal Flag constants are a set of bit-flags that specify a
-signal's behavior. The overall signal description outlines how especially
-the <literal>RUN</literal> flags control the stages of a signal
-emission.</para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_RUN_FIRST</literal></term>
-         <listitem>
-           <simpara>Invoke the object method handler in the first emission
-           stage.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_RUN_LAST</literal></term>
-         <listitem>
-           <simpara>Invoke the object method handler in the third emission
-           stage.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_RUN_CLEANUP</literal></term>
-         <listitem>
-           <simpara>Invoke the object method handler in the last emission
-           stage.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_NO_RECURSE</literal></term>
-         <listitem>
-           <simpara>Signals being emitted for an object while currently
-           being in emission for this very object will not be emitted
-           recursively, but instead cause the first emission to be
-           restarted.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_DETAILED</literal></term>
-         <listitem>
-           <simpara>This signal supports "::detail" appendices to the
-           signal name upon handler connections and emissions.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_ACTION</literal></term>
-         <listitem>
-           <simpara>Action signals are signals that may freely be emitted
-           on alive objects from user code via the <link
-           linkend="method-gobject--emit"><methodname>gobject.emit</methodname>()</link>
-           method and friends, without the need of being embedded into
-           extra code that performs pre or post emission adjustments on the
-           object. They can also be thought of as object methods which can
-           be called generically by third-party code.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_NO_HOOKS</literal></term>
-         <listitem>
-           <simpara>No emissions hooks are supported for this
-           signal.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-    </refsect2>
-
-    <refsect2 id="gobject-spawn-flag-constants">
-      <title id="gobject-spawn-flag-constants-title">GObject Spawn Flag Constants</title>
-
-      <para>The Spawn Flag constants are a set of bit-flags that can be
-passed to the <link
-linkend="function-gobject--spawn-async"><function>gobject.spawn_async</function>()</link>
-function.</para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gobject.SPAWN_LEAVE_DESCRIPTORS_OPEN</literal></term>
-         <listitem>
-           <simpara>the parent's open file descriptors will be inherited by
-the child; otherwise all descriptors except stdin/stdout/stderr will be
-closed before calling <function>exec</function>() in the child.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SPAWN_DO_NOT_REAP_CHILD</literal></term>
-         <listitem>
-           <simpara>the child will not be automatically reaped; you must
-call <function>waitpid</function>() or handle <literal>SIGCHLD</literal>
-yourself, or the child will become a zombie.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SPAWN_SEARCH_PATH</literal></term>
-         <listitem>
-           <simpara><parameter>argv</parameter>[0] need not be an absolute
-path, it will be looked for in the user's <envar>PATH</envar>.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SPAWN_STDOUT_TO_DEV_NULL</literal></term>
-         <listitem>
-           <simpara>the child's standard output will be discarded, instead
-of going to the same location as the parent's standard output.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SPAWN_STDERR_TO_DEV_NULL</literal></term>
-         <listitem>
-           <simpara>the child's standard error will be discarded.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SPAWN_CHILD_INHERITS_STDIN</literal></term>
-         <listitem>
-           <simpara>the child will inherit the parent's standard input (by
-default, the child's standard input is attached to /dev/null).</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SPAWN_FILE_AND_ARGV_ZERO</literal></term>
-         <listitem>
-           <simpara>the first element of <parameter>argv</parameter> is the
-file to execute, while the remaining elements are the actual argument vector
-to pass to the file. Normally <link
-linkend="function-gobject--spawn-async"><function>gobject.spawn_async</function>()</link>
-uses <parameter>argv</parameter>[0] as the file to execute, and passes all
-of <parameter>argv</parameter> to the child.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-    </refsect2>
-
-    <refsect2 id="gobject-type-constants">
-      <title id="gobject-type-constants-title">GObject Built-in Type Constants</title>
-
-      <para>The Built-in Type constants specify the pre-defined types used
-by gobject.</para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gobject.TYPE_INVALID</literal></term>
-         <listitem>
-           <simpara>An invalid type, used as error return value in some
-           functions.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_NONE</literal></term>
-         <listitem>
-           <simpara>A fundamental type indicating no type.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_INTERFACE</literal></term>
-         <listitem>
-           <simpara>The fundamental type from which all interfaces are
-           derived.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_CHAR</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a
-           character. This maps to a string in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_UCHAR</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to an unsigned
-           character. This maps to a string in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_BOOLEAN</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a True or False
-           value. This maps to an integer in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_INT</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to an
-           integer. This maps to an integer in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_UINT</literal></term>
-         <listitem>
-           <simpara>he fundamental type corresponding to an unsigned
-           integer. This maps to an integer in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_LONG</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a long
-           integer. This maps to an integer in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_ULONG</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to an unsigned
-           integer. This maps to an integer in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_INT64</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to an long long
-           integer. This maps to a long integer in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_UINT64</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to an unsigned long
-           long integer. This maps to a long integer in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_ENUM</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to an enumeration
-           type. This maps to an integer in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_FLAGS</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a flag
-           type. This maps to an integer in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_FLOAT</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a floating point
-           number. This maps to a float in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_DOUBLE</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a double
-           floating point number. This maps to a float in Python.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_STRING</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a string.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_POINTER</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a pointer to an
-           anonymous type. This has no corresponding Python type.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_BOXED</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a boxed object
-           type.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_PARAM</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a GParamSpec
-           type.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_OBJECT</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a GObject
-           type.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.TYPE_PYOBJECT</literal></term>
-         <listitem>
-           <simpara>The fundamental type corresponding to a Python Object
-           type.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-    </refsect2>
-
-    <refsect2 id="gobject-version-constants">
-      <title id="gobject-version-constants-title">GObject Version Constants</title>
-
-      <para>The Version constants specify the version of
-<literal>GLIB</literal> used by PyGTK as a 3-tuple containing the major,
-minor and patch release numbers.</para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gobject.glib_version</literal></term>
-         <listitem>
-           <simpara>A 3-tuple containing (major, minor, patch) release
-           numbers.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-    </refsect2>
-
-  </refsect1>
-
-</refentry>
diff --git a/docs/reference/pygobject-functions.xml b/docs/reference/pygobject-functions.xml
deleted file mode 100644 (file)
index 1f50fbe..0000000
+++ /dev/null
@@ -1,889 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="gobject-functions">
-  <refnamediv>
-    <refname>gobject Functions</refname>
-    <refpurpose>miscellaneous functions</refpurpose>
-  </refnamediv>
-
-  <refsect1>
-    <title>Synopsis</title>
-
-    <programlisting>
-<methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--type-name">gobject.type_name</link></methodname>
-       <methodparam><parameter>type</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--type-from-name">gobject.type_from_name</link></methodname>
-       <methodparam><parameter>type_name</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--type-parent">gobject.type_parent</link></methodname>
-       <methodparam><parameter>type</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--type-is-a">gobject.type_is_a</link></methodname>
-       <methodparam><parameter>type</parameter></methodparam>
-       <methodparam><parameter>parent_type</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--type-children">gobject.type_children</link></methodname>
-       <methodparam><parameter>type</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--type-interfaces">gobject.type_interfaces</link></methodname>
-       <methodparam><parameter>type</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--type-register">gobject.type_register</link></methodname>
-       <methodparam><parameter>class</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--signal-new">gobject.signal_new</link></methodname>
-       <methodparam><parameter>signal_name</parameter></methodparam>
-       <methodparam><parameter>type</parameter></methodparam>
-       <methodparam><parameter>flags</parameter></methodparam>
-       <methodparam><parameter>return_type</parameter></methodparam>
-       <methodparam><parameter>param_types</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--signal-list-names">gobject.signal_list_names</link></methodname>
-       <methodparam><parameter role="keyword">type</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--signal-list-ids">gobject.signal_list_ids</link></methodname>
-       <methodparam><parameter role="keyword">type</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--signal-lookup">gobject.signal_lookup</link></methodname>
-       <methodparam><parameter role="keyword">name</parameter></methodparam>
-       <methodparam><parameter role="keyword">type</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--signal-name">gobject.signal_name</link></methodname>
-       <methodparam><parameter role="keyword">signal_id</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--signal-query1">gobject.signal_query</link></methodname>
-       <methodparam><parameter role="keyword">name</parameter></methodparam>
-       <methodparam><parameter role="keyword">type</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--signal-query2">gobject.signal_query</link></methodname>
-       <methodparam><parameter role="keyword">signal_id</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--list-properties">gobject.list_properties</link></methodname>
-       <methodparam><parameter>type</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--new">gobject.new</link></methodname>
-       <methodparam><parameter>type</parameter></methodparam>
-       <methodparam><parameter>...</parameter></methodparam>
-  </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--signal-accumulator-true-handled">gobject.signal_accumulator_true_handled</link></methodname>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--add-emission-hook">gobject.add_emission_hook</link></methodname>
-       <methodparam><parameter>type</parameter></methodparam>
-       <methodparam><parameter>name</parameter></methodparam>
-       <methodparam><parameter>callback</parameter></methodparam>
-       <methodparam><parameter>...</parameter></methodparam>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--remove-emission-hook">gobject.remove_emission_hook</link></methodname>
-       <methodparam><parameter>type</parameter></methodparam>
-       <methodparam><parameter>name</parameter></methodparam>
-       <methodparam><parameter>hook_id</parameter></methodparam>
-      </methodsynopsis><methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject---install-metaclass">gobject._install_metaclass</link></methodname>
-       <methodparam><parameter>metaclass</parameter></methodparam>
-      </methodsynopsis>
-    </programlisting>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Description</title>
-
-    <para>These functions are part of the <literal>PyGTK</literal> gobject
-module but are not directly associated with a specific class.</para>
-
-    <note>
-      <para>
-        Many functions that previously were in this namespace got moved to <link
-        linkend="glib-functions"><literal>glib</literal></link> namespace instead.  They
-        are still available in <literal>gobject</literal> for backward compatibility, but
-        not documented here.  If you miss documentation for some function, be sure to
-        check <link linkend="glib-functions"><literal>glib</literal></link> first.
-      </para>
-    </note>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Functions</title>
-
-    <refsect2 id="function-gobject--type-name">
-      <title>gobject.type_name</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.type_name</methodname>
-         <methodparam><parameter>type</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>gobject.type_name</function>() function returns
-the unique name that is assigned to the specified
-<parameter>type</parameter>. <parameter>type</parameter> can be a GObject
-type, type ID or instance. This function raises a TypeError exception
-if <parameter>type</parameter> isn't a <literal>PyGTK</literal> type.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--type-from-name">
-      <title>gobject.type_from_name</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.type_from_name</methodname>
-         <methodparam><parameter>type_name</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>type_name</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the name of a
-type</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>the type ID named
-<parameter>type_name</parameter></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>gobject.type_from_name</function>() function
-returns the type ID of the <literal>PyGTK</literal> type with the name
-specified by <parameter>type_name</parameter>. This function raises a
-RuntimeError exception if no type matches
-<parameter>type_name</parameter>.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--type-parent">
-      <title>gobject.type_parent</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.type_parent</methodname>
-         <methodparam><parameter>type</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>the parent type ID</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>gobject.type_parent</function>() function returns
-the direct parent type ID of the specified <parameter>type</parameter>.
-<parameter>type</parameter> can be a GObject type, type ID or instance. If
-<parameter>type</parameter> has no parent, i.e. is a fundamental type, the
-RuntimeError exception is raised. </para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--type-is-a">
-      <title>gobject.type_is_a</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.type_is_a</methodname>
-         <methodparam><parameter>type</parameter></methodparam>
-         <methodparam><parameter>parent_type</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>parent_type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara><literal>True</literal> if
-<parameter>parent_type</parameter> is an ancestor of
-<parameter>type</parameter></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>gobject.type_is_a</function>() function returns
-<literal>True</literal> if the specified <parameter>type</parameter> is a
-descendant of the type specified by <parameter>parent_type</parameter>. This
-function also returns <literal>True</literal> if
-<parameter>parent_type</parameter> is an interface and
-<parameter>type</parameter> conforms to it.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--type-children">
-      <title>gobject.type_children</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.type_children</methodname>
-         <methodparam><parameter>type</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a list of the child types of
-<parameter>type</parameter></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>gobject.type_children</function>() function
-returns a list containing the child types of the specified
-<parameter>type</parameter>.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--type-interfaces">
-      <title>gobject.type_interfaces</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.type_interfaces</methodname>
-         <methodparam><parameter>type</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a list of the interface types supported by
-<parameter>type</parameter></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>gobject.type_interfaces</function>() function
-returns a list of the interface types supported by
-<parameter>type</parameter>. <parameter>type</parameter> can be a GObject
-type, type ID or instance. This function returns a RuntimeError exception if
-type is not a valid type or has no interfaces.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--type-register">
-      <title>gobject.type_register</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.type_register</methodname>
-         <methodparam><parameter>class</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>class</parameter>&nbsp;:</term>
-         <listitem><simpara>a Python class that is a descendant of <link
-linkend="class-gobject"><classname>gobject.GObject</classname></link></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>gobject.type_register</function>() function
-registers the specified Python <parameter>class</parameter> as a PyGTK type.
-class must be a descendant of <link
-linkend="class-gobject"><classname>gobject.GObject</classname></link>. The function generates a name for the new type.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--signal-new">
-      <title>gobject.signal_new</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.signal_new</methodname>
-         <methodparam><parameter>signal_name</parameter></methodparam>
-         <methodparam><parameter>type</parameter></methodparam>
-         <methodparam><parameter>flags</parameter></methodparam>
-         <methodparam><parameter>return_type</parameter></methodparam>
-         <methodparam><parameter>param_types</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>signal_name</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the name of the
-signal</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>type</parameter>&nbsp;:</term>
-         <listitem><simpara>the object type that the signal is associated
-with</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>flags</parameter>&nbsp;:</term>
-         <listitem><simpara>the signal flags</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>return_type</parameter>&nbsp;:</term>
-         <listitem><simpara>the return type of the signal
-handler</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>param_types</parameter>&nbsp;:</term>
-         <listitem><simpara>the parameter types passed to the signal
-handler</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a unique integer signal ID</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>gobject.signal_new</function>() function registers
-a signal with the specified <parameter>signal_name</parameter> for the
-specified object <parameter>type</parameter>. The value of
-<parameter>flags</parameter> is a combination of:</para>
-
-      <variablelist>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_RUN_FIRST</literal></term>
-         <listitem>
-           <simpara>Invoke the object method handler in the first emission
-stage. </simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_RUN_LAST</literal></term>
-         <listitem>
-           <simpara>Invoke the object method handler in the third emission
-stage.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_RUN_CLEANUP</literal></term>
-         <listitem>
-           <simpara>Invoke the object method handler in the last emission
-stage.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_NO_RECURSE</literal></term>
-         <listitem>
-           <simpara>Signals being emitted for an object while currently
-being in emission for this very object will not be emitted recursively, but
-instead cause the first emission to be restarted.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_DETAILED</literal></term>
-         <listitem>
-           <simpara>This signal supports "::detail" appendixes to the
-signal name upon handler connections and emissions.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_ACTION</literal></term>
-         <listitem>
-           <simpara>Action signals are signals that may freely be emitted
-on alive objects from user code via <link
-linkend="method-gobject--emit"><methodname>gobject.emit()</methodname>()</link> 
-and friends, without the need of being embedded into extra code that
-performs pre or post emission adjustments on the object. They can also be
-thought of as generically callable object methods.</simpara>
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><literal>gobject.SIGNAL_NO_HOOKS</literal></term>
-         <listitem>
-           <simpara> No emissions hooks are supported for this
-signal.</simpara>
-         </listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para><parameter>return_type</parameter> is the type of the return
-value from a signal handler and may be a gobject type, type ID or instance.
-The <parameter>param_types</parameter> parameter is a list of additional
-types that are passed to the signal handler. Each parameter type may be
-specified as a gobject type, type ID or instance. For example, to add a
-signal to the gtk.Window type called "my-signal" that calls a handler with a
-gtk.Button widget and an integer value and a return value  that is a
-boolean, use:</para>
-
-      <programlisting>
-  gobject.signal_new("my_signal", gtk.Window, gobject.SIGNAL_RUN_LAST, gobject.TYPE_BOOLEAN, (gtk.Button, gobject.TYPE_INT))
-</programlisting>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--signal-list-names">
-      <title>gobject.signal_list_names</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.signal_list_names</methodname>
-         <methodparam><parameter role="keyword">type</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter role="keyword">type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a list of the signal names supported by
-<parameter>type</parameter></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>gobject.signal_list_names</function>() function
-returns a list of the names of the signals that are supported by the
-specified GObject <parameter>type</parameter></para>
-
-      <note>
-        <para>The type keyword is available in PyGTK 2.6 and above.</para>
-      </note>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--signal-list-ids">
-      <title>gobject.signal_list_ids</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.signal_list_ids</methodname>
-         <methodparam><parameter role="keyword">type</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter role="keyword">type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a list of the signal ids supported by
-<parameter>type</parameter></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <note>
-        <para>This method is available in PyGTK 2.6 and above.</para>
-      </note>
-
-      <para>The <function>gobject.signal_list_ids</function>() function
-returns a list of the integer ids of the signals that are supported by the
-GObject specified by <parameter>type</parameter></para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--signal-lookup">
-      <title>gobject.signal_lookup</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.signal_lookup</methodname>
-         <methodparam><parameter role="keyword">name</parameter></methodparam>
-         <methodparam><parameter role="keyword">type</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter role="keyword">name</parameter>&nbsp;:</term>
-         <listitem><simpara>the name of a signal for
-<parameter>type</parameter></simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter role="keyword">type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>the integer id of a signal supported by
-<parameter>type</parameter></simpara> or 0.</listitem>
-       </varlistentry>
-      </variablelist>
-
-      <note>
-        <para>This method is available in PyGTK 2.6 and above.</para>
-      </note>
-
-      <para>The <function>gobject.signal_lookup</function>() function
-returns the id of the signal with the name specified by
-<parameter>name</parameter> that is supported by the GObject specified
-specified by<parameter>type</parameter>. 0 is returned if the signal is not
-found.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--signal-name">
-      <title>gobject.signal_name</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.signal_name</methodname>
-         <methodparam><parameter role="keyword">signal_id</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter role="keyword">signal_id</parameter>&nbsp;:</term>
-         <listitem><simpara>an integer signal id</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>the name of the signal or
-<literal>None</literal>.</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <note>
-        <para>This method is available in PyGTK 2.6 and above.</para>
-      </note>
-
-      <para>The <function>gobject.signal_name</function>() function returns
-the name of the signal that has the signal id specified by
-<parameter>id</parameter>.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--signal-query1">
-      <title>gobject.signal_query</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.signal_query</methodname>
-          <methodparam><parameter role="keyword">name</parameter></methodparam>
-         <methodparam><parameter role="keyword">type</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter role="keyword">name</parameter>&nbsp;:</term>
-         <listitem><simpara>the name of a signal for
-<parameter>type</parameter></simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter role="keyword">type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a 6-tuple containing signal information or
-<literal>None</literal></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <note>
-        <para>This method is available in PyGTK 2.6 and above.</para>
-      </note>
-
-      <para>The <function>gobject.signal_query</function>() function returns
-a 6-tuple containing information about the signal with the name specified by
-<parameter>name</parameter> that is supported by the GObject specified by
-<parameter>type</parameter>. If the signal is not found
-<literal>None</literal> is returned.</para>
-
-      <para>The signal information 6-tuple contains:</para>
-
-      <itemizedlist>
-        <listitem>
-          <simpara>the integer signal id</simpara>
-        </listitem>
-        <listitem>
-          <simpara>the signal name</simpara>
-        </listitem>
-        <listitem>
-          <simpara>the GType that the signal is registered for</simpara>
-        </listitem>
-        <listitem>
-          <simpara>the signal flags (see the <xref
-linkend="gobject-signal-constants"
-endterm="gobject-signal-constants-title"></xref>)</simpara>
-        </listitem>
-        <listitem>
-          <simpara>the GType of the return from the signal callback
-function</simpara>
-        </listitem>
-        <listitem>
-          <simpara>a tuple containing the GTypes of the parameters that are
-passed to the signal callback function. Note that these may not correspond
-exactly to the <literal>PyGTK</literal> signal callback parameters.</simpara>
-        </listitem>
-      </itemizedlist>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--signal-query2">
-      <title>gobject.signal_query</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.signal_query</methodname>
-          <methodparam><parameter role="keyword">signal_id</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter role="keyword">signal_id</parameter>&nbsp;:</term>
-         <listitem><simpara>the integer id of a signal</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a 6-tuple containing signal information or
-<literal>None</literal></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <note>
-        <para>This method is available in PyGTK 2.6 and above.</para>
-      </note>
-
-      <para>The <function>gobject.signal_query</function>() function returns
-a 6-tuple containing information about the signal with the id specified by
-<parameter>signal_id</parameter>. If the signal is not found
-<literal>None</literal> is returned.</para>
-
-      <para>The signal information 6-tuple contains:</para>
-
-      <itemizedlist>
-        <listitem>
-          <simpara>the integer signal id</simpara>
-        </listitem>
-        <listitem>
-          <simpara>the signal name</simpara>
-        </listitem>
-        <listitem>
-          <simpara>the GType that the signal is registered for</simpara>
-        </listitem>
-        <listitem>
-          <simpara>the signal flags (see the <xref
-linkend="gobject-signal-constants"
-endterm="gobject-signal-constants-title"></xref>)</simpara>
-        </listitem>
-        <listitem>
-          <simpara>the GType of the return from the signal callback
-function</simpara>
-        </listitem>
-        <listitem>
-          <simpara>a tuple containing the GTypes of the parameters that are
-passed to the signal callback function. Note that these may not correspond
-exactly to the <literal>PyGTK</literal> signal callback parameters.</simpara>
-        </listitem>
-      </itemizedlist>
-
-    </refsect2>
-
-   <refsect2 id="function-gobject--list-properties">
-      <title>gobject.list_properties</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.list_properties</methodname>
-         <methodparam><parameter>type</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a list of the properties (as GParam objects)
-supported by <parameter>type</parameter></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>gobject.list_properties</function>() function
-returns a list of the properties (as GParam objects) supported by
-<parameter>type</parameter>.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--new">
-      <title>gobject.new</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>gobject.new</methodname>
-         <methodparam><parameter>type</parameter></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>type</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject type, type ID or
-instance</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>zero or more property-value
-pairs</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a new object if the specified
-<parameter>type</parameter></simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <function>gobject.new</function>() function returns a new
-object of the specified <parameter>type</parameter>. type must specify a
-type that is a descendant of <link
-linkend="class-gobject"><classname>gobject.GObject</classname></link>. A
-TypeError exception is raised if <parameter>type</parameter> specifies an
-abstract class or a type that is not a descendant of <link
-linkend="class-gobject"><classname>gobject.GObject</classname></link>. A set
-of property-value pairs may be specified to set the value of the object's
-properties.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--signal-accumulator-true-handled">
-      <title>gobject.signal_accumulator_true_handled</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>gobject.signal_accumulator_true_handled</methodname>
-       </methodsynopsis></programlisting>
-
-      <note>
-        <para>This function is available in PyGTK 2.8 and above.</para>
-      </note>
-
-      <para>The <function>signal_accumulator_true_handled</function>()
-      function is only used as accumulator argument when registering
-      signals.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--add-emission-hook">
-      <title>gobject.add_emission_hook</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>gobject.add_emission_hook</methodname>
-       <methodparam><parameter>type</parameter></methodparam>
-       <methodparam><parameter>name</parameter></methodparam>
-       <methodparam><parameter>callback</parameter></methodparam>
-       <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>type</emphasis>&nbsp;:</term>
-          <listitem><simpara>a Python GObject instance or
-          type</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>name</emphasis>&nbsp;:</term>
-          <listitem><simpara>a signal name</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>callback</emphasis>&nbsp;:</term>
-          <listitem><simpara>a function</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>...</emphasis>&nbsp;:</term>
-          <listitem><simpara>zero or more extra arguments that will be
-          passed to callback.</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem><simpara>the hook id, for later use with <link
-          linkend="function-gobject--signal-remove-emission-hook"><function>gobject.signal_remove_emission_hook</function>()</link>.</simpara></listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGTK 2.8 and above.</para>
-      </note>
-
-      <para>The <function>add_emission_hook</function>() function adds an
-      emission hook for the signal specified by <parameter>name</parameter>,
-      which will get called for any emission of that signal, independent of
-      the instance. This is possible only for signals which don't have the
-      <literal>gobject.SIGNAL_NO_HOOKS</literal> flag set.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject--remove-emission-hook">
-      <title>gobject.remove_emission_hook</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>gobject.remove_emission_hook</methodname>
-       <methodparam><parameter>type</parameter></methodparam>
-       <methodparam><parameter>name</parameter></methodparam>
-       <methodparam><parameter>hook_id</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>type</emphasis>&nbsp;:</term>
-          <listitem><simpara>a Python GObject instance or
-          type</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>name</emphasis>&nbsp;:</term>
-          <listitem><simpara>a signal name</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>hook_id</emphasis>&nbsp;:</term>
-          <listitem><simpara>the id of the emission hook as returned by the
-          <link
-          linkend="function-gobject--add-emission-hook"><function>gobject.add_emission_hook</function>()</link>)
-          function.</simpara></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><emphasis>Returns</emphasis>&nbsp;:</term>
-          <listitem><simpara></simpara></listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGTK 2.8 and above.</para>
-      </note>
-
-      <para>The <function>remove_emission_hook</function>() function deletes
-      an emission hook.</para>
-
-    </refsect2>
-
-    <refsect2 id="function-gobject---install-metaclass">
-      <title>gobject._install_metaclass</title>
-      
-      <programlisting><methodsynopsis language="python">
-        <methodname>gobject._install_metaclass</methodname>
-       <methodparam><parameter>metaclass</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist role="params">
-        <varlistentry>
-          <term><emphasis>metaclass</emphasis>&nbsp;:</term>
-          <listitem><simpara></simpara></listitem>
-        </varlistentry>
-      </variablelist>
-      <note>
-        <para>This function is available in PyGTK 2.10 and above.</para>
-      </note>
-
-      <para>The <function>_install_metaclass</function>() function installs
-      the metaclass specified by <parameter>metaclass</parameter>.</para>
-
-    </refsect2>
-
-  </refsect1>
-
-</refentry>
diff --git a/docs/reference/pygobject-gboxed.xml b/docs/reference/pygobject-gboxed.xml
deleted file mode 100644 (file)
index f7f2438..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gobjectgboxed">
-  <refnamediv>
-    <refname>gobject.GBoxed</refname>
-    <refpurpose>an object containing an opaque chunk of data</refpurpose>
-  </refnamediv>
-
-  <refsect1>
-    <title>Synopsis</title>
-
-<classsynopsis language="python">
-  <ooclass><classname>gobject.GBoxed</classname></ooclass>
-<methodsynopsis language="python">
-    <methodname><link linkend="method-gobjectgboxed--copy">copy</link></methodname>
-  </methodsynopsis>
-</classsynopsis>
-
-</refsect1>
-
-  <refsect1>
-    <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectgboxed">gobject.GBoxed</link>
-</synopsis>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Description</title>
-
-    <para><link
-linkend="class-gobjectgboxed"><classname>gobject.GBoxed</classname></link>
-is an abstract base class that encapsulates an opaque chunk of data to
-provide an object-oriented interface and a type that is registered with the
-<literal>GLIB</literal> type system. A boxed type is registered with
-functions that provide for the copying and freeing of the underlying data
-structure - this allows PyGTK to encapsulate these as Python objects.</para>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Methods</title>
-
-    <refsect2 id="method-gobjectgboxed--copy">
-      <title>gobject.GBoxed.copy</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>copy</methodname>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-       <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a copy of the <link
-         linkend="class-gobjectgboxed"><classname>gobject.GBoxed</classname></link>
-         object</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>copy</methodname>() method makes and returns a copy of the boxed object.</para>
-
-    </refsect2>
-
-  </refsect1>
-
-</refentry>
diff --git a/docs/reference/pygobject-ginterface.xml b/docs/reference/pygobject-ginterface.xml
deleted file mode 100644 (file)
index 1b29ddf..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gobjectginterface">
-  <refnamediv>
-    <refname>gobject.GInterface</refname>
-
-    <refpurpose>an object representing a GInterface</refpurpose>
-  </refnamediv>
-
-  <refsect1>
-    <title>Synopsis</title>
-
-<classsynopsis language="python">
-  <ooclass><classname>gobject.GInterface</classname></ooclass>
-</classsynopsis>
-
-</refsect1>
-
-  <refsect1>
-    <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectginterface">gobject.GInterface</link>
-</synopsis>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Description</title>
-
-    <para><link
-linkend="class-gobjectginterface"><classname>gobject.GInterface</classname></link>
-is an abstract base class that encapsulates a GInterface.</para>
-
-  </refsect1>
-
-</refentry>
diff --git a/docs/reference/pygobject-gpointer.xml b/docs/reference/pygobject-gpointer.xml
deleted file mode 100644 (file)
index da16954..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-<refentry id="class-gobjectgpointer">
-  <refnamediv>
-    <refname>gobject.GPointer</refname>
-
-    <refpurpose>an object containing a completely opaque chunk of
-    data</refpurpose>
-  </refnamediv>
-
-  <refsect1>
-    <title>Synopsis</title>
-
-<classsynopsis language="python">
-  <ooclass><classname>gobject.GPointer</classname></ooclass>
-</classsynopsis>
-
-</refsect1>
-
-  <refsect1>
-    <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobjectgpointer">gobject.GPointer</link>
-</synopsis>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Description</title>
-
-    <para><link
-linkend="class-gobjectgpointer"><classname>gobject.GPointer</classname></link>
-is an abstract base class that encapsulates an opaque chunk of data and
-registers it with the <literal>GLIB</literal> type system. A pointer type
-has no methods and generic ways of copying and freeing the data. It
-shouldn't be used in PyGTK.</para>
-
-  </refsect1>
-
-</refentry>
diff --git a/docs/reference/pygobject-introduction.xml b/docs/reference/pygobject-introduction.xml
deleted file mode 100644 (file)
index fb3e6f2..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-
-  <chapter id="pygobject-introduction">
-  <title>Introduction</title>
-
-  <para>This document describes many of the <literal>PyGObject</literal>
-  version 2.12 classes and their methods and associated
-  functions. Deprecated classes, functions and methods have been
-  specifically left out of this reference though classes that have become
-  deprecated since PyGObject 2.0 have been left in but annotated with a
-  deprecation warning. This document attempts to document as much of the
-  <literal>PyGObject</literal> <literal>API</literal> as possible but there
-  are undoubtedly errors and omissions. If you discover any of these please
-  file a bug report at <ulink
-  url="http://bugzilla.gnome.org">bugzilla.gnome.org</ulink> for the
-  <literal>pygobject</literal> project. Specific areas that have not been
-  documented include:</para>
-
-  <itemizedlist>
-    <listitem>
-      <simpara>The GParamSpec class</simpara>
-    </listitem>
-  </itemizedlist>
-
-  <para>This reference describes the API for <literal>PyGObject</literal> as
-  of version 2.11.0+ and assumes that the additional API changes for version
-  2.12 will not be significant. There will undoubtedly be changes that are
-  not reflected in this reference. The differences in the API between
-  version 2.0 and previous versions are denoted in this reference with a
-  Note that describes the availability of the object, constructor, method or
-  function. Any of these that do not have a notation can be assumed to be
-  available in all versions of PyGObject from 2.0 and up. The source code
-  must be consulted if this reference and your version of
-  <literal>PyGObject</literal> seem to differ. You are encouraged to use the
-  latest version of <literal>PyGObject</literal> that is available. See the
-  <ulink url="http://www.pygtk.org"><literal>PyGTK</literal>
-  homepage</ulink> for more information and more resources on how to use
-  PyGObject as well as help in its development.</para>
-
-  <para> The Reference contains a chapter for each
-  <literal>PyGObject</literal> module containing the class descriptions. The
-  class descriptions are arranged alphabetically within the
-  chapters. Currently there is one module chapter:</para>
-
-  <variablelist>
-    <varlistentry>
-      <term>The&nbsp;<literal>gobject</literal>&nbsp;module</term>
-      <listitem><simpara>The classes that are included in the
-<literal>gobject</literal> module of <literal>PyGObject</literal> and are
-accessed similar to: gobject.GObject. These classes are the base object
-classes that the <literal>gtk</literal> and <literal>gtk.gdk</literal>
-module classes are built on.</simpara>
-      </listitem>
-    </varlistentry>
-  </variablelist>
-
-<!--
-  <sect1>
-    <title>Major Changes since Version 2.11</title>
-
-    <para>The major changes in this document since version 2.11
-    include:</para>
-
-    <itemizedlist>
-      <listitem>
-       <para></para>
-      </listitem>
-    </itemizedlist>
-
-  </sect1>
--->
-
-  <sect1 id="pygobject-reference-format">
-    <title>Reference Page Format</title>
-
-    <para>Each <literal>PyGObject</literal> class is described in a reference
-page that has a number of sections in a fixed format. Each reference page
-will have a subset of the following sections:</para>
-
-    <variablelist>
-      <varlistentry>
-       <term>Name</term>
-       <listitem>
-         <simpara>The name and a one-line description of the
-class.</simpara>
-       </listitem>
-      </varlistentry>
-      <varlistentry>
-       <term>Synopsis</term>
-       <listitem>
-         <simpara>A synopsis of the class and its methods and
-optionally a list of associated functions.</simpara>
-       </listitem>
-      </varlistentry>
-      <varlistentry>
-       <term>Ancestry</term>
-       <listitem>
-         <simpara>The list of the parent classes of the class. This
-section may not be present in all class descriptions.</simpara>
-       </listitem>
-      </varlistentry>
-      <varlistentry>
-       <term>Properties</term>
-       <listitem>
-         <simpara>A list of the properties (internal state)
-supported by the class. This section may not be present in all classes. The
-property descriptions include the name, the access operations (e.g. Read,
-Write), and a brief description. Properties are accessed using the <link
-linkend="method-gobject--set-property"><methodname>gobject.set_property</methodname>()</link> 
-and <link
-linkend="method-gobject--get-property"><methodname>gobject.get_property</methodname>()</link> 
-methods that are available to every <literal>PyGObject</literal> object. This
-section may not be present in all class descriptions.</simpara>
-       </listitem>
-      </varlistentry>
-      <varlistentry>
-       <term>Attributes</term>
-       <listitem>
-         <simpara>A set of internal object state data accessible as Python
-         attributes (e.g. object.attr). The attribute descriptions include
-         a name by which the attribute data is accessed, the access mode
-         (e.g. Read, Write), and a brief description of the attribute. Most
-         <literal>PyGObject</literal> classes do not support attributes so
-         this section is not present in most class descriptions.</simpara>
-       </listitem>
-      </varlistentry>
-      <varlistentry>
-       <term>Signal&nbsp;Prototypes</term>
-       <listitem>
-         <simpara>A list of the signals supported by the class including
-         the signal name and a synopsis of the signal handler function
-         prototype. This section may not be present in all class
-         descriptions.</simpara>
-       </listitem>
-      </varlistentry>
-      <varlistentry>
-       <term>Description</term>
-       <listitem><simpara>A description of the class and possibly some of
-       the methods supported by the class.</simpara>
-       </listitem>
-      </varlistentry>
-      <varlistentry>
-       <term>Constructor</term>
-       <listitem>
-         <simpara>The description of the class object constructor including
-         the synopsis with brief parameter descriptions and a description
-         of th use of the constructor. There may be more than one
-         constructor description if the constructor supports different
-         parameter lists. This section may not be present in all class
-         descriptions.</simpara>
-       </listitem>
-      </varlistentry>
-      <varlistentry>
-       <term>Methods</term>
-       <listitem>
-         <simpara>A list of methods supported by the class. Each method
-         description includes: a synopsis of the method and its parameters
-         as well as a brief description of each parameter and return value
-         (if any); and, a description of the use of the method.</simpara>
-       </listitem>
-      </varlistentry>
-      <varlistentry>
-       <term>Functions</term>
-       <listitem>
-         <simpara>A list of related functions. Each function description
-         includes a synopsis of the function and its parameters and return
-         value (if any), and a description of the use of the
-         function.</simpara>
-       </listitem>
-      </varlistentry>
-      <varlistentry>
-       <term>Signals</term>
-       <listitem>
-         <simpara>A list of signals including a synopsis of the signal
-         handler prototype function with its parameters and return value
-         (if any). The signal emission conditions are briefly
-         described. This section is not present in all class descriptions;
-         specifically, the <literal>gtk.gdk</literal> classes do not
-         usually support signals.</simpara>
-       </listitem>
-      </varlistentry>
-    </variablelist>
-
-    <para>The function and method synopsis parameters are displayed in
-    <emphasis role="bold">bold</emphasis> to denote Python keyword
-    parameters.  Also if the parameter is optional its default value will be
-    displayed. For example the <link
-    linkend="function-gobject--signal-lookup"><function>gobject.signal_lookup</function>()</link>
-    function synopsis is:</para>
-
-    <programlisting>
-<methodsynopsis language="python">
-       <methodname><link
-linkend="function-gobject--signal-lookup">gobject.signal_lookup</link></methodname>
-       <methodparam><parameter
-                      role="keyword">name</parameter></methodparam>
-       <methodparam><parameter
-                      role="keyword">type</parameter></methodparam>
-      </methodsynopsis>
-</programlisting>
-
-    <para>The parameters <parameter>name</parameter> and
-    <parameter>type</parameter> are keyword parameters that can be specified
-    in a call either by position or keyword (in which case position is not
-    important). The following calls have the same result:</para>
-
-    <programlisting>
-  id = gobject.signal_lookup("clicked", gtk.Button)
-  id = gobject.signal_lookup("clicked", type=gtk.Button)
-  id = gobject.signal_lookup(name="clicked", type=gtk.Button)
-  id = gobject.signal_lookup(type=gtk.Button, name="clicked")
-</programlisting>
-
-    <para>Parameters that are not keyword parameters are displayed in
-<emphasis>italic</emphasis> and must be specified positionally but may also
-be optional.</para>
-
-  </sect1>
-
-  </chapter>
diff --git a/docs/reference/pygobject-ref.xml b/docs/reference/pygobject-ref.xml
deleted file mode 100644 (file)
index 5fdd80b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-<!ENTITY % entities SYSTEM "entities.docbook">
-%entities;
-<!ENTITY builddate SYSTEM "builddate.xml">
-]>
-
-<book id="pygobject-reference" xmlns:xi="http://www.w3.org/2001/XInclude">
-  <bookinfo>
-    <pubdate>&builddate;</pubdate>
-    <title>PyGObject Reference Manual</title>
-    <edition>for version &version;</edition>
-    <releaseinfo>for PyGObject version &version;</releaseinfo>
-    <abstract>
-      <para>This reference describes the classes of the python gobject
-module.</para>
-    </abstract>
-  </bookinfo>
-  <toc>
-  </toc>
-
-  <xi:include href="pygobject-introduction.xml"/>
-
-  <xi:include href="pyglib-classes.xml"/>
-  <xi:include href="pygobject-classes.xml"/>
-  <xi:include href="pygio-classes.xml"/>
-  <xi:include href="pygiounix-classes.xml"/>
-
-<!--
-  <index>
-    <title>Index</title>
-  </index>
--->
-
-</book>
diff --git a/docs/reference/pygobject.xml b/docs/reference/pygobject.xml
deleted file mode 100644 (file)
index 42cd37b..0000000
+++ /dev/null
@@ -1,1016 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-<refentry id="class-gobject">
-  <refmeta>
-    <refentrytitle>gobject.GObject</refentrytitle>
-    <manvolnum>3</manvolnum>
-    <refmiscinfo>PyGTK Docs</refmiscinfo>
-  </refmeta>
-
-  <refnamediv>
-    <refname>gobject.GObject</refname>
-      <refpurpose>the base class</refpurpose>
-  </refnamediv>
-
-  <refsect1>
-    <title>Synopsis</title>
-
-<classsynopsis language="python">
-       <ooclass><classname>gobject.GObject</classname></ooclass>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--get-property">get_property</link></methodname>
-         <methodparam><parameter>property_name</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--get-properties">get_properties</link></methodname>
-         <methodparam><parameter>first_property_name</parameter></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--set-property">set_property</link></methodname>
-         <methodparam><parameter>property_name</parameter></methodparam>
-         <methodparam><parameter>value</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--set-properties">set_properties</link></methodname>
-         <methodparam><parameter>property_name</parameter>
-         <initializer>value</initializer></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--freeze-notify">freeze_notify</link></methodname>
-         <methodparam></methodparam>  </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--notify">notify</link></methodname>
-         <methodparam><parameter>property_name</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--thaw-notify">thaw_notify</link></methodname>
-         <methodparam></methodparam>  </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--get-data">get_data</link></methodname>
-         <methodparam><parameter>key</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--set-data">set_data</link></methodname>
-         <methodparam><parameter>key</parameter></methodparam>
-         <methodparam><parameter>data</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--connect">connect</link></methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-         <methodparam><parameter>handler</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--connect-after">connect_after</link></methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-         <methodparam><parameter>handler</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--connect-object">connect_object</link></methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-         <methodparam><parameter>handler</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--connect-object-after">connect_object_after</link></methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-         <methodparam><parameter>handler</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--disconnect">disconnect</link></methodname>
-         <methodparam><parameter>handler_id</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--handler-disconnect">handler_disconnect</link></methodname>
-         <methodparam><parameter>handler_id</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--handler-is-connected">handler_is_connected</link></methodname>
-         <methodparam><parameter>handler_id</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--handler-block">handler_block</link></methodname>
-         <methodparam><parameter>handler_id</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--handler-unblock">handler_unblock</link></methodname>
-         <methodparam><parameter>handler_id</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--handler-block-by-func">handler_block_by_func</link></methodname>
-         <methodparam><parameter>callable</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--handler-unblock-by-func">handler_unblock_by_func</link></methodname>
-         <methodparam><parameter>callable</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--emit">emit</link></methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--stop-emission">stop_emission</link></methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--emit-stop-by-name">emit_stop_by_name</link></methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-       </methodsynopsis>
-       <methodsynopsis language="python">
-         <methodname><link
-linkend="method-gobject--chain">chain</link></methodname>
-         <methodparam></methodparam>  </methodsynopsis>
-</classsynopsis>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Ancestry</title>
-
-<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
-</synopsis>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Attributes</title>
-
-    <blockquote role="properties">
-      <informaltable pgwide="1" frame="none">
-       <tgroup cols="3">
-       <?dbhtml cellpadding="5"?>
-         <colspec column="1" colwidth="1in"/>
-         <colspec column="2" colwidth="1in"/>
-         <colspec column="3" colwidth="4in"/>
-         <tbody>
-
-           <row valign="top">
-             <entry>"props"</entry>
-          <entry>Read/Write</entry>
-          <entry>
-              <para>This attribute gives full access to GObject properties as
-                  simple attributes. It can be used to iterate over all the object
-                  properties, and can be used both on class or instance objects.</para>
-              <para>Examples:</para>
-              <programlisting>
-button = Button()
-button_label = button.props.label
-button.props.label = 'Click on this fancy button'
-for pspec in button.props:
-    print pspec
-    print button.get_property(pspec.name)
-label_pspec = Button.props.label
-button_label = button.get_property(label_pspec.name)
-              </programlisting>
-            </entry>
-           </row>
-           <row valign="top">
-             <entry>"__doc__"</entry>
-             <entry>Read</entry>
-             <entry>The documentation for the object type. Uses
-             "__gdoc__" if no specific documentation set.</entry>
-           </row>
-           <row valign="top">
-             <entry>"__gdoc__"</entry>
-             <entry>Read</entry>
-             <entry>The generated documentation for the underlying GObject
-             type.</entry>
-           </row>
-           <row valign="top">
-             <entry>"__gtype__"</entry>
-             <entry>Read</entry>
-             <entry>The underlying GObject type.</entry>
-           </row>
-           <row valign="top">
-             <entry>"__grefcount__"</entry>
-             <entry>Read</entry>
-             <entry>The reference count for the underlying GObject.</entry>
-           </row>
-
-       </tbody>
-      </tgroup>
-      </informaltable>
-    </blockquote>
-
-  </refsect1>
-
-  <refsect1 id="signal-prototypes-gobject">
-    <title>gobject.GObject Signal Prototypes</title>
-
-
-    <variablelist>
-      <varlistentry>
-        <term>"<link linkend="signal-gobject--notify">notify</link>"</term>
-        <listitem>
-          <methodsynopsis language="python"><methodname>callback</methodname>
-            <methodparam><parameter>gobject</parameter></methodparam>
-            <methodparam><parameter>property_spec</parameter></methodparam>
-            <methodparam><parameter>user_param1</parameter></methodparam>
-            <methodparam><parameter>...</parameter></methodparam>
-          </methodsynopsis>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Description</title>
-    <para>The <link
-    linkend="class-gobject"><classname>gobject.GObject</classname></link>
-    class is the base class providing the common attributes and methods for
-    the PyGTK classes. The <link
-    linkend="class-gobject"><classname>gobject.GObject</classname></link>
-    class is not a user interface widget class.</para>
-
-    <para>The <link
-    linkend="class-gobject"><classname>gobject.GObject</classname></link>
-    class provides the signal management methods, the object property access
-    methods and the object data management methods.</para>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Methods</title>
-
-    <refsect2 id="method-gobject--get-property">
-      <title>gobject.GObject.get_property</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>get_property</methodname>
-         <methodparam><parameter>property_name</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>property_name</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the property name for the
-GObject</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a Python object containing the value of the
-property</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>get_property</methodname>() method returns the
-value of the property specified by <parameter>property_name</parameter> or
-None if there is no value associated with the property.</para>
-      <para>The <exceptionname>TypeError</exceptionname> exception is raised
-if the property name is not registered with the object class.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--get-properties">
-      <title>gobject.GObject.get_properties</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>get_properties</methodname>
-         <methodparam><parameter>first_property_name</parameter></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>first_property_name</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the first property name for the
-GObject</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>additional property names 
-</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a tuple containing the property values 
-requested</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>get_properties</methodname>() method returns a tuple containing
-the values of the properties requested, or
-None if there is no value associated with the property.</para>
-      <para>The <exceptionname>TypeError</exceptionname> exception is raised
-if the property name is not registered with the object class.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--set-property">
-      <title>gobject.GObject.set_property</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>set_property</methodname>
-         <methodparam><parameter>property_name</parameter></methodparam>
-         <methodparam><parameter>value</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>property_name</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the property
-name</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>value</parameter>&nbsp;:</term>
-         <listitem><simpara>a Python object containing the property value
-to be set</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>set_property</methodname>() method sets the
-property specified by <parameter>property_name</parameter> to the specified
-<parameter>value</parameter>.</para>
-      <para>The <exceptionname>TypeError</exceptionname> exception is raised
-if the property name is not registered with the object class or if the value
-specified could not be converted to the property type.</para>
-
-    </refsect2>
-    
-    <refsect2 id="method-gobject--set-properties">
-      <title>gobject.GObject.set_properties</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>set_properties</methodname>
-         <methodparam><parameter>property_name</parameter>
-         <initializer>value</initializer></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>property_name</parameter>&nbsp;:</term>
-         <listitem><simpara>the property name</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>value</parameter>&nbsp;:</term>
-         <listitem><simpara>a Python object containing the property value
-to be set</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>additional property name and value 
-kwargs</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>set_properties</methodname>() method sets the
-property specified by <parameter>property_name</parameter> to the specified
-<parameter>value</parameter>, followed by pairs of property name 
-and value as keyword arguments.</para>
-      <para>The <exceptionname>TypeError</exceptionname> exception is raised
-if the property name is not registered with the object class or if the value
-specified could not be converted to the property type.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--freeze-notify">
-      <title>gobject.GObject.freeze_notify</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>freeze_notify</methodname>
-         <methodparam></methodparam>
-       </methodsynopsis></programlisting>
-
-      <para>The <methodname>freeze_notify</methodname>() method freezes the
-object's property-changed notification queue so that "notify" signals are
-blocked until the <methodname>thaw_notify</methodname>() method is
-called.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--notify">
-      <title>gobject.GObject.notify</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>notify</methodname>
-         <methodparam><parameter>property_name</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>property_name</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing a property
-name</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>notify</methodname>() method causes the "notify"
-signal for the property specified by <parameter>property_name</parameter> to
-be emitted.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--thaw-notify">
-      <title>gobject.GObject.thaw_notify</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>thaw_notify</methodname>
-         <methodparam></methodparam>
-       </methodsynopsis></programlisting>
-
-      <para>The <methodname>thaw_notify</methodname>() method thaws the
-object's property-changed notification queue so that "notify" signals are
-emitted.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--get-data">
-      <title>gobject.GObject.get_data</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>get_data</methodname>
-         <methodparam><parameter>key</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>key</parameter>&nbsp;:</term>
-         <listitem><simpara>a string used as the key</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a Python object containing the associated
-data</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>get_data</methodname>() method returns the
-Python object associated with the specified <parameter>key</parameter> or
-None if there is no data associated with the <parameter>key</parameter> or
-if there is no key associated with the object.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--set-data">
-      <title>gobject.GObject.set_data</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>set_data</methodname>
-         <methodparam><parameter>key</parameter></methodparam>
-         <methodparam><parameter>data</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>key</parameter>&nbsp;:</term>
-         <listitem><simpara>a string used as a key</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>data</parameter>&nbsp;:</term>
-         <listitem><simpara>a Python object that is the value to be
-associated with the key</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>set_data</methodname>() method associates the
-specified Python object (<parameter>data</parameter>) with
-<parameter>key</parameter>.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--connect">
-      <title>gobject.GObject.connect</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>connect</methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-         <methodparam><parameter>handler</parameter></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>detailed_signal</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the signal
-name</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>handler</parameter>&nbsp;:</term>
-         <listitem><simpara>a Python function or method
-object.</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>additional optional
-parameters</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>an integer identifier</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>connect</methodname>() method adds a function or
-method (<parameter>handler</parameter>)to the end of the list of signal
-handlers for the named <parameter>detailed_signal</parameter> but before the
-default class signal handler. An optional set of parameters may be specified
-after the <parameter>handler</parameter> parameter. These will all be passed
-to the signal handler when invoked.</para>
-      <para>For example if a function handler was connected to a signal
-using:</para>
-      <programlisting>
-  handler_id = object.connect("signal_name", handler, arg1, arg2, arg3)
-</programlisting>
-      <para>The handler should be defined as:</para>
-      <programlisting>
-  def handler(object, arg1, arg2, arg3):
-</programlisting>
-      <para>A method handler connected to a signal using:</para>
-      <programlisting>
-  handler_id = object.connect("signal_name", self.handler, arg1, arg2)
-</programlisting>
-      <para>requires an additional argument when defined:</para>
-      <programlisting>
-  def handler(self, object, arg1, arg2)
-</programlisting>
-      <para>A <exceptionname>TypeError</exceptionname> exception is raised
-if <parameter>detailed_signal</parameter> identifies a signal name that is
-not associated with the object.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--connect-after">
-      <title>gobject.GObject.connect_after</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>connect_after</methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-         <methodparam><parameter>handler</parameter></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>detailed_signal</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the signal
-name</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>handler</parameter>&nbsp;:</term>
-         <listitem><simpara>a Python function or method
-object</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>additional optional
-parameters</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>an integer handler
-identifier</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>connect_after</methodname>() method is similar
-to the <methodname>connect</methodname>() method except that the
-<parameter>handler</parameter> is added to the signal handler list after the
-default class signal handler. Otherwise the details of
-<parameter>handler</parameter> definition and invocation are the
-same.</para>
-    
-    </refsect2>
-
-    <refsect2 id="method-gobject--connect-object">
-      <title>gobject.GObject.connect_object</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>connect_object</methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-         <methodparam><parameter>handler</parameter></methodparam>
-         <methodparam><parameter>gobject</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>detailed_signal</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the signal
-name</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>handler</parameter>&nbsp;:</term>
-         <listitem><simpara>a Python function or method
-object</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>gobject</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>an integer handler
-identifier</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>connect_object</methodname>() method is the same
-as the <methodname>connect</methodname>() method except that the
-<parameter>handler</parameter> is invoked with the specified
-<parameter>gobject</parameter> in place of the object invoking the
-<methodname>connect_object</methodname>() method. For example, a call with a
-function handler:</para>
-      <programlisting>
-  handler_id = object("signal_name", handler, gobject)
-</programlisting>
-      <para>will cause the <parameter>handler</parameter> to be invoked
-as:</para>
-      <programlisting>
-  handler(gobject)
-</programlisting>
-      <para>Likewise a method handler will be invoked as:</para>
-      <programlisting>
-  self.handler(gobject)
-</programlisting>
-      <para>This can be helpful in invoking PyGTK widget methods that
-require no arguments except the widget itself (e.g.
-<methodname>widget.destroy</methodname>()) by using the class method as the
-handler. For example, a Button "clicked" signal can be set up to invoke the
-Window <methodname>destroy</methodname>() method as:</para>
-
-      <programlisting>
-  handler_id = button.connect_object("clicked", Window.destroy, window)
-</programlisting>
-
-      <para>When the button is clicked the handler is invoked as:</para>
-
-      <programlisting>
-  Window.destroy(window)
-</programlisting>
-
-      <para>which is the same as:</para>
-
-      <programlisting>
-  window.destroy()
-</programlisting>
-
-      <para>Additional arguments may be passed to the handler as with the
-<methodname>connect</methodname>() method handler invocations.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--connect-object-after">
-      <title>gobject.GObject.connect_object_after</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>connect_object_after</methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-         <methodparam><parameter>handler</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>detailed_signal</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the signal
-name</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>handler</parameter>&nbsp;:</term>
-         <listitem><simpara>a Python function or method
-object</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>gobject</parameter>&nbsp;:</term>
-         <listitem><simpara>a GObject</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>an integer handler
-identifier</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>connect_object_after</methodname>() method is
-similar to the <methodname>connect_object</methodname>() method except that
-the <parameter>handler</parameter> is added to the signal handler list after
-the default class signal handler. Otherwise the details of
-<parameter>handler</parameter> definition and invocation are the
-same.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--disconnect">
-      <title>gobject.GObject.disconnect</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>disconnect</methodname>
-         <methodparam><parameter>handler_id</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>handler_id</parameter>&nbsp;:</term>
-         <listitem><simpara>an integer handler
-identifier</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>disconnect</methodname>() method removes the
-signal handler with the specified <parameter>handler_id</parameter> from the
-list of signal handlers for the object.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--handler-disconnect">
-      <title>gobject.GObject.handler_disconnect</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>handler_disconnect</methodname>
-         <methodparam><parameter>handler_id</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>handler_id</parameter>&nbsp;:</term>
-         <listitem><simpara>an integer handler
-identifier</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>handler_disconnect</methodname>() method removes
-the signal handler with the specified <parameter>handler_id</parameter> from
-the list of signal handlers for the object.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--handler-is-connected">
-      <title>gobject.GObject.handler_is_connected</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>handler_is_connected</methodname>
-         <methodparam><parameter>handler_id</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>handler_id</parameter>&nbsp;:</term>
-         <listitem><simpara>an integer handler
-identifier</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara><literal>True</literal> if the signal handler
-is connected to the object.</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>handler_is_connected</methodname>() method
-returns <literal>True</literal> if the signal handler with the specified
-<parameter>handler_id</parameter> is connected to the object.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--handler-block">
-      <title>gobject.GObject.handler_block</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>handler_block</methodname>
-         <methodparam><parameter>handler_id</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>handler_id</parameter>&nbsp;:</term>
-         <listitem><simpara>an integer handler
-identifier</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>handler_block</methodname>() method blocks the
-signal handler with the specified <parameter>handler_id</parameter> from
-being invoked until it is unblocked.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--handler-unblock">
-      <title>gobject.GObject.handler_unblock</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>handler_unblock</methodname>
-         <methodparam><parameter>handler_id</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>handler_id</parameter>&nbsp;:</term>
-         <listitem><simpara>an integer handler
-identifier</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--handler-block-by-func">
-      <title>gobject.GObject.handler_block_by_func</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>handler_block_by_func</methodname>
-         <methodparam><parameter>callable</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>callable</parameter>&nbsp;:</term>
-         <listitem><simpara>a callable python object</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>handler_block_by_func</methodname>() method blocks the
-all signal handler connected to a specific <parameter>callable</parameter> from
-being invoked until the callable is unblocked.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--handler-unblock-by-func">
-      <title>gobject.GObject.handler_unblock_by_func</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>handler_unblock_by_func</methodname>
-         <methodparam><parameter>callback</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>callable</parameter>&nbsp;:</term>
-         <listitem><simpara>a callable python object</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>handler_unblock_by_func</methodname>() method unblocks
-all signal handler connected to a specified <parameter>callable</parameter>
-thereby allowing it to be invoked when the associated signals are
-emitted.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--emit">
-      <title>gobject.GObject.emit</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>emit</methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>detailed_signal</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the signal
-name</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>additional parameters</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a PyObject*</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-      <para>The <methodname>emit</methodname>() method causes the object to
-emit the signal specified by <parameter>detailed_signal</parameter>. The
-additional parameters must match the number and type of the required signal
-handler parameters. In most cases no additional parameters are needed. for
-example:</para>
-      <programlisting>
-  button.emit("clicked")
-</programlisting>
-      <para>is all that is required to emit the "clicked" signal for a
-button. The most common case requiring additional parameters occurs when
-emitting an event signal; for example:</para>
-      <programlisting>
-  button.emit("button_press_event", event)
-</programlisting>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--stop-emission">
-      <title>gobject.GObject.stop_emission</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>stop_emission</methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>detailed_signal</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the signal
-name</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>stop_emission</methodname>() method stops the
-current emission of the signal specified by
-<parameter>detailed_signal</parameter>. Any signal handlers in the list
-still to be run will not be invoked.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--emit-stop-by-name">
-      <title>gobject.GObject.emit_stop_by_name</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>emit_stop_by_name</methodname>
-         <methodparam><parameter>detailed_signal</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>detailed_signal</parameter>&nbsp;:</term>
-         <listitem><simpara>a string containing the signal
-name</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The <methodname>emit_stop_by_name</methodname>() method stops
-the current emission of the signal specified by
-<parameter>detailed_signal</parameter>. Any signal handlers in the list
-still to be run will not be invoked.</para>
-
-    </refsect2>
-
-    <refsect2 id="method-gobject--chain">
-      <title>gobject.GObject.chain</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>chain</methodname>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-      <variablelist>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>additional parameters</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><emphasis>Returns</emphasis>&nbsp;:</term>
-         <listitem><simpara>a Python object</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The chain() method does something.</para>
-
-    </refsect2>
-
-  </refsect1>
-
-  <refsect1>
-    <title>Signals</title>
-
-    <refsect2 id="signal-gobject--notify">
-      <title>The GObject "notify" Signal</title>
-
-      <programlisting><methodsynopsis language="python">
-         <methodname>callback</methodname>
-         <methodparam><parameter>gobject</parameter></methodparam>
-         <methodparam><parameter>property_spec</parameter></methodparam>
-         <methodparam><parameter>user_param1</parameter></methodparam>
-         <methodparam><parameter>...</parameter></methodparam>
-       </methodsynopsis></programlisting>
-
-      <variablelist>
-       <varlistentry>
-         <term><parameter>gobject</parameter>&nbsp;:</term>
-         <listitem><simpara>the gobject that received the
-signal</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>property_spec</parameter>&nbsp;:</term>
-          <listitem><simpara>the <link linkend="class-gobjectgparamspec"><classname>gobject.GParamSpec</classname></link> of the property that was
-changed</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>user_param1</parameter>&nbsp;:</term>
-          <listitem><simpara>the first user parameter (if any) specified
-with the <link
-linkend="method-gobject--connect"><methodname>connect</methodname>()</link>
-method</simpara></listitem>
-       </varlistentry>
-       <varlistentry>
-         <term><parameter>...</parameter>&nbsp;:</term>
-         <listitem><simpara>additional user parameters (if
-any)</simpara></listitem>
-       </varlistentry>
-      </variablelist>
-
-      <para>The "notify" signal is emitted on a gobject when one of its
-properties has been changed. Note that getting this signal doesn't guarantee
-that the value of the property has actually changed, it may also be emitted
-when the setter for the property is called to reinstate the previous
-value. For example to be notified of the change of the title of a <link
-linkend="class-gtkwindow"><classname>gtk.Window</classname></link> you could
-connect to the "notify" signal similar to:</para>
-
-      <programlisting>
-  window.connect("notify::title", callback)
-</programlisting>
-
-    </refsect2>
-
-  </refsect1>
-
-</refentry>
diff --git a/docs/style.css b/docs/style.css
deleted file mode 100644 (file)
index 59abc74..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-.programlisting {
-font: monospace;
-background-color: #E0E0E0;
-padding: 5;
-}
-
-pre.synopsis {
-background-color: #E0E0E0;
-padding: 5;
-}
diff --git a/docs/xsl/common.xsl b/docs/xsl/common.xsl
deleted file mode 100644 (file)
index 606313f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE xsl:stylesheet [
-]>
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                version='1.0'>
-
-<xsl:template match="parameter">
-       <xsl:choose>
-               <xsl:when test="@role = 'keyword'">
-                       <xsl:call-template name="inline.boldmonoseq"/>
-               </xsl:when>
-               <xsl:otherwise>
-                       <xsl:call-template name="inline.italicmonoseq"/>
-               </xsl:otherwise>
-       </xsl:choose>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/docs/xsl/devhelp.xsl b/docs/xsl/devhelp.xsl
deleted file mode 100644 (file)
index ce27739..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                version='1.0'
-                xmlns="http://www.devhelp.net/book"
-                exclude-result-prefixes="#default">
-
-  <xsl:template name="generate.devhelp">
-    <xsl:call-template name="write.chunk">
-      <xsl:with-param name="filename">
-        <xsl:choose>
-          <xsl:when test="$gtkdoc.bookname">
-            <xsl:value-of select="$gtkdoc.bookname"/>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:text>book</xsl:text>
-          </xsl:otherwise>
-        </xsl:choose>
-        <xsl:text>.devhelp</xsl:text>
-      </xsl:with-param>
-      <xsl:with-param name="method" select="'xml'"/>
-      <xsl:with-param name="indent" select="'yes'"/>
-      <xsl:with-param name="encoding" select="'utf-8'"/>
-      <xsl:with-param name="content">
-        <xsl:call-template name="devhelp"/>
-      </xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template name="devhelp">
-    <xsl:variable name="title">
-      <xsl:apply-templates select="." mode="generate.devhelp.toc.title.mode"/>
-    </xsl:variable>
-    <xsl:variable name="link">
-      <xsl:call-template name="href.target"/>
-    </xsl:variable>
-    <xsl:variable name="author">
-      <xsl:if test="articleinfo|bookinfo">
-        <xsl:apply-templates mode="generate.devhelp.authors"
-                             select="articleinfo|bookinfo"/>
-      </xsl:if>
-    </xsl:variable>
-    <xsl:variable name="toc.nodes" select="part|reference|preface|chapter|
-                                           appendix|article|bibliography|
-                                           glossary|index|refentry|
-                                           bridgehead|sect1"/>
-
-    <book title="{$title}" link="{$link}" author="{$author}" name="{$gtkdoc.bookname}" language="python">
-      <xsl:if test="$toc.nodes">
-        <chapters>
-          <xsl:apply-templates select="$toc.nodes"
-                               mode="generate.devhelp.toc.mode"/>
-        </chapters>
-      </xsl:if>
-      <functions>
-        <xsl:apply-templates select="//refsect1"
-                             mode="generate.devhelp.constructor.index.mode"/>
-        <xsl:apply-templates select="//refsect2"
-                             mode="generate.devhelp.index.mode"/>
-      </functions>
-    </book>
-  </xsl:template>
-
-  <xsl:template match="*" mode="generate.devhelp.toc.mode">
-    <xsl:variable name="title">
-      <xsl:apply-templates select="." mode="generate.devhelp.toc.title.mode"/>
-    </xsl:variable>
-    <xsl:variable name="target">
-      <xsl:variable name="anchor" select="title/anchor"/>
-      <xsl:choose>
-        <xsl:when test="$anchor">
-          <xsl:call-template name="href.target">
-            <xsl:with-param name="object" select="$anchor"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:call-template name="href.target"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-
-    <sub name="{$title}" link="{$target}">
-      <xsl:apply-templates select="section|sect1|
-                                   refentry|refsect|
-                                   bridgehead|part|chapter"
-                           mode="generate.devhelp.toc.mode"/>
-    </sub>
-  </xsl:template>
-
-  <xsl:template match="*" mode="generate.devhelp.index.mode">
-    <xsl:variable name="title" select="title"/>
-    <xsl:variable name="anchor" select="title/anchor"/>
-    <xsl:variable name="target">
-      <xsl:choose>
-        <xsl:when test="$anchor">
-          <xsl:call-template name="href.target">
-            <xsl:with-param name="object" select="$anchor"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:call-template name="href.target"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <function name="{$title}" link="{$target}"/>
-  </xsl:template>
-
-  <xsl:template match="*" mode="generate.devhelp.constructor.index.mode">
-    <xsl:variable name="title" select="title"/>
-    <xsl:variable name="anchor" select="title/anchor"/>
-    <xsl:variable name="target">
-      <xsl:choose>
-        <xsl:when test="$anchor">
-          <xsl:call-template name="href.target">
-            <xsl:with-param name="object" select="$anchor"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:call-template name="href.target"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <xsl:if test="$title='Constructor'">
-      <xsl:variable name ="constructor" select="programlisting//methodname"/>
-      <function name="{$constructor}" link="{$target}"/>
-    </xsl:if>
-  </xsl:template>
-
-  <!-- get title -->
-  <xsl:template match="article" mode="generate.devhelp.toc.title.mode">
-    <xsl:value-of select="articleinfo/title"/>
-  </xsl:template>
-  <xsl:template match="book" mode="generate.devhelp.toc.title.mode">
-    <xsl:value-of select="bookinfo/title"/>
-  </xsl:template>
-  <xsl:template match="refentry" mode="generate.devhelp.toc.title.mode">
-    <xsl:value-of select="refnamediv/refname"/>
-  </xsl:template>
-  <xsl:template match="*" mode="generate.devhelp.toc.title.mode">
-    <xsl:value-of select="title"/>
-  </xsl:template>
-
-  <!-- generate list of authors ... -->
-  <xsl:template match="articleinfo|bookinfo" mode="generate.devhelp.authors">
-    <xsl:for-each select="authorgroup/author">
-      <xsl:value-of select="firstname"/>
-      <xsl:text> </xsl:text>
-      <xsl:value-of select="surname"/>
-      <xsl:if test="not(last())">
-        <xsl:text>, </xsl:text>
-      </xsl:if>
-    </xsl:for-each>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/docs/xsl/fixxref.py b/docs/xsl/fixxref.py
deleted file mode 100644 (file)
index f3287b3..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env python
-# -*- Mode: Python; py-indent-offset: 4 -*-
-
-import getopt
-import os
-import re
-import sys
-
-anchors = {}
-anchor_pat = re.compile(r'''^\s*<ANCHOR\s+id\s*=\s*"([^"]*)"\s+
-                            href\s*=\s*"([^"]*)"\s*>''',
-                        re.MULTILINE | re.VERBOSE)
-link_pat = re.compile(r'''<PYGTKDOCLINK\s+HREF="([^"]*)"\s*>(.*?)
-                          </PYGTKDOCLINK\s*>''', re.DOTALL | re.VERBOSE)
-def scan_index_dir(idir):
-    for root, dirs, files in os.walk(idir):
-        if 'index.sgml' in files:
-            scan_index_file(os.path.join(root, 'index.sgml'))
-    return
-
-def scan_index_file(ifile):
-    buf = open(ifile).read()
-    for id, href in anchor_pat.findall(buf):
-        anchors[id] = href
-
-def fix_xrefs(hdir):
-    for f in os.listdir(hdir):
-        if os.path.splitext(f)[1] == '.html':
-            fix_html_file(os.path.join(hdir, f))
-
-def link_subst(m):
-    id, text = m.groups()
-    if anchors.has_key(id):
-        return '<a\nhref="../' + anchors[id] + '"\n>' + text + '</a>'
-    return text
-
-def fix_html_file(hfile):
-    buf = open(hfile).read()
-    buf = link_pat.sub(link_subst, buf)
-    open(hfile, 'w').write(buf)
-
-def usage(e=None):
-    if e:
-        sys.stderr.write('fixxref.py: %s\n' % e)
-    sys.stderr.write('usage: fixxref.py [-i index-dir] html-dir\n')
-    sys.exit(1)
-
-if __name__ == '__main__':
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "i:h:",
-                                   ["index-dir=", "html-dir="])
-    except getopt.error, e:
-        usage(e)
-
-    index_dirs = []
-    for opt, arg in opts:
-        if opt in ('-i', '--index-dir'):
-            index_dirs.append(arg)
-
-    if len(args) != 1:
-        usage()
-
-    for idir in index_dirs:
-        scan_index_dir(idir)
-
-    html_dir = args[0]
-    fix_xrefs(html_dir)
diff --git a/docs/xsl/fixxref.py.in b/docs/xsl/fixxref.py.in
deleted file mode 100644 (file)
index f3287b3..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env python
-# -*- Mode: Python; py-indent-offset: 4 -*-
-
-import getopt
-import os
-import re
-import sys
-
-anchors = {}
-anchor_pat = re.compile(r'''^\s*<ANCHOR\s+id\s*=\s*"([^"]*)"\s+
-                            href\s*=\s*"([^"]*)"\s*>''',
-                        re.MULTILINE | re.VERBOSE)
-link_pat = re.compile(r'''<PYGTKDOCLINK\s+HREF="([^"]*)"\s*>(.*?)
-                          </PYGTKDOCLINK\s*>''', re.DOTALL | re.VERBOSE)
-def scan_index_dir(idir):
-    for root, dirs, files in os.walk(idir):
-        if 'index.sgml' in files:
-            scan_index_file(os.path.join(root, 'index.sgml'))
-    return
-
-def scan_index_file(ifile):
-    buf = open(ifile).read()
-    for id, href in anchor_pat.findall(buf):
-        anchors[id] = href
-
-def fix_xrefs(hdir):
-    for f in os.listdir(hdir):
-        if os.path.splitext(f)[1] == '.html':
-            fix_html_file(os.path.join(hdir, f))
-
-def link_subst(m):
-    id, text = m.groups()
-    if anchors.has_key(id):
-        return '<a\nhref="../' + anchors[id] + '"\n>' + text + '</a>'
-    return text
-
-def fix_html_file(hfile):
-    buf = open(hfile).read()
-    buf = link_pat.sub(link_subst, buf)
-    open(hfile, 'w').write(buf)
-
-def usage(e=None):
-    if e:
-        sys.stderr.write('fixxref.py: %s\n' % e)
-    sys.stderr.write('usage: fixxref.py [-i index-dir] html-dir\n')
-    sys.exit(1)
-
-if __name__ == '__main__':
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "i:h:",
-                                   ["index-dir=", "html-dir="])
-    except getopt.error, e:
-        usage(e)
-
-    index_dirs = []
-    for opt, arg in opts:
-        if opt in ('-i', '--index-dir'):
-            index_dirs.append(arg)
-
-    if len(args) != 1:
-        usage()
-
-    for idir in index_dirs:
-        scan_index_dir(idir)
-
-    html_dir = args[0]
-    fix_xrefs(html_dir)
diff --git a/docs/xsl/html.xsl b/docs/xsl/html.xsl
deleted file mode 100644 (file)
index d8fea78..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE xsl:stylesheet [
-<!ENTITY RE "&#10;">
-<!ENTITY nbsp "&#160;">
-]>
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                version='1.0'>
-
-<xsl:param name="html.stylesheet">style.css</xsl:param>
-<xsl:param name="use.id.as.filename" select="1"/>
-<xsl:param name="chunk.fast" select="1"/>
-<xsl:param name="chunker.output.encoding" select="'utf-8'"/>
-
-<xsl:param name="linenumbering.extension" select="1"/>
-<xsl:param name="variablelist.as.table" select="1"/>
-
-<xsl:template match="blockquote">
-  <div class="{local-name(.)}">
-    <xsl:if test="@lang or @xml:lang">
-      <xsl:call-template name="language.attribute"/>
-    </xsl:if>
-    <xsl:call-template name="anchor"/>
-
-    <xsl:choose>
-      <xsl:when test="attribution">
-        <table border="0" width="100%"
-               cellspacing="0" cellpadding="0" class="blockquote"
-               summary="Block quote">
-          <tr>
-            <td width="10%" valign="top">&#160;</td>
-            <td width="80%" valign="top">
-              <xsl:apply-templates select="child::*[local-name(.)!='attribution']"/>
-            </td>
-            <td width="10%" valign="top">&#160;</td>
-          </tr>
-          <tr>
-            <td colspan="2" align="right" valign="top">
-              <xsl:text>--</xsl:text>
-              <xsl:apply-templates select="attribution"/>
-            </td>
-            <td width="10%" valign="top">&#160;</td>
-          </tr>
-        </table>
-      </xsl:when>
-      <xsl:when test="@role = 'properties' or @role = 'prototypes'">
-        <table width="100%" border="0" bgcolor="#E0E0E0">
-          <tr>
-            <td valign="top">
-              <xsl:apply-templates select="child::*[local-name(.)!='attribution']"/>
-            </td>
-          </tr>
-        </table>
-      </xsl:when>
-      <xsl:otherwise>
-        <blockquote class="{local-name(.)}">
-          <xsl:apply-templates/>
-        </blockquote>
-      </xsl:otherwise>
-    </xsl:choose>
-  </div>
-</xsl:template>
-
-  <!-- support for Python language for synopsises -->
-  <xsl:template match="classsynopsis
-                     |fieldsynopsis
-                     |methodsynopsis
-                     |constructorsynopsis
-                     |destructorsynopsis">
-    <xsl:param name="language">
-      <xsl:choose>
-        <xsl:when test="@language">
-          <xsl:value-of select="@language"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="$default-classsynopsis-language"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:param>
-    <xsl:choose>
-      <xsl:when test="$language='python'">
-        <xsl:apply-templates select="." mode="python"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:apply-imports/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-  <xsl:template match="classsynopsis" mode="python">
-    <table bgcolor="#D0E0F0" width="100%">
-      <tr><td>
-    <pre class="{name(.)}">
-      <xsl:text>class </xsl:text>
-      <xsl:apply-templates select="ooclass[1]" mode="python"/>
-      <xsl:if test="ooclass[position() &gt; 1]">
-        <xsl:text>(</xsl:text>
-        <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="python"/>        <xsl:text>)</xsl:text>
-      </xsl:if>
-      <xsl:text>:&RE;</xsl:text>
-
-      <xsl:apply-templates select="constructorsynopsis
-                                   |destructorsynopsis
-                                   |fieldsynopsis
-                                   |methodsynopsis
-                                   |classsynopsisinfo" mode="python"/>
-    </pre></td></tr></table>
-  </xsl:template>
-
-  <xsl:template match="classsynopsisinfo" mode="python">
-    <xsl:apply-templates mode="python"/>
-  </xsl:template>
-
-  <xsl:template match="ooclass|oointerface|ooexception" mode="python">
-    <xsl:if test="position() &gt; 1">
-      <xsl:text>, </xsl:text>
-    </xsl:if>
-    <span class="{name(.)}">
-      <xsl:apply-templates mode="python"/>
-    </span>
-  </xsl:template>
-
-  <xsl:template match="modifier" mode="python">
-    <span class="{name(.)}">
-      <xsl:apply-templates mode="python"/>
-      <xsl:text>&nbsp;</xsl:text>
-    </span>
-  </xsl:template>
-
-  <xsl:template match="classname" mode="python">
-    <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
-      <xsl:text>, </xsl:text>
-    </xsl:if>
-    <span class="{name(.)}">
-      <xsl:apply-templates mode="python"/>
-    </span>
-  </xsl:template>
-
-  <xsl:template match="interfacename" mode="python">
-    <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
-      <xsl:text>, </xsl:text>
-    </xsl:if>
-    <span class="{name(.)}">
-      <xsl:apply-templates mode="python"/>
-    </span>
-  </xsl:template>
-
-  <xsl:template match="exceptionname" mode="python">
-    <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
-      <xsl:text>, </xsl:text>
-    </xsl:if>
-    <span class="{name(.)}">
-      <xsl:apply-templates mode="python"/>
-    </span>
-  </xsl:template>
-
-  <xsl:template match="fieldsynopsis" mode="python">
-    <code class="{name(.)}">
-      <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
-      <xsl:apply-templates mode="python"/>
-    </code>
-    <xsl:call-template name="synop-break"/>
-  </xsl:template>
-
-  <xsl:template match="type" mode="python">
-    <span class="{name(.)}">
-      <xsl:apply-templates mode="python"/>
-      <xsl:text>&nbsp;</xsl:text>
-    </span>
-  </xsl:template>
-
-  <xsl:template match="varname" mode="python">
-    <span class="{name(.)}">
-      <xsl:apply-templates mode="python"/>
-      <xsl:text>&nbsp;</xsl:text>
-    </span>
-  </xsl:template>
-
-  <xsl:template match="initializer" mode="python">
-    <span class="{name(.)}">
-      <xsl:text>=</xsl:text>
-      <xsl:apply-templates mode="python"/>
-    </span>
-  </xsl:template>
-
-  <xsl:template match="void" mode="python">
-    <span class="{name(.)}">
-      <xsl:text>void&nbsp;</xsl:text>
-    </span>
-  </xsl:template>
-
-  <xsl:template match="methodname" mode="python">
-    <span class="{name(.)}">
-      <xsl:apply-templates mode="python"/>
-    </span>
-  </xsl:template>
-
-  <xsl:template match="methodparam" mode="python">
-    <xsl:if test="position() &gt; 1">
-      <xsl:text>, </xsl:text>
-    </xsl:if>
-    <span class="{name(.)}">
-      <xsl:apply-templates mode="python"/>
-    </span>
-  </xsl:template>
-
- <xsl:template mode="python"
-    match="destructorsynopsis|methodsynopsis">
-
-    <code class="{name(.)}">
-      <xsl:text>    def </xsl:text>
-      <xsl:apply-templates select="methodname" mode="python"/>
-      <xsl:text>(</xsl:text>
-      <xsl:apply-templates select="methodparam" mode="python"/>
-      <xsl:text>)</xsl:text>
-    </code>
-    <xsl:call-template name="synop-break"/>
-  </xsl:template>
-
- <xsl:template mode="python"
-    match="constructorsynopsis">
-
-    <code class="{name(.)}">
-      <xsl:text>    </xsl:text>
-      <xsl:apply-templates select="methodname" mode="python"/>
-      <xsl:text>(</xsl:text>
-      <xsl:apply-templates select="methodparam" mode="python"/>
-      <xsl:text>)</xsl:text>
-    </code>
-    <xsl:call-template name="synop-break"/>
-  </xsl:template>
-
-<!-- this was  the original parameter python mode styling
-  <xsl:template match="parameter" mode="python">
-    <span class="{name(.)}">
-      <xsl:apply-templates mode="python"/>
-    </span>
-  </xsl:template>
--->
-
-  <!-- hack -->
-  <xsl:template match="link" mode="python">
-    <xsl:apply-templates select="."/>
-  </xsl:template>
-
-  <!-- ========================================================= -->
-  <!-- template to output gtkdoclink elements for the unknown targets -->
-
-  <xsl:template match="link">
-    <xsl:choose>
-      <xsl:when test="id(@linkend)">
-        <xsl:apply-imports/>
-      </xsl:when>
-      <xsl:otherwise>
-        <PYGTKDOCLINK HREF="{@linkend}">
-          <xsl:apply-templates/>
-        </PYGTKDOCLINK>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
- <xsl:template match="parameter" mode="python">
-    <span class="{name(.)}">
-       <xsl:choose>
-               <xsl:when test="@role = 'keyword'">
-                       <xsl:call-template name="inline.boldmonoseq"/>
-               </xsl:when>
-               <xsl:otherwise>
-                       <xsl:call-template name="inline.italicmonoseq"/>
-               </xsl:otherwise>
-       </xsl:choose>
-    </span>
-</xsl:template>
-
-<xsl:template match="variablelist">
-  <table border="0" width="100%" bgcolor="#FFECCE">
-    <col align="left" valign="top" width="0*">
-    </col>
-    <tbody>
-      <xsl:apply-templates select="varlistentry" mode="varlist-table"/>
-    </tbody>
-  </table>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/docs/xsl/pdf-style.xsl b/docs/xsl/pdf-style.xsl
deleted file mode 100644 (file)
index d4a8e02..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version='1.0'?> <!--*- mode: xml -*-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-               version='1.0'>
-<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
-<xsl:include href="common.xsl"/>
-<xsl:include href="pdf.xsl"/>
-
-<xsl:param name="section.autolabel" select="1"/>
-<xsl:param name="section.label.includes.component.label" select="1"/>
-
-</xsl:stylesheet>
diff --git a/docs/xsl/pdf.xsl b/docs/xsl/pdf.xsl
deleted file mode 100644 (file)
index 013bfd0..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE xsl:stylesheet [
-<!ENTITY RE "&#10;">
-<!ENTITY nbsp "&#160;">
-]>
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:fo="http://www.w3.org/1999/XSL/Format"
-                version='1.0'>
-
-<xsl:param name="body.margin.top">0.5in</xsl:param>
-
-<xsl:template name="is.graphic.extension">
-  <xsl:param name="ext"></xsl:param>
-  <xsl:if test="$ext = 'png'
-                or $ext = 'pdf'
-                or $ext = 'jpeg'
-                or $ext = 'gif'
-                or $ext = 'tif'
-                or $ext = 'tiff'
-                or $ext = 'bmp'">1</xsl:if>
-</xsl:template>
-
-  <!-- support for Python language for synopsises -->
-  <xsl:template match="classsynopsis
-                     |fieldsynopsis
-                     |methodsynopsis
-                     |constructorsynopsis
-                     |destructorsynopsis">
-    <xsl:param name="language">
-      <xsl:choose>
-        <xsl:when test="@language">
-          <xsl:value-of select="@language"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="$default-classsynopsis-language"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:param>
-    <xsl:choose>
-      <xsl:when test="$language='python'">
-        <xsl:apply-templates select="." mode="python"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:apply-imports/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-  <xsl:template match="classsynopsis" mode="python">
-  <fo:block wrap-option='no-wrap'
-            white-space-collapse='false'
-            linefeed-treatment="preserve"
-            xsl:use-attribute-sets="monospace.verbatim.properties"
-            background-color="#E0E0E0">
-    <xsl:text>class </xsl:text>
-    <xsl:apply-templates select="ooclass[1]" mode="python"/>
-    <xsl:if test="ooclass[position() &gt; 1]">
-      <xsl:text>(</xsl:text>
-      <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="python"/>
-      <xsl:text>)</xsl:text>
-    </xsl:if>
-    <xsl:text>&nbsp;:</xsl:text>
-
-      <xsl:apply-templates select="constructorsynopsis
-                                   |destructorsynopsis
-                                   |fieldsynopsis
-                                   |methodsynopsis
-                                   |classsynopsisinfo" mode="python"/>
-
-  </fo:block>
-  <xsl:text>&RE;</xsl:text>
-  </xsl:template>
-
-  <xsl:template match="classsynopsisinfo" mode="python">
-    <xsl:apply-templates mode="python"/>
-  </xsl:template>
-
-  <xsl:template match="ooclass|oointerface|ooexception" mode="python">
-    <xsl:if test="position() &gt; 1">
-      <xsl:text>, </xsl:text>
-   </xsl:if>
-  <xsl:apply-templates mode="python"/>
-  </xsl:template>
-
-  <xsl:template match="modifier" mode="python">
-      <xsl:apply-templates mode="python"/>
-      <xsl:text>&nbsp;</xsl:text>
-  </xsl:template>
-
-  <xsl:template match="classname" mode="python">
-    <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
-      <xsl:text>, </xsl:text>
-    </xsl:if>
-      <xsl:apply-templates mode="python"/>
-  </xsl:template>
-
-  <xsl:template match="interfacename" mode="python">
-    <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
-      <xsl:text>, </xsl:text>
-    </xsl:if>
-      <xsl:apply-templates mode="python"/>
-  </xsl:template>
-
-  <xsl:template match="exceptionname" mode="python">
-    <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
-      <xsl:text>, </xsl:text>
-    </xsl:if>
-      <xsl:apply-templates mode="python"/>
-  </xsl:template>
-
-  <xsl:template match="fieldsynopsis" mode="python">
-  <fo:block wrap-option='no-wrap'
-            white-space-collapse='false'
-            linefeed-treatment="preserve"
-            xsl:use-attribute-sets="monospace.verbatim.properties">
-      <xsl:text>&nbsp;&nbsp;&nbsp;&nbsp;</xsl:text>
-      <xsl:apply-templates mode="python"/>
-    <xsl:call-template name="synop-break"/>
-  </fo:block>
-  </xsl:template>
-
-  <xsl:template match="type" mode="python">
-      <xsl:apply-templates mode="python"/>
-      <xsl:text>&nbsp;</xsl:text>
-  </xsl:template>
-
-  <xsl:template match="varname" mode="python">
-      <xsl:apply-templates mode="python"/>
-      <xsl:text>&nbsp;</xsl:text>
-  </xsl:template>
-
-  <xsl:template match="initializer" mode="python">
-      <xsl:text>=</xsl:text>
-      <xsl:apply-templates mode="python"/>
-  </xsl:template>
-
-  <xsl:template match="void" mode="python">
-      <xsl:text>void&nbsp;</xsl:text>
-  </xsl:template>
-
-  <xsl:template match="methodname" mode="python">
-      <xsl:apply-templates mode="python"/>
-  </xsl:template>
-
-  <xsl:template match="methodparam" mode="python">
-    <xsl:if test="position() &gt; 1">
-      <xsl:text>, </xsl:text>
-    </xsl:if>
-      <xsl:apply-templates mode="python"/>
-  </xsl:template>
-
- <xsl:template mode="python"
-    match="destructorsynopsis|methodsynopsis">
-
-  <fo:block wrap-option='no-wrap'
-            white-space-collapse='false'
-            linefeed-treatment="preserve"
-            xsl:use-attribute-sets="monospace.verbatim.properties">
-      <xsl:text>    def </xsl:text>
-      <xsl:apply-templates select="methodname" mode="python"/>
-      <xsl:text>(</xsl:text>
-      <xsl:apply-templates select="methodparam" mode="python"/>
-      <xsl:text>)</xsl:text>
-<!--    <xsl:call-template name="synop-break"/> -->
-   </fo:block>
-  </xsl:template>
-
- <xsl:template mode="python"
-    match="constructorsynopsis">
-    <fo:block  wrap-option='no-wrap'
-            white-space-collapse='false'
-            linefeed-treatment="preserve"
-            xsl:use-attribute-sets="monospace.verbatim.properties">
-      <xsl:text>    </xsl:text>
-      <xsl:apply-templates select="methodname" mode="python"/>
-      <xsl:text>(</xsl:text>
-      <xsl:apply-templates select="methodparam" mode="python"/>
-      <xsl:text>)</xsl:text>
-  </fo:block>
-  </xsl:template>
-
-  <!-- hack -->
-  <xsl:template match="link" mode="python">
-    <xsl:apply-templates select="."/>
-  </xsl:template>
-
-<!--
-<xsl:template match="variablelist" mode="vl.as.blocks">
-  <xsl:variable name="id">
-    <xsl:call-template name="object.id"/>
-  </xsl:variable>
-
-  <xsl:if test="title">
-    <xsl:apply-templates select="title" mode="list.title.mode"/>
-  </xsl:if>
-
-  <fo:block id="{$id}" 
-            xsl:use-attribute-sets="list.block.spacing"
-            background-color="#FFECCE">
-    <xsl:apply-templates mode="vl.as.blocks"/>
-  </fo:block>
-</xsl:template>
--->
-
-<!--
-<xsl:template match="variablelist">
-  <fo:table border="0"
-            width="100%" 
-            background-color="#FFECCE"
-            table-layout="fixed">
-    <fo:table-column
-            align="left" 
-            column-width="20%"
-            column-number="1">
-    </fo:table-column>
-    <fo:table-column
-            align="left" 
-            column-width="80%"
-            column-number="2">
-    </fo:table-column>
-    <fo:table-body>
-      <xsl:apply-templates select="varlistentry"/>
-    </fo:table-body>
-  </fo:table>
-</xsl:template>
-
-<xsl:template match="varlistentry">
-  <fo:table-row>
-       <fo:table-cell>
-          <fo:block
-            background-color="#FFECCE">
-          <xsl:apply-templates select="term"/>
-          </fo:block>
-       </fo:table-cell>
-       <fo:table-cell>
-          <fo:block
-            background-color="#FFECCE">
-          <xsl:apply-templates select="listitem"/>
-          </fo:block>
-       </fo:table-cell>
-  </fo:table-row>
-</xsl:template>
-
-<xsl:template match="varlistentry/term">
-    <xsl:apply-templates/>
-    <xsl:text>, </xsl:text>
-</xsl:template>
-
-<xsl:template match="varlistentry/term[position()=last()]" priority="2">
-    <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="varlistentry/listitem">
-      <xsl:apply-templates/>
-</xsl:template>
--->
-
-</xsl:stylesheet>
diff --git a/docs/xsl/ref-html-style.xsl b/docs/xsl/ref-html-style.xsl
deleted file mode 100644 (file)
index a152077..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-               version='1.0'>
-<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/>
-<xsl:include href="common.xsl"/>
-<xsl:include href="html.xsl"/>
-<xsl:include href="devhelp.xsl"/>
-
-  <!-- ========================================================= -->
-  <!-- template to create the index.sgml anchor index -->
-
-  <xsl:template name="generate.index">
-    <xsl:call-template name="write.text.chunk">
-      <xsl:with-param name="filename" select="'index.sgml'"/>
-      <xsl:with-param name="content">
-        <!-- check all anchor and refentry elements -->
-        <xsl:apply-templates select="//anchor|//refentry|//refsect1|//refsect2|//book"
-                             mode="generate.index.mode"/>
-      </xsl:with-param>
-      <xsl:with-param name="encoding" select="'utf-8'"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="*" mode="generate.index.mode">
-    <xsl:if test="not(@href)">
-      <xsl:if test="@id">
-        <xsl:text>&lt;ANCHOR id=&quot;</xsl:text>
-        <xsl:value-of select="@id"/>
-        <xsl:text>&quot; href=&quot;</xsl:text>
-        <xsl:if test="$gtkdoc.bookname">
-          <xsl:value-of select="$gtkdoc.bookname"/>
-          <xsl:text>/</xsl:text>
-        </xsl:if>
-        <xsl:call-template name="href.target"/>
-        <xsl:text>&quot;&gt;
-        </xsl:text>
-      </xsl:if>
-    </xsl:if>
-  </xsl:template>
-  <xsl:param name="gtkdoc.version" select="''"/>
-  <xsl:param name="gtkdoc.bookname" select="''"/>
-
-  <xsl:param name="refentry.generate.name" select="0"/>
-  <xsl:param name="refentry.generate.title" select="1"/>
-  <xsl:param name="chapter.autolabel" select="0"/>
-
-  <xsl:template match="book|article">
-    <xsl:apply-imports/>
-    <xsl:call-template name="generate.devhelp"/>
-    <xsl:call-template name="generate.index"/>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/dsextras.py b/dsextras.py
deleted file mode 100644 (file)
index b2c9e90..0000000
+++ /dev/null
@@ -1,509 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# dsextras.py - Extra classes and utilities for distutils,
-#               adding pkg-config support
-
-
-import os
-import sys
-import fnmatch
-import re
-import string
-
-from distutils import dep_util
-from distutils.command.build_ext import build_ext
-from distutils.command.install_lib import install_lib
-from distutils.command.install_data import install_data
-from distutils.extension import Extension
-from distutils.spawn import find_executable
-
-try:
-    import codegen.createdefs
-    from codegen.override import Overrides
-    from codegen.defsparser import DefsParser
-    from codegen.codegen import register_types, SourceWriter, FileOutput
-except ImportError:
-    template_classes_enabled = False
-else:
-    template_classes_enabled = True
-
-
-GLOBAL_INC = []
-GLOBAL_MACROS = []
-
-codegen_error_message='''
-***************************************************************************
-Codegen could not be found on your system and is required by the
-dsextras.Template and dsextras.TemplateExtension classes.
-***************************************************************************
-'''
-
-
-def get_m4_define(varname):
-    '''Return the value of a m4_define variable as set in configure.in.'''
-    pattern = re.compile('m4_define\(' + varname + '\,\s*(.+)\)')
-
-    if os.path.exists('configure.ac'):
-        fname = 'configure.ac'
-    elif os.path.exists('configure.in'):
-        fname = 'configure.in'
-    else:
-        raise SystemExit('ERROR: Could not find configure file')
-
-    for line in open(fname).readlines():
-        match_obj = pattern.match(line)
-
-        if match_obj:
-            return match_obj.group(1)
-
-    return None
-
-def getoutput(cmd):
-    '''Return output (stdout or stderr) of executing cmd in a shell.'''
-    return getstatusoutput(cmd)[1]
-
-def getstatusoutput(cmd):
-    '''Return (status, output) of executing cmd in a shell.'''
-    if sys.platform == 'win32':
-        pipe = os.popen(cmd, 'r')
-        text = pipe.read()
-        sts = pipe.close() or 0
-
-        while text[-1:] in ['\n', '\r']:
-            text = text[:-1]
-
-        return sts, text
-    else:
-        from commands import getstatusoutput
-        return getstatusoutput(cmd)
-
-def have_gcc():
-    '''Checks for the existence of gcc'''
-    if find_executable('gcc'):
-        return True
-
-def have_pkgconfig():
-    '''Checks for the existence of pkg-config'''
-    if find_executable('pkg-config'):
-        return True
-
-def list_files(dir):
-    '''List all files in a dir, with filename match support:
-    for example: glade/*.glade will return all files in the glade directory
-    that matches *.glade. It also looks up the full path'''
-    if dir.find(os.sep) != -1:
-        parts = dir.split(os.sep)
-        dir = string.join(parts[:-1], os.sep)
-        pattern = parts[-1]
-    else:
-        pattern = dir
-        dir = '.'
-
-    dir = os.path.abspath(dir)
-    retval = []
-
-    for file in os.listdir(dir):
-        if fnmatch.fnmatch(file, pattern):
-            retval.append(os.path.join(dir, file))
-
-    return retval
-
-def pkgc_version_check(name, req_version):
-    '''Check the existence and version number of a package:
-    returns False if not installed or too old, True otherwise.'''
-    is_installed = not os.system('pkg-config --exists %s' % name)
-
-    if not is_installed:
-        return False
-
-    orig_version = pkgc_get_version(name)
-    version = map(int, orig_version.split('.'))
-    pkc_version = map(int, req_version.split('.'))
-
-    if version >= pkc_version:
-        return True
-
-    return False
-
-def pkgc_get_version(name):
-    '''return the version as return by pkg-config --modversion'''
-    return getoutput('pkg-config --modversion %s' % name)
-
-def pkgc_get_libraries(name):
-    '''returns a list of libraries as returned by pkg-config --libs-only-l'''
-    output = getoutput('pkg-config --libs-only-l %s' % name)
-    return output.replace('-l', '').split()
-
-def pkgc_get_library_dirs(name):
-    '''returns a list of library dirs as returned by pkg-config --libs-only-L'''
-    output = getoutput('pkg-config --libs-only-L %s' % name)
-    return output.replace('-L', '').split()
-
-def pkgc_get_include_dirs(name):
-    '''returns a list of include dirs as returned by pkg-config --cflags-only-I'''
-    output = getoutput('pkg-config --cflags-only-I %s' % name)
-    return output.replace('-I', '').split()
-
-def pkgc_get_defs_dir(name):
-    '''returns the defs dir as returned by pkg-config --variable=defsdir'''
-    output = getoutput('pkg-config --variable=defsdir %s' % name)
-    return output
-
-
-class BuildExt(build_ext):
-    def init_extra_compile_args(self):
-        self.extra_compile_args = []
-
-        if sys.platform == 'win32' and self.compiler.compiler_type == 'mingw32':
-            if not have_gcc():
-                raise SystemExit('ERROR: Could not find gcc.')
-
-            # MSVC compatible struct packing is required.
-            # Note gcc2 uses -fnative-struct while gcc3
-            # and gcc4 use -mms-bitfields. Based on the
-            # version the proper flag is used below.
-            msnative_struct = {'2': '-fnative-struct',
-                               '3': '-mms-bitfields',
-                               '4': '-mms-bitfields'}
-            gcc_version = getoutput('gcc -dumpversion')
-
-            print ('using MinGW GCC version %s with %s option' % \
-                  (gcc_version, msnative_struct[gcc_version[0]]))
-
-            self.extra_compile_args.append(msnative_struct[gcc_version[0]])
-
-    def modify_compiler(self):
-        if sys.platform == 'win32' and self.compiler.compiler_type == 'mingw32':
-            if not have_gcc():
-                raise SystemExit('ERROR: Could not find gcc.')
-
-            # Remove '-static' linker option to prevent MinGW ld
-            # from trying to link with MSVC import libraries.
-            if self.compiler.linker_so.count('-static'):
-                self.compiler.linker_so.remove('-static')
-
-    def build_extensions(self):
-        # Init self.extra_compile_args
-        self.init_extra_compile_args()
-        # Modify default compiler settings
-        self.modify_compiler()
-        # Invoke base build_extensions()
-        build_ext.build_extensions(self)
-
-    def build_extension(self, ext):
-        # Add self.extra_compile_args to ext.extra_compile_args
-        ext.extra_compile_args += self.extra_compile_args
-
-        # Generate eventual templates before building
-        if hasattr(ext, 'generate'):
-            ext.generate()
-
-        # Filter out 'c' and 'm' libs when compilic w/ msvc
-        if sys.platform == 'win32' and self.compiler.compiler_type == 'msvc':
-            save_libs = ext.libraries
-            ext.libraries = [lib for lib in ext.libraries
-                             if lib not in ['c', 'm']]
-        else:
-            save_libs = ext.libraries
-
-        # Invoke base build_extension()
-        build_ext.build_extension(self, ext)
-
-        if save_libs is not None and save_libs != ext.libraries:
-            ext.libraries = save_libs
-
-
-class InstallLib(install_lib):
-    local_outputs = []
-    local_inputs = []
-
-    def set_install_dir(self, install_dir):
-        self.install_dir = install_dir
-
-    def get_outputs(self):
-        return install_lib.get_outputs(self) + self.local_outputs
-
-    def get_inputs(self):
-        return install_lib.get_inputs(self) + self.local_inputs
-
-
-class InstallData(install_data):
-    local_outputs = []
-    local_inputs = []
-    template_options = {}
-
-    def prepare(self):
-        if os.name == 'nt':
-            self.prefix = os.sep.join(self.install_dir.split(os.sep)[:-3])
-        else:
-            # default: os.name == 'posix'
-            self.prefix = os.sep.join(self.install_dir.split(os.sep)[:-4])
-
-        self.exec_prefix = '${prefix}/bin'
-        self.includedir = '${prefix}/include'
-        self.libdir = '${prefix}/lib'
-        self.datarootdir = '${prefix}/share'
-        self.datadir = '${prefix}/share'
-
-        self.add_template_option('prefix', self.prefix)
-        self.add_template_option('exec_prefix', self.exec_prefix)
-        self.add_template_option('includedir', self.includedir)
-        self.add_template_option('libdir', self.libdir)
-        self.add_template_option('datarootdir', self.datarootdir)
-        self.add_template_option('datadir', self.datadir)
-        self.add_template_option('PYTHON', sys.executable)
-        self.add_template_option('THREADING_CFLAGS', '')
-
-    def set_install_dir(self, install_dir):
-        self.install_dir = install_dir
-
-    def add_template_option(self, name, value):
-        self.template_options['@%s@' % name] = value
-
-    def install_template(self, filename, install_dir):
-        '''Install template filename into target directory install_dir.'''
-        output_file = os.path.split(filename)[-1][:-3]
-
-        template = open(filename).read()
-
-        for key, value in self.template_options.items():
-            template = template.replace(key, value)
-
-        output = os.path.join(install_dir, output_file)
-        self.mkpath(install_dir)
-        open(output, 'wb').write(template)
-        self.local_inputs.append(filename)
-        self.local_outputs.append(output)
-        return output
-
-    def get_outputs(self):
-        return install_data.get_outputs(self) + self.local_outputs
-
-    def get_inputs(self):
-        return install_data.get_inputs(self) + self.local_inputs
-
-
-class PkgConfigExtension(Extension):
-    # Name of pygobject package extension depends on, can be None
-    pygobject_pkc = 'pygobject-2.0'
-    can_build_ok = None
-
-    def __init__(self, **kwargs):
-        name = kwargs['pkc_name']
-
-        if 'include_dirs' in kwargs:
-            kwargs['include_dirs'] += self.get_include_dirs(name) + GLOBAL_INC
-        else:
-            kwargs['include_dirs'] = self.get_include_dirs(name) + GLOBAL_INC
-
-        kwargs['define_macros'] = GLOBAL_MACROS
-
-        if 'libraries' in kwargs:
-            kwargs['libraries'] += self.get_libraries(name)
-        else:
-            kwargs['libraries'] = self.get_libraries(name)
-
-        if 'library_dirs' in kwargs:
-            kwargs['library_dirs'] += self.get_library_dirs(name)
-        else:
-            kwargs['library_dirs'] = self.get_library_dirs(name)
-
-        if 'pygobject_pkc' in kwargs:
-            self.pygobject_pkc = kwargs.pop('pygobject_pkc')
-
-        if self.pygobject_pkc:
-            kwargs['include_dirs'] += self.get_include_dirs(self.pygobject_pkc)
-            kwargs['libraries'] += self.get_libraries(self.pygobject_pkc)
-            kwargs['library_dirs'] += self.get_library_dirs(self.pygobject_pkc)
-
-        self.name = kwargs['name']
-        self.pkc_name = kwargs['pkc_name']
-        self.pkc_version = kwargs['pkc_version']
-        del kwargs['pkc_name'], kwargs['pkc_version']
-        Extension.__init__(self, **kwargs)
-
-    def get_include_dirs(self, names):
-        if type(names) != tuple:
-            names = (names,)
-
-        retval = []
-
-        for name in names:
-            retval.extend(pkgc_get_include_dirs(name))
-
-        return retval
-
-    def get_libraries(self, names):
-        if type(names) != tuple:
-            names = (names,)
-
-        retval = []
-
-        for name in names:
-            retval.extend(pkgc_get_libraries(name))
-
-        return retval
-
-    def get_library_dirs(self, names):
-        if type(names) != tuple:
-            names = (names,)
-
-        retval = []
-
-        for name in names:
-            retval.extend(pkgc_get_library_dirs(name))
-
-        return retval
-
-    def can_build(self):
-        '''If the pkg-config version found is good enough'''
-        if self.can_build_ok is not None:
-            return self.can_build_ok
-
-        if type(self.pkc_name) != tuple:
-            reqs = [(self.pkc_name, self.pkc_version)]
-        else:
-            reqs = zip(self.pkc_name, self.pkc_version)
-
-        for package, version in reqs:
-            retval = os.system('pkg-config --exists %s' % package)
-
-            if retval:
-                print ('* %s.pc could not be found, bindings for %s'
-                       ' will not be built.' % (package, self.name))
-                self.can_build_ok = False
-                return False
-
-            orig_version = pkgc_get_version(package)
-
-            if (map(int, orig_version.split('.')) >=
-                map(int, version.split('.'))):
-
-                self.can_build_ok = True
-                return True
-            else:
-                print ('Warning: Too old version of %s' % package)
-                print ('         Need %s, but %s is installed' % (version, orig_version))
-                self.can_build_ok = False
-                return False
-
-    def generate(self):
-        pass
-
-
-class Template(object):
-    def __new__(cls, *args, **kwds):
-        # The Template and TemplateExtension classes require codegen
-        if not template_classes_enabled:
-            raise NameError('\'%s\' is not defined\n%s' % (cls.__name__,
-                                                           codegen_error_message))
-
-        return object.__new__(cls)
-
-    def __init__(self, override, output, defs, prefix,
-                 register=[], load_types=None, py_ssize_t_clean=False):
-
-        self.override = override
-        self.output = output
-        self.prefix = prefix
-        self.load_types = load_types
-        self.py_ssize_t_clean = py_ssize_t_clean
-
-        self.built_defs=[]
-
-        if isinstance(defs, tuple):
-            self.defs=defs[0]
-            self.built_defs.append(defs)
-        else:
-            self.defs=defs
-
-        self.register=[]
-
-        for r in register:
-            if isinstance(r, tuple):
-                self.register.append(r[0])
-                self.built_defs.append(r)
-            else:
-                self.register.append(r)
-
-    def check_dates(self):
-        # Return True if files are up-to-date
-        files=self.register[:]
-        files.append(self.override)
-        files.append(self.defs)
-
-        return not dep_util.newer_group(files, self.output)
-
-    def generate_defs(self):
-        for (target, sources) in self.built_defs:
-            if dep_util.newer_group(sources, target):
-                # createdefs is mostly called from the CLI !
-                args=['dummy', target] + sources
-                codegen.createdefs.main(args)
-
-    def generate(self):
-        # Generate defs files if necessary
-        self.generate_defs()
-
-        # ... then check the file timestamps
-        if self.check_dates():
-            return
-
-        for item in self.register:
-            dp = DefsParser(item, dict(GLOBAL_MACROS))
-            dp.startParsing()
-            register_types(dp)
-
-        if self.load_types:
-            globals = {}
-            execfile(self.load_types, globals)
-
-        dp = DefsParser(self.defs, dict(GLOBAL_MACROS))
-        dp.startParsing()
-        register_types(dp)
-
-        fd = open(self.output, 'w')
-        sw = SourceWriter(dp, Overrides(self.override), self.prefix,
-                          FileOutput(fd, self.output))
-        sw.write(self.py_ssize_t_clean)
-        fd.close()
-
-
-class TemplateExtension(PkgConfigExtension):
-    def __new__(cls,*args, **kwds):
-        if not template_classes_enabled:
-            raise NameError('\'%s\' is not defined\n%s' % (cls.__name__,
-                                                           codegen_error_message))
-
-        return PkgConfigExtension.__new__(cls,*args, **kwds)
-
-    def __init__(self, **kwargs):
-        name = kwargs['name']
-        defs = kwargs['defs']
-
-        if isinstance(defs, tuple):
-            output = defs[0][:-5] + '.c'
-        else:
-            output = defs[:-5] + '.c'
-
-        override = kwargs['override']
-        load_types = kwargs.get('load_types')
-        py_ssize_t_clean = kwargs.pop('py_ssize_t_clean', False)
-        self.templates = []
-        self.templates.append(Template(override, output, defs, 'py' + name,
-                                       kwargs['register'], load_types,
-                                       py_ssize_t_clean))
-
-        del kwargs['register'], kwargs['override'], kwargs['defs']
-
-        if load_types:
-            del kwargs['load_types']
-
-        if kwargs.has_key('output'):
-            kwargs['name'] = kwargs['output']
-            del kwargs['output']
-
-        PkgConfigExtension.__init__(self, **kwargs)
-
-    def generate(self):
-        map(lambda x: x.generate(), self.templates)
index b680b90..af9f3d7 100644 (file)
@@ -1,4 +1 @@
 EXTRA_DIST = properties.py signal.py option.py cairo-demo.py
-
-
--include $(top_srcdir)/git.mk
index b0ab293..26e1fd0 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -47,14 +64,19 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -66,6 +88,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
@@ -86,14 +110,13 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GIOUNIX_CFLAGS = @GIOUNIX_CFLAGS@
-GIOUNIX_LIBS = @GIOUNIX_LIBS@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
 GI_DATADIR = @GI_DATADIR@
 GI_LIBS = @GI_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
 GLIB_MKENUMS = @GLIB_MKENUMS@
@@ -146,6 +169,8 @@ PYTHON = @PYTHON@
 PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
@@ -156,7 +181,6 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-XSLTPROC = @XSLTPROC@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -204,7 +228,6 @@ prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
-pygobject_CODEGEN_DEFINES = @pygobject_CODEGEN_DEFINES@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
@@ -305,10 +328,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
@@ -400,8 +428,6 @@ uninstall-am:
        mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
 
 
--include $(top_srcdir)/git.mk
-
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 72a0533..7b90ec3 100755 (executable)
@@ -1,46 +1,51 @@
 #!/usr/bin/env python
-"""Based on cairo-demo/X11/cairo-demo.c
 """
-import pygtk
-pygtk.require('2.0')
+Based on cairo-demo/X11/cairo-demo.c
+"""
+
 import cairo
-from gi.repository import Gdk, Gtk
+from gi.repository import Gtk
 
 SIZE = 30
 
+
 def triangle(ctx):
     ctx.move_to(SIZE, 0)
-    ctx.rel_line_to(SIZE, 2*SIZE)
-    ctx.rel_line_to(-2*SIZE, 0)
+    ctx.rel_line_to(SIZE, 2 * SIZE)
+    ctx.rel_line_to(-2 * SIZE, 0)
     ctx.close_path()
 
+
 def square(ctx):
     ctx.move_to(0, 0)
-    ctx.rel_line_to(2*SIZE, 0)
-    ctx.rel_line_to(0, 2*SIZE)
-    ctx.rel_line_to(-2*SIZE, 0)
+    ctx.rel_line_to(2 * SIZE, 0)
+    ctx.rel_line_to(0, 2 * SIZE)
+    ctx.rel_line_to(-2 * SIZE, 0)
     ctx.close_path()
 
+
 def bowtie(ctx):
     ctx.move_to(0, 0)
-    ctx.rel_line_to(2*SIZE, 2*SIZE)
-    ctx.rel_line_to(-2*SIZE, 0)
-    ctx.rel_line_to(2*SIZE, -2*SIZE)
+    ctx.rel_line_to(2 * SIZE, 2 * SIZE)
+    ctx.rel_line_to(-2 * SIZE, 0)
+    ctx.rel_line_to(2 * SIZE, -2 * SIZE)
     ctx.close_path()
 
+
 def inf(ctx):
     ctx.move_to(0, SIZE)
-    ctx.rel_curve_to(0,SIZE, SIZE,SIZE, 2*SIZE,0)
-    ctx.rel_curve_to(SIZE,-SIZE, 2*SIZE,-SIZE, 2*SIZE,0)
-    ctx.rel_curve_to(0,SIZE, -SIZE,SIZE, -2*SIZE,0)
-    ctx.rel_curve_to(-SIZE,-SIZE, -2*SIZE,-SIZE, -2*SIZE,0)
+    ctx.rel_curve_to(0, SIZE, SIZE, SIZE, 2 * SIZE, 0)
+    ctx.rel_curve_to(SIZE, -SIZE, 2 * SIZE, -SIZE, 2 * SIZE, 0)
+    ctx.rel_curve_to(0, SIZE, -SIZE, SIZE, - 2 * SIZE, 0)
+    ctx.rel_curve_to(-SIZE, -SIZE, - 2 * SIZE, -SIZE, - 2 * SIZE, 0)
     ctx.close_path()
 
+
 def draw_shapes(ctx, x, y, fill):
     ctx.save()
 
     ctx.new_path()
-    ctx.translate(x+SIZE, y+SIZE)
+    ctx.translate(x + SIZE, y + SIZE)
     bowtie(ctx)
     if fill:
         ctx.fill()
@@ -48,7 +53,7 @@ def draw_shapes(ctx, x, y, fill):
         ctx.stroke()
 
     ctx.new_path()
-    ctx.translate(3*SIZE, 0)
+    ctx.translate(3 * SIZE, 0)
     square(ctx)
     if fill:
         ctx.fill()
@@ -56,7 +61,7 @@ def draw_shapes(ctx, x, y, fill):
         ctx.stroke()
 
     ctx.new_path()
-    ctx.translate(3*SIZE, 0)
+    ctx.translate(3 * SIZE, 0)
     triangle(ctx)
     if fill:
         ctx.fill()
@@ -64,7 +69,7 @@ def draw_shapes(ctx, x, y, fill):
         ctx.stroke()
 
     ctx.new_path()
-    ctx.translate(3*SIZE, 0)
+    ctx.translate(3 * SIZE, 0)
     inf(ctx)
     if fill:
         ctx.fill()
@@ -73,39 +78,41 @@ def draw_shapes(ctx, x, y, fill):
 
     ctx.restore()
 
+
 def fill_shapes(ctx, x, y):
     draw_shapes(ctx, x, y, True)
 
+
 def stroke_shapes(ctx, x, y):
     draw_shapes(ctx, x, y, False)
 
-def expose (da, event):
-    ctx = Gdk.cairo_create(da.window)
 
+def draw(da, ctx):
     ctx.set_source_rgb(0, 0, 0)
 
     ctx.set_line_width(SIZE / 4)
     ctx.set_tolerance(0.1)
 
     ctx.set_line_join(cairo.LINE_JOIN_ROUND)
-    ctx.set_dash([SIZE/4.0, SIZE/4.0], 0)
+    ctx.set_dash([SIZE / 4.0, SIZE / 4.0], 0)
     stroke_shapes(ctx, 0, 0)
 
     ctx.set_dash([], 0)
-    stroke_shapes(ctx, 0, 3*SIZE)
+    stroke_shapes(ctx, 0, 3 * SIZE)
 
     ctx.set_line_join(cairo.LINE_JOIN_BEVEL)
-    stroke_shapes(ctx, 0, 6*SIZE)
+    stroke_shapes(ctx, 0, 6 * SIZE)
 
     ctx.set_line_join(cairo.LINE_JOIN_MITER)
-    stroke_shapes(ctx, 0, 9*SIZE)
+    stroke_shapes(ctx, 0, 9 * SIZE)
 
-    fill_shapes(ctx, 0, 12*SIZE)
+    fill_shapes(ctx, 0, 12 * SIZE)
 
     ctx.set_line_join(cairo.LINE_JOIN_BEVEL)
-    fill_shapes(ctx, 0, 15*SIZE)
-    ctx.set_source_rgb(1,0,0)
-    stroke_shapes(ctx, 0, 15*SIZE)
+    fill_shapes(ctx, 0, 15 * SIZE)
+    ctx.set_source_rgb(1, 0, 0)
+    stroke_shapes(ctx, 0, 15 * SIZE)
+
 
 def main():
     win = Gtk.Window()
@@ -114,7 +121,7 @@ def main():
 
     drawingarea = Gtk.DrawingArea()
     win.add(drawingarea)
-    drawingarea.connect('expose_event', expose)
+    drawingarea.connect('draw', draw)
 
     win.show_all()
     Gtk.main()
index 345517e..04838b1 100644 (file)
@@ -4,23 +4,21 @@
 from gobject.option import OptionGroup, OptionParser, make_option
 
 group = OptionGroup("example", "OptionGroup Example", "Shows all example options",
-    option_list = [
-        make_option("--example",
-                    action="store_true",
-                    dest="example",
-                    help="An example option."),
-    ])
+                    option_list=[make_option("--example",
+                                             action="store_true",
+                                             dest="example",
+                                             help="An example option."),
+                                ])
 
 parser = OptionParser("NAMES ...",
-    description="A simple gobject.option example.",
-    option_list = [
-        make_option("--file", "-f",
-                    type="filename",
-                    action="store",
-                    dest="file",
-                    help="A filename option"),
-        # ...
-    ])
+                      description="A simple gobject.option example.",
+                      option_list=[make_option("--file", "-f",
+                                               type="filename",
+                                               action="store",
+                                               dest="file",
+                                               help="A filename option"),
+                                   # ...
+                                  ])
 
 parser.add_option_group(group)
 
index cc05920..465b3c3 100644 (file)
@@ -1,18 +1,19 @@
-import gobject
+from gi.repository import GObject
 
-class MyObject(gobject.GObject):
 
-    foo = gobject.property(type=str, default='bar')
-    boolprop = gobject.property(type=bool, default=False)
+class MyObject(GObject.GObject):
+
+    foo = GObject.Property(type=str, default='bar')
+    boolprop = GObject.Property(type=bool, default=False)
 
     def __init__(self):
-        gobject.GObject.__init__(self)
+        GObject.GObject.__init__(self)
 
-    @gobject.property
+    @GObject.Property
     def readonly(self):
         return 'readonly'
 
-gobject.type_register(MyObject)
+GObject.type_register(MyObject)
 
 print "MyObject properties: ", list(MyObject.props)
 
index 26ddae9..69c1d62 100644 (file)
@@ -1,28 +1,42 @@
-import pygtk; pygtk.require("2.0")
-import gobject
-
-class C(gobject.GObject):
-    __gsignals__ = {
-        'my_signal': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
-                      (gobject.TYPE_INT,))
-    }
-    def __init__(self):
-        self.__gobject_init__() # default constructor using our new GType
-    def do_my_signal(self, arg):
-        print "C: class closure for `my_signal' called with argument", arg
+from __future__ import print_function
+
+from gi.repository import GObject
+
+
+class C(GObject.GObject):
+    @GObject.Signal(arg_types=(int,))
+    def my_signal(self, arg):
+        """Decorator style signal which uses the method name as signal name and
+        the method as the closure.
+
+        Note that with python3 annotations can be used for argument types as follows:
+            @GObject.Signal
+            def my_signal(self, arg:int):
+                pass
+        """
+        print("C: class closure for `my_signal' called with argument", arg)
+
+    @GObject.Signal
+    def noarg_signal(self):
+        """Decoration of a signal using all defaults and no arguments."""
+        print("C: class closure for `noarg_signal' called")
+
 
 class D(C):
     def do_my_signal(self, arg):
-        print "D: class closure for `my_signal' called.  Chaining up to C"
-        C.do_my_signal(self, arg)
+        print("D: class closure for `my_signal' called.  Chaining up to C")
+        C.my_signal(self, arg)
+
+
+def my_signal_handler(obj, arg, *extra):
+    print("handler for `my_signal' called with argument", arg, "and extra args", extra)
 
-def my_signal_handler(object, arg, *extra):
-    print "handler for `my_signal' called with argument", arg, \
-          "and extra args", extra
 
 inst = C()
 inst2 = D()
 
 inst.connect("my_signal", my_signal_handler, 1, 2, 3)
+inst.connect("noarg_signal", my_signal_handler, 1, 2, 3)
 inst.emit("my_signal", 42)
+inst.emit("noarg_signal")
 inst2.emit("my_signal", 42)
index 31f6c79..f99e45b 100644 (file)
@@ -1,38 +1,45 @@
-PLATFORM_VERSION = 2.0
-
-pkgincludedir = $(includedir)/pygtk-$(PLATFORM_VERSION)
-pkgpyexecdir = $(pyexecdir)
-
 SUBDIRS = \
        repository \
-       overrides
+       overrides \
+        _glib \
+       _gobject
 
-INCLUDES = -I$(top_srcdir)/gobject -I$(top_srcdir)/glib
+extension_cppflags = \
+       $(PYTHON_INCLUDES) \
+       -DPY_SSIZE_T_CLEAN
+
+extension_ldflags = \
+       -module \
+       -avoid-version
+
+if OS_WIN32
+# Windows requires Python modules to be explicitly linked to libpython.
+# Extension modules are shared libaries (.dll), but need to be
+# called .pyd for Python to load it as an extension module.
+extension_libadd = \
+       $(PYTHON_LIBS)
+
+extension_ldflags += \
+       -no-undefined \
+       -shrext ".pyd"
+endif
+
+pygidir = $(pyexecdir)/gi
 
-pygidir = $(pkgpyexecdir)/gi
 pygi_PYTHON = \
+       __init__.py \
        types.py \
        module.py \
        importer.py \
-       __init__.py
+       pygtkcompat.py
+
+pygi_LTLIBRARIES = _gi.la
 
-_gi_la_CFLAGS = \
-       $(PYTHON_INCLUDES) \
-       $(GI_CFLAGS)
-_gi_la_LDFLAGS = \
-       -module \
-       -avoid-version \
-       -export-symbols-regex "init_gi|PyInit__gi"
-_gi_la_LIBADD = \
-       $(GI_LIBS) \
-       $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
 _gi_la_SOURCES = \
        pygi-repository.c \
        pygi-repository.h \
        pygi-info.c \
        pygi-info.h \
-       pygi-invoke.c \
-       pygi-invoke.h \
        pygi-foreign.c \
        pygi-foreign.h \
        pygi-foreign-gvariant.c \
@@ -47,6 +54,8 @@ _gi_la_SOURCES = \
        pygi-boxed.h \
        pygi-closure.c \
        pygi-closure.h \
+       pygi-ccallback.c \
+       pygi-ccallback.h \
        pygi-callbacks.c \
        pygi-callbacks.h \
        pygi.h \
@@ -56,39 +65,70 @@ _gi_la_SOURCES = \
        pygi-signal-closure.c \
        pygi-signal-closure.h \
        pygobject-external.h \
-       gimodule.c
+       gimodule.c \
+       pygi-invoke.c \
+       pygi-invoke.h \
+       pygi-invoke-state-struct.h \
+       pygi-cache.h \
+       pygi-cache.c \
+       pygi-marshal-from-py.c \
+       pygi-marshal-from-py.h \
+       pygi-marshal-to-py.c \
+       pygi-marshal-to-py.h \
+       pygi-marshal-cleanup.c \
+       pygi-marshal-cleanup.h
+_gi_la_CFLAGS = \
+       $(GI_CFLAGS)
+_gi_la_CPPFLAGS = \
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi/_gobject
+_gi_la_LIBADD = \
+       $(extension_libadd) \
+       $(GI_LIBS) \
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+_gi_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "init_gi|PyInit__gi"
 
+if ENABLE_CAIRO
+pygi_LTLIBRARIES += _gi_cairo.la
+endif
+
+_gi_cairo_la_SOURCES = \
+       pygi-foreign-cairo.c
 _gi_cairo_la_CFLAGS = \
-       $(PYTHON_INCLUDES) \
        $(GI_CFLAGS) \
        $(PYCAIRO_CFLAGS)
-_gi_cairo_la_LDFLAGS = \
-       -module \
-       -avoid-version \
-       -export-symbols-regex "init_gi_cairo|PyInit__gi_cairo"
+_gi_cairo_la_CPPFLAGS = \
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi/_gobject
 _gi_cairo_la_LIBADD = \
+       $(extension_libadd) \
        $(GI_LIBS) \
        $(PYCAIRO_LIBS)
-_gi_cairo_la_SOURCES = pygi-foreign-cairo.c
-
-
-pygi_LTLIBRARIES = _gi.la
-
-if ENABLE_CAIRO
-pygi_LTLIBRARIES += _gi_cairo.la
-endif
+_gi_cairo_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "init_gi_cairo|PyInit__gi_cairo"
 
 
 # This is to ensure we have a symlink to the .so in the
 # build directory, which the Python interpreter can load
 # directly without having to know how to parse .la files.
 .la.so:
-       test -L $@ || $(LN_S) .libs/$@ $@
+       $(LN_S) .libs/$@ $@ || true
 
-all-local: $(LTLIBRARIES:.la=.so)
-check-local: $(LTLIBRARIES:.la=.so)
-clean-local:
-       rm -f $(LTLIBRARIES:.la=.so)
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygi_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
 
+all-local: $(LTLIBRARIES:.la=.so) build_pylinks
 
--include $(top_srcdir)/git.mk
+check-local: $(LTLIBRARIES:.la=.so) build_pylinks
+clean-local:
+       rm -f $(LTLIBRARIES:.la=.so)
index 3015b22..1bbd583 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
 pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
@@ -33,7 +51,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-@ENABLE_CAIRO_TRUE@am__append_1 = _gi_cairo.la
+@OS_WIN32_TRUE@am__append_1 = \
+@OS_WIN32_TRUE@        -no-undefined \
+@OS_WIN32_TRUE@        -shrext ".pyd"
+
+@ENABLE_CAIRO_TRUE@am__append_2 = _gi_cairo.la
 subdir = gi
 DIST_COMMON = $(pygi_PYTHON) $(srcdir)/Makefile.am \
        $(srcdir)/Makefile.in
@@ -70,27 +92,37 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(pygidir)" "$(DESTDIR)$(pygidir)"
 LTLIBRARIES = $(pygi_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-_gi_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
+@OS_WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+_gi_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
 am__gi_la_OBJECTS = _gi_la-pygi-repository.lo _gi_la-pygi-info.lo \
-       _gi_la-pygi-invoke.lo _gi_la-pygi-foreign.lo \
-       _gi_la-pygi-foreign-gvariant.lo _gi_la-pygi-struct.lo \
-       _gi_la-pygi-argument.lo _gi_la-pygi-type.lo \
-       _gi_la-pygi-boxed.lo _gi_la-pygi-closure.lo \
+       _gi_la-pygi-foreign.lo _gi_la-pygi-foreign-gvariant.lo \
+       _gi_la-pygi-struct.lo _gi_la-pygi-argument.lo \
+       _gi_la-pygi-type.lo _gi_la-pygi-boxed.lo \
+       _gi_la-pygi-closure.lo _gi_la-pygi-ccallback.lo \
        _gi_la-pygi-callbacks.lo _gi_la-pygi-property.lo \
-       _gi_la-pygi-signal-closure.lo _gi_la-gimodule.lo
+       _gi_la-pygi-signal-closure.lo _gi_la-gimodule.lo \
+       _gi_la-pygi-invoke.lo _gi_la-pygi-cache.lo \
+       _gi_la-pygi-marshal-from-py.lo _gi_la-pygi-marshal-to-py.lo \
+       _gi_la-pygi-marshal-cleanup.lo
 _gi_la_OBJECTS = $(am__gi_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 _gi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(_gi_la_CFLAGS) $(CFLAGS) \
        $(_gi_la_LDFLAGS) $(LDFLAGS) -o $@
-_gi_cairo_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1)
+_gi_cairo_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am__gi_cairo_la_OBJECTS = _gi_cairo_la-pygi-foreign-cairo.lo
 _gi_cairo_la_OBJECTS = $(am__gi_cairo_la_OBJECTS)
 _gi_cairo_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -107,21 +139,21 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
 am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(_gi_la_SOURCES) $(_gi_cairo_la_SOURCES)
 DIST_SOURCES = $(_gi_la_SOURCES) $(_gi_cairo_la_SOURCES)
@@ -132,6 +164,12 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
        install-pdf-recursive install-ps-recursive install-recursive \
        installcheck-recursive installdirs-recursive pdf-recursive \
        ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
 py_compile = $(top_srcdir)/py-compile
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
@@ -167,7 +205,6 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-pkgincludedir = $(includedir)/pygtk-$(PLATFORM_VERSION)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 AMTAR = @AMTAR@
@@ -178,6 +215,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
@@ -198,14 +237,13 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GIOUNIX_CFLAGS = @GIOUNIX_CFLAGS@
-GIOUNIX_LIBS = @GIOUNIX_LIBS@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
 GI_DATADIR = @GI_DATADIR@
 GI_LIBS = @GI_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
 GLIB_MKENUMS = @GLIB_MKENUMS@
@@ -258,6 +296,8 @@ PYTHON = @PYTHON@
 PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
@@ -268,7 +308,6 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-XSLTPROC = @XSLTPROC@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -310,13 +349,12 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
-pkgpyexecdir = $(pyexecdir)
+pkgpyexecdir = @pkgpyexecdir@
 pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
-pygobject_CODEGEN_DEFINES = @pygobject_CODEGEN_DEFINES@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
@@ -326,39 +364,38 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-PLATFORM_VERSION = 2.0
 SUBDIRS = \
        repository \
-       overrides
+       overrides \
+        _glib \
+       _gobject
+
+extension_cppflags = \
+       $(PYTHON_INCLUDES) \
+       -DPY_SSIZE_T_CLEAN
+
+extension_ldflags = -module -avoid-version $(am__append_1)
+
+# Windows requires Python modules to be explicitly linked to libpython.
+# Extension modules are shared libaries (.dll), but need to be
+# called .pyd for Python to load it as an extension module.
+@OS_WIN32_TRUE@extension_libadd = \
+@OS_WIN32_TRUE@        $(PYTHON_LIBS)
 
-INCLUDES = -I$(top_srcdir)/gobject -I$(top_srcdir)/glib
-pygidir = $(pkgpyexecdir)/gi
+pygidir = $(pyexecdir)/gi
 pygi_PYTHON = \
+       __init__.py \
        types.py \
        module.py \
        importer.py \
-       __init__.py
-
-_gi_la_CFLAGS = \
-       $(PYTHON_INCLUDES) \
-       $(GI_CFLAGS)
-
-_gi_la_LDFLAGS = \
-       -module \
-       -avoid-version \
-       -export-symbols-regex "init_gi|PyInit__gi"
-
-_gi_la_LIBADD = \
-       $(GI_LIBS) \
-       $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
+       pygtkcompat.py
 
+pygi_LTLIBRARIES = _gi.la $(am__append_2)
 _gi_la_SOURCES = \
        pygi-repository.c \
        pygi-repository.h \
        pygi-info.c \
        pygi-info.h \
-       pygi-invoke.c \
-       pygi-invoke.h \
        pygi-foreign.c \
        pygi-foreign.h \
        pygi-foreign-gvariant.c \
@@ -373,6 +410,8 @@ _gi_la_SOURCES = \
        pygi-boxed.h \
        pygi-closure.c \
        pygi-closure.h \
+       pygi-ccallback.c \
+       pygi-ccallback.h \
        pygi-callbacks.c \
        pygi-callbacks.h \
        pygi.h \
@@ -382,24 +421,57 @@ _gi_la_SOURCES = \
        pygi-signal-closure.c \
        pygi-signal-closure.h \
        pygobject-external.h \
-       gimodule.c
+       gimodule.c \
+       pygi-invoke.c \
+       pygi-invoke.h \
+       pygi-invoke-state-struct.h \
+       pygi-cache.h \
+       pygi-cache.c \
+       pygi-marshal-from-py.c \
+       pygi-marshal-from-py.h \
+       pygi-marshal-to-py.c \
+       pygi-marshal-to-py.h \
+       pygi-marshal-cleanup.c \
+       pygi-marshal-cleanup.h
+
+_gi_la_CFLAGS = \
+       $(GI_CFLAGS)
+
+_gi_la_CPPFLAGS = \
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi/_gobject
+
+_gi_la_LIBADD = \
+       $(extension_libadd) \
+       $(GI_LIBS) \
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+
+_gi_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "init_gi|PyInit__gi"
+
+_gi_cairo_la_SOURCES = \
+       pygi-foreign-cairo.c
 
 _gi_cairo_la_CFLAGS = \
-       $(PYTHON_INCLUDES) \
        $(GI_CFLAGS) \
        $(PYCAIRO_CFLAGS)
 
-_gi_cairo_la_LDFLAGS = \
-       -module \
-       -avoid-version \
-       -export-symbols-regex "init_gi_cairo|PyInit__gi_cairo"
+_gi_cairo_la_CPPFLAGS = \
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi/_gobject
 
 _gi_cairo_la_LIBADD = \
+       $(extension_libadd) \
        $(GI_LIBS) \
        $(PYCAIRO_LIBS)
 
-_gi_cairo_la_SOURCES = pygi-foreign-cairo.c
-pygi_LTLIBRARIES = _gi.la $(am__append_1)
+_gi_cairo_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "init_gi_cairo|PyInit__gi_cairo"
+
 all: all-recursive
 
 .SUFFIXES:
@@ -436,7 +508,6 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-pygiLTLIBRARIES: $(pygi_LTLIBRARIES)
        @$(NORMAL_INSTALL)
-       test -z "$(pygidir)" || $(MKDIR_P) "$(DESTDIR)$(pygidir)"
        @list='$(pygi_LTLIBRARIES)'; test -n "$(pygidir)" || list=; \
        list2=; for p in $$list; do \
          if test -f $$p; then \
@@ -444,6 +515,8 @@ install-pygiLTLIBRARIES: $(pygi_LTLIBRARIES)
          else :; fi; \
        done; \
        test -z "$$list2" || { \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pygidir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pygidir)" || exit 1; \
          echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pygidir)'"; \
          $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pygidir)"; \
        }
@@ -465,9 +538,9 @@ clean-pygiLTLIBRARIES:
          echo "rm -f \"$${dir}/so_locations\""; \
          rm -f "$${dir}/so_locations"; \
        done
-_gi.la: $(_gi_la_OBJECTS) $(_gi_la_DEPENDENCIES) 
+_gi.la: $(_gi_la_OBJECTS) $(_gi_la_DEPENDENCIES) $(EXTRA__gi_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(_gi_la_LINK) -rpath $(pygidir) $(_gi_la_OBJECTS) $(_gi_la_LIBADD) $(LIBS)
-_gi_cairo.la: $(_gi_cairo_la_OBJECTS) $(_gi_cairo_la_DEPENDENCIES) 
+_gi_cairo.la: $(_gi_cairo_la_OBJECTS) $(_gi_cairo_la_DEPENDENCIES) $(EXTRA__gi_cairo_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(_gi_cairo_la_LINK) $(am__gi_cairo_la_rpath) $(_gi_cairo_la_OBJECTS) $(_gi_cairo_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
@@ -480,12 +553,17 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-gimodule.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-argument.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-boxed.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-cache.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-callbacks.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-ccallback.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-closure.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-foreign-gvariant.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-foreign.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-info.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-invoke.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-marshal-cleanup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-marshal-from-py.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-marshal-to-py.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-property.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-repository.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-signal-closure.Plo@am__quote@
@@ -495,146 +573,163 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 _gi_la-pygi-repository.lo: pygi-repository.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-repository.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-repository.Tpo -c -o _gi_la-pygi-repository.lo `test -f 'pygi-repository.c' || echo '$(srcdir)/'`pygi-repository.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-repository.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-repository.Tpo -c -o _gi_la-pygi-repository.lo `test -f 'pygi-repository.c' || echo '$(srcdir)/'`pygi-repository.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-repository.Tpo $(DEPDIR)/_gi_la-pygi-repository.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-repository.c' object='_gi_la-pygi-repository.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-repository.c' object='_gi_la-pygi-repository.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-repository.lo `test -f 'pygi-repository.c' || echo '$(srcdir)/'`pygi-repository.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-repository.lo `test -f 'pygi-repository.c' || echo '$(srcdir)/'`pygi-repository.c
 
 _gi_la-pygi-info.lo: pygi-info.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-info.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-info.Tpo -c -o _gi_la-pygi-info.lo `test -f 'pygi-info.c' || echo '$(srcdir)/'`pygi-info.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-info.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-info.Tpo -c -o _gi_la-pygi-info.lo `test -f 'pygi-info.c' || echo '$(srcdir)/'`pygi-info.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-info.Tpo $(DEPDIR)/_gi_la-pygi-info.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-info.c' object='_gi_la-pygi-info.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-info.c' object='_gi_la-pygi-info.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-info.lo `test -f 'pygi-info.c' || echo '$(srcdir)/'`pygi-info.c
-
-_gi_la-pygi-invoke.lo: pygi-invoke.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-invoke.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-invoke.Tpo -c -o _gi_la-pygi-invoke.lo `test -f 'pygi-invoke.c' || echo '$(srcdir)/'`pygi-invoke.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-invoke.Tpo $(DEPDIR)/_gi_la-pygi-invoke.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-invoke.c' object='_gi_la-pygi-invoke.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-invoke.lo `test -f 'pygi-invoke.c' || echo '$(srcdir)/'`pygi-invoke.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-info.lo `test -f 'pygi-info.c' || echo '$(srcdir)/'`pygi-info.c
 
 _gi_la-pygi-foreign.lo: pygi-foreign.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-foreign.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-foreign.Tpo -c -o _gi_la-pygi-foreign.lo `test -f 'pygi-foreign.c' || echo '$(srcdir)/'`pygi-foreign.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-foreign.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-foreign.Tpo -c -o _gi_la-pygi-foreign.lo `test -f 'pygi-foreign.c' || echo '$(srcdir)/'`pygi-foreign.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-foreign.Tpo $(DEPDIR)/_gi_la-pygi-foreign.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-foreign.c' object='_gi_la-pygi-foreign.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-foreign.c' object='_gi_la-pygi-foreign.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-foreign.lo `test -f 'pygi-foreign.c' || echo '$(srcdir)/'`pygi-foreign.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-foreign.lo `test -f 'pygi-foreign.c' || echo '$(srcdir)/'`pygi-foreign.c
 
 _gi_la-pygi-foreign-gvariant.lo: pygi-foreign-gvariant.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-foreign-gvariant.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-foreign-gvariant.Tpo -c -o _gi_la-pygi-foreign-gvariant.lo `test -f 'pygi-foreign-gvariant.c' || echo '$(srcdir)/'`pygi-foreign-gvariant.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-foreign-gvariant.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-foreign-gvariant.Tpo -c -o _gi_la-pygi-foreign-gvariant.lo `test -f 'pygi-foreign-gvariant.c' || echo '$(srcdir)/'`pygi-foreign-gvariant.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-foreign-gvariant.Tpo $(DEPDIR)/_gi_la-pygi-foreign-gvariant.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-foreign-gvariant.c' object='_gi_la-pygi-foreign-gvariant.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-foreign-gvariant.c' object='_gi_la-pygi-foreign-gvariant.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-foreign-gvariant.lo `test -f 'pygi-foreign-gvariant.c' || echo '$(srcdir)/'`pygi-foreign-gvariant.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-foreign-gvariant.lo `test -f 'pygi-foreign-gvariant.c' || echo '$(srcdir)/'`pygi-foreign-gvariant.c
 
 _gi_la-pygi-struct.lo: pygi-struct.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-struct.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-struct.Tpo -c -o _gi_la-pygi-struct.lo `test -f 'pygi-struct.c' || echo '$(srcdir)/'`pygi-struct.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-struct.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-struct.Tpo -c -o _gi_la-pygi-struct.lo `test -f 'pygi-struct.c' || echo '$(srcdir)/'`pygi-struct.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-struct.Tpo $(DEPDIR)/_gi_la-pygi-struct.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-struct.c' object='_gi_la-pygi-struct.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-struct.c' object='_gi_la-pygi-struct.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-struct.lo `test -f 'pygi-struct.c' || echo '$(srcdir)/'`pygi-struct.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-struct.lo `test -f 'pygi-struct.c' || echo '$(srcdir)/'`pygi-struct.c
 
 _gi_la-pygi-argument.lo: pygi-argument.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-argument.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-argument.Tpo -c -o _gi_la-pygi-argument.lo `test -f 'pygi-argument.c' || echo '$(srcdir)/'`pygi-argument.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-argument.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-argument.Tpo -c -o _gi_la-pygi-argument.lo `test -f 'pygi-argument.c' || echo '$(srcdir)/'`pygi-argument.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-argument.Tpo $(DEPDIR)/_gi_la-pygi-argument.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-argument.c' object='_gi_la-pygi-argument.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-argument.c' object='_gi_la-pygi-argument.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-argument.lo `test -f 'pygi-argument.c' || echo '$(srcdir)/'`pygi-argument.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-argument.lo `test -f 'pygi-argument.c' || echo '$(srcdir)/'`pygi-argument.c
 
 _gi_la-pygi-type.lo: pygi-type.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-type.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-type.Tpo -c -o _gi_la-pygi-type.lo `test -f 'pygi-type.c' || echo '$(srcdir)/'`pygi-type.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-type.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-type.Tpo -c -o _gi_la-pygi-type.lo `test -f 'pygi-type.c' || echo '$(srcdir)/'`pygi-type.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-type.Tpo $(DEPDIR)/_gi_la-pygi-type.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-type.c' object='_gi_la-pygi-type.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-type.c' object='_gi_la-pygi-type.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-type.lo `test -f 'pygi-type.c' || echo '$(srcdir)/'`pygi-type.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-type.lo `test -f 'pygi-type.c' || echo '$(srcdir)/'`pygi-type.c
 
 _gi_la-pygi-boxed.lo: pygi-boxed.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-boxed.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-boxed.Tpo -c -o _gi_la-pygi-boxed.lo `test -f 'pygi-boxed.c' || echo '$(srcdir)/'`pygi-boxed.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-boxed.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-boxed.Tpo -c -o _gi_la-pygi-boxed.lo `test -f 'pygi-boxed.c' || echo '$(srcdir)/'`pygi-boxed.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-boxed.Tpo $(DEPDIR)/_gi_la-pygi-boxed.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-boxed.c' object='_gi_la-pygi-boxed.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-boxed.c' object='_gi_la-pygi-boxed.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-boxed.lo `test -f 'pygi-boxed.c' || echo '$(srcdir)/'`pygi-boxed.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-boxed.lo `test -f 'pygi-boxed.c' || echo '$(srcdir)/'`pygi-boxed.c
 
 _gi_la-pygi-closure.lo: pygi-closure.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-closure.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-closure.Tpo -c -o _gi_la-pygi-closure.lo `test -f 'pygi-closure.c' || echo '$(srcdir)/'`pygi-closure.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-closure.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-closure.Tpo -c -o _gi_la-pygi-closure.lo `test -f 'pygi-closure.c' || echo '$(srcdir)/'`pygi-closure.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-closure.Tpo $(DEPDIR)/_gi_la-pygi-closure.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-closure.c' object='_gi_la-pygi-closure.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-closure.c' object='_gi_la-pygi-closure.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-closure.lo `test -f 'pygi-closure.c' || echo '$(srcdir)/'`pygi-closure.c
+
+_gi_la-pygi-ccallback.lo: pygi-ccallback.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-ccallback.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-ccallback.Tpo -c -o _gi_la-pygi-ccallback.lo `test -f 'pygi-ccallback.c' || echo '$(srcdir)/'`pygi-ccallback.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-ccallback.Tpo $(DEPDIR)/_gi_la-pygi-ccallback.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-ccallback.c' object='_gi_la-pygi-ccallback.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-closure.lo `test -f 'pygi-closure.c' || echo '$(srcdir)/'`pygi-closure.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-ccallback.lo `test -f 'pygi-ccallback.c' || echo '$(srcdir)/'`pygi-ccallback.c
 
 _gi_la-pygi-callbacks.lo: pygi-callbacks.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-callbacks.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-callbacks.Tpo -c -o _gi_la-pygi-callbacks.lo `test -f 'pygi-callbacks.c' || echo '$(srcdir)/'`pygi-callbacks.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-callbacks.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-callbacks.Tpo -c -o _gi_la-pygi-callbacks.lo `test -f 'pygi-callbacks.c' || echo '$(srcdir)/'`pygi-callbacks.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-callbacks.Tpo $(DEPDIR)/_gi_la-pygi-callbacks.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-callbacks.c' object='_gi_la-pygi-callbacks.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-callbacks.c' object='_gi_la-pygi-callbacks.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-callbacks.lo `test -f 'pygi-callbacks.c' || echo '$(srcdir)/'`pygi-callbacks.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-callbacks.lo `test -f 'pygi-callbacks.c' || echo '$(srcdir)/'`pygi-callbacks.c
 
 _gi_la-pygi-property.lo: pygi-property.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-property.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-property.Tpo -c -o _gi_la-pygi-property.lo `test -f 'pygi-property.c' || echo '$(srcdir)/'`pygi-property.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-property.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-property.Tpo -c -o _gi_la-pygi-property.lo `test -f 'pygi-property.c' || echo '$(srcdir)/'`pygi-property.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-property.Tpo $(DEPDIR)/_gi_la-pygi-property.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-property.c' object='_gi_la-pygi-property.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-property.c' object='_gi_la-pygi-property.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-property.lo `test -f 'pygi-property.c' || echo '$(srcdir)/'`pygi-property.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-property.lo `test -f 'pygi-property.c' || echo '$(srcdir)/'`pygi-property.c
 
 _gi_la-pygi-signal-closure.lo: pygi-signal-closure.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-signal-closure.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-signal-closure.Tpo -c -o _gi_la-pygi-signal-closure.lo `test -f 'pygi-signal-closure.c' || echo '$(srcdir)/'`pygi-signal-closure.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-signal-closure.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-signal-closure.Tpo -c -o _gi_la-pygi-signal-closure.lo `test -f 'pygi-signal-closure.c' || echo '$(srcdir)/'`pygi-signal-closure.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-signal-closure.Tpo $(DEPDIR)/_gi_la-pygi-signal-closure.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-signal-closure.c' object='_gi_la-pygi-signal-closure.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-signal-closure.c' object='_gi_la-pygi-signal-closure.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-signal-closure.lo `test -f 'pygi-signal-closure.c' || echo '$(srcdir)/'`pygi-signal-closure.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-signal-closure.lo `test -f 'pygi-signal-closure.c' || echo '$(srcdir)/'`pygi-signal-closure.c
 
 _gi_la-gimodule.lo: gimodule.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-gimodule.lo -MD -MP -MF $(DEPDIR)/_gi_la-gimodule.Tpo -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-gimodule.lo -MD -MP -MF $(DEPDIR)/_gi_la-gimodule.Tpo -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-gimodule.Tpo $(DEPDIR)/_gi_la-gimodule.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='gimodule.c' object='_gi_la-gimodule.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gimodule.c' object='_gi_la-gimodule.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
+
+_gi_la-pygi-invoke.lo: pygi-invoke.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-invoke.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-invoke.Tpo -c -o _gi_la-pygi-invoke.lo `test -f 'pygi-invoke.c' || echo '$(srcdir)/'`pygi-invoke.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-invoke.Tpo $(DEPDIR)/_gi_la-pygi-invoke.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-invoke.c' object='_gi_la-pygi-invoke.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-invoke.lo `test -f 'pygi-invoke.c' || echo '$(srcdir)/'`pygi-invoke.c
+
+_gi_la-pygi-cache.lo: pygi-cache.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-cache.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-cache.Tpo -c -o _gi_la-pygi-cache.lo `test -f 'pygi-cache.c' || echo '$(srcdir)/'`pygi-cache.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-cache.Tpo $(DEPDIR)/_gi_la-pygi-cache.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-cache.c' object='_gi_la-pygi-cache.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-cache.lo `test -f 'pygi-cache.c' || echo '$(srcdir)/'`pygi-cache.c
+
+_gi_la-pygi-marshal-from-py.lo: pygi-marshal-from-py.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-marshal-from-py.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-marshal-from-py.Tpo -c -o _gi_la-pygi-marshal-from-py.lo `test -f 'pygi-marshal-from-py.c' || echo '$(srcdir)/'`pygi-marshal-from-py.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-marshal-from-py.Tpo $(DEPDIR)/_gi_la-pygi-marshal-from-py.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-marshal-from-py.c' object='_gi_la-pygi-marshal-from-py.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-marshal-from-py.lo `test -f 'pygi-marshal-from-py.c' || echo '$(srcdir)/'`pygi-marshal-from-py.c
+
+_gi_la-pygi-marshal-to-py.lo: pygi-marshal-to-py.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-marshal-to-py.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-marshal-to-py.Tpo -c -o _gi_la-pygi-marshal-to-py.lo `test -f 'pygi-marshal-to-py.c' || echo '$(srcdir)/'`pygi-marshal-to-py.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-marshal-to-py.Tpo $(DEPDIR)/_gi_la-pygi-marshal-to-py.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-marshal-to-py.c' object='_gi_la-pygi-marshal-to-py.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-marshal-to-py.lo `test -f 'pygi-marshal-to-py.c' || echo '$(srcdir)/'`pygi-marshal-to-py.c
+
+_gi_la-pygi-marshal-cleanup.lo: pygi-marshal-cleanup.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-marshal-cleanup.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-marshal-cleanup.Tpo -c -o _gi_la-pygi-marshal-cleanup.lo `test -f 'pygi-marshal-cleanup.c' || echo '$(srcdir)/'`pygi-marshal-cleanup.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-marshal-cleanup.Tpo $(DEPDIR)/_gi_la-pygi-marshal-cleanup.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-marshal-cleanup.c' object='_gi_la-pygi-marshal-cleanup.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-marshal-cleanup.lo `test -f 'pygi-marshal-cleanup.c' || echo '$(srcdir)/'`pygi-marshal-cleanup.c
 
 _gi_cairo_la-pygi-foreign-cairo.lo: pygi-foreign-cairo.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_cairo_la_CFLAGS) $(CFLAGS) -MT _gi_cairo_la-pygi-foreign-cairo.lo -MD -MP -MF $(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Tpo -c -o _gi_cairo_la-pygi-foreign-cairo.lo `test -f 'pygi-foreign-cairo.c' || echo '$(srcdir)/'`pygi-foreign-cairo.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_cairo_la_CPPFLAGS) $(CPPFLAGS) $(_gi_cairo_la_CFLAGS) $(CFLAGS) -MT _gi_cairo_la-pygi-foreign-cairo.lo -MD -MP -MF $(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Tpo -c -o _gi_cairo_la-pygi-foreign-cairo.lo `test -f 'pygi-foreign-cairo.c' || echo '$(srcdir)/'`pygi-foreign-cairo.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Tpo $(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygi-foreign-cairo.c' object='_gi_cairo_la-pygi-foreign-cairo.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-foreign-cairo.c' object='_gi_cairo_la-pygi-foreign-cairo.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gi_cairo_la_CFLAGS) $(CFLAGS) -c -o _gi_cairo_la-pygi-foreign-cairo.lo `test -f 'pygi-foreign-cairo.c' || echo '$(srcdir)/'`pygi-foreign-cairo.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_cairo_la_CPPFLAGS) $(CPPFLAGS) $(_gi_cairo_la_CFLAGS) $(CFLAGS) -c -o _gi_cairo_la-pygi-foreign-cairo.lo `test -f 'pygi-foreign-cairo.c' || echo '$(srcdir)/'`pygi-foreign-cairo.c
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -643,8 +738,11 @@ clean-libtool:
        -rm -rf .libs _libs
 install-pygiPYTHON: $(pygi_PYTHON)
        @$(NORMAL_INSTALL)
-       test -z "$(pygidir)" || $(MKDIR_P) "$(DESTDIR)$(pygidir)"
        @list='$(pygi_PYTHON)'; dlist=; list2=; test -n "$(pygidir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pygidir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pygidir)" || exit 1; \
+       fi; \
        for p in $$list; do \
          if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
          if test -f $$b$$p; then \
@@ -660,9 +758,10 @@ install-pygiPYTHON: $(pygi_PYTHON)
        done || exit $$?; \
        if test -n "$$dlist"; then \
          if test -z "$(DESTDIR)"; then \
-           PYTHON=$(PYTHON) $(py_compile) --basedir "$(pygidir)" $$dlist; \
+           $(am__py_compile) --basedir "$(pygidir)" $$dlist; \
          else \
-           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(pygidir)" $$dlist; \
+           $(am__py_compile) --destdir "$(DESTDIR)" \
+                             --basedir "$(pygidir)" $$dlist; \
          fi; \
        else :; fi
 
@@ -671,14 +770,14 @@ uninstall-pygiPYTHON:
        @list='$(pygi_PYTHON)'; test -n "$(pygidir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
+       dir='$(DESTDIR)$(pygidir)'; \
        filesc=`echo "$$files" | sed 's|$$|c|'`; \
        fileso=`echo "$$files" | sed 's|$$|o|'`; \
-       echo " ( cd '$(DESTDIR)$(pygidir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(pygidir)" && rm -f $$files || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pygidir)' && rm -f" $$filesc ")"; \
-       cd "$(DESTDIR)$(pygidir)" && rm -f $$filesc || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pygidir)' && rm -f" $$fileso ")"; \
-       cd "$(DESTDIR)$(pygidir)" && rm -f $$fileso
+       st=0; \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
+         $(am__uninstall_files_from_dir) || st=$$?; \
+       done; \
+       exit $$st
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -847,13 +946,10 @@ distdir: $(DISTFILES)
        done
        @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
-           test -d "$(distdir)/$$subdir" \
-           || $(MKDIR_P) "$(distdir)/$$subdir" \
-           || exit 1; \
-         fi; \
-       done
-       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-         if test "$$subdir" = .; then :; else \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
            dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
            $(am__relativize); \
            new_distdir=$$reldir; \
@@ -892,10 +988,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
@@ -1003,15 +1104,22 @@ uninstall-am: uninstall-pygiLTLIBRARIES uninstall-pygiPYTHON
 # build directory, which the Python interpreter can load
 # directly without having to know how to parse .la files.
 .la.so:
-       test -L $@ || $(LN_S) .libs/$@ $@
+       $(LN_S) .libs/$@ $@ || true
+
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygi_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
 
-all-local: $(LTLIBRARIES:.la=.so)
-check-local: $(LTLIBRARIES:.la=.so)
+all-local: $(LTLIBRARIES:.la=.so) build_pylinks
+
+check-local: $(LTLIBRARIES:.la=.so) build_pylinks
 clean-local:
        rm -f $(LTLIBRARIES:.la=.so)
 
--include $(top_srcdir)/git.mk
-
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 314d579..6ebff8e 100644 (file)
 
 from __future__ import absolute_import
 
+# support overrides in different directories than our gi module
+from pkgutil import extend_path
+__path__ = extend_path(__path__, __name__)
+
 from ._gi import _API, Repository
 
 # Force loading the GObject typelib so we have available the wrappers for
 # base classes such as GInitiallyUnowned
-from gi.repository import GObject
+import gi._gobject
+gi  # pyflakes
+
+_API = _API  # pyflakes
+
+import os
 
 _versions = {}
+_overridesdir = os.path.join(os.path.dirname(__file__), 'overrides')
+
+version_info = gi._gobject.pygobject_version[:]
+__version__ = "{0}.{1}.{2}".format(*version_info)
+
+
+def check_version(version):
+    if isinstance(version, str):
+        version_list = tuple(map(int, version.split(".")))
+    else:
+        version_list = version
+
+    if version_list > version_info:
+        raise ValueError((
+            "pygobject's version %s required, and available version "
+            "%s is not recent enough") % (version, __version__)
+        )
+
 
 def require_version(namespace, version):
     repository = Repository.get_default()
@@ -34,11 +61,11 @@ def require_version(namespace, version):
     if namespace in repository.get_loaded_namespaces():
         loaded_version = repository.get_version(namespace)
         if loaded_version != version:
-            raise ValueError('Namespace %s is already loaded with version %s' % \
+            raise ValueError('Namespace %s is already loaded with version %s' %
                              (namespace, loaded_version))
 
     if namespace in _versions and _versions[namespace] != version:
-        raise ValueError('Namespace %s already requires version %s' % \
+        raise ValueError('Namespace %s already requires version %s' %
                          (namespace, _versions[namespace]))
 
     available_versions = repository.enumerate_versions(namespace)
@@ -46,10 +73,11 @@ def require_version(namespace, version):
         raise ValueError('Namespace %s not available' % namespace)
 
     if version not in available_versions:
-        raise ValueError('Namespace %s not available for version %s' % \
+        raise ValueError('Namespace %s not available for version %s' %
                          (namespace, version))
 
     _versions[namespace] = version
 
+
 def get_required_version(namespace):
     return _versions.get(namespace, None)
diff --git a/gi/_glib/Makefile.am b/gi/_glib/Makefile.am
new file mode 100644 (file)
index 0000000..468e7f4
--- /dev/null
@@ -0,0 +1,99 @@
+AUTOMAKE_OPTIONS = 1.7
+
+extension_cppflags = \
+       $(PYTHON_INCLUDES) \
+       -DPY_SSIZE_T_CLEAN
+
+extension_ldflags = \
+       -module \
+       -avoid-version
+
+if OS_WIN32
+# Windows requires Python modules to be explicitly linked to libpython.
+# Extension modules are shared libaries (.dll), but need to be
+# called .pyd for Python to load it as an extension module.
+extension_libadd = \
+       $(PYTHON_LIBS)
+
+extension_ldflags += \
+       -no-undefined \
+       -shrext ".pyd"
+endif
+
+
+pyglibdir = $(pyexecdir)/gi/_glib
+
+pyglib_PYTHON = \
+       __init__.py \
+       option.py
+
+lib_LTLIBRARIES = libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES = \
+       pyglib.c \
+       pyglib.h \
+       pyglib-private.h \
+       pyglib-python-compat.h
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS = \
+       $(extension_cppflags)
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS = \
+       $(GLIB_CFLAGS)
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LIBADD = \
+       $(extension_libadd) \
+       $(FFI_LIBS) \
+       $(GLIB_LIBS)
+
+if OS_WIN32
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LDFLAGS = \
+       -no-undefined
+endif
+
+pyglib_LTLIBRARIES = _glib.la
+
+_glib_la_SOURCES = \
+       glibmodule.c \
+       pygiochannel.c \
+       pygiochannel.h \
+       pygoptioncontext.c \
+       pygoptioncontext.h \
+       pygoptiongroup.c \
+       pygoptiongroup.h \
+       pygmaincontext.c \
+       pygmaincontext.h \
+       pygmainloop.c \
+       pygmainloop.h \
+       pygsource.c \
+       pygsource.h \
+       pygspawn.c \
+       pygspawn.h
+_glib_la_CFLAGS = \
+       $(GLIB_CFLAGS)
+_glib_la_CPPFLAGS = \
+       $(extension_cppflags)
+_glib_la_LIBADD = \
+       $(extension_libadd) \
+       $(GLIB_LIBS) \
+       libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+_glib_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "_glib|PyInit__glib"
+
+if PLATFORM_WIN32
+_glib_la_CFLAGS += -DPLATFORM_WIN32
+endif
+
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pyglib_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+
+all: $(pyglib_LTLIBRARIES:.la=.so) build_pylinks
+check-local: $(pyglib_LTLIBRARIES:.la=.so) build_pylinks
+clean-local:
+       rm -f $(pyglib_LTLIBRARIES:.la=.so)
+.la.so:
+       $(LN_S) .libs/$@ $@ || true
similarity index 62%
rename from glib/Makefile.in
rename to gi/_glib/Makefile.in
index e23bffc..e87f9b2 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 @SET_MAKE@
 
-
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
 pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
@@ -34,11 +51,14 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-@PLATFORM_WIN32_TRUE@am__append_1 = -no-undefined
+@OS_WIN32_TRUE@am__append_1 = \
+@OS_WIN32_TRUE@        -no-undefined \
+@OS_WIN32_TRUE@        -shrext ".pyd"
+
 @PLATFORM_WIN32_TRUE@am__append_2 = -DPLATFORM_WIN32
-subdir = glib
-DIST_COMMON = $(pkginclude_HEADERS) $(pyglib_PYTHON) \
-       $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+subdir = gi/_glib
+DIST_COMMON = $(pyglib_PYTHON) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
        $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
@@ -72,33 +92,42 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pyglibdir)" \
-       "$(DESTDIR)$(pyglibdir)" "$(DESTDIR)$(pkgincludedir)"
+       "$(DESTDIR)$(pyglibdir)"
 LTLIBRARIES = $(lib_LTLIBRARIES) $(pyglib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-_glib_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       libpyglib-2.0-@PYTHON_BASENAME@.la
+@OS_WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+_glib_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+       libpyglib-gi-2.0-@PYTHON_BASENAME@.la
 am__glib_la_OBJECTS = _glib_la-glibmodule.lo _glib_la-pygiochannel.lo \
        _glib_la-pygoptioncontext.lo _glib_la-pygoptiongroup.lo \
        _glib_la-pygmaincontext.lo _glib_la-pygmainloop.lo \
        _glib_la-pygsource.lo _glib_la-pygspawn.lo
 _glib_la_OBJECTS = $(am__glib_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 _glib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(_glib_la_CFLAGS) \
        $(CFLAGS) $(_glib_la_LDFLAGS) $(LDFLAGS) -o $@
-libpyglib_2_0_@PYTHON_BASENAME@_la_DEPENDENCIES =  \
-       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_libpyglib_2_0_@PYTHON_BASENAME@_la_OBJECTS =  \
-       libpyglib_2_0_@PYTHON_BASENAME@_la-pyglib.lo
-libpyglib_2_0_@PYTHON_BASENAME@_la_OBJECTS =  \
-       $(am_libpyglib_2_0_@PYTHON_BASENAME@_la_OBJECTS)
-libpyglib_2_0_@PYTHON_BASENAME@_la_LINK = $(LIBTOOL) $(AM_V_lt) \
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_DEPENDENCIES =  \
+       $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am_libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS =  \
+       libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS =  \
+       $(am_libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS)
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LINK = $(LIBTOOL) $(AM_V_lt) \
        --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-       $(CCLD) $(libpyglib_2_0_@PYTHON_BASENAME@_la_CFLAGS) $(CFLAGS) \
-       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+       $(CCLD) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS) \
+       $(CFLAGS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LDFLAGS) \
+       $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -109,32 +138,36 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
 am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(_glib_la_SOURCES) \
-       $(libpyglib_2_0_@PYTHON_BASENAME@_la_SOURCES)
+       $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES)
 DIST_SOURCES = $(_glib_la_SOURCES) \
-       $(libpyglib_2_0_@PYTHON_BASENAME@_la_SOURCES)
+       $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
 py_compile = $(top_srcdir)/py-compile
-HEADERS = $(pkginclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-pkgincludedir = $(includedir)/pygtk-2.0
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 AMTAR = @AMTAR@
@@ -145,6 +178,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
@@ -165,14 +200,13 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GIOUNIX_CFLAGS = @GIOUNIX_CFLAGS@
-GIOUNIX_LIBS = @GIOUNIX_LIBS@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
 GI_DATADIR = @GI_DATADIR@
 GI_LIBS = @GI_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
 GLIB_MKENUMS = @GLIB_MKENUMS@
@@ -225,6 +259,8 @@ PYTHON = @PYTHON@
 PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
@@ -235,7 +271,6 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-XSLTPROC = @XSLTPROC@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -277,13 +312,12 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
-pkgpyexecdir = $(pyexecdir)
+pkgpyexecdir = @pkgpyexecdir@
 pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
-pygobject_CODEGEN_DEFINES = @pygobject_CODEGEN_DEFINES@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
@@ -294,44 +328,75 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = 1.7
-INCLUDES = $(PYTHON_INCLUDES) $(GLIB_CFLAGS) -DPY_SSIZE_T_CLEAN
-pkginclude_HEADERS = pyglib.h
-lib_LTLIBRARIES = libpyglib-2.0-@PYTHON_BASENAME@.la
-pyglibdir = $(pkgpyexecdir)/glib
+extension_cppflags = \
+       $(PYTHON_INCLUDES) \
+       -DPY_SSIZE_T_CLEAN
+
+extension_ldflags = -module -avoid-version $(am__append_1)
+
+# Windows requires Python modules to be explicitly linked to libpython.
+# Extension modules are shared libaries (.dll), but need to be
+# called .pyd for Python to load it as an extension module.
+@OS_WIN32_TRUE@extension_libadd = \
+@OS_WIN32_TRUE@        $(PYTHON_LIBS)
+
+pyglibdir = $(pyexecdir)/gi/_glib
 pyglib_PYTHON = \
-       __init__.py     \
+       __init__.py \
        option.py
 
-pyglib_LTLIBRARIES = _glib.la
-common_ldflags = -module -avoid-version $(am__append_1)
-libpyglib_2_0_@PYTHON_BASENAME@_la_CFLAGS = $(GLIB_CFLAGS)
-libpyglib_2_0_@PYTHON_BASENAME@_la_LIBADD = $(GLIB_LIBS) $(FFI_LIBS)
-libpyglib_2_0_@PYTHON_BASENAME@_la_SOURCES = \
-       pyglib.c                \
-       pyglib.h                \
-       pyglib-private.h        \
+lib_LTLIBRARIES = libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES = \
+       pyglib.c \
+       pyglib.h \
+       pyglib-private.h \
        pyglib-python-compat.h
 
-_glib_la_CFLAGS = $(GLIB_CFLAGS) $(am__append_2)
-_glib_la_LDFLAGS = $(common_ldflags) -export-symbols-regex "_glib|PyInit__glib"
-_glib_la_LIBADD = $(GLIB_LIBS) libpyglib-2.0-@PYTHON_BASENAME@.la
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS = \
+       $(extension_cppflags)
+
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS = \
+       $(GLIB_CFLAGS)
+
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LIBADD = \
+       $(extension_libadd) \
+       $(FFI_LIBS) \
+       $(GLIB_LIBS)
+
+@OS_WIN32_TRUE@libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LDFLAGS = \
+@OS_WIN32_TRUE@        -no-undefined
+
+pyglib_LTLIBRARIES = _glib.la
 _glib_la_SOURCES = \
-       glibmodule.c            \
-       pygiochannel.c          \
-       pygiochannel.h          \
-       pygoptioncontext.c      \
-       pygoptioncontext.h      \
-       pygoptiongroup.c        \
-       pygoptiongroup.h        \
-       pygmaincontext.c        \
-       pygmaincontext.h        \
-       pygmainloop.c           \
-       pygmainloop.h           \
-       pygsource.c             \
-       pygsource.h             \
-       pygspawn.c              \
+       glibmodule.c \
+       pygiochannel.c \
+       pygiochannel.h \
+       pygoptioncontext.c \
+       pygoptioncontext.h \
+       pygoptiongroup.c \
+       pygoptiongroup.h \
+       pygmaincontext.c \
+       pygmaincontext.h \
+       pygmainloop.c \
+       pygmainloop.h \
+       pygsource.c \
+       pygsource.h \
+       pygspawn.c \
        pygspawn.h
 
+_glib_la_CFLAGS = $(GLIB_CFLAGS) $(am__append_2)
+_glib_la_CPPFLAGS = \
+       $(extension_cppflags)
+
+_glib_la_LIBADD = \
+       $(extension_libadd) \
+       $(GLIB_LIBS) \
+       libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+
+_glib_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "_glib|PyInit__glib"
+
 all: all-am
 
 .SUFFIXES:
@@ -345,9 +410,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign glib/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gi/_glib/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --foreign glib/Makefile
+         $(AUTOMAKE) --foreign gi/_glib/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -368,7 +433,6 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
        @$(NORMAL_INSTALL)
-       test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
        @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
        list2=; for p in $$list; do \
          if test -f $$p; then \
@@ -376,6 +440,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
          else :; fi; \
        done; \
        test -z "$$list2" || { \
+         echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
          echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
          $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
        }
@@ -399,7 +465,6 @@ clean-libLTLIBRARIES:
        done
 install-pyglibLTLIBRARIES: $(pyglib_LTLIBRARIES)
        @$(NORMAL_INSTALL)
-       test -z "$(pyglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pyglibdir)"
        @list='$(pyglib_LTLIBRARIES)'; test -n "$(pyglibdir)" || list=; \
        list2=; for p in $$list; do \
          if test -f $$p; then \
@@ -407,6 +472,8 @@ install-pyglibLTLIBRARIES: $(pyglib_LTLIBRARIES)
          else :; fi; \
        done; \
        test -z "$$list2" || { \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pyglibdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pyglibdir)" || exit 1; \
          echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pyglibdir)'"; \
          $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pyglibdir)"; \
        }
@@ -428,10 +495,10 @@ clean-pyglibLTLIBRARIES:
          echo "rm -f \"$${dir}/so_locations\""; \
          rm -f "$${dir}/so_locations"; \
        done
-_glib.la: $(_glib_la_OBJECTS) $(_glib_la_DEPENDENCIES) 
+_glib.la: $(_glib_la_OBJECTS) $(_glib_la_DEPENDENCIES) $(EXTRA__glib_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(_glib_la_LINK) -rpath $(pyglibdir) $(_glib_la_OBJECTS) $(_glib_la_LIBADD) $(LIBS)
-libpyglib-2.0-@PYTHON_BASENAME@.la: $(libpyglib_2_0_@PYTHON_BASENAME@_la_OBJECTS) $(libpyglib_2_0_@PYTHON_BASENAME@_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(libpyglib_2_0_@PYTHON_BASENAME@_la_LINK) -rpath $(libdir) $(libpyglib_2_0_@PYTHON_BASENAME@_la_OBJECTS) $(libpyglib_2_0_@PYTHON_BASENAME@_la_LIBADD) $(LIBS)
+libpyglib-gi-2.0-@PYTHON_BASENAME@.la: $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_DEPENDENCIES) $(EXTRA_libpyglib_gi_2_0_@PYTHON_BASENAME@_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LINK) -rpath $(libdir) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -447,103 +514,91 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygoptiongroup.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygsource.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygspawn.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpyglib_2_0_@PYTHON_BASENAME@_la-pyglib.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 _glib_la-glibmodule.lo: glibmodule.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-glibmodule.lo -MD -MP -MF $(DEPDIR)/_glib_la-glibmodule.Tpo -c -o _glib_la-glibmodule.lo `test -f 'glibmodule.c' || echo '$(srcdir)/'`glibmodule.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-glibmodule.lo -MD -MP -MF $(DEPDIR)/_glib_la-glibmodule.Tpo -c -o _glib_la-glibmodule.lo `test -f 'glibmodule.c' || echo '$(srcdir)/'`glibmodule.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-glibmodule.Tpo $(DEPDIR)/_glib_la-glibmodule.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='glibmodule.c' object='_glib_la-glibmodule.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='glibmodule.c' object='_glib_la-glibmodule.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-glibmodule.lo `test -f 'glibmodule.c' || echo '$(srcdir)/'`glibmodule.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-glibmodule.lo `test -f 'glibmodule.c' || echo '$(srcdir)/'`glibmodule.c
 
 _glib_la-pygiochannel.lo: pygiochannel.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygiochannel.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygiochannel.Tpo -c -o _glib_la-pygiochannel.lo `test -f 'pygiochannel.c' || echo '$(srcdir)/'`pygiochannel.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygiochannel.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygiochannel.Tpo -c -o _glib_la-pygiochannel.lo `test -f 'pygiochannel.c' || echo '$(srcdir)/'`pygiochannel.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygiochannel.Tpo $(DEPDIR)/_glib_la-pygiochannel.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygiochannel.c' object='_glib_la-pygiochannel.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygiochannel.c' object='_glib_la-pygiochannel.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygiochannel.lo `test -f 'pygiochannel.c' || echo '$(srcdir)/'`pygiochannel.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygiochannel.lo `test -f 'pygiochannel.c' || echo '$(srcdir)/'`pygiochannel.c
 
 _glib_la-pygoptioncontext.lo: pygoptioncontext.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygoptioncontext.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygoptioncontext.Tpo -c -o _glib_la-pygoptioncontext.lo `test -f 'pygoptioncontext.c' || echo '$(srcdir)/'`pygoptioncontext.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygoptioncontext.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygoptioncontext.Tpo -c -o _glib_la-pygoptioncontext.lo `test -f 'pygoptioncontext.c' || echo '$(srcdir)/'`pygoptioncontext.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygoptioncontext.Tpo $(DEPDIR)/_glib_la-pygoptioncontext.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygoptioncontext.c' object='_glib_la-pygoptioncontext.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygoptioncontext.c' object='_glib_la-pygoptioncontext.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygoptioncontext.lo `test -f 'pygoptioncontext.c' || echo '$(srcdir)/'`pygoptioncontext.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygoptioncontext.lo `test -f 'pygoptioncontext.c' || echo '$(srcdir)/'`pygoptioncontext.c
 
 _glib_la-pygoptiongroup.lo: pygoptiongroup.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygoptiongroup.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygoptiongroup.Tpo -c -o _glib_la-pygoptiongroup.lo `test -f 'pygoptiongroup.c' || echo '$(srcdir)/'`pygoptiongroup.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygoptiongroup.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygoptiongroup.Tpo -c -o _glib_la-pygoptiongroup.lo `test -f 'pygoptiongroup.c' || echo '$(srcdir)/'`pygoptiongroup.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygoptiongroup.Tpo $(DEPDIR)/_glib_la-pygoptiongroup.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygoptiongroup.c' object='_glib_la-pygoptiongroup.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygoptiongroup.c' object='_glib_la-pygoptiongroup.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygoptiongroup.lo `test -f 'pygoptiongroup.c' || echo '$(srcdir)/'`pygoptiongroup.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygoptiongroup.lo `test -f 'pygoptiongroup.c' || echo '$(srcdir)/'`pygoptiongroup.c
 
 _glib_la-pygmaincontext.lo: pygmaincontext.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygmaincontext.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygmaincontext.Tpo -c -o _glib_la-pygmaincontext.lo `test -f 'pygmaincontext.c' || echo '$(srcdir)/'`pygmaincontext.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygmaincontext.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygmaincontext.Tpo -c -o _glib_la-pygmaincontext.lo `test -f 'pygmaincontext.c' || echo '$(srcdir)/'`pygmaincontext.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygmaincontext.Tpo $(DEPDIR)/_glib_la-pygmaincontext.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygmaincontext.c' object='_glib_la-pygmaincontext.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygmaincontext.c' object='_glib_la-pygmaincontext.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygmaincontext.lo `test -f 'pygmaincontext.c' || echo '$(srcdir)/'`pygmaincontext.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygmaincontext.lo `test -f 'pygmaincontext.c' || echo '$(srcdir)/'`pygmaincontext.c
 
 _glib_la-pygmainloop.lo: pygmainloop.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygmainloop.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygmainloop.Tpo -c -o _glib_la-pygmainloop.lo `test -f 'pygmainloop.c' || echo '$(srcdir)/'`pygmainloop.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygmainloop.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygmainloop.Tpo -c -o _glib_la-pygmainloop.lo `test -f 'pygmainloop.c' || echo '$(srcdir)/'`pygmainloop.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygmainloop.Tpo $(DEPDIR)/_glib_la-pygmainloop.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygmainloop.c' object='_glib_la-pygmainloop.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygmainloop.c' object='_glib_la-pygmainloop.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygmainloop.lo `test -f 'pygmainloop.c' || echo '$(srcdir)/'`pygmainloop.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygmainloop.lo `test -f 'pygmainloop.c' || echo '$(srcdir)/'`pygmainloop.c
 
 _glib_la-pygsource.lo: pygsource.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygsource.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygsource.Tpo -c -o _glib_la-pygsource.lo `test -f 'pygsource.c' || echo '$(srcdir)/'`pygsource.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygsource.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygsource.Tpo -c -o _glib_la-pygsource.lo `test -f 'pygsource.c' || echo '$(srcdir)/'`pygsource.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygsource.Tpo $(DEPDIR)/_glib_la-pygsource.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygsource.c' object='_glib_la-pygsource.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygsource.c' object='_glib_la-pygsource.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygsource.lo `test -f 'pygsource.c' || echo '$(srcdir)/'`pygsource.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygsource.lo `test -f 'pygsource.c' || echo '$(srcdir)/'`pygsource.c
 
 _glib_la-pygspawn.lo: pygspawn.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygspawn.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygspawn.Tpo -c -o _glib_la-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygspawn.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygspawn.Tpo -c -o _glib_la-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygspawn.Tpo $(DEPDIR)/_glib_la-pygspawn.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygspawn.c' object='_glib_la-pygspawn.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygspawn.c' object='_glib_la-pygspawn.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
 
-libpyglib_2_0_@PYTHON_BASENAME@_la-pyglib.lo: pyglib.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpyglib_2_0_@PYTHON_BASENAME@_la_CFLAGS) $(CFLAGS) -MT libpyglib_2_0_@PYTHON_BASENAME@_la-pyglib.lo -MD -MP -MF $(DEPDIR)/libpyglib_2_0_@PYTHON_BASENAME@_la-pyglib.Tpo -c -o libpyglib_2_0_@PYTHON_BASENAME@_la-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libpyglib_2_0_@PYTHON_BASENAME@_la-pyglib.Tpo $(DEPDIR)/libpyglib_2_0_@PYTHON_BASENAME@_la-pyglib.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pyglib.c' object='libpyglib_2_0_@PYTHON_BASENAME@_la-pyglib.lo' libtool=yes @AMDEPBACKSLASH@
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo: pyglib.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS) $(CPPFLAGS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS) $(CFLAGS) -MT libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo -MD -MP -MF $(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Tpo -c -o libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Tpo $(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pyglib.c' object='libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpyglib_2_0_@PYTHON_BASENAME@_la_CFLAGS) $(CFLAGS) -c -o libpyglib_2_0_@PYTHON_BASENAME@_la-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS) $(CPPFLAGS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS) $(CFLAGS) -c -o libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -552,8 +607,11 @@ clean-libtool:
        -rm -rf .libs _libs
 install-pyglibPYTHON: $(pyglib_PYTHON)
        @$(NORMAL_INSTALL)
-       test -z "$(pyglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pyglibdir)"
        @list='$(pyglib_PYTHON)'; dlist=; list2=; test -n "$(pyglibdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pyglibdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pyglibdir)" || exit 1; \
+       fi; \
        for p in $$list; do \
          if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
          if test -f $$b$$p; then \
@@ -569,9 +627,10 @@ install-pyglibPYTHON: $(pyglib_PYTHON)
        done || exit $$?; \
        if test -n "$$dlist"; then \
          if test -z "$(DESTDIR)"; then \
-           PYTHON=$(PYTHON) $(py_compile) --basedir "$(pyglibdir)" $$dlist; \
+           $(am__py_compile) --basedir "$(pyglibdir)" $$dlist; \
          else \
-           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(pyglibdir)" $$dlist; \
+           $(am__py_compile) --destdir "$(DESTDIR)" \
+                             --basedir "$(pyglibdir)" $$dlist; \
          fi; \
        else :; fi
 
@@ -580,34 +639,14 @@ uninstall-pyglibPYTHON:
        @list='$(pyglib_PYTHON)'; test -n "$(pyglibdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
+       dir='$(DESTDIR)$(pyglibdir)'; \
        filesc=`echo "$$files" | sed 's|$$|c|'`; \
        fileso=`echo "$$files" | sed 's|$$|o|'`; \
-       echo " ( cd '$(DESTDIR)$(pyglibdir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(pyglibdir)" && rm -f $$files || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pyglibdir)' && rm -f" $$filesc ")"; \
-       cd "$(DESTDIR)$(pyglibdir)" && rm -f $$filesc || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pyglibdir)' && rm -f" $$fileso ")"; \
-       cd "$(DESTDIR)$(pyglibdir)" && rm -f $$fileso
-install-pkgincludeHEADERS: $(pkginclude_HEADERS)
-       @$(NORMAL_INSTALL)
-       test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
-       @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
-       for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         echo "$$d$$p"; \
-       done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
-         $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
-       done
-
-uninstall-pkgincludeHEADERS:
-       @$(NORMAL_UNINSTALL)
-       @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$files" || exit 0; \
-       echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
+       st=0; \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
+         $(am__uninstall_files_from_dir) || st=$$?; \
+       done; \
+       exit $$st
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -694,9 +733,9 @@ distdir: $(DISTFILES)
 check-am: all-am
        $(MAKE) $(AM_MAKEFLAGS) check-local
 check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+all-am: Makefile $(LTLIBRARIES)
 installdirs:
-       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pyglibdir)" "$(DESTDIR)$(pyglibdir)" "$(DESTDIR)$(pkgincludedir)"; do \
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pyglibdir)" "$(DESTDIR)$(pyglibdir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
@@ -709,10 +748,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
@@ -747,8 +791,7 @@ info: info-am
 
 info-am:
 
-install-data-am: install-pkgincludeHEADERS install-pyglibLTLIBRARIES \
-       install-pyglibPYTHON
+install-data-am: install-pyglibLTLIBRARIES install-pyglibPYTHON
 
 install-dvi: install-dvi-am
 
@@ -794,8 +837,8 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS \
-       uninstall-pyglibLTLIBRARIES uninstall-pyglibPYTHON
+uninstall-am: uninstall-libLTLIBRARIES uninstall-pyglibLTLIBRARIES \
+       uninstall-pyglibPYTHON
 
 .MAKE: check-am install-am install-strip
 
@@ -807,26 +850,31 @@ uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS \
        install-data install-data-am install-dvi install-dvi-am \
        install-exec install-exec-am install-html install-html-am \
        install-info install-info-am install-libLTLIBRARIES \
-       install-man install-pdf install-pdf-am \
-       install-pkgincludeHEADERS install-ps install-ps-am \
-       install-pyglibLTLIBRARIES install-pyglibPYTHON install-strip \
-       installcheck installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-compile \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags uninstall uninstall-am uninstall-libLTLIBRARIES \
-       uninstall-pkgincludeHEADERS uninstall-pyglibLTLIBRARIES \
+       install-man install-pdf install-pdf-am install-ps \
+       install-ps-am install-pyglibLTLIBRARIES install-pyglibPYTHON \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+       pdf pdf-am ps ps-am tags uninstall uninstall-am \
+       uninstall-libLTLIBRARIES uninstall-pyglibLTLIBRARIES \
        uninstall-pyglibPYTHON
 
 
-all: $(pyglib_LTLIBRARIES:.la=.so)
-check-local: $(pyglib_LTLIBRARIES:.la=.so)
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pyglib_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+all: $(pyglib_LTLIBRARIES:.la=.so) build_pylinks
+check-local: $(pyglib_LTLIBRARIES:.la=.so) build_pylinks
 clean-local:
        rm -f $(pyglib_LTLIBRARIES:.la=.so)
 .la.so:
        $(LN_S) .libs/$@ $@ || true
 
--include $(top_srcdir)/git.mk
-
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gi/_glib/__init__.py b/gi/_glib/__init__.py
new file mode 100644 (file)
index 0000000..b0d2212
--- /dev/null
@@ -0,0 +1,121 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# pygobject - Python bindings for the GObject library
+# Copyright (C) 2006-2012 Johan Dahlin
+#
+#   glib/__init__.py: initialisation file for glib module
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# USA
+
+from . import _glib
+
+# Internal API
+_PyGLib_API = _glib._PyGLib_API
+
+# Types
+GError = _glib.GError
+IOChannel = _glib.IOChannel
+Idle = _glib.Idle
+MainContext = _glib.MainContext
+MainLoop = _glib.MainLoop
+OptionContext = _glib.OptionContext
+OptionGroup = _glib.OptionGroup
+Pid = _glib.Pid
+PollFD = _glib.PollFD
+Source = _glib.Source
+Timeout = _glib.Timeout
+
+# Constants
+IO_ERR = _glib.IO_ERR
+IO_FLAG_APPEND = _glib.IO_FLAG_APPEND
+IO_FLAG_GET_MASK = _glib.IO_FLAG_GET_MASK
+IO_FLAG_IS_READABLE = _glib.IO_FLAG_IS_READABLE
+IO_FLAG_IS_SEEKABLE = _glib.IO_FLAG_IS_SEEKABLE
+IO_FLAG_IS_WRITEABLE = _glib.IO_FLAG_IS_WRITEABLE
+IO_FLAG_MASK = _glib.IO_FLAG_MASK
+IO_FLAG_NONBLOCK = _glib.IO_FLAG_NONBLOCK
+IO_FLAG_SET_MASK = _glib.IO_FLAG_SET_MASK
+IO_HUP = _glib.IO_HUP
+IO_IN = _glib.IO_IN
+IO_NVAL = _glib.IO_NVAL
+IO_OUT = _glib.IO_OUT
+IO_PRI = _glib.IO_PRI
+IO_STATUS_AGAIN = _glib.IO_STATUS_AGAIN
+IO_STATUS_EOF = _glib.IO_STATUS_EOF
+IO_STATUS_ERROR = _glib.IO_STATUS_ERROR
+IO_STATUS_NORMAL = _glib.IO_STATUS_NORMAL
+OPTION_ERROR = _glib.OPTION_ERROR
+OPTION_ERROR_BAD_VALUE = _glib.OPTION_ERROR_BAD_VALUE
+OPTION_ERROR_FAILED = _glib.OPTION_ERROR_FAILED
+OPTION_ERROR_UNKNOWN_OPTION = _glib.OPTION_ERROR_UNKNOWN_OPTION
+OPTION_FLAG_FILENAME = _glib.OPTION_FLAG_FILENAME
+OPTION_FLAG_HIDDEN = _glib.OPTION_FLAG_HIDDEN
+OPTION_FLAG_IN_MAIN = _glib.OPTION_FLAG_IN_MAIN
+OPTION_FLAG_NOALIAS = _glib.OPTION_FLAG_NOALIAS
+OPTION_FLAG_NO_ARG = _glib.OPTION_FLAG_NO_ARG
+OPTION_FLAG_OPTIONAL_ARG = _glib.OPTION_FLAG_OPTIONAL_ARG
+OPTION_FLAG_REVERSE = _glib.OPTION_FLAG_REVERSE
+OPTION_REMAINING = _glib.OPTION_REMAINING
+PRIORITY_DEFAULT = _glib.PRIORITY_DEFAULT
+PRIORITY_DEFAULT_IDLE = _glib.PRIORITY_DEFAULT_IDLE
+PRIORITY_HIGH = _glib.PRIORITY_HIGH
+PRIORITY_HIGH_IDLE = _glib.PRIORITY_HIGH_IDLE
+PRIORITY_LOW = _glib.PRIORITY_LOW
+SPAWN_CHILD_INHERITS_STDIN = _glib.SPAWN_CHILD_INHERITS_STDIN
+SPAWN_DO_NOT_REAP_CHILD = _glib.SPAWN_DO_NOT_REAP_CHILD
+SPAWN_FILE_AND_ARGV_ZERO = _glib.SPAWN_FILE_AND_ARGV_ZERO
+SPAWN_LEAVE_DESCRIPTORS_OPEN = _glib.SPAWN_LEAVE_DESCRIPTORS_OPEN
+SPAWN_SEARCH_PATH = _glib.SPAWN_SEARCH_PATH
+SPAWN_STDERR_TO_DEV_NULL = _glib.SPAWN_STDERR_TO_DEV_NULL
+SPAWN_STDOUT_TO_DEV_NULL = _glib.SPAWN_STDOUT_TO_DEV_NULL
+USER_DIRECTORY_DESKTOP = _glib.USER_DIRECTORY_DESKTOP
+USER_DIRECTORY_DOCUMENTS = _glib.USER_DIRECTORY_DOCUMENTS
+USER_DIRECTORY_DOWNLOAD = _glib.USER_DIRECTORY_DOWNLOAD
+USER_DIRECTORY_MUSIC = _glib.USER_DIRECTORY_MUSIC
+USER_DIRECTORY_PICTURES = _glib.USER_DIRECTORY_PICTURES
+USER_DIRECTORY_PUBLIC_SHARE = _glib.USER_DIRECTORY_PUBLIC_SHARE
+USER_DIRECTORY_TEMPLATES = _glib.USER_DIRECTORY_TEMPLATES
+USER_DIRECTORY_VIDEOS = _glib.USER_DIRECTORY_VIDEOS
+
+# Functions
+child_watch_add = _glib.child_watch_add
+filename_display_basename = _glib.filename_display_basename
+filename_display_name = _glib.filename_display_name
+filename_from_utf8 = _glib.filename_from_utf8
+find_program_in_path = _glib.find_program_in_path
+get_application_name = _glib.get_application_name
+get_current_time = _glib.get_current_time
+get_prgname = _glib.get_prgname
+get_system_config_dirs = _glib.get_system_config_dirs
+get_system_data_dirs = _glib.get_system_data_dirs
+get_user_cache_dir = _glib.get_user_cache_dir
+get_user_config_dir = _glib.get_user_config_dir
+get_user_data_dir = _glib.get_user_data_dir
+get_user_special_dir = _glib.get_user_special_dir
+glib_version = _glib.glib_version
+idle_add = _glib.idle_add
+io_add_watch = _glib.io_add_watch
+main_context_default = _glib.main_context_default
+main_depth = _glib.main_depth
+markup_escape_text = _glib.markup_escape_text
+pyglib_version = _glib.pyglib_version
+set_application_name = _glib.set_application_name
+set_prgname = _glib.set_prgname
+source_remove = _glib.source_remove
+spawn_async = _glib.spawn_async
+threads_init = _glib.threads_init
+timeout_add = _glib.timeout_add
+timeout_add_seconds = _glib.timeout_add_seconds
+uri_list_extract_uris = _glib.uri_list_extract_uris
similarity index 97%
rename from glib/glibmodule.c
rename to gi/_glib/glibmodule.c
index 963e5ea..11b97f5 100644 (file)
@@ -246,7 +246,7 @@ iowatch_marshal(GIOChannel *source,
     } else {
         if (ret == Py_None) {
             if (PyErr_Warn(PyExc_Warning,
-                          "glib.io_add_watch callback returned None; "
+                          "_glib.io_add_watch callback returned None; "
                            "should return True/False")) {
                 PyErr_Print();
             }
@@ -373,7 +373,7 @@ pyglib_child_watch_add(PyObject *unused, PyObject *args, PyObject *kwargs)
         return NULL;
     if (!PyCallable_Check(func)) {
         PyErr_SetString(PyExc_TypeError,
-                        "glib.child_watch_add: second argument must be callable");
+                        "_glib.child_watch_add: second argument must be callable");
         return NULL;
     }
 
@@ -547,10 +547,13 @@ pyglib_get_application_name(PyObject *self)
 static PyObject*
 pyglib_set_application_name(PyObject *self, PyObject *arg)
 {
+    PyObject *repr = NULL;
     if (!PYGLIB_PyUnicode_Check(arg)) {
+       repr = PyObject_Repr(arg);
        PyErr_Format(PyExc_TypeError,
                     "first argument must be a string, not '%s'",
-                    PYGLIB_PyUnicode_AsString(PyObject_Repr(arg)));
+                    PYGLIB_PyUnicode_AsString(repr));
+       Py_DECREF(repr);
        return NULL;
     }
     g_set_application_name(PYGLIB_PyUnicode_AsString(arg));
@@ -574,10 +577,13 @@ pyglib_get_prgname(PyObject *self)
 static PyObject*
 pyglib_set_prgname(PyObject *self, PyObject *arg)
 {
+    PyObject *repr = NULL;
     if (!PYGLIB_PyUnicode_Check(arg)) {
+       repr = PyObject_Repr(arg);
        PyErr_Format(PyExc_TypeError,
                     "first argument must be a string, not '%s'",
-                    PYGLIB_PyUnicode_AsString(PyObject_Repr(arg)));
+                    PYGLIB_PyUnicode_AsString(repr));
+       Py_DECREF(repr);
        return NULL;
     }
     g_set_prgname(PYGLIB_PyUnicode_AsString(arg));
@@ -598,8 +604,14 @@ pyglib_find_program_in_path(PyObject *unused, PyObject *args, PyObject *kwargs)
         return NULL;
 
     ret = g_find_program_in_path(program);
-    retval = PYGLIB_PyUnicode_FromString(ret);
-    g_free(ret);
+
+    if (ret != NULL) {
+        retval = PYGLIB_PyUnicode_FromString(ret);
+        g_free(ret);
+    } else {
+        Py_INCREF(Py_None);
+        retval = Py_None;
+    }
     return retval;
 }
 
@@ -800,7 +812,7 @@ pyglib_register_api(PyObject *d)
 
     /* for addon libraries ... */
     PyDict_SetItemString(d, "_PyGLib_API",
-                        o=PYGLIB_CPointer_WrapPointer(&pyglib_api,"glib._PyGLib_API"));
+                        o=PYGLIB_CPointer_WrapPointer(&pyglib_api,"gi._glib._PyGLib_API"));
     Py_DECREF(o);
     
     pyglib_init_internal(o);
@@ -817,7 +829,7 @@ pyglib_register_error(PyObject *d)
      * GError has also an "message" attribute.
      */
     PyDict_SetItemString(dict, "message", Py_None);
-    gerror_class = PyErr_NewException("glib.GError", PyExc_RuntimeError, dict);
+    gerror_class = PyErr_NewException("gi._glib.GError", PyExc_RuntimeError, dict);
     Py_DECREF(dict);
 
     PyDict_SetItemString(d, "GError", gerror_class);
@@ -950,7 +962,7 @@ pyglib_register_constants(PyObject *m)
                               (char*) g_quark_to_string(G_OPTION_ERROR));
 }
 
-PYGLIB_MODULE_START(_glib, "glib._glib")
+PYGLIB_MODULE_START(_glib, "_glib")
 {
     PyObject *d = PyModule_GetDict(module);
 
similarity index 97%
rename from glib/option.py
rename to gi/_glib/option.py
index bdfbe1d..afc13ac 100644 (file)
@@ -32,7 +32,7 @@ GOptionGroup in glib.
 import sys
 import optparse
 from optparse import OptParseError, OptionError, OptionValueError, \
-                     BadOptionError, OptionConflictError
+    BadOptionError, OptionConflictError
 
 if sys.version_info >= (3, 0):
     _basestring = str
@@ -41,8 +41,9 @@ else:
     _basestring = basestring
     _bytes = str
 
-import glib
-_glib = sys.modules['glib._glib']
+import gi._glib
+gi  # pyflakes
+_glib = sys.modules['gi._glib._glib']
 
 __all__ = [
     "OptParseError",
@@ -56,6 +57,7 @@ __all__ = [
     "make_option",
 ]
 
+
 class Option(optparse.Option):
     """Represents a command line option
 
@@ -104,7 +106,6 @@ class Option(optparse.Option):
         if not self.help:
             raise ValueError("%s needs a help message.", self._long_opts[0])
 
-
     def _set_opt_string(self, opts):
         if self.REMAINING in opts:
             self._long_opts.append(self.REMAINING)
@@ -137,6 +138,7 @@ class Option(optparse.Option):
         for long_name in self._long_opts[len(self._short_opts):]:
             yield (long_name[2:], _bytes('\0'), flags, self.help, self.metavar)
 
+
 class OptionGroup(optparse.OptionGroup):
     """A group of command line options.
 
@@ -199,19 +201,19 @@ class OptionGroup(optparse.OptionGroup):
                 raise gerror
 
         group = _glib.OptionGroup(self.name, self.description,
-                                    self.help_description, callback)
+                                  self.help_description, callback)
         if self.translation_domain:
             group.set_translation_domain(self.translation_domain)
 
         entries = []
         for option in self.option_list:
             entries.extend(option._to_goptionentries())
+
         group.add_entries(entries)
 
         return group
 
-    def get_option_group(self, parser = None):
+    def get_option_group(self, parser=None):
         """ Returns the corresponding GOptionGroup object.
 
         Can be used as parameter for gnome_program_init(), gtk_init().
@@ -228,6 +230,7 @@ class OptionGroup(optparse.OptionGroup):
                     opt_str, default)
         self.values = optparse.Values(self.defaults)
 
+
 class OptionParser(optparse.OptionParser):
     """Command line parser with GOption support.
 
@@ -302,7 +305,7 @@ class OptionParser(optparse.OptionParser):
     def add_option_group(self, *args, **kwargs):
         if isinstance(args[0], _basestring):
             optparse.OptionParser.add_option_group(self,
-                OptionGroup(self, *args, **kwargs))
+                                                   OptionGroup(self, *args, **kwargs))
             return
         elif len(args) == 1 and not kwargs:
             if isinstance(args[0], OptionGroup):
similarity index 92%
rename from glib/pygiochannel.c
rename to gi/_glib/pygiochannel.c
index f7e2bc4..2211355 100644 (file)
 #include "pyglib-private.h"
 #include "pygsource.h"
 
+#include "pygiochannel.h"
+
 typedef struct {
     PyObject_HEAD
     GIOChannel *channel;
     int softspace;         /* to make print >> chan, "foo" ... work */
 } PyGIOChannel;
 
-PYGLIB_DEFINE_TYPE("glib.IOChannel", PyGIOChannel_Type, PyGIOChannel)
+PYGLIB_DEFINE_TYPE("gi._glib.IOChannel", PyGIOChannel_Type, PyGIOChannel)
 
 static PyObject*
 py_io_channel_next(PyGIOChannel *self)
@@ -87,7 +89,7 @@ py_io_channel_shutdown(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
     PyObject* flush = Py_True;
     GError* error = NULL;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:glib.IOChannel.shutdown", kwlist, &flush))
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:gi._glib.IOChannel.shutdown", kwlist, &flush))
         return NULL;
        
     ret = g_io_channel_shutdown(self->channel, PyObject_IsTrue(flush), &error);
@@ -106,7 +108,7 @@ py_io_channel_set_buffer_size(PyGIOChannel* self, PyObject *args, PyObject *kwar
     static char *kwlist[] = { "size", NULL };
     int size;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:glib.IOChannel.set_buffer_size", kwlist, &size))
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:gi._glib.IOChannel.set_buffer_size", kwlist, &size))
         return NULL;
        
     g_io_channel_set_buffer_size(self->channel, size);
@@ -127,7 +129,7 @@ py_io_channel_set_buffered(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
     static char *kwlist[] = { "buffered", NULL };
     int buffered;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:glib.IOChannel.set_buffered", kwlist, &buffered))
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:gi._glib.IOChannel.set_buffered", kwlist, &buffered))
         return NULL;
        
     g_io_channel_set_buffered(self->channel, buffered);
@@ -149,7 +151,7 @@ py_io_channel_set_encoding(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
     const char* encoding;
     GError* error = NULL;
     
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "z:glib.IOChannel.set_encoding", kwlist, &encoding))
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "z:gi._glib.IOChannel.set_encoding", kwlist, &encoding))
         return NULL;
     
     g_io_channel_set_encoding(self->channel, encoding, &error);
@@ -185,7 +187,7 @@ py_io_channel_read_chars(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
     GError* error = NULL;
     GIOStatus status = G_IO_STATUS_NORMAL;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:glib.IOChannel.read", kwlist, &max_count))
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:gi._glib.IOChannel.read", kwlist, &max_count))
         return NULL;
        
     if (max_count == 0)
@@ -266,7 +268,7 @@ py_io_channel_write_chars(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
     GError* error = NULL;
     GIOStatus status;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#:glib.IOChannel.write",
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#:gi._glib.IOChannel.write",
                                      kwlist, &buf, &buf_len))
         return NULL;
        
@@ -290,7 +292,7 @@ py_io_channel_write_lines(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
     GIOStatus status;
     PyObject *iter, *value, *pylines;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:glib.IOChannel.writelines",
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:gi._glib.IOChannel.writelines",
                                      kwlist, &pylines))
         return NULL;
 
@@ -303,7 +305,7 @@ py_io_channel_write_lines(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
             goto normal_exit;
         }
         if (!PYGLIB_PyUnicode_Check(value)) {
-            PyErr_SetString(PyExc_TypeError, "glib.IOChannel.writelines must"
+            PyErr_SetString(PyExc_TypeError, "gi._glib.IOChannel.writelines must"
                             " be sequence/iterator of strings");
             Py_DECREF(iter);
             return NULL;
@@ -347,7 +349,7 @@ py_io_channel_set_flags(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
     GIOStatus status;
     GError* error = NULL;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:glib.IOChannel.set_flags",
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:gi._glib.IOChannel.set_flags",
                                      kwlist, &flags))
         return NULL;
        
@@ -376,7 +378,7 @@ py_io_channel_set_close_on_unref(PyGIOChannel* self, PyObject *args, PyObject *k
     static char *kwlist[] = { "do_close", NULL };
     PyObject *do_close;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:glib.IOChannel.set_close_on_unref",
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:gi._glib.IOChannel.set_close_on_unref",
                                      kwlist, &do_close))
         return NULL;
        
@@ -460,7 +462,7 @@ py_io_channel_add_watch(PyObject *self, PyObject *args, PyObject *kwargs)
     PyGIOWatchData *data;
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "iO|Oi:glib.IOChannel.add_watch",
+                                     "iO|Oi:gi._glib.IOChannel.add_watch",
                                      kwlist, &condition, &callback,
                                      &user_data, &priority))
         return NULL;
@@ -477,7 +479,7 @@ py_io_channel_add_watch(PyObject *self, PyObject *args, PyObject *kwargs)
     data->user_data = user_data; Py_XINCREF(user_data);
     data->iochannel = self; Py_INCREF(self);
 
-    handler_id = g_io_add_watch_full(((PyGIOChannel *) self)->channel,
+    handler_id = g_io_add_watch_full(iochannel,
                                      priority, condition,
                                     pyg_iowatch_marshal, data,
                                     (GDestroyNotify) pyg_iowatch_data_free);
@@ -498,7 +500,7 @@ py_io_channel_win32_poll(PyObject *self, PyObject *args, PyObject *kwargs)
     gint result;
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!|i:glib.IOChannel.win32_poll",
+                                     "O!|i:gi._glib.IOChannel.win32_poll",
                                      kwlist, &PyList_Type, &pyfds, &timeout))
         return NULL;
 
@@ -507,7 +509,7 @@ py_io_channel_win32_poll(PyObject *self, PyObject *args, PyObject *kwargs)
     for (i = 0; i < len; ++i) {
         pyfd = PyList_GET_ITEM(pyfds, i);
         if (!PyObject_TypeCheck(pyfd, &PyGPollFD_Type)) {
-            PyErr_SetString(PyExc_TypeError, "'fds' must be a list of glib.PollFD objects");
+            PyErr_SetString(PyExc_TypeError, "'fds' must be a list of gi._glib.PollFD objects");
             return NULL;
         }
         pollfd[i] = ((PyGPollFD *) pyfd)->pollfd;
@@ -530,7 +532,7 @@ py_io_channel_win32_make_pollfd(PyObject *self, PyObject *args, PyObject *kwargs
     PyGPollFD *pypollfd;
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "i:glib.IOChannel.win32_make_pollfd",
+                                     "i:gi._glib.IOChannel.win32_make_pollfd",
                                      kwlist, &condition))
         return NULL;
 
@@ -554,7 +556,7 @@ py_io_channel_read_line(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
     gint size_hint = -1;
     GIOStatus status;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:glib.IOChannel.readline", kwlist,
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:gi._glib.IOChannel.readline", kwlist,
                                      &size_hint))
         return NULL;
 
@@ -579,7 +581,7 @@ py_io_channel_read_lines(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
     GIOStatus status = G_IO_STATUS_NORMAL;
     PyObject *list;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:glib.IOChannel.readlines", kwlist,
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:gi._glib.IOChannel.readlines", kwlist,
                                      &size_hint))
         return NULL;
 
@@ -613,7 +615,7 @@ py_io_channel_seek(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
     GSeekType seek_type;
     GError* error = NULL;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "L|i:glib.IOChannel.seek",
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "L|i:gi._glib.IOChannel.seek",
                                      kwlist, &offset, &whence))
         return NULL;
 
@@ -714,7 +716,7 @@ py_io_channel_init(PyGIOChannel *self, PyObject *args, PyObject *kwargs)
 #ifdef G_OS_WIN32
                                      "I"
 #endif
-                                     ":glib.IOChannel.__init__",
+                                     ":gi._glib.IOChannel.__init__",
                                      kwlist, &fd, &filename, &mode
 #ifdef G_OS_WIN32
                                      , &hwnd
similarity index 100%
rename from glib/pygiochannel.h
rename to gi/_glib/pygiochannel.h
similarity index 98%
rename from glib/pyglib-python-compat.h
rename to gi/_glib/pyglib-python-compat.h
index 8c1dd51..5af14f8 100644 (file)
         } while (0)
 #endif
 
-/* Compilation on Python 2.4 */
-#if PY_VERSION_HEX < 0x02050000
-typedef int Py_ssize_t;
-#define PY_SSIZE_T_MAX INT_MAX
-#define PY_SSIZE_T_MIN INT_MIN
-typedef inquiry lenfunc;
-#endif
-
 /* PyCObject superceded by PyCapsule on Python >= 2.7
  * However since this effects header files used by
  * static bindings we are only applying the change to
similarity index 91%
rename from glib/pyglib.c
rename to gi/_glib/pyglib.c
index 1e024c2..3508f55 100644 (file)
@@ -40,7 +40,7 @@ pyglib_init(void)
 {
     PyObject *glib, *cobject;
     
-    glib = PyImport_ImportModule("glib");
+    glib = PyImport_ImportModule("gi._glib");
     if (!glib) {
        if (PyErr_Occurred()) {
            PyObject *type, *value, *traceback;
@@ -51,22 +51,22 @@ pyglib_init(void)
            Py_XDECREF(value);
            Py_XDECREF(traceback);
            PyErr_Format(PyExc_ImportError,
-                        "could not import glib (error was: %s)",
+                        "could not import gi._glib (error was: %s)",
                         PYGLIB_PyUnicode_AsString(py_orig_exc));
            Py_DECREF(py_orig_exc);
         } else {
            PyErr_SetString(PyExc_ImportError,
-                           "could not import glib (no error given)");
+                           "could not import gi._glib (no error given)");
        }
        return;
     }
     
     cobject = PyObject_GetAttrString(glib, "_PyGLib_API");
     if (cobject && PYGLIB_CPointer_Check(cobject))
-       _PyGLib_API = (struct _PyGLib_Functions *) PYGLIB_CPointer_GetPointer(cobject, "glib._PyGLib_API");
+       _PyGLib_API = (struct _PyGLib_Functions *) PYGLIB_CPointer_GetPointer(cobject, "gi._glib._PyGLib_API");
     else {
        PyErr_SetString(PyExc_ImportError,
-                       "could not import glib (could not find _PyGLib_API object)");
+                       "could not import gi._glib (could not find _PyGLib_API object)");
        Py_DECREF(glib);
        return;
     }
@@ -75,7 +75,7 @@ pyglib_init(void)
 void
 pyglib_init_internal(PyObject *api)
 {
-    _PyGLib_API = (struct _PyGLib_Functions *) PYGLIB_CPointer_GetPointer(api, "glib._PyGLib_API");
+    _PyGLib_API = (struct _PyGLib_Functions *) PYGLIB_CPointer_GetPointer(api, "gi._glib._PyGLib_API");
 }
 
 gboolean
@@ -153,9 +153,6 @@ pyglib_enable_threads(void)
        return TRUE;
   
     PyEval_InitThreads();
-    if (!g_threads_got_initialized)
-       g_thread_init(NULL);
-    
     _PyGLib_API->threads_enabled = TRUE;
     pyglib_thread_state_tls_key = PyThread_create_key();
 
@@ -174,24 +171,6 @@ _pyglib_notify_on_enabling_threads(PyGLibThreadsEnabledFunc callback)
 }
 #endif
 
-int
-pyglib_gil_state_ensure_py23 (void)
-{
-#ifdef DISABLE_THREADING
-    return 0;
-#else
-    return PyGILState_Ensure();
-#endif
-}
-
-void
-pyglib_gil_state_release_py23 (int flag)
-{
-#ifndef DISABLE_THREADING
-    PyGILState_Release(flag);
-#endif
-}
-
 /**
  * pyglib_block_threads:
  *
@@ -233,30 +212,28 @@ pyglib_set_thread_block_funcs (PyGLibThreadBlockFunc block_threads_func,
     _PyGLib_API->unblock_threads = unblock_threads_func;
 }
 
-
 /**
- * pyglib_error_check:
+ * pyglib_error_marshal:
  * @error: a pointer to the GError.
  *
- * Checks to see if the GError has been set.  If the error has been
- * set, then the glib.GError Python exception will be raised, and
- * the GError cleared.
+ * Checks to see if @error has been set.  If @error has been set, then a
+ * GLib.GError Python exception object is returned (but not raised).
  *
- * Returns: True if an error was set.
+ * Returns: a GLib.GError Python exception object, or NULL.
  */
-gboolean
-pyglib_error_check(GError **error)
+PyObject *
+pyglib_error_marshal (GError **error)
 {
     PyGILState_STATE state;
     PyObject *exc_type;
     PyObject *exc_instance;
     PyObject *d;
 
-    g_return_val_if_fail(error != NULL, FALSE);
+    g_return_val_if_fail(error != NULL, NULL);
 
     if (*error == NULL)
-       return FALSE;
-    
+       return NULL;
+
     state = pyglib_gil_state_ensure();
 
     exc_type = _PyGLib_API->gerror_exception;
@@ -289,7 +266,35 @@ pyglib_error_check(GError **error)
     } else {
        PyObject_SetAttrString(exc_instance, "message", Py_None);
     }
+
+    pyglib_gil_state_release(state);
     
+    return exc_instance;
+}
+
+/**
+ * pyglib_error_check:
+ * @error: a pointer to the GError.
+ *
+ * Checks to see if the GError has been set.  If the error has been
+ * set, then the glib.GError Python exception will be raised, and
+ * the GError cleared.
+ *
+ * Returns: True if an error was set.
+ */
+gboolean
+pyglib_error_check(GError **error)
+{
+    PyGILState_STATE state;
+    PyObject *exc_instance;
+
+    g_return_val_if_fail(error != NULL, FALSE);
+    if (*error == NULL)
+       return FALSE;
+
+    state = pyglib_gil_state_ensure();
+
+    exc_instance = pyglib_error_marshal (error);
     PyErr_SetObject(_PyGLib_API->gerror_exception, exc_instance);
     Py_DECREF(exc_instance);
     g_clear_error(error);
@@ -338,22 +343,25 @@ pyglib_gerror_exception_check(GError **error)
 
     py_message = PyObject_GetAttrString(value, "message");
     if (!py_message || !PYGLIB_PyUnicode_Check(py_message)) {
-        bad_gerror_message = "glib.GError instances must have a 'message' string attribute";
+        bad_gerror_message = "gi._glib.GError instances must have a 'message' string attribute";
+        Py_XDECREF(py_message);
         goto bad_gerror;
     }
 
     py_domain = PyObject_GetAttrString(value, "domain");
     if (!py_domain || !PYGLIB_PyUnicode_Check(py_domain)) {
-        bad_gerror_message = "glib.GError instances must have a 'domain' string attribute";
+        bad_gerror_message = "gi._glib.GError instances must have a 'domain' string attribute";
         Py_DECREF(py_message);
+        Py_XDECREF(py_domain);
         goto bad_gerror;
     }
 
     py_code = PyObject_GetAttrString(value, "code");
     if (!py_code || !PYGLIB_PyLong_Check(py_code)) {
-        bad_gerror_message = "glib.GError instances must have a 'code' int attribute";
+        bad_gerror_message = "gi._glib.GError instances must have a 'code' int attribute";
         Py_DECREF(py_message);
         Py_DECREF(py_domain);
+        Py_XDECREF(py_code);
         goto bad_gerror;
     }
 
similarity index 98%
rename from glib/pyglib.h
rename to gi/_glib/pyglib.h
index 44ead47..261af7b 100644 (file)
@@ -37,6 +37,7 @@ PyGILState_STATE pyglib_gil_state_ensure(void);
 void pyglib_gil_state_release(PyGILState_STATE state);
 int pyglib_enable_threads(void);
 gboolean pyglib_error_check(GError **error);
+PyObject *pyglib_error_marshal (GError **error);
 gboolean pyglib_gerror_exception_check(GError **error);
 PyObject *pyglib_register_exception_for_domain(gchar *name,
                                               gint error_domain);
similarity index 97%
rename from glib/pygmaincontext.c
rename to gi/_glib/pygmaincontext.c
index cfb7ddd..a4282ee 100644 (file)
@@ -31,7 +31,7 @@
 #include "pyglib.h"
 #include "pyglib-private.h"
 
-PYGLIB_DEFINE_TYPE("glib.MainContext", PyGMainContext_Type, PyGMainContext)
+PYGLIB_DEFINE_TYPE("gi._glib.MainContext", PyGMainContext_Type, PyGMainContext)
 
 /**
  * pyg_main_context_new:
similarity index 94%
rename from glib/pygmainloop.c
rename to gi/_glib/pygmainloop.c
index 219b6a3..5dabef6 100644 (file)
@@ -158,9 +158,8 @@ pyg_signal_watch_check(GSource *source)
     PySignalWatchSource *real_source = (PySignalWatchSource *)source;
     GPollFD *poll_fd = &real_source->fd;
     unsigned char dummy;
-    gssize ret;
     if (poll_fd->revents & G_IO_IN)
-       ret = read(poll_fd->fd, &dummy, 1);
+        (void) read(poll_fd->fd, &dummy, 1);
 #endif
 
     state = pyglib_gil_state_ensure();
@@ -217,7 +216,10 @@ pyg_signal_watch_new(void)
            g_error("Cannot create main loop pipe: %s\n",
                    g_strerror(errno));
 
-        /* Make the write end of the fd non blocking */
+        /* Make both ends of the fd non blocking */
+        flag = fcntl(pipe_fds[0], F_GETFL, 0);
+        flag |= O_NONBLOCK;
+        fcntl(pipe_fds[0], F_SETFL, flag);
         flag = fcntl(pipe_fds[1], F_GETFL, 0);
         flag |= O_NONBLOCK;
         fcntl(pipe_fds[1], F_SETFL, flag);
@@ -233,7 +235,7 @@ pyg_signal_watch_new(void)
     return source;
 }
 
-PYGLIB_DEFINE_TYPE("glib.MainLoop", PyGMainLoop_Type, PyGMainLoop)
+PYGLIB_DEFINE_TYPE("gi._glib.MainLoop", PyGMainLoop_Type, PyGMainLoop)
 
 static int
 pyg_main_loop_init(PyGMainLoop *self, PyObject *args, PyObject *kwargs)
@@ -251,7 +253,7 @@ pyg_main_loop_init(PyGMainLoop *self, PyObject *args, PyObject *kwargs)
     if (!PyObject_TypeCheck(py_context, &PyGMainContext_Type) &&
        py_context != Py_None) {
        PyErr_SetString(PyExc_TypeError,
-                       "context must be a glib.MainContext or None");
+                       "context must be a gi._glib.MainContext or None");
        return -1;
     }
 
@@ -312,7 +314,7 @@ _wrap_g_main_loop_is_running (PyGMainLoop *self)
 }
 
 static PyObject *
-_wrap_g_main_loop_quit (PyGMainLoop *self)
+_wrap_g_main_loop_quit (PyGMainLoop *self, PyObject *args, PyObject *kwargs)
 {
     g_main_loop_quit(self->loop);
     
@@ -343,7 +345,7 @@ _wrap_g_main_loop_run (PyGMainLoop *self)
 static PyMethodDef _PyGMainLoop_methods[] = {
     { "get_context", (PyCFunction)_wrap_g_main_loop_get_context, METH_NOARGS },
     { "is_running", (PyCFunction)_wrap_g_main_loop_is_running, METH_NOARGS },
-    { "quit", (PyCFunction)_wrap_g_main_loop_quit, METH_NOARGS },
+    { "quit", (PyCFunction)_wrap_g_main_loop_quit, METH_VARARGS|METH_KEYWORDS },
     { "run", (PyCFunction)_wrap_g_main_loop_run, METH_NOARGS },
     { NULL, NULL, 0 }
 };
similarity index 100%
rename from glib/pygmainloop.h
rename to gi/_glib/pygmainloop.h
similarity index 98%
rename from glib/pygoptioncontext.c
rename to gi/_glib/pygoptioncontext.c
index 444625c..b985dbe 100644 (file)
@@ -28,7 +28,7 @@
 #include "pyglib-private.h"
 #include "pygoptioncontext.h"
 
-PYGLIB_DEFINE_TYPE("glib.OptionContext", PyGOptionContext_Type, PyGOptionContext)
+PYGLIB_DEFINE_TYPE("gi._glib.OptionContext", PyGOptionContext_Type, PyGOptionContext)
 
 /**
  * pyg_option_context_new:
@@ -58,7 +58,7 @@ pyg_option_context_init(PyGOptionContext *self,
 {
     char *parameter_string;
 
-    if (!PyArg_ParseTuple(args, "s:glib.GOptionContext.__init__",
+    if (!PyArg_ParseTuple(args, "s:gi._glib.GOptionContext.__init__",
                           &parameter_string))
         return -1;
 
similarity index 98%
rename from glib/pygoptiongroup.c
rename to gi/_glib/pygoptiongroup.c
index 2a69354..2990342 100644 (file)
@@ -28,7 +28,7 @@
 #include "pyglib-private.h"
 #include "pygoptiongroup.h"
 
-PYGLIB_DEFINE_TYPE("glib.OptionGroup", PyGOptionGroup_Type, PyGOptionGroup)
+PYGLIB_DEFINE_TYPE("gi._glib.OptionGroup", PyGOptionGroup_Type, PyGOptionGroup)
 
 /**
  * pyg_option_group_new:
@@ -62,7 +62,7 @@ check_if_owned(PyGOptionGroup *self)
     if (self->other_owner)
     {
         PyErr_SetString(PyExc_ValueError, "The GOptionGroup was not created by "
-                        "glib.OptionGroup(), so operation is not possible.");
+                        "gi._glib.OptionGroup(), so operation is not possible.");
         return TRUE;
     }
     return FALSE;
similarity index 95%
rename from glib/pygsource.c
rename to gi/_glib/pygsource.c
index d0176ab..d11f474 100644 (file)
@@ -59,7 +59,7 @@ typedef struct
 
 /* glib.Source */
 
-PYGLIB_DEFINE_TYPE("glib.Source", PyGSource_Type, PyGSource)
+PYGLIB_DEFINE_TYPE("gi._glib.Source", PyGSource_Type, PyGSource)
 
 static PyObject *
 source_repr(PyGSource *self, const char *type)
@@ -130,6 +130,20 @@ pyg_source_destroy(PyGSource *self)
 }
 
 static PyObject *
+pyg_source_is_destroyed(PyGSource *self)
+{
+    PyObject *result;
+
+    if (self->source == NULL || g_source_is_destroyed(self->source))
+        result = Py_True;
+    else
+        result = Py_False;
+
+    Py_INCREF(result);
+    return result;
+}
+
+static PyObject *
 pyg_source_set_callback(PyGSource *self, PyObject *args)
 {
     PyObject *first, *callback, *cbargs = NULL, *data;
@@ -244,19 +258,18 @@ pyg_source_remove_poll(PyGSource *self, PyObject *args, PyObject *kwargs)
 static PyObject *
 pyg_source_get_current_time(PyGSource *self)
 {
-    GTimeVal timeval;
     double   ret;
 
     CHECK_DESTROYED(self, NULL);
 
-    g_source_get_current_time(self->source, &timeval);
-    ret = (double)timeval.tv_sec + (double)timeval.tv_usec * 0.000001;
+    ret = g_get_real_time() * 0.000001;
     return PyFloat_FromDouble(ret);
 }
 
 static PyMethodDef pyg_source_methods[] = {
     { "attach", (PyCFunction)pyg_source_attach, METH_VARARGS|METH_KEYWORDS },
     { "destroy", (PyCFunction)pyg_source_destroy, METH_NOARGS },
+    { "is_destroyed", (PyCFunction)pyg_source_is_destroyed, METH_NOARGS },
     { "set_callback", (PyCFunction)pyg_source_set_callback, METH_VARARGS },
     { "get_context", (PyCFunction)pyg_source_get_context, METH_NOARGS },
     { "add_poll", (PyCFunction)pyg_source_add_poll, METH_KEYWORDS },
@@ -566,7 +579,7 @@ pyg_source_free(PyObject *op)
 
 /* glib.Idle */
 
-PYGLIB_DEFINE_TYPE("glib.Idle", PyGIdle_Type, PyGSource)
+PYGLIB_DEFINE_TYPE("gi._glib.Idle", PyGIdle_Type, PyGSource)
 
 static PyObject *
 pyg_idle_repr(PyGSource *self)
@@ -581,7 +594,7 @@ pyg_idle_init(PyGSource *self, PyObject *args, PyObject *kwargs)
     gint priority = G_PRIORITY_DEFAULT_IDLE;
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "|i:glib.Idle.__init__", kwlist,
+                                    "|i:gi._glib.Idle.__init__", kwlist,
                                     &priority))
        return -1;
 
@@ -600,7 +613,7 @@ pyg_idle_init(PyGSource *self, PyObject *args, PyObject *kwargs)
 
 /* glib.Timeout */
 
-PYGLIB_DEFINE_TYPE("glib.Timeout", PyGTimeout_Type, PyGSource)
+PYGLIB_DEFINE_TYPE("gi._glib.Timeout", PyGTimeout_Type, PyGSource)
 
 static PyObject *
 pyg_timeout_repr(PyGSource *self)
@@ -616,7 +629,7 @@ pyg_timeout_init(PyGSource *self, PyObject *args, PyObject *kwargs)
     guint interval;
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "I|i:glib.Timeout.__init__", kwlist,
+                                    "I|i:gi._glib.Timeout.__init__", kwlist,
                                     &interval, &priority))
        return -1;
 
@@ -635,7 +648,7 @@ pyg_timeout_init(PyGSource *self, PyObject *args, PyObject *kwargs)
 
 /* glib.PollFD */
 
-PYGLIB_DEFINE_TYPE("glib.PollFD", PyGPollFD_Type, PyGPollFD)
+PYGLIB_DEFINE_TYPE("gi._glib.PollFD", PyGPollFD_Type, PyGPollFD)
 
 static PyMemberDef pyg_poll_fd_members[] = {
     { "fd",      T_INT,    offsetof(PyGPollFD, pollfd.fd),      READONLY },
@@ -668,7 +681,7 @@ pyg_poll_fd_init(PyGPollFD *self, PyObject *args, PyObject *kwargs)
     gushort events;
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "OH:glib.PollFD.__init__", kwlist,
+                                    "OH:gi._glib.PollFD.__init__", kwlist,
                                     &o, &events))
        return -1;
 
similarity index 100%
rename from glib/pygsource.h
rename to gi/_glib/pygsource.h
similarity index 93%
rename from glib/pygspawn.c
rename to gi/_glib/pygspawn.c
index 75e2232..07adbff 100644 (file)
 #include "pyglib.h"
 #include "pyglib-private.h"
 
+#include "pygspawn.h"
+
 struct _PyGChildSetupData {
     PyObject *func;
     PyObject *data;
 };
 
-PYGLIB_DEFINE_TYPE("glib.Pid", PyGPid_Type, PYGLIB_PyLongObject)
+PYGLIB_DEFINE_TYPE("gi._glib.Pid", PyGPid_Type, PYGLIB_PyLongObject)
 
 static PyObject *
 pyg_pid_close(PyObject *self, PyObject *args, PyObject *kwargs)
@@ -57,7 +59,7 @@ pyg_pid_free(PyObject *gpid)
 static int
 pyg_pid_tp_init(PyObject *self, PyObject *args, PyObject *kwargs)
 {
-    PyErr_SetString(PyExc_TypeError, "glib.Pid cannot be manually instantiated");
+    PyErr_SetString(PyExc_TypeError, "gi._glib.Pid cannot be manually instantiated");
     return -1;
 }
 
@@ -117,7 +119,7 @@ pyglib_spawn_async(PyObject *object, PyObject *args, PyObject *kwargs)
     GPid child_pid = -1;
     Py_ssize_t len, i;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OsiOOOOO:glib.spawn_async",
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OsiOOOOO:gi._glib.spawn_async",
                                      kwlist,
                                      &pyargv, &pyenvp, &working_directory, &flags,
                                      &func, &user_data,
@@ -142,7 +144,7 @@ pyglib_spawn_async(PyObject *object, PyObject *args, PyObject *kwargs)
       /* parse argv */
     if (!PySequence_Check(pyargv)) {
         PyErr_SetString(PyExc_TypeError,
-                        "glib.spawn_async: "
+                        "gi._glib.spawn_async: "
                        "first argument must be a sequence of strings");
         return NULL;
     }
@@ -150,9 +152,9 @@ pyglib_spawn_async(PyObject *object, PyObject *args, PyObject *kwargs)
     argv = g_new0(char *, len + 1);
     for (i = 0; i < len; ++i) {
         PyObject *tmp = PySequence_ITEM(pyargv, i);
-        if (!PYGLIB_PyUnicode_Check(tmp)) {
+        if (tmp == NULL || !PYGLIB_PyUnicode_Check(tmp)) {
             PyErr_SetString(PyExc_TypeError,
-                            "glib.spawn_async: "
+                            "gi._glib.spawn_async: "
                            "first argument must be a sequence of strings");
             g_free(argv);
             Py_XDECREF(tmp);
@@ -166,7 +168,7 @@ pyglib_spawn_async(PyObject *object, PyObject *args, PyObject *kwargs)
     if (pyenvp) {
         if (!PySequence_Check(pyenvp)) {
             PyErr_SetString(PyExc_TypeError,
-                            "glib.spawn_async: "
+                            "gi._glib.spawn_async: "
                            "second argument must be a sequence of strings");
             g_free(argv);
             return NULL;
@@ -175,9 +177,9 @@ pyglib_spawn_async(PyObject *object, PyObject *args, PyObject *kwargs)
         envp = g_new0(char *, len + 1);
         for (i = 0; i < len; ++i) {
             PyObject *tmp = PySequence_ITEM(pyenvp, i);
-            if (!PYGLIB_PyUnicode_Check(tmp)) {
+            if (tmp == NULL || !PYGLIB_PyUnicode_Check(tmp)) {
                 PyErr_SetString(PyExc_TypeError,
-                                "glib.spawn_async: "
+                                "gi._glib.spawn_async: "
                                "second argument must be a sequence of strings");
                 g_free(envp);
                 Py_XDECREF(tmp);
similarity index 100%
rename from glib/pygspawn.h
rename to gi/_glib/pygspawn.h
diff --git a/gi/_gobject/Makefile.am b/gi/_gobject/Makefile.am
new file mode 100644 (file)
index 0000000..61762fc
--- /dev/null
@@ -0,0 +1,87 @@
+AUTOMAKE_OPTIONS = 1.7
+PLATFORM_VERSION = 3.0
+
+pkgincludedir = $(includedir)/pygobject-$(PLATFORM_VERSION)
+pkginclude_HEADERS = pygobject.h
+
+extension_cppflags = \
+       $(PYTHON_INCLUDES) \
+       -DPY_SSIZE_T_CLEAN
+
+extension_ldflags = \
+       -module \
+       -avoid-version
+
+if OS_WIN32
+# Windows requires Python modules to be explicitly linked to libpython.
+# Extension modules are shared libaries (.dll), but need to be
+# called .pyd for Python to load it as an extension module.
+extension_libadd = \
+       $(PYTHON_LIBS)
+
+extension_ldflags += \
+       -no-undefined \
+       -shrext ".pyd"
+endif
+
+pygobjectdir = $(pyexecdir)/gi/_gobject
+
+pygobject_PYTHON = \
+       __init__.py \
+       constants.py \
+       propertyhelper.py \
+       signalhelper.py
+
+pygobject_LTLIBRARIES = _gobject.la
+
+_gobject_la_SOURCES = \
+        gobjectmodule.c \
+        pygboxed.c \
+        pygboxed.h \
+        pygenum.c \
+        pygenum.h \
+        pygflags.c \
+        pygflags.h \
+        pyginterface.c \
+        pyginterface.h \
+        pygobject.c \
+        pygobject.h \
+        pygobject-private.h \
+        pygparamspec.c \
+        pygparamspec.h \
+        pygpointer.c \
+        pygpointer.h \
+        pygtype.c \
+        pygtype.h
+_gobject_la_CFLAGS = \
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi \
+       $(GLIB_CFLAGS) \
+       $(GI_CFLAGS)
+_gi_la_CPPFLAGS = \
+       $(extension_cppflags)
+_gobject_la_LIBADD = \
+       $(extension_libadd) \
+       $(GLIB_LIBS) \
+       $(GI_LIBS) \
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+_gobject_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "_gobject|PyInit__gobject"
+
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygobject_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+
+all: $(pygobject_LTLIBRARIES:.la=.so) build_pylinks
+check-local: $(pygobject_LTLIBRARIES:.la=.so) build_pylinks
+clean-local:
+       rm -f $(pygobject_LTLIBRARIES:.la=.so)
+.la.so:
+       $(LN_S) .libs/$@ $@ || true
similarity index 72%
rename from gobject/Makefile.in
rename to gi/_gobject/Makefile.in
index be4bac8..fec095b 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
 pkglibexecdir = $(libexecdir)/@PACKAGE@
@@ -34,11 +51,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-@PLATFORM_WIN32_TRUE@am__append_1 = -no-undefined
-@ENABLE_INTROSPECTION_TRUE@am__append_2 = $(GI_CFLAGS)
-@HAVE_LIBFFI_TRUE@am__append_3 = ffi-marshaller.c ffi-marshaller.h
-@PLATFORM_WIN32_TRUE@am__append_4 = -DPLATFORM_WIN32
-subdir = gobject
+@OS_WIN32_TRUE@am__append_1 = \
+@OS_WIN32_TRUE@        -no-undefined \
+@OS_WIN32_TRUE@        -shrext ".pyd"
+
+subdir = gi/_gobject
 DIST_COMMON = $(pkginclude_HEADERS) $(pygobject_PYTHON) \
        $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -74,27 +91,28 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(pygobjectdir)" \
        "$(DESTDIR)$(pygobjectdir)" "$(DESTDIR)$(pkgincludedir)"
 LTLIBRARIES = $(pygobject_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-_gobject_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-       $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
-am___gobject_la_SOURCES_DIST = gobjectmodule.c pygboxed.c pygboxed.h \
-       pygenum.c pygenum.h pygflags.c pygflags.h pyginterface.c \
-       pyginterface.h pygobject.c pygobject.h pygobject-private.h \
-       pygparamspec.c pygparamspec.h pygpointer.c pygpointer.h \
-       pygtype.c pygtype.h ffi-marshaller.c ffi-marshaller.h
-@HAVE_LIBFFI_TRUE@am__objects_1 = _gobject_la-ffi-marshaller.lo
+@OS_WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+_gobject_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) \
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
 am__gobject_la_OBJECTS = _gobject_la-gobjectmodule.lo \
        _gobject_la-pygboxed.lo _gobject_la-pygenum.lo \
        _gobject_la-pygflags.lo _gobject_la-pyginterface.lo \
        _gobject_la-pygobject.lo _gobject_la-pygparamspec.lo \
-       _gobject_la-pygpointer.lo _gobject_la-pygtype.lo \
-       $(am__objects_1)
+       _gobject_la-pygpointer.lo _gobject_la-pygtype.lo
 _gobject_la_OBJECTS = $(am__gobject_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 _gobject_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(_gobject_la_CFLAGS) \
@@ -109,30 +127,36 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
 am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(_gobject_la_SOURCES)
-DIST_SOURCES = $(am___gobject_la_SOURCES_DIST)
+DIST_SOURCES = $(_gobject_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
 py_compile = $(top_srcdir)/py-compile
 HEADERS = $(pkginclude_HEADERS)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-pkgincludedir = $(includedir)/pygtk-$(PLATFORM_VERSION)
+pkgincludedir = $(includedir)/pygobject-$(PLATFORM_VERSION)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 AMTAR = @AMTAR@
@@ -143,6 +167,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
@@ -163,14 +189,13 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GIOUNIX_CFLAGS = @GIOUNIX_CFLAGS@
-GIOUNIX_LIBS = @GIOUNIX_LIBS@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
 GI_DATADIR = @GI_DATADIR@
 GI_LIBS = @GI_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
 GLIB_MKENUMS = @GLIB_MKENUMS@
@@ -223,6 +248,8 @@ PYTHON = @PYTHON@
 PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
@@ -233,7 +260,6 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-XSLTPROC = @XSLTPROC@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -275,13 +301,12 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
-pkgpyexecdir = $(pyexecdir)
+pkgpyexecdir = @pkgpyexecdir@
 pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
-pygobject_CODEGEN_DEFINES = @pygobject_CODEGEN_DEFINES@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
@@ -292,32 +317,68 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = 1.7
-PLATFORM_VERSION = 2.0
+PLATFORM_VERSION = 3.0
 pkginclude_HEADERS = pygobject.h
+extension_cppflags = \
+       $(PYTHON_INCLUDES) \
+       -DPY_SSIZE_T_CLEAN
+
+extension_ldflags = -module -avoid-version $(am__append_1)
 
-# gobject python scripts
-pygobjectdir = $(pkgpyexecdir)/gobject
+# Windows requires Python modules to be explicitly linked to libpython.
+# Extension modules are shared libaries (.dll), but need to be
+# called .pyd for Python to load it as an extension module.
+@OS_WIN32_TRUE@extension_libadd = \
+@OS_WIN32_TRUE@        $(PYTHON_LIBS)
+
+pygobjectdir = $(pyexecdir)/gi/_gobject
 pygobject_PYTHON = \
-       __init__.py     \
-       constants.py    \
-       propertyhelper.py
-
-pygobject_LTLIBRARIES = _gobject.la 
-common_ldflags = -module -avoid-version $(am__append_1)
-_gobject_la_CFLAGS = -I$(top_srcdir)/glib -I$(top_srcdir)/gi \
-       $(PYTHON_INCLUDES) $(FFI_CFLAGS) $(GLIB_CFLAGS) \
-       -DPY_SSIZE_T_CLEAN $(am__append_2) $(am__append_4)
-_gobject_la_LDFLAGS = $(common_ldflags) -export-symbols-regex "_gobject|PyInit__gobject"
+       __init__.py \
+       constants.py \
+       propertyhelper.py \
+       signalhelper.py
+
+pygobject_LTLIBRARIES = _gobject.la
+_gobject_la_SOURCES = \
+        gobjectmodule.c \
+        pygboxed.c \
+        pygboxed.h \
+        pygenum.c \
+        pygenum.h \
+        pygflags.c \
+        pygflags.h \
+        pyginterface.c \
+        pyginterface.h \
+        pygobject.c \
+        pygobject.h \
+        pygobject-private.h \
+        pygparamspec.c \
+        pygparamspec.h \
+        pygpointer.c \
+        pygpointer.h \
+        pygtype.c \
+        pygtype.h
+
+_gobject_la_CFLAGS = \
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi \
+       $(GLIB_CFLAGS) \
+       $(GI_CFLAGS)
+
+_gi_la_CPPFLAGS = \
+       $(extension_cppflags)
+
 _gobject_la_LIBADD = \
+       $(extension_libadd) \
        $(GLIB_LIBS) \
-       $(FFI_LIBS) \
-       $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
-
-_gobject_la_SOURCES = gobjectmodule.c pygboxed.c pygboxed.h pygenum.c \
-       pygenum.h pygflags.c pygflags.h pyginterface.c pyginterface.h \
-       pygobject.c pygobject.h pygobject-private.h pygparamspec.c \
-       pygparamspec.h pygpointer.c pygpointer.h pygtype.c pygtype.h \
-       $(am__append_3)
+       $(GI_LIBS) \
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+
+_gobject_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "_gobject|PyInit__gobject"
+
 all: all-am
 
 .SUFFIXES:
@@ -331,9 +392,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gobject/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gi/_gobject/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --foreign gobject/Makefile
+         $(AUTOMAKE) --foreign gi/_gobject/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -354,7 +415,6 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-pygobjectLTLIBRARIES: $(pygobject_LTLIBRARIES)
        @$(NORMAL_INSTALL)
-       test -z "$(pygobjectdir)" || $(MKDIR_P) "$(DESTDIR)$(pygobjectdir)"
        @list='$(pygobject_LTLIBRARIES)'; test -n "$(pygobjectdir)" || list=; \
        list2=; for p in $$list; do \
          if test -f $$p; then \
@@ -362,6 +422,8 @@ install-pygobjectLTLIBRARIES: $(pygobject_LTLIBRARIES)
          else :; fi; \
        done; \
        test -z "$$list2" || { \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pygobjectdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pygobjectdir)" || exit 1; \
          echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pygobjectdir)'"; \
          $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pygobjectdir)"; \
        }
@@ -383,7 +445,7 @@ clean-pygobjectLTLIBRARIES:
          echo "rm -f \"$${dir}/so_locations\""; \
          rm -f "$${dir}/so_locations"; \
        done
-_gobject.la: $(_gobject_la_OBJECTS) $(_gobject_la_DEPENDENCIES) 
+_gobject.la: $(_gobject_la_OBJECTS) $(_gobject_la_DEPENDENCIES) $(EXTRA__gobject_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(_gobject_la_LINK) -rpath $(pygobjectdir) $(_gobject_la_OBJECTS) $(_gobject_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
@@ -392,7 +454,6 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-ffi-marshaller.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-gobjectmodule.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygboxed.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygenum.Plo@am__quote@
@@ -406,106 +467,86 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 _gobject_la-gobjectmodule.lo: gobjectmodule.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-gobjectmodule.lo -MD -MP -MF $(DEPDIR)/_gobject_la-gobjectmodule.Tpo -c -o _gobject_la-gobjectmodule.lo `test -f 'gobjectmodule.c' || echo '$(srcdir)/'`gobjectmodule.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-gobjectmodule.Tpo $(DEPDIR)/_gobject_la-gobjectmodule.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='gobjectmodule.c' object='_gobject_la-gobjectmodule.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gobjectmodule.c' object='_gobject_la-gobjectmodule.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-gobjectmodule.lo `test -f 'gobjectmodule.c' || echo '$(srcdir)/'`gobjectmodule.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-gobjectmodule.lo `test -f 'gobjectmodule.c' || echo '$(srcdir)/'`gobjectmodule.c
 
 _gobject_la-pygboxed.lo: pygboxed.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygboxed.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygboxed.Tpo -c -o _gobject_la-pygboxed.lo `test -f 'pygboxed.c' || echo '$(srcdir)/'`pygboxed.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygboxed.Tpo $(DEPDIR)/_gobject_la-pygboxed.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygboxed.c' object='_gobject_la-pygboxed.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygboxed.c' object='_gobject_la-pygboxed.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygboxed.lo `test -f 'pygboxed.c' || echo '$(srcdir)/'`pygboxed.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygboxed.lo `test -f 'pygboxed.c' || echo '$(srcdir)/'`pygboxed.c
 
 _gobject_la-pygenum.lo: pygenum.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygenum.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygenum.Tpo -c -o _gobject_la-pygenum.lo `test -f 'pygenum.c' || echo '$(srcdir)/'`pygenum.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygenum.Tpo $(DEPDIR)/_gobject_la-pygenum.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygenum.c' object='_gobject_la-pygenum.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygenum.c' object='_gobject_la-pygenum.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygenum.lo `test -f 'pygenum.c' || echo '$(srcdir)/'`pygenum.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygenum.lo `test -f 'pygenum.c' || echo '$(srcdir)/'`pygenum.c
 
 _gobject_la-pygflags.lo: pygflags.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygflags.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygflags.Tpo -c -o _gobject_la-pygflags.lo `test -f 'pygflags.c' || echo '$(srcdir)/'`pygflags.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygflags.Tpo $(DEPDIR)/_gobject_la-pygflags.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygflags.c' object='_gobject_la-pygflags.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygflags.c' object='_gobject_la-pygflags.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygflags.lo `test -f 'pygflags.c' || echo '$(srcdir)/'`pygflags.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygflags.lo `test -f 'pygflags.c' || echo '$(srcdir)/'`pygflags.c
 
 _gobject_la-pyginterface.lo: pyginterface.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pyginterface.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pyginterface.Tpo -c -o _gobject_la-pyginterface.lo `test -f 'pyginterface.c' || echo '$(srcdir)/'`pyginterface.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pyginterface.Tpo $(DEPDIR)/_gobject_la-pyginterface.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pyginterface.c' object='_gobject_la-pyginterface.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pyginterface.c' object='_gobject_la-pyginterface.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pyginterface.lo `test -f 'pyginterface.c' || echo '$(srcdir)/'`pyginterface.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pyginterface.lo `test -f 'pyginterface.c' || echo '$(srcdir)/'`pyginterface.c
 
 _gobject_la-pygobject.lo: pygobject.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygobject.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygobject.Tpo -c -o _gobject_la-pygobject.lo `test -f 'pygobject.c' || echo '$(srcdir)/'`pygobject.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygobject.Tpo $(DEPDIR)/_gobject_la-pygobject.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygobject.c' object='_gobject_la-pygobject.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygobject.c' object='_gobject_la-pygobject.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygobject.lo `test -f 'pygobject.c' || echo '$(srcdir)/'`pygobject.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygobject.lo `test -f 'pygobject.c' || echo '$(srcdir)/'`pygobject.c
 
 _gobject_la-pygparamspec.lo: pygparamspec.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygparamspec.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygparamspec.Tpo -c -o _gobject_la-pygparamspec.lo `test -f 'pygparamspec.c' || echo '$(srcdir)/'`pygparamspec.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygparamspec.Tpo $(DEPDIR)/_gobject_la-pygparamspec.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygparamspec.c' object='_gobject_la-pygparamspec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygparamspec.c' object='_gobject_la-pygparamspec.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygparamspec.lo `test -f 'pygparamspec.c' || echo '$(srcdir)/'`pygparamspec.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygparamspec.lo `test -f 'pygparamspec.c' || echo '$(srcdir)/'`pygparamspec.c
 
 _gobject_la-pygpointer.lo: pygpointer.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygpointer.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygpointer.Tpo -c -o _gobject_la-pygpointer.lo `test -f 'pygpointer.c' || echo '$(srcdir)/'`pygpointer.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygpointer.Tpo $(DEPDIR)/_gobject_la-pygpointer.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygpointer.c' object='_gobject_la-pygpointer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygpointer.c' object='_gobject_la-pygpointer.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygpointer.lo `test -f 'pygpointer.c' || echo '$(srcdir)/'`pygpointer.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygpointer.lo `test -f 'pygpointer.c' || echo '$(srcdir)/'`pygpointer.c
 
 _gobject_la-pygtype.lo: pygtype.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygtype.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygtype.Tpo -c -o _gobject_la-pygtype.lo `test -f 'pygtype.c' || echo '$(srcdir)/'`pygtype.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygtype.Tpo $(DEPDIR)/_gobject_la-pygtype.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygtype.c' object='_gobject_la-pygtype.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygtype.lo `test -f 'pygtype.c' || echo '$(srcdir)/'`pygtype.c
-
-_gobject_la-ffi-marshaller.lo: ffi-marshaller.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-ffi-marshaller.lo -MD -MP -MF $(DEPDIR)/_gobject_la-ffi-marshaller.Tpo -c -o _gobject_la-ffi-marshaller.lo `test -f 'ffi-marshaller.c' || echo '$(srcdir)/'`ffi-marshaller.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-ffi-marshaller.Tpo $(DEPDIR)/_gobject_la-ffi-marshaller.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ffi-marshaller.c' object='_gobject_la-ffi-marshaller.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygtype.c' object='_gobject_la-pygtype.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-ffi-marshaller.lo `test -f 'ffi-marshaller.c' || echo '$(srcdir)/'`ffi-marshaller.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygtype.lo `test -f 'pygtype.c' || echo '$(srcdir)/'`pygtype.c
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -514,8 +555,11 @@ clean-libtool:
        -rm -rf .libs _libs
 install-pygobjectPYTHON: $(pygobject_PYTHON)
        @$(NORMAL_INSTALL)
-       test -z "$(pygobjectdir)" || $(MKDIR_P) "$(DESTDIR)$(pygobjectdir)"
        @list='$(pygobject_PYTHON)'; dlist=; list2=; test -n "$(pygobjectdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pygobjectdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pygobjectdir)" || exit 1; \
+       fi; \
        for p in $$list; do \
          if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
          if test -f $$b$$p; then \
@@ -531,9 +575,10 @@ install-pygobjectPYTHON: $(pygobject_PYTHON)
        done || exit $$?; \
        if test -n "$$dlist"; then \
          if test -z "$(DESTDIR)"; then \
-           PYTHON=$(PYTHON) $(py_compile) --basedir "$(pygobjectdir)" $$dlist; \
+           $(am__py_compile) --basedir "$(pygobjectdir)" $$dlist; \
          else \
-           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(pygobjectdir)" $$dlist; \
+           $(am__py_compile) --destdir "$(DESTDIR)" \
+                             --basedir "$(pygobjectdir)" $$dlist; \
          fi; \
        else :; fi
 
@@ -542,18 +587,21 @@ uninstall-pygobjectPYTHON:
        @list='$(pygobject_PYTHON)'; test -n "$(pygobjectdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
+       dir='$(DESTDIR)$(pygobjectdir)'; \
        filesc=`echo "$$files" | sed 's|$$|c|'`; \
        fileso=`echo "$$files" | sed 's|$$|o|'`; \
-       echo " ( cd '$(DESTDIR)$(pygobjectdir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(pygobjectdir)" && rm -f $$files || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pygobjectdir)' && rm -f" $$filesc ")"; \
-       cd "$(DESTDIR)$(pygobjectdir)" && rm -f $$filesc || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pygobjectdir)' && rm -f" $$fileso ")"; \
-       cd "$(DESTDIR)$(pygobjectdir)" && rm -f $$fileso
+       st=0; \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
+         $(am__uninstall_files_from_dir) || st=$$?; \
+       done; \
+       exit $$st
 install-pkgincludeHEADERS: $(pkginclude_HEADERS)
        @$(NORMAL_INSTALL)
-       test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
        @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+       fi; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
@@ -567,9 +615,7 @@ uninstall-pkgincludeHEADERS:
        @$(NORMAL_UNINSTALL)
        @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$files" || exit 0; \
-       echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
+       dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -671,10 +717,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
@@ -779,15 +830,21 @@ uninstall-am: uninstall-pkgincludeHEADERS \
        uninstall-pygobjectLTLIBRARIES uninstall-pygobjectPYTHON
 
 
-all: $(pygobject_LTLIBRARIES:.la=.so)
-check-local: $(pygobject_LTLIBRARIES:.la=.so)
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygobject_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+all: $(pygobject_LTLIBRARIES:.la=.so) build_pylinks
+check-local: $(pygobject_LTLIBRARIES:.la=.so) build_pylinks
 clean-local:
        rm -f $(pygobject_LTLIBRARIES:.la=.so)
 .la.so:
        $(LN_S) .libs/$@ $@ || true
 
--include $(top_srcdir)/git.mk
-
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gi/_gobject/__init__.py b/gi/_gobject/__init__.py
new file mode 100644 (file)
index 0000000..7b6ab36
--- /dev/null
@@ -0,0 +1,284 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# pygobject - Python bindings for the GObject library
+# Copyright (C) 2006-2012  Johan Dahlin
+#
+#   gobject/__init__.py: initialisation file for gobject module
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# USA
+
+# this can go when things are a little further along
+
+import sys
+
+# we can't have pygobject 2 loaded at the same time we load the internal _gobject
+if 'gobject' in sys.modules:
+    raise ImportError('When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject".')
+
+from .. import _glib
+from . import _gobject
+from . import constants
+from .propertyhelper import Property
+from . import signalhelper
+
+GBoxed = _gobject.GBoxed
+GEnum = _gobject.GEnum
+GFlags = _gobject.GFlags
+GInterface = _gobject.GInterface
+GObject = _gobject.GObject
+GObjectWeakRef = _gobject.GObjectWeakRef
+GParamSpec = _gobject.GParamSpec
+GPointer = _gobject.GPointer
+GType = _gobject.GType
+PARAM_CONSTRUCT = _gobject.PARAM_CONSTRUCT
+PARAM_CONSTRUCT_ONLY = _gobject.PARAM_CONSTRUCT_ONLY
+PARAM_LAX_VALIDATION = _gobject.PARAM_LAX_VALIDATION
+PARAM_READABLE = _gobject.PARAM_READABLE
+PARAM_READWRITE = _gobject.PARAM_READWRITE
+PARAM_WRITABLE = _gobject.PARAM_WRITABLE
+SIGNAL_ACTION = _gobject.SIGNAL_ACTION
+SIGNAL_DETAILED = _gobject.SIGNAL_DETAILED
+SIGNAL_NO_HOOKS = _gobject.SIGNAL_NO_HOOKS
+SIGNAL_NO_RECURSE = _gobject.SIGNAL_NO_RECURSE
+SIGNAL_RUN_CLEANUP = _gobject.SIGNAL_RUN_CLEANUP
+SIGNAL_RUN_FIRST = _gobject.SIGNAL_RUN_FIRST
+SIGNAL_RUN_LAST = _gobject.SIGNAL_RUN_LAST
+TYPE_GSTRING = _gobject.TYPE_GSTRING
+TYPE_INVALID = _gobject.TYPE_INVALID
+Warning = _gobject.Warning
+_PyGObject_API = _gobject._PyGObject_API
+add_emission_hook = _gobject.add_emission_hook
+features = _gobject.features
+list_properties = _gobject.list_properties
+new = _gobject.new
+pygobject_version = _gobject.pygobject_version
+remove_emission_hook = _gobject.remove_emission_hook
+signal_accumulator_true_handled = _gobject.signal_accumulator_true_handled
+signal_list_ids = _gobject.signal_list_ids
+signal_list_names = _gobject.signal_list_names
+signal_lookup = _gobject.signal_lookup
+signal_name = _gobject.signal_name
+signal_new = _gobject.signal_new
+signal_query = _gobject.signal_query
+threads_init = _gobject.threads_init
+type_children = _gobject.type_children
+type_from_name = _gobject.type_from_name
+type_interfaces = _gobject.type_interfaces
+type_is_a = _gobject.type_is_a
+type_name = _gobject.type_name
+type_parent = _gobject.type_parent
+type_register = _gobject.type_register
+
+spawn_async = _glib.spawn_async
+idle_add = _glib.idle_add
+timeout_add = _glib.timeout_add
+timeout_add_seconds = _glib.timeout_add_seconds
+io_add_watch = _glib.io_add_watch
+source_remove = _glib.source_remove
+child_watch_add = _glib.child_watch_add
+markup_escape_text = _glib.markup_escape_text
+get_current_time = _glib.get_current_time
+filename_display_name = _glib.filename_display_name
+filename_display_basename = _glib.filename_display_basename
+filename_from_utf8 = _glib.filename_from_utf8
+get_application_name = _glib.get_application_name
+set_application_name = _glib.set_application_name
+get_prgname = _glib.get_prgname
+set_prgname = _glib.set_prgname
+main_depth = _glib.main_depth
+Pid = _glib.Pid
+GError = _glib.GError
+glib_version = _glib.glib_version
+MainLoop = _glib.MainLoop
+MainContext = _glib.MainContext
+main_context_default = _glib.main_context_default
+IOChannel = _glib.IOChannel
+Source = _glib.Source
+Idle = _glib.Idle
+Timeout = _glib.Timeout
+PollFD = _glib.PollFD
+OptionGroup = _glib.OptionGroup
+OptionContext = _glib.OptionContext
+uri_list_extract_uris = _glib.uri_list_extract_uris
+
+SPAWN_LEAVE_DESCRIPTORS_OPEN = _glib.SPAWN_LEAVE_DESCRIPTORS_OPEN
+SPAWN_DO_NOT_REAP_CHILD = _glib.SPAWN_DO_NOT_REAP_CHILD
+SPAWN_SEARCH_PATH = _glib.SPAWN_SEARCH_PATH
+SPAWN_STDOUT_TO_DEV_NULL = _glib.SPAWN_STDOUT_TO_DEV_NULL
+SPAWN_STDERR_TO_DEV_NULL = _glib.SPAWN_STDERR_TO_DEV_NULL
+SPAWN_CHILD_INHERITS_STDIN = _glib.SPAWN_CHILD_INHERITS_STDIN
+SPAWN_FILE_AND_ARGV_ZERO = _glib.SPAWN_FILE_AND_ARGV_ZERO
+PRIORITY_HIGH = _glib.PRIORITY_HIGH
+PRIORITY_DEFAULT = _glib.PRIORITY_DEFAULT
+PRIORITY_HIGH_IDLE = _glib.PRIORITY_HIGH_IDLE
+PRIORITY_DEFAULT_IDLE = _glib.PRIORITY_DEFAULT_IDLE
+PRIORITY_LOW = _glib.PRIORITY_LOW
+IO_IN = _glib.IO_IN
+IO_OUT = _glib.IO_OUT
+IO_PRI = _glib.IO_PRI
+IO_ERR = _glib.IO_ERR
+IO_HUP = _glib.IO_HUP
+IO_NVAL = _glib.IO_NVAL
+IO_STATUS_ERROR = _glib.IO_STATUS_ERROR
+IO_STATUS_NORMAL = _glib.IO_STATUS_NORMAL
+IO_STATUS_EOF = _glib.IO_STATUS_EOF
+IO_STATUS_AGAIN = _glib.IO_STATUS_AGAIN
+IO_FLAG_APPEND = _glib.IO_FLAG_APPEND
+IO_FLAG_NONBLOCK = _glib.IO_FLAG_NONBLOCK
+IO_FLAG_IS_READABLE = _glib.IO_FLAG_IS_READABLE
+IO_FLAG_IS_WRITEABLE = _glib.IO_FLAG_IS_WRITEABLE
+IO_FLAG_IS_SEEKABLE = _glib.IO_FLAG_IS_SEEKABLE
+IO_FLAG_MASK = _glib.IO_FLAG_MASK
+IO_FLAG_GET_MASK = _glib.IO_FLAG_GET_MASK
+IO_FLAG_SET_MASK = _glib.IO_FLAG_SET_MASK
+OPTION_FLAG_HIDDEN = _glib.OPTION_FLAG_HIDDEN
+OPTION_FLAG_IN_MAIN = _glib.OPTION_FLAG_IN_MAIN
+OPTION_FLAG_REVERSE = _glib.OPTION_FLAG_REVERSE
+OPTION_FLAG_NO_ARG = _glib.OPTION_FLAG_NO_ARG
+OPTION_FLAG_FILENAME = _glib.OPTION_FLAG_FILENAME
+OPTION_FLAG_OPTIONAL_ARG = _glib.OPTION_FLAG_OPTIONAL_ARG
+OPTION_FLAG_NOALIAS = _glib.OPTION_FLAG_NOALIAS
+OPTION_ERROR_UNKNOWN_OPTION = _glib.OPTION_ERROR_UNKNOWN_OPTION
+OPTION_ERROR_BAD_VALUE = _glib.OPTION_ERROR_BAD_VALUE
+OPTION_ERROR_FAILED = _glib.OPTION_ERROR_FAILED
+OPTION_REMAINING = _glib.OPTION_REMAINING
+OPTION_ERROR = _glib.OPTION_ERROR
+
+TYPE_NONE = constants.TYPE_NONE
+TYPE_INTERFACE = constants.TYPE_INTERFACE
+TYPE_CHAR = constants.TYPE_CHAR
+TYPE_UCHAR = constants.TYPE_UCHAR
+TYPE_BOOLEAN = constants.TYPE_BOOLEAN
+TYPE_INT = constants.TYPE_INT
+TYPE_UINT = constants.TYPE_UINT
+TYPE_LONG = constants.TYPE_LONG
+TYPE_ULONG = constants.TYPE_ULONG
+TYPE_INT64 = constants.TYPE_INT64
+TYPE_UINT64 = constants.TYPE_UINT64
+TYPE_ENUM = constants.TYPE_ENUM
+TYPE_FLAGS = constants.TYPE_FLAGS
+TYPE_FLOAT = constants.TYPE_FLOAT
+TYPE_DOUBLE = constants.TYPE_DOUBLE
+TYPE_STRING = constants.TYPE_STRING
+TYPE_POINTER = constants.TYPE_POINTER
+TYPE_BOXED = constants.TYPE_BOXED
+TYPE_PARAM = constants.TYPE_PARAM
+TYPE_OBJECT = constants.TYPE_OBJECT
+TYPE_PYOBJECT = constants.TYPE_PYOBJECT
+TYPE_GTYPE = constants.TYPE_GTYPE
+TYPE_UNICHAR = constants.TYPE_UNICHAR
+TYPE_STRV = constants.TYPE_STRV
+TYPE_VARIANT = constants.TYPE_VARIANT
+G_MINFLOAT = constants.G_MINFLOAT
+G_MAXFLOAT = constants.G_MAXFLOAT
+G_MINDOUBLE = constants.G_MINDOUBLE
+G_MAXDOUBLE = constants.G_MAXDOUBLE
+G_MINSHORT = constants.G_MINSHORT
+G_MAXSHORT = constants.G_MAXSHORT
+G_MAXUSHORT = constants.G_MAXUSHORT
+G_MININT = constants.G_MININT
+G_MAXINT = constants.G_MAXINT
+G_MAXUINT = constants.G_MAXUINT
+G_MINLONG = constants.G_MINLONG
+G_MAXLONG = constants.G_MAXLONG
+G_MAXULONG = constants.G_MAXULONG
+G_MININT8 = constants.G_MININT8
+G_MAXINT8 = constants.G_MAXINT8
+G_MAXUINT8 = constants.G_MAXUINT8
+G_MININT16 = constants.G_MININT16
+G_MAXINT16 = constants.G_MAXINT16
+G_MAXUINT16 = constants.G_MAXUINT16
+G_MININT32 = constants.G_MININT32
+G_MAXINT32 = constants.G_MAXINT32
+G_MAXUINT32 = constants.G_MAXUINT32
+G_MININT64 = constants.G_MININT64
+G_MAXINT64 = constants.G_MAXINT64
+G_MAXUINT64 = constants.G_MAXUINT64
+G_MAXSIZE = constants.G_MAXSIZE
+G_MAXSSIZE = constants.G_MAXSSIZE
+G_MINOFFSET = constants.G_MINOFFSET
+G_MAXOFFSET = constants.G_MAXOFFSET
+
+Signal = signalhelper.Signal
+SignalOverride = signalhelper.SignalOverride
+
+from .._glib import option
+sys.modules['gi._gobject.option'] = option
+
+
+class GObjectMeta(type):
+    "Metaclass for automatically registering GObject classes"
+    def __init__(cls, name, bases, dict_):
+        type.__init__(cls, name, bases, dict_)
+        cls._install_properties()
+        signalhelper.install_signals(cls)
+        cls._type_register(cls.__dict__)
+
+    def _install_properties(cls):
+        gproperties = getattr(cls, '__gproperties__', {})
+
+        props = []
+        for name, prop in cls.__dict__.items():
+            if isinstance(prop, Property):  # not same as the built-in
+                if name in gproperties:
+                    raise ValueError
+                prop.name = name
+                gproperties[name] = prop.get_pspec_args()
+                props.append(prop)
+
+        if not props:
+            return
+
+        cls.__gproperties__ = gproperties
+
+        if 'do_get_property' in cls.__dict__ or 'do_set_property' in cls.__dict__:
+            for prop in props:
+                if prop.fget != prop._default_getter or prop.fset != prop._default_setter:
+                    raise TypeError(
+                        "GObject subclass %r defines do_get/set_property"
+                        " and it also uses a property with a custom setter"
+                        " or getter. This is not allowed" % (
+                        cls.__name__,))
+
+        def obj_get_property(self, pspec):
+            name = pspec.name.replace('-', '_')
+            prop = getattr(cls, name, None)
+            if prop:
+                return prop.fget(self)
+        cls.do_get_property = obj_get_property
+
+        def obj_set_property(self, pspec, value):
+            name = pspec.name.replace('-', '_')
+            prop = getattr(cls, name, None)
+            if prop:
+                prop.fset(self, value)
+        cls.do_set_property = obj_set_property
+
+    def _type_register(cls, namespace):
+        ## don't register the class if already registered
+        if '__gtype__' in namespace:
+            return
+
+        # Do not register a new GType for the overrides, as this would sort of
+        # defeat the purpose of overrides...
+        if cls.__module__.startswith('gi.overrides.'):
+            return
+
+        type_register(cls, namespace.get('__gtype_name__'))
+
+_gobject._install_metaclass(GObjectMeta)
+
+# Deprecated naming still available for backwards compatibility.
+property = Property
similarity index 94%
rename from gobject/constants.py
rename to gi/_gobject/constants.py
index a6d3ce9..3f83a3a 100644 (file)
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
 # USA
 
-import sys
-
-import gobject._gobject
-_gobject = sys.modules['gobject._gobject']
+from . import _gobject
 
 # TYPE_INVALID defined in gobjectmodule.c
 TYPE_NONE = _gobject.type_from_name('void')
@@ -46,6 +43,9 @@ TYPE_BOXED = _gobject.type_from_name('GBoxed')
 TYPE_PARAM = _gobject.type_from_name('GParam')
 TYPE_OBJECT = _gobject.type_from_name('GObject')
 TYPE_PYOBJECT = _gobject.type_from_name('PyObject')
+TYPE_GTYPE = _gobject.type_from_name('GType')
+TYPE_STRV = _gobject.type_from_name('GStrv')
+TYPE_VARIANT = _gobject.type_from_name('GVariant')
 TYPE_UNICHAR = TYPE_UINT
 
 # do a little dance to maintain API compatibility
@@ -80,4 +80,3 @@ G_MAXSIZE = _gobject.G_MAXSIZE
 G_MAXSSIZE = _gobject.G_MAXSSIZE
 G_MINOFFSET = _gobject.G_MINOFFSET
 G_MAXOFFSET = _gobject.G_MAXOFFSET
-
similarity index 94%
rename from gobject/gobjectmodule.c
rename to gi/_gobject/gobjectmodule.c
index 2a84606..2b976aa 100644 (file)
@@ -25,6 +25,7 @@
 #endif
 
 #include <gobject/gvaluecollector.h>
+#include <girepository.h>
 #include <pyglib.h>
 #include <pythread.h>
 #include "pygobject-private.h"
 #include "pygpointer.h"
 #include "pygtype.h"
 
-#ifdef HAVE_FFI_H
-#include "ffi-marshaller.h"
-static GSignalCMarshaller marshal_generic = g_cclosure_marshal_generic_ffi;
-#else
-static GSignalCMarshaller marshal_generic = 0;
-#endif
-
 static PyObject *_pyg_signal_accumulator_true_handled_func;
 static GHashTable *log_handlers = NULL;
 static gboolean log_handlers_disabled = FALSE;
@@ -126,6 +120,7 @@ pyg_type_from_name (PyObject *self, PyObject *args)
 {
     const gchar *name;
     GType type;
+    PyObject *repr = NULL;
 #if 0
     if (PyErr_Warn(PyExc_DeprecationWarning,
                   "gobject.type_from_name is deprecated; "
@@ -137,9 +132,11 @@ pyg_type_from_name (PyObject *self, PyObject *args)
     type = _pyg_type_from_name(name);
     if (type != 0)
        return pyg_type_wrapper_new(type);
+    repr = PyObject_Repr((PyObject*)self);
     PyErr_Format(PyExc_RuntimeError, "%s: unknown type name: %s",
-         PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+         PYGLIB_PyUnicode_AsString(repr),
                 name);
+    Py_DECREF(repr);
     return NULL;
 }
 
@@ -450,7 +447,7 @@ create_signal (GType instance_type, const gchar *signal_name, PyObject *tuple)
     signal_id = g_signal_newv(signal_name, instance_type, signal_flags,
                              pyg_signal_class_closure_get(),
                              accumulator, accum_data,
-                             marshal_generic,
+                             gi_cclosure_marshal_generic,
                              return_type, n_params, param_types);
     g_free(param_types);
 
@@ -725,7 +722,10 @@ create_property (const gchar  *prop_name,
     case G_TYPE_POINTER:
        if (!PyArg_ParseTuple(args, ""))
            return NULL;
-       pspec = g_param_spec_pointer (prop_name, nick, blurb, flags);
+       if (prop_type == G_TYPE_GTYPE)
+           pspec = g_param_spec_gtype (prop_name, nick, blurb, G_TYPE_NONE, flags);
+       else
+           pspec = g_param_spec_pointer (prop_name, nick, blurb, flags);
        break;
     case G_TYPE_OBJECT:
        if (!PyArg_ParseTuple(args, ""))
@@ -749,7 +749,7 @@ create_property (const gchar  *prop_name,
     return pspec;
 }
 
-GParamSpec *
+static GParamSpec *
 pyg_param_spec_from_object (PyObject *tuple)
 {
     gint val_length;
@@ -1017,6 +1017,32 @@ pygobject_init_wrapper_get(void)
     return (PyObject *) g_static_private_get(&pygobject_construction_wrapper);
 }
 
+int
+pygobject_constructv(PyGObject  *self,
+                     guint       n_parameters,
+                     GParameter *parameters)
+{
+    if (self->obj == NULL) {
+        GObject *obj;
+        pygobject_init_wrapper_set((PyObject *) self);
+        obj = g_object_newv(pyg_type_from_object((PyObject *) self),
+                            n_parameters, parameters);
+        pygobject_sink (obj);
+        pygobject_init_wrapper_set(NULL);
+        if (self->obj == NULL) {
+            self->obj = obj;
+            pygobject_register_wrapper((PyObject *) self);
+        }
+    } else {
+        int i;
+        for (i = 0; i < n_parameters; ++i)
+            g_object_set_property(self->obj,
+                                 parameters[i].name,
+                                 &parameters[i].value);
+    }
+    return 0;
+}
+
 static void
 pygobject__g_instance_init(GTypeInstance   *instance,
                            gpointer         g_class)
@@ -1024,10 +1050,6 @@ pygobject__g_instance_init(GTypeInstance   *instance,
     GObject *object = (GObject *) instance;
     PyObject *wrapper, *args, *kwargs;
 
-    if (!g_type_get_qdata(G_OBJECT_TYPE(object),
-                         pygobject_has_updated_constructor_key))
-        return;
-
     wrapper = g_object_get_qdata(object, pygobject_wrapper_key);
     if (wrapper == NULL) {
         wrapper = pygobject_init_wrapper_get();
@@ -1044,11 +1066,16 @@ pygobject__g_instance_init(GTypeInstance   *instance,
         PyGILState_STATE state;
         state = pyglib_gil_state_ensure();
         wrapper = pygobject_new_full(object, FALSE, g_class);
+
+        /* float the wrapper ref here because we are going to orphan it
+         * so we don't destroy the wrapper. The next call to pygobject_new_full
+         * will take the ref */
+        pygobject_ref_float ((PyGObject *) wrapper);
         args = PyTuple_New(0);
         kwargs = PyDict_New();
         if (Py_TYPE(wrapper)->tp_init(wrapper, args, kwargs))
             PyErr_Print();
-        Py_DECREF(wrapper);
+
         Py_DECREF(args);
         Py_DECREF(kwargs);
         pyglib_gil_state_release(state);
@@ -1135,7 +1162,6 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
     guint n_parent_interfaces;
     GTypeQuery query;
     gpointer gclass;
-    gpointer has_new_constructor_api;
     GTypeInfo type_info = {
        0,    /* class_size */
 
@@ -1201,14 +1227,6 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
     PyObject_SetAttrString((PyObject *)class, "__gtype__", gtype);
     Py_DECREF(gtype);
 
-      /* propagate new constructor API compatility flag from parent to child type */
-    has_new_constructor_api =
-       g_type_get_qdata(parent_type,
-                        pygobject_has_updated_constructor_key);
-    if (has_new_constructor_api != NULL)
-        g_type_set_qdata(instance_type, pygobject_has_updated_constructor_key,
-                         has_new_constructor_api);
-
     /* if no __doc__, set it to the auto doc descriptor */
     if (PyDict_GetItemString(class->tp_dict, "__doc__") == NULL) {
        PyDict_SetItemString(class->tp_dict, "__doc__",
@@ -1733,6 +1751,7 @@ pyg_object_new (PyGObject *self, PyObject *args, PyObject *kwargs)
     g_type_class_unref(class);
 
     if (obj) {
+        pygobject_sink (obj);
        self = (PyGObject *) pygobject_new_full((GObject *)obj, FALSE, NULL);
         g_object_unref(obj);
     } else
@@ -1791,7 +1810,7 @@ pyg_threads_init (PyObject *unused, PyObject *args, PyObject *kwargs)
 }
 
 /* Only for backwards compatibility */
-int
+static int
 pygobject_enable_threads(void)
 {
     if (!pyglib_enable_threads())
@@ -1865,7 +1884,7 @@ out:
 static PyObject *
 pyg_add_emission_hook(PyGObject *self, PyObject *args)
 {
-    PyObject *first, *callback, *extra_args, *data;
+    PyObject *first, *callback, *extra_args, *data, *repr;
     gchar *name;
     gulong hook_id;
     guint sigid;
@@ -1897,9 +1916,11 @@ pyg_add_emission_hook(PyGObject *self, PyObject *args)
     }
 
     if (!g_signal_parse_name(name, gtype, &sigid, &detail, TRUE)) {
+       repr = PyObject_Repr((PyObject*)self);
        PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
-                       PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                       PYGLIB_PyUnicode_AsString(repr),
                     name);
+       Py_DECREF(repr);
        return NULL;
     }
     extra_args = PySequence_GetSlice(args, 3, len);
@@ -1921,7 +1942,7 @@ pyg_add_emission_hook(PyGObject *self, PyObject *args)
 static PyObject *
 pyg_remove_emission_hook(PyGObject *self, PyObject *args)
 {
-    PyObject *pygtype;
+    PyObject *pygtype, *repr;
     char *name;
     guint signal_id;
     gulong hook_id;
@@ -1936,9 +1957,11 @@ pyg_remove_emission_hook(PyGObject *self, PyObject *args)
     }
 
     if (!g_signal_parse_name(name, gtype, &signal_id, NULL, TRUE)) {
+       repr = PyObject_Repr((PyObject*)self);
        PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
-                 PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                 PYGLIB_PyUnicode_AsString(repr),
                  name);
+       Py_DECREF(repr);
        return NULL;
     }
 
@@ -2222,101 +2245,6 @@ pyg_parse_constructor_args(GType        obj_type,
     return TRUE;
 }
 
-int
-pygobject_constructv(PyGObject  *self,
-                     guint       n_parameters,
-                     GParameter *parameters)
-{
-    if (self->obj == NULL) {
-        GObject *obj;
-        pygobject_init_wrapper_set((PyObject *) self);
-        obj = g_object_newv(pyg_type_from_object((PyObject *) self),
-                            n_parameters, parameters);
-        pygobject_init_wrapper_set(NULL);
-        if (self->obj == NULL) {
-            self->obj = obj;
-            pygobject_register_wrapper((PyObject *) self);
-        }
-    } else {
-        int i;
-        for (i = 0; i < n_parameters; ++i)
-            g_object_set_property(self->obj,
-                                 parameters[i].name,
-                                 &parameters[i].value);
-    }
-    return 0;
-}
-
-/* This function is mostly juste copy-paste from g_object_new, but
- * calls pygobject_constructv instead of g_object_newv */
-int
-pygobject_construct(PyGObject *self, const char *first_property_name, ...)
-{
-    va_list var_args;
-    GObjectClass *class;
-    GParameter *params;
-    const gchar *name;
-    guint n_params = 0, n_alloced_params = 16;
-    GType object_type = pyg_type_from_object((PyObject *) self);
-    int retval;
-
-    if (!first_property_name)
-        return pygobject_constructv(self, 0, NULL);
-
-    va_start(var_args, first_property_name);
-    class = g_type_class_ref(object_type);
-
-    params = g_new(GParameter, n_alloced_params);
-    name = first_property_name;
-    while (name)
-    {
-        gchar *error = NULL;
-        GParamSpec *pspec = g_object_class_find_property(class, name);
-
-        if (!pspec)
-       {
-            g_warning("%s: object class `%s' has no property named `%s'",
-                      G_STRFUNC,
-                      g_type_name(object_type),
-                      name);
-            break;
-       }
-        if (n_params >= n_alloced_params)
-       {
-            n_alloced_params += 16;
-            params = g_renew(GParameter, params, n_alloced_params);
-       }
-        params[n_params].name = name;
-        params[n_params].value.g_type = 0;
-        g_value_init(&params[n_params].value, G_PARAM_SPEC_VALUE_TYPE(pspec));
-        G_VALUE_COLLECT(&params[n_params].value, var_args, 0, &error);
-        if (error)
-       {
-            g_warning("%s: %s", G_STRFUNC, error);
-            g_free(error);
-            g_value_unset(&params[n_params].value);
-            break;
-       }
-        n_params++;
-        name = va_arg(var_args, gchar*);
-    }
-
-    retval = pygobject_constructv(self, n_params, params);
-
-    while (n_params--)
-        g_value_unset(&params[n_params].value);
-    g_free(params);
-    va_end(var_args);
-    g_type_class_unref(class);
-    return retval;
-}
-
-void
-pyg_set_object_has_new_constructor(GType type)
-{
-    g_type_set_qdata(type, pygobject_has_updated_constructor_key, GINT_TO_POINTER(1));
-}
-
 PyObject *
 pyg_integer_richcompare(PyObject *v, PyObject *w, int op)
 {
@@ -2406,7 +2334,6 @@ disable_warning_redirections(void)
 struct _PyGObject_Functions pygobject_api_functions = {
   pygobject_register_class,
   pygobject_register_wrapper,
-  pygobject_register_sinkfunc,
   pygobject_lookup_class,
   pygobject_new,
 
@@ -2468,9 +2395,6 @@ struct _PyGObject_Functions pygobject_api_functions = {
   pyg_register_interface_info,
 
   pyg_closure_set_exception_handler,
-  pygobject_constructv,
-  pygobject_construct,
-  pyg_set_object_has_new_constructor,
 
   add_warning_redirection,
   disable_warning_redirections,
@@ -2521,16 +2445,8 @@ pygobject_register_constants(PyObject *m)
     PyModule_AddObject(m,       "G_MININT64", PyLong_FromLongLong(G_MININT64));
     PyModule_AddObject(m,       "G_MAXINT64", PyLong_FromLongLong(G_MAXINT64));
     PyModule_AddObject(m,       "G_MAXUINT64", PyLong_FromUnsignedLongLong(G_MAXUINT64));
-#if PY_VERSION_HEX < 0x02050000 /* 2.3, 2.4 */
-    PyModule_AddObject(m,       "G_MAXSIZE", PyLong_FromUnsignedLongLong(G_MAXSIZE));
-    PyModule_AddObject(m,       "G_MAXSSIZE", PyLong_FromUnsignedLongLong(G_MAXSSIZE));
-#elif PY_VERSION_HEX < 0x02060000 /* 2.5 */
-    PyModule_AddObject(m,       "G_MAXSIZE", PYGLIB_PyLong_FromSize_t(G_MAXSIZE));
-    PyModule_AddObject(m,       "G_MAXSSIZE", PYGLIB_PyLong_FromSsize_t(G_MAXSSIZE));
-#else /* 2.6+ */
     PyModule_AddObject(m,       "G_MAXSIZE", PyLong_FromSize_t(G_MAXSIZE));
     PyModule_AddObject(m,       "G_MAXSSIZE", PyLong_FromSsize_t(G_MAXSSIZE));
-#endif
     PyModule_AddObject(m,       "G_MINOFFSET", PyLong_FromLongLong(G_MINOFFSET));
     PyModule_AddObject(m,       "G_MAXOFFSET", PyLong_FromLongLong(G_MAXOFFSET));
 
@@ -2567,9 +2483,7 @@ pygobject_register_features(PyObject *d)
     PyObject *features;
 
     features = PyDict_New();
-#ifdef HAVE_FFI_H
     PyDict_SetItemString(features, "generic-c-marshaller", Py_True);
-#endif
     PyDict_SetItemString(d, "features", features);
     Py_DECREF(features);
 }
@@ -2585,10 +2499,6 @@ pygobject_register_version_tuples(PyObject *d)
                           PYGOBJECT_MINOR_VERSION,
                           PYGOBJECT_MICRO_VERSION);
     PyDict_SetItemString(d, "pygobject_version", tuple);
-
-    /* backwards compatibility */
-    PyDict_SetItemString(d, "pygtk_version", tuple);
-    Py_DECREF(tuple);
 }
 
 static void
@@ -2604,7 +2514,7 @@ pygobject_register_warnings(PyObject *d)
 }
 
 
-PYGLIB_MODULE_START(_gobject, "gobject._gobject")
+PYGLIB_MODULE_START(_gobject, "_gobject")
 {
     PyObject *d;
 
similarity index 54%
rename from gobject/propertyhelper.py
rename to gi/_gobject/propertyhelper.py
index 9643c82..82b06b0 100644 (file)
 
 import sys
 
-import gobject._gobject
-_gobject = sys.modules['gobject._gobject']
-
-from gobject.constants import \
-     TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR, \
-     TYPE_BOOLEAN, TYPE_INT, TYPE_UINT, TYPE_LONG, \
-     TYPE_ULONG, TYPE_INT64, TYPE_UINT64, TYPE_ENUM, \
-     TYPE_FLAGS, TYPE_FLOAT, TYPE_DOUBLE, TYPE_STRING, \
-     TYPE_POINTER, TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, \
-     TYPE_PYOBJECT
-from gobject.constants import \
-     G_MINFLOAT, G_MAXFLOAT, G_MINDOUBLE, G_MAXDOUBLE, \
-     G_MININT, G_MAXINT, G_MAXUINT, G_MINLONG, G_MAXLONG, \
-     G_MAXULONG
+from . import _gobject
+
+from .constants import \
+    TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR, \
+    TYPE_BOOLEAN, TYPE_INT, TYPE_UINT, TYPE_LONG, \
+    TYPE_ULONG, TYPE_INT64, TYPE_UINT64, TYPE_ENUM, TYPE_FLAGS, \
+    TYPE_FLOAT, TYPE_DOUBLE, TYPE_STRING, \
+    TYPE_POINTER, TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, \
+    TYPE_PYOBJECT, TYPE_GTYPE, TYPE_STRV
+from .constants import \
+    G_MAXFLOAT, G_MAXDOUBLE, \
+    G_MININT, G_MAXINT, G_MAXUINT, G_MINLONG, G_MAXLONG, \
+    G_MAXULONG
 
 if sys.version_info >= (3, 0):
     _basestring = str
@@ -43,13 +42,14 @@ else:
     _basestring = basestring
     _long = long
 
-class property(object):
+
+class Property(object):
     """
     Creates a new property which in conjunction with GObject subclass will
     create a property proxy:
 
-    >>> class MyObject(gobject.GObject):
-    >>> ... prop = gobject.property(type=str)
+    >>> class MyObject(GObject.GObject):
+    >>> ... prop = GObject.Property(type=str)
 
     >>> obj = MyObject()
     >>> obj.prop = 'value'
@@ -59,17 +59,69 @@ class property(object):
 
     The API is similar to the builtin property:
 
-    class AnotherObject(gobject.GObject):
-        @gobject.property
+    class AnotherObject(GObject.GObject):
+        @GObject.Property
         def prop(self):
+            '''Read only property.'''
+            return ...
+
+        @GObject.Property(type=int)
+        def propInt(self):
+            '''Read-write integer property.'''
             return ...
 
-    Which will create a read-only property called prop.
+        @propInt.setter
+        def propInt(self, value):
+            ...
     """
+    _type_from_pytype_lookup = {
+        # Put long_ first in case long_ and int are the same so int clobbers long_
+        _long: TYPE_LONG,
+        int: TYPE_INT,
+        bool: TYPE_BOOLEAN,
+        float: TYPE_DOUBLE,
+        str: TYPE_STRING,
+        object: TYPE_PYOBJECT,
+    }
+
+    _min_value_lookup = {
+        TYPE_UINT: 0,
+        TYPE_ULONG: 0,
+        TYPE_UINT64: 0,
+        # Remember that G_MINFLOAT and G_MINDOUBLE are something different.
+        TYPE_FLOAT: -G_MAXFLOAT,
+        TYPE_DOUBLE: -G_MAXDOUBLE,
+        TYPE_INT: G_MININT,
+        TYPE_LONG: G_MINLONG,
+        TYPE_INT64: -2 ** 62 - 1,
+    }
+
+    _max_value_lookup = {
+        TYPE_UINT: G_MAXUINT,
+        TYPE_ULONG: G_MAXULONG,
+        TYPE_INT64: 2 ** 62 - 1,
+        TYPE_UINT64: 2 ** 63 - 1,
+        TYPE_FLOAT: G_MAXFLOAT,
+        TYPE_DOUBLE: G_MAXDOUBLE,
+        TYPE_INT: G_MAXINT,
+        TYPE_LONG: G_MAXLONG,
+    }
+
+    _default_lookup = {
+        TYPE_INT: 0,
+        TYPE_UINT: 0,
+        TYPE_LONG: 0,
+        TYPE_ULONG: 0,
+        TYPE_INT64: 0,
+        TYPE_UINT64: 0,
+        TYPE_STRING: '',
+        TYPE_FLOAT: 0.0,
+        TYPE_DOUBLE: 0.0,
+    }
 
     class __metaclass__(type):
         def __repr__(self):
-            return "<class 'gobject.property'>"
+            return "<class 'GObject.Property'>"
 
     def __init__(self, getter=None, setter=None, type=None, default=None,
                  nick='', blurb='', flags=_gobject.PARAM_READWRITE,
@@ -83,7 +135,7 @@ class property(object):
         @type     type: type
         @param default: default value
         @param    nick: short description
-        @type     bick: string
+        @type     nick: string
         @param   blurb: long description
         @type    blurb: string
         @param flags:    parameter flags, one of:
@@ -97,16 +149,6 @@ class property(object):
         @keyword maximum:  maximum allowed value (int, float, long only)
         """
 
-        if getter and not setter:
-            setter = self._readonly_setter
-        elif setter and not getter:
-            getter = self._writeonly_getter
-        elif not setter and not getter:
-            getter = self._default_getter
-            setter = self._default_setter
-        self.getter = getter
-        self.setter = setter
-
         if type is None:
             type = object
         self.type = self._type_from_python(type)
@@ -125,6 +167,17 @@ class property(object):
             raise TypeError("invalid flag value: %r" % (flags,))
         self.flags = flags
 
+        # Call after setting blurb for potential __doc__ usage.
+        if getter and not setter:
+            setter = self._readonly_setter
+        elif setter and not getter:
+            getter = self._writeonly_getter
+        elif not setter and not getter:
+            getter = self._default_getter
+            setter = self._default_setter
+        self.getter(getter)
+        self.setter(setter)
+
         if minimum is not None:
             if minimum < self._get_minimum():
                 raise TypeError(
@@ -147,7 +200,7 @@ class property(object):
         self._exc = None
 
     def __repr__(self):
-        return '<gobject property %s (%s)>' % (
+        return '<GObject Property %s (%s)>' % (
             self.name or '(uninitialized)',
             _gobject.type_name(self.type))
 
@@ -175,45 +228,47 @@ class property(object):
             self._exc = None
             raise exc
 
+    def __call__(self, fget):
+        """Allows application of the getter along with init arguments."""
+        return self.getter(fget)
+
+    def getter(self, fget):
+        """Set the getter function to fget. For use as a decorator."""
+        if self.__doc__ is None:
+            self.__doc__ = fget.__doc__
+        if not self.blurb and fget.__doc__:
+            self.blurb = fget.__doc__
+        self.fget = fget
+        return self
+
+    def setter(self, fset):
+        """Set the setter function to fset. For use as a decorator."""
+        self.fset = fset
+        return self
+
     def _type_from_python(self, type_):
-        if type_ == _long:
-            return TYPE_LONG
-        elif type_ == int:
-            return TYPE_INT
-        elif type_ == bool:
-            return TYPE_BOOLEAN
-        elif type_ == float:
-            return TYPE_DOUBLE
-        elif type_ == str:
-            return TYPE_STRING
-        elif type_ == object:
-            return TYPE_PYOBJECT
-        elif isinstance(type_, type) and issubclass(type_, _gobject.GObject):
+        if type_ in self._type_from_pytype_lookup:
+            return self._type_from_pytype_lookup[type_]
+        elif (isinstance(type_, type) and
+              issubclass(type_, (_gobject.GObject,
+                                 _gobject.GEnum,
+                                 _gobject.GFlags,
+                                 _gobject.GBoxed))):
             return type_.__gtype__
-        elif type_ in [TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR,
-                      TYPE_INT, TYPE_UINT, TYPE_BOOLEAN, TYPE_LONG,
-                      TYPE_ULONG, TYPE_INT64, TYPE_UINT64, TYPE_ENUM,
-                      TYPE_FLAGS, TYPE_FLOAT, TYPE_DOUBLE, TYPE_POINTER,
-                      TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, TYPE_STRING,
-                      TYPE_PYOBJECT]:
+        elif type_ in (TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR,
+                       TYPE_INT, TYPE_UINT, TYPE_BOOLEAN, TYPE_LONG,
+                       TYPE_ULONG, TYPE_INT64, TYPE_UINT64,
+                       TYPE_FLOAT, TYPE_DOUBLE, TYPE_POINTER,
+                       TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, TYPE_STRING,
+                       TYPE_PYOBJECT, TYPE_GTYPE, TYPE_STRV):
             return type_
         else:
             raise TypeError("Unsupported type: %r" % (type_,))
 
     def _get_default(self, default):
-        ptype = self.type
         if default is not None:
             return default
-
-        if ptype in [TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG,
-                     TYPE_INT64, TYPE_UINT64]:
-            return 0
-        elif ptype == TYPE_STRING:
-            return ''
-        elif ptype == TYPE_FLOAT or ptype == TYPE_DOUBLE:
-            return 0.0
-        else:
-            return None
+        return self._default_lookup.get(self.type, None)
 
     def _check_default(self):
         ptype = self.type
@@ -224,55 +279,41 @@ class property(object):
         elif ptype == TYPE_PYOBJECT:
             if default is not None:
                 raise TypeError("object types does not have default values")
+        elif ptype == TYPE_GTYPE:
+            if default is not None:
+                raise TypeError("GType types does not have default values")
+        elif _gobject.type_is_a(ptype, TYPE_ENUM):
+            if default is None:
+                raise TypeError("enum properties needs a default value")
+            elif not _gobject.type_is_a(default, ptype):
+                raise TypeError("enum value %s must be an instance of %r" %
+                                (default, ptype))
+        elif _gobject.type_is_a(ptype, TYPE_FLAGS):
+            if not _gobject.type_is_a(default, ptype):
+                raise TypeError("flags value %s must be an instance of %r" %
+                                (default, ptype))
+        elif _gobject.type_is_a(ptype, TYPE_STRV) and default is not None:
+            if not isinstance(default, list):
+                raise TypeError("Strv value %s must be a list" % repr(default))
+            for val in default:
+                if type(val) not in (str, bytes):
+                    raise TypeError("Strv value %s must contain only strings" % str(default))
 
     def _get_minimum(self):
-        ptype = self.type
-        if ptype in [TYPE_UINT, TYPE_ULONG, TYPE_UINT64]:
-            return 0
-        # Remember that G_MINFLOAT and G_MINDOUBLE are something different.
-        elif ptype == TYPE_FLOAT:
-            return -G_MAXFLOAT
-        elif ptype == TYPE_DOUBLE:
-            return -G_MAXDOUBLE
-        elif ptype == TYPE_INT:
-            return G_MININT
-        elif ptype == TYPE_LONG:
-            return G_MINLONG
-        elif ptype == TYPE_INT64:
-            return -2 ** 62 - 1
-
-        return None
+        return self._min_value_lookup.get(self.type, None)
 
     def _get_maximum(self):
-        ptype = self.type
-        if ptype == TYPE_UINT:
-            return G_MAXUINT
-        elif ptype == TYPE_ULONG:
-            return G_MAXULONG
-        elif ptype == TYPE_INT64:
-            return 2 ** 62 - 1
-        elif ptype == TYPE_UINT64:
-            return 2 ** 63 - 1
-        elif ptype == TYPE_FLOAT:
-            return G_MAXFLOAT
-        elif ptype == TYPE_DOUBLE:
-            return G_MAXDOUBLE
-        elif ptype == TYPE_INT:
-            return G_MAXINT
-        elif ptype == TYPE_LONG:
-            return G_MAXLONG
-
-        return None
+        return self._max_value_lookup.get(self.type, None)
 
     #
     # Getter and Setter
     #
 
     def _default_setter(self, instance, value):
-        setattr(instance, '_property_helper_'+self.name, value)
+        setattr(instance, '_property_helper_' + self.name, value)
 
     def _default_getter(self, instance):
-        return getattr(instance, '_property_helper_'+self.name, self.default)
+        return getattr(instance, '_property_helper_' + self.name, self.default)
 
     def _readonly_setter(self, instance, value):
         self._exc = TypeError("%s property of %s is read-only" % (
@@ -288,14 +329,15 @@ class property(object):
 
     def get_pspec_args(self):
         ptype = self.type
-        if ptype in [TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG,
-                     TYPE_INT64, TYPE_UINT64, TYPE_FLOAT, TYPE_DOUBLE]:
-            args = self._get_minimum(), self._get_maximum(), self.default
-        elif ptype == TYPE_STRING or ptype == TYPE_BOOLEAN:
+        if ptype in (TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG,
+                     TYPE_INT64, TYPE_UINT64, TYPE_FLOAT, TYPE_DOUBLE):
+            args = self.minimum, self.maximum, self.default
+        elif (ptype == TYPE_STRING or ptype == TYPE_BOOLEAN or
+              ptype.is_a(TYPE_ENUM) or ptype.is_a(TYPE_FLAGS)):
             args = (self.default,)
-        elif ptype == TYPE_PYOBJECT:
+        elif ptype in (TYPE_PYOBJECT, TYPE_GTYPE):
             args = ()
-        elif ptype.is_a(TYPE_OBJECT):
+        elif ptype.is_a(TYPE_OBJECT) or ptype.is_a(TYPE_BOXED):
             args = ()
         else:
             raise NotImplementedError(ptype)
similarity index 98%
rename from gobject/pygboxed.c
rename to gi/_gobject/pygboxed.c
index a00386b..541e77b 100644 (file)
@@ -50,7 +50,8 @@ pyg_boxed_dealloc(PyGBoxed *self)
 static PyObject*
 pyg_boxed_richcompare(PyObject *self, PyObject *other, int op)
 {
-    if (Py_TYPE(self) == Py_TYPE(other) && Py_TYPE(self) == &PyGBoxed_Type)
+    if (Py_TYPE(self) == Py_TYPE(other) &&
+        PyObject_IsInstance(self, (PyObject*)&PyGBoxed_Type))
         return _pyglib_generic_ptr_richcompare(((PyGBoxed*)self)->boxed,
                                                ((PyGBoxed*)other)->boxed,
                                                op);
similarity index 100%
rename from gobject/pygboxed.h
rename to gi/_gobject/pygboxed.h
similarity index 95%
rename from gobject/pygenum.c
rename to gi/_gobject/pygenum.c
index c0a51a9..9c3c455 100644 (file)
 
 #include <pyglib.h>
 #include "pygobject-private.h"
-
 #include "pygi.h"
 
+#include "pygenum.h"
+
 GQuark pygenum_class_key;
 
 PYGLIB_DEFINE_TYPE("gobject.GEnum", PyGEnum_Type, PyGEnum);
 
 static PyObject *
 pyg_enum_val_new(PyObject* subclass, GType gtype, PyObject *intval)
-{     
-    PyObject *item;
-    
-#if PY_VERSION_HEX >= 0x03000000
-    item = PyObject_CallMethod((PyObject*)&PyLong_Type, "__new__", "OO",
-                               subclass, intval);
-#else
-    item = ((PyTypeObject *)subclass)->tp_alloc((PyTypeObject *)subclass, 0);
-    ((PyIntObject*)item)->ob_ival = PyInt_AS_LONG(intval);
-#endif    
+{
+    PyObject *args, *item;
+    args = Py_BuildValue("(O)", intval);
+    item =  (&PYGLIB_PyLong_Type)->tp_new((PyTypeObject*)subclass, args, NULL);
+    Py_DECREF(args);
+    if (!item)
+       return NULL;
     ((PyGEnum*)item)->gtype = gtype;
-    
+
     return item;
 }
 
@@ -202,6 +200,10 @@ pyg_enum_from_gtype (GType gtype, int value)
     return retval;
 }
 
+/*
+ * pyg_enum_add
+ * Dynamically create a class derived from PyGEnum based on the given GType.
+ */
 PyObject *
 pyg_enum_add (PyObject *   module,
              const char * typename,
@@ -222,6 +224,9 @@ pyg_enum_add (PyObject *   module,
 
     state = pyglib_gil_state_ensure();
 
+    /* Create a new type derived from GEnum. This is the same as:
+     * >>> stub = type(typename, (GEnum,), {})
+     */
     instance_dict = PyDict_New();
     stub = PyObject_CallFunction((PyObject *)&PyType_Type, "s(O)O",
                                  typename, (PyObject *)&PyGEnum_Type,
@@ -354,7 +359,7 @@ pygobject_enum_register_types(PyObject *d)
     PyGEnum_Type.tp_new = pyg_enum_new;
 #else
     PyGEnum_Type.tp_new = PyLong_Type.tp_new;
-    PyGEnum_Type.tp_hash = PyLong_Type.tp_hash;    
+    PyGEnum_Type.tp_hash = PyLong_Type.tp_hash;
 #endif
     PyGEnum_Type.tp_repr = (reprfunc)pyg_enum_repr;
     PyGEnum_Type.tp_str = (reprfunc)pyg_enum_repr;
similarity index 100%
rename from gobject/pygenum.h
rename to gi/_gobject/pygenum.h
similarity index 97%
rename from gobject/pygflags.c
rename to gi/_gobject/pygflags.c
index 8c00f15..bad32c6 100644 (file)
@@ -37,18 +37,15 @@ PYGLIB_DEFINE_TYPE("gobject.GFlags", PyGFlags_Type, PyGFlags);
 
 static PyObject *
 pyg_flags_val_new(PyObject* subclass, GType gtype, PyObject *intval)
-{     
-    PyObject *item;
-    
-#if PY_VERSION_HEX >= 0x03000000
-    item = PyObject_CallMethod((PyObject*)&PyLong_Type, "__new__", "OO",
-                               subclass, intval);
-#else
-    item = ((PyTypeObject *)subclass)->tp_alloc((PyTypeObject *)subclass, 0);
-    ((PyIntObject*)item)->ob_ival = PyInt_AS_LONG(intval);
-#endif    
-    ((PyGFlags*)item)->gtype = gtype;
-    
+{
+    PyObject *args, *item;
+    args = Py_BuildValue("(O)", intval);
+    item =  (&PYGLIB_PyLong_Type)->tp_new((PyTypeObject*)subclass, args, NULL);
+    Py_DECREF(args);
+    if (!item)
+       return NULL;
+    ((PyGEnum*)item)->gtype = gtype;
+
     return item;
 }
 
similarity index 100%
rename from gobject/pygflags.h
rename to gi/_gobject/pygflags.h
similarity index 99%
rename from gobject/pyginterface.c
rename to gi/_gobject/pyginterface.c
index 29af546..eb76ba0 100644 (file)
@@ -28,6 +28,8 @@
 #include "pyglib.h"
 #include "pygobject-private.h"
 
+#include "pyginterface.h"
+
 GQuark pyginterface_type_key;
 GQuark pyginterface_info_key;
 
similarity index 95%
rename from gobject/pygobject-private.h
rename to gi/_gobject/pygobject-private.h
index 6f3a25e..1b1d6db 100644 (file)
@@ -89,10 +89,6 @@ gboolean pyg_error_check      (GError     **error);
 int      pygobject_constructv (PyGObject   *self,
                                guint        n_parameters,
                                GParameter  *parameters);
-int      pygobject_construct  (PyGObject   *self,
-                               const char  *first_property_name,
-                               ...);
-void     pyg_set_object_has_new_constructor (GType gtype);
 
 PyObject *pyg_integer_richcompare(PyObject *v,
                                   PyObject *w,
@@ -100,6 +96,9 @@ PyObject *pyg_integer_richcompare(PyObject *v,
 
 gboolean pyg_gerror_exception_check(GError **error);
 
+void pygobject_ref_float(PyGObject *self);
+void pygobject_ref_sink(PyGObject *self);
+
 /* from pygtype.h */
 extern PyTypeObject PyGTypeWrapper_Type;
 
@@ -156,7 +155,6 @@ void          pygobject_register_class   (PyObject *dict,
 void          pygobject_register_wrapper (PyObject *self);
 PyObject *    pygobject_new              (GObject *obj);
 PyObject *    pygobject_new_full         (GObject *obj, gboolean sink, gpointer g_class);
-PyObject *    pygobject_new_sunk         (GObject *obj);
 void          pygobject_sink             (GObject *obj);
 PyTypeObject *pygobject_lookup_class     (GType gtype);
 void          pygobject_watch_closure    (PyObject *self, GClosure *closure);
@@ -189,7 +187,7 @@ typedef struct {
 
 extern PyTypeObject PyGFlags_Type;
 
-#define PyGFlags_Check(x) (g_type_is_a(((PyGFlags*)x)->gtype, G_TYPE_FLAGS))
+#define PyGFlags_Check(x) (PyObject_IsInstance((PyObject *)x, (PyObject *)&PyGFlags_Type) && g_type_is_a(((PyGFlags*)x)->gtype, G_TYPE_FLAGS))
 
 extern PyObject * pyg_flags_add        (PyObject *   module,
                                        const char * type_name,
@@ -199,7 +197,7 @@ extern PyObject * pyg_flags_from_gtype (GType        gtype,
                                        int          value);
 
 /* pygenum */
-#define PyGEnum_Check(x) (g_type_is_a(((PyGFlags*)x)->gtype, G_TYPE_ENUM))
+#define PyGEnum_Check(x) (PyObject_IsInstance((PyObject *)x, (PyObject *)&PyGEnum_Type) && g_type_is_a(((PyGFlags*)x)->gtype, G_TYPE_ENUM))
 
 typedef struct {
        PYGLIB_PyLongObject parent;
similarity index 82%
rename from gobject/pygobject.c
rename to gi/_gobject/pygobject.c
index 6c2f06c..fd6bd4b 100644 (file)
@@ -38,8 +38,8 @@ static int  pygobject_clear(PyGObject *self);
 static PyObject * pyg_type_get_bases(GType gtype);
 static inline int pygobject_clear(PyGObject *self);
 static PyObject * pygobject_weak_ref_new(GObject *obj, PyObject *callback, PyObject *user_data);
+static PyObject * pygbinding_weak_ref_new(GObject *obj);
 static inline PyGObjectData * pyg_object_peek_inst_data(GObject *obj);
-static PyObject * pygobject_weak_ref_new(GObject *obj, PyObject *callback, PyObject *user_data);
 static void pygobject_inherit_slots(PyTypeObject *type, PyObject *bases,
                                    gboolean check_for_present);
 static void pygobject_find_slot_for(PyTypeObject *type, PyObject *bases, int slot_offset,
@@ -50,7 +50,6 @@ GQuark pygobject_class_init_key;
 GQuark pygobject_wrapper_key;
 GQuark pygobject_has_updated_constructor_key;
 GQuark pygobject_instance_data_key;
-GQuark pygobject_ref_sunk_key;
 
 
 /* -------------- class <-> wrapper manipulation --------------- */
@@ -58,15 +57,28 @@ GQuark pygobject_ref_sunk_key;
 void
 pygobject_data_free(PyGObjectData *data)
 {
-    PyGILState_STATE state = pyglib_gil_state_ensure();
+    /* This function may be called after the python interpreter has already
+     * been shut down. If this happens, we cannot do any python calls, so just
+     * free the memory. */
+    PyGILState_STATE state;
+    PyThreadState *_save = NULL;
+
     GSList *closures, *tmp;
-    Py_DECREF(data->type);
+
+    if (Py_IsInitialized()) {
+       state = pyglib_gil_state_ensure();
+       Py_DECREF(data->type);
+       /* We cannot use pyg_begin_allow_threads here because this is inside
+        * a branch. */
+       if (pyg_threads_enabled)
+           _save = PyEval_SaveThread();
+    }
+
     tmp = closures = data->closures;
 #ifndef NDEBUG
     data->closures = NULL;
     data->type = NULL;
 #endif
-    pyg_begin_allow_threads;
     while (tmp) {
        GClosure *closure = tmp->data;
  
@@ -75,13 +87,17 @@ pygobject_data_free(PyGObjectData *data)
        tmp = tmp->next;
        g_closure_invalidate(closure);
     }
-    pyg_end_allow_threads;
  
     if (data->closures != NULL)
        g_warning("invalidated all closures, but data->closures != NULL !");
 
     g_free(data);
-    pyglib_gil_state_release(state);
+
+    if (Py_IsInitialized()) {
+       if (pyg_threads_enabled)
+           PyEval_RestoreThread(_save);
+       pyglib_gil_state_release(state);
+    }
 }
 
 static inline PyGObjectData *
@@ -114,12 +130,6 @@ pygobject_get_inst_data(PyGObject *self)
 }
 
 
-typedef struct {
-    GType type;
-    void (* sinkfunc)(GObject *object);
-} SinkFunc;
-static GArray *sink_funcs = NULL;
-
 GHashTable *custom_type_registration = NULL;
 
 PyTypeObject *PyGObject_MetaType = NULL;
@@ -136,66 +146,15 @@ PyTypeObject *PyGObject_MetaType = NULL;
 void
 pygobject_sink(GObject *obj)
 {
-    gboolean sunk = FALSE;
-
-    /* We use a gobject data key to avoid running the sink funcs more than once. */
-    if (g_object_get_qdata (obj, pygobject_ref_sunk_key))
-        return;
-
-    if (sink_funcs) {
-       gint i;
-
-       for (i = 0; i < sink_funcs->len; i++) {
-           if (g_type_is_a(G_OBJECT_TYPE(obj),
-                           g_array_index(sink_funcs, SinkFunc, i).type)) {
-               g_array_index(sink_funcs, SinkFunc, i).sinkfunc(obj);
-
-               sunk = TRUE;
-                break;
-           }
-       }
-    }
-
-    if (!sunk && G_IS_INITIALLY_UNOWNED (obj))
+    /* The default behaviour for GInitiallyUnowned subclasses is to call ref_sink().
+     * - if the object is new and owned by someone else, its ref has been sunk and
+     *   we need to keep the one from that someone and add our own "fresh ref"
+     * - if the object is not and owned by nobody, its ref is floating and we need
+     *   to transform it into a regular ref.
+     */
+    if (G_IS_INITIALLY_UNOWNED(obj)) {
         g_object_ref_sink(obj);
-
-    g_object_set_qdata (obj, pygobject_ref_sunk_key, GINT_TO_POINTER (1));
-}
-
-/**
- * pygobject_register_sinkfunc:
- * type: the GType the sink function applies to.
- * sinkfunc: a function to remove the floating reference on an object.
- *
- * As Python handles reference counting for us, the "floating
- * reference" code in GTK is not all that useful.  In fact, it can
- * cause leaks.  For this reason, PyGTK removes the floating
- * references on objects on construction.
- *
- * The sinkfunc should be able to remove the floating reference on
- * instances of the given type, or any subclasses.
- *
- * Deprecated: Since 2.22, sinkfuncs are not needed.
- */
-void
-pygobject_register_sinkfunc(GType type, void (* sinkfunc)(GObject *object))
-{
-    SinkFunc sf;
-
-    g_message ("pygobject_register_sinkfunc is deprecated (%s)",
-               g_type_name(type));
-
-#if 0
-    g_return_if_fail(G_TYPE_IS_OBJECT(type));
-#endif
-    g_return_if_fail(sinkfunc != NULL);
-    
-    if (!sink_funcs)
-       sink_funcs = g_array_new(FALSE, FALSE, sizeof(SinkFunc));
-
-    sf.type = type;
-    sf.sinkfunc = sinkfunc;
-    g_array_append_val(sink_funcs, sf);
+    }
 }
 
 typedef struct {
@@ -205,7 +164,7 @@ typedef struct {
     guint index;
 } PyGPropsIter;
 
-PYGLIB_DEFINE_TYPE("gobject.GPropsIter", PyGPropsIter_Type, PyGPropsIter);
+PYGLIB_DEFINE_TYPE("gi._gobject.GPropsIter", PyGPropsIter_Type, PyGPropsIter);
 
 static void
 pyg_props_iter_dealloc(PyGPropsIter *self)
@@ -365,7 +324,7 @@ set_property_from_pspec(GObject *obj,
     return TRUE;
 }
 
-PYGLIB_DEFINE_TYPE("gobject.GProps", PyGProps_Type, PyGProps);
+PYGLIB_DEFINE_TYPE("gi._gobject.GProps", PyGProps_Type, PyGProps);
 
 static int
 PyGProps_setattro(PyGProps *self, PyObject *attr, PyObject *pvalue)
@@ -459,7 +418,7 @@ static PySequenceMethods _PyGProps_as_sequence = {
     0
 };
 
-PYGLIB_DEFINE_TYPE("gobject.GPropsDescr", PyGPropsDescr_Type, PyObject);
+PYGLIB_DEFINE_TYPE("gi._gobject.GPropsDescr", PyGPropsDescr_Type, PyObject);
 
 static PyObject *
 pyg_props_descr_descr_get(PyObject *self, PyObject *obj, PyObject *type)
@@ -618,6 +577,31 @@ pygobject_switch_to_toggle_ref(PyGObject *self)
     g_object_unref(self->obj);
 }
 
+/* Called when an custom gobject is initalized via g_object_new instead of
+   its constructor.  The next time the wrapper is access via 
+   pygobject_new_full it will sink the floating reference instead of
+   adding a new reference and causing a leak */
+void
+pygobject_ref_float(PyGObject *self)
+{
+    /* should only be floated once */
+    g_assert(!(self->private_flags.flags & PYGOBJECT_IS_FLOATING_REF));
+    
+    self->private_flags.flags |= PYGOBJECT_IS_FLOATING_REF;
+}
+
+/* Called by gobject_new_full, if the floating flag is set remove it, otherwise
+   ref the pyobject */
+void
+pygobject_ref_sink(PyGObject *self)
+{
+    if (self->private_flags.flags & PYGOBJECT_IS_FLOATING_REF)
+        self->private_flags.flags &= ~PYGOBJECT_IS_FLOATING_REF;
+    else
+        Py_INCREF ( (PyObject *) self);
+}
+
 /**
  * pygobject_register_wrapper:
  * @self: the wrapper instance
@@ -637,7 +621,6 @@ pygobject_register_wrapper(PyObject *self)
 
     gself = (PyGObject *)self;
 
-    pygobject_sink(gself->obj);
     g_assert(gself->obj->ref_count >= 1);
       /* save wrapper pointer so we can access it later */
     g_object_set_qdata_full(gself->obj, pygobject_wrapper_key, gself, NULL);
@@ -688,7 +671,7 @@ pyg_type_get_bases(GType gtype)
  *
  * Returns: a PyTypeObject for the new type or NULL if it couldn't be created
  */
-PyTypeObject *
+static PyTypeObject *
 pygobject_new_with_interfaces(GType gtype)
 {
     PyGILState_STATE state;
@@ -947,7 +930,7 @@ pygobject_new_full(GObject *obj, gboolean sink, gpointer g_class)
     /* we already have a wrapper for this object -- return it. */
     self = (PyGObject *)g_object_get_qdata(obj, pygobject_wrapper_key);
     if (self != NULL) {
-       Py_INCREF(self);
+       pygobject_ref_sink(self);
     } else {
        /* create wrapper */
         PyGObjectData *inst_data = pyg_object_peek_inst_data(obj);
@@ -973,7 +956,9 @@ pygobject_new_full(GObject *obj, gboolean sink, gpointer g_class)
        self->weakreflist = NULL;
        self->private_flags.flags = 0;
        self->obj = obj;
-       g_object_ref(obj);
+        /* if we are creating a wrapper around a newly created object, it can have
+           a floating ref (e.g. for methods like Gtk.Button.new()). Bug 640868 */
+       g_object_ref_sink(obj);
        pygobject_register_wrapper((PyObject *)self);
        PyObject_GC_Track((PyObject *)self);
     }
@@ -988,13 +973,6 @@ pygobject_new(GObject *obj)
     return pygobject_new_full(obj, TRUE, NULL);
 }
 
-PyObject *
-pygobject_new_sunk(GObject *obj)
-{
-    g_object_set_qdata (obj, pygobject_ref_sunk_key, GINT_TO_POINTER (1));
-    return pygobject_new_full(obj, TRUE, NULL);
-}
-
 static void
 pygobject_unwatch_closure(gpointer data, GClosure *closure)
 {
@@ -1032,9 +1010,119 @@ pygobject_watch_closure(PyObject *self, GClosure *closure)
     g_closure_add_invalidate_notifier(closure, data, pygobject_unwatch_closure);
 }
 
+
+/* -------------- Freeze Notify Context Manager ----------------- */
+
+/**
+ * pygcontext_manager_enter
+ * @self: Freeze or Block context instance
+ *
+ * Method used for __enter__ on both GContextFeezeNotify and
+ * GContextHandlerBlock. Does nothing since this is an object returned
+ * by the freeze_notify() and handler_block() methods which do the actual
+ * work of freezing and blocking.
+ */
+static PyObject *
+pygcontext_manager_enter(PyObject *self)
+{
+       Py_INCREF(self);
+       return self;
+}
+
+typedef struct {
+    PyObject_HEAD
+    GObject *obj;
+} PyGContextFreezeNotify;
+
+PYGLIB_DEFINE_TYPE("gi._gobject.GContextFreezeNotify",
+               PyGContextFreezeNotify_Type, PyGContextFreezeNotify);
+
+static PyObject *
+pygcontext_freeze_notify_new(GObject *gobj)
+{
+       PyGContextFreezeNotify *context;
+
+       context = PyObject_New(PyGContextFreezeNotify, &PyGContextFreezeNotify_Type);
+       if (context == NULL)
+               return NULL;
+
+       g_object_ref(gobj);
+       context->obj = gobj;
+       return (PyObject*)context;
+}
+
+static void
+pygcontext_freeze_notify_dealloc(PyGContextFreezeNotify* self)
+{
+    g_object_unref(self->obj);
+    self->obj = NULL;
+    PyObject_Del((PyObject*)self);
+}
+
+static PyObject *
+pygcontext_freeze_notify_exit(PyGContextFreezeNotify *self, PyObject *args)
+{
+       g_object_thaw_notify(self->obj);
+       Py_RETURN_NONE;
+}
+
+static PyMethodDef pygcontext_freeze_notify_methods[] = {
+       {"__enter__", (PyCFunction)pygcontext_manager_enter, METH_NOARGS, ""},
+       {"__exit__", (PyCFunction)pygcontext_freeze_notify_exit, METH_VARARGS, ""},
+    {NULL}
+};
+
+/* -------------- Handler Block Context Manager ----------------- */
+typedef struct {
+    PyObject_HEAD
+    GObject *obj;
+    gulong handler_id;
+} PyGContextHandlerBlock;
+
+PYGLIB_DEFINE_TYPE("gi._gobject.GContextHandlerBlock",
+               PyGContextHandlerBlock_Type, PyGContextHandlerBlock);
+
+static PyObject *
+pygcontext_handler_block_new(GObject *gobj, gulong handler_id)
+{
+       PyGContextHandlerBlock *context;
+
+       context = PyObject_New(PyGContextHandlerBlock, &PyGContextHandlerBlock_Type);
+       if (context == NULL)
+               return NULL;
+
+       g_object_ref(gobj);
+       context->obj = gobj;
+       context->handler_id = handler_id;
+       return (PyObject*)context;
+}
+
+static void
+pygcontext_handler_block_dealloc(PyGContextHandlerBlock* self)
+{
+    g_object_unref(self->obj);
+    self->obj = NULL;
+    PyObject_Del((PyObject*)self);
+}
+
+static PyObject *
+pygcontext_handler_block_exit(PyGContextHandlerBlock *self, PyObject *args)
+{
+       g_signal_handler_unblock(self->obj, self->handler_id);
+       Py_RETURN_NONE;
+}
+
+
+static PyMethodDef pygcontext_handler_block_methods[] = {
+       {"__enter__", (PyCFunction)pygcontext_manager_enter, METH_NOARGS, ""},
+       {"__exit__", (PyCFunction)pygcontext_handler_block_exit, METH_VARARGS, ""},
+    {NULL}
+};
+
+
 /* -------------- PyGObject behaviour ----------------- */
 
-PYGLIB_DEFINE_TYPE("gobject.GObject", PyGObject_Type, PyGObject);
+PYGLIB_DEFINE_TYPE("gi._gobject.GObject", PyGObject_Type, PyGObject);
 
 static void
 pygobject_dealloc(PyGObject *self)
@@ -1242,15 +1330,6 @@ pygobject_init(PyGObject *self, PyObject *args, PyObject *kwargs)
     return (self->obj) ? 0 : -1;
 }
 
-static PyObject *
-pygobject__gobject_init__(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    if (pygobject_init(self, args, kwargs) < 0)
-       return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
 #define CHECK_GOBJECT(self) \
     if (!G_IS_OBJECT(self->obj)) {                                           \
        PyErr_Format(PyExc_TypeError,                                        \
@@ -1323,7 +1402,7 @@ pygobject_get_properties(PyGObject *self, PyObject *args)
 
         property_name = PYGLIB_PyUnicode_AsString(py_property);
 
-        pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(self->obj),
+        pspec = g_object_class_find_property(class,
                                         property_name);
         if (!pspec) {
            PyErr_Format(PyExc_TypeError,
@@ -1423,17 +1502,174 @@ pygobject_set_properties(PyGObject *self, PyObject *args, PyObject *kwargs)
     return result;
 }
 
+/* custom closure for gobject bindings */
+static void
+pygbinding_closure_invalidate(gpointer data, GClosure *closure)
+{
+    PyGClosure *pc = (PyGClosure *)closure;
+    PyGILState_STATE state;
+
+    state = pyglib_gil_state_ensure();
+    Py_XDECREF(pc->callback);
+    Py_XDECREF(pc->extra_args);
+    pyglib_gil_state_release(state);
+
+    pc->callback = NULL;
+    pc->extra_args = NULL;
+}
+
+static void
+pygbinding_marshal (GClosure     *closure,
+                    GValue       *return_value,
+                    guint         n_param_values,
+                    const GValue *param_values,
+                    gpointer      invocation_hint,
+                    gpointer      marshal_data)
+{
+    PyGILState_STATE state;
+    PyGClosure *pc = (PyGClosure *)closure;
+    PyObject *params, *ret;
+    GValue *out_value;
+
+    state = pyglib_gil_state_ensure();
+
+    /* construct Python tuple for the parameter values */
+    params = PyTuple_New(2);
+    PyTuple_SetItem (params, 0, pyg_value_as_pyobject(&param_values[0], FALSE));
+    PyTuple_SetItem (params, 1, pyg_value_as_pyobject(&param_values[1], FALSE));
+
+    /* params passed to function may have extra arguments */
+    if (pc->extra_args) {
+        PyObject *tuple = params;
+        params = PySequence_Concat(tuple, pc->extra_args);
+        Py_DECREF(tuple);
+    }
+    ret = PyObject_CallObject(pc->callback, params);
+    if (!ret) {
+        PyErr_Print ();
+        goto out;
+    } else if (ret == Py_None) {
+        g_value_set_boolean (return_value, FALSE);
+        goto out;
+    }
+
+    out_value = g_value_get_boxed (&param_values[2]);
+    if (pyg_value_from_pyobject (out_value, ret) != 0) {
+        PyErr_SetString (PyExc_ValueError, "can't convert value");
+        PyErr_Print ();
+        g_value_set_boolean (return_value, FALSE);
+    } else {
+        g_value_set_boolean (return_value, TRUE);
+    }
+
+    Py_DECREF(ret);
+
+out:
+    Py_DECREF(params);
+    pyglib_gil_state_release(state);
+}
+
+static GClosure *
+pygbinding_closure_new (PyObject *callback, PyObject *extra_args)
+{
+    GClosure *closure;
+
+    g_return_val_if_fail(callback != NULL, NULL);
+    closure = g_closure_new_simple(sizeof(PyGClosure), NULL);
+    g_closure_add_invalidate_notifier(closure, NULL, pygbinding_closure_invalidate);
+    g_closure_set_marshal(closure, pygbinding_marshal);
+    Py_INCREF(callback);
+    ((PyGClosure *)closure)->callback = callback;
+    if (extra_args && extra_args != Py_None) {
+        Py_INCREF(extra_args);
+        if (!PyTuple_Check(extra_args)) {
+            PyObject *tmp = PyTuple_New(1);
+            PyTuple_SetItem(tmp, 0, extra_args);
+            extra_args = tmp;
+        }
+        ((PyGClosure *)closure)->extra_args = extra_args;
+    }
+    return closure;
+}
+
+static PyObject *
+pygobject_bind_property(PyGObject *self, PyObject *args)
+{
+       gchar *source_name, *target_name;
+       gchar *source_canon, *target_canon;
+       PyObject *target, *source_repr, *target_repr;
+       PyObject *transform_to, *transform_from, *user_data = NULL;
+       GBinding *binding;
+       GBindingFlags flags = G_BINDING_DEFAULT;
+       GClosure *to_closure = NULL, *from_closure = NULL;
+
+       transform_from = NULL;
+       transform_to = NULL;
+
+       if (!PyArg_ParseTuple(args, "sOs|iOOO:GObject.bind_property",
+                             &source_name, &target, &target_name, &flags,
+                             &transform_to, &transform_from, &user_data))
+               return NULL;
+
+       CHECK_GOBJECT(self);
+       if (!PyObject_TypeCheck(target, &PyGObject_Type)) {
+               PyErr_SetString(PyExc_TypeError, "Second argument must be a GObject");
+               return NULL;
+       }
+
+       if (transform_to && transform_to != Py_None) {
+               if (!PyCallable_Check (transform_to)) {
+                       PyErr_SetString (PyExc_TypeError,
+                                        "transform_to must be callable or None");
+                       return NULL;
+               }
+               to_closure = pygbinding_closure_new (transform_to, user_data);
+       }
+
+       if (transform_from && transform_from != Py_None) {
+               if (!PyCallable_Check (transform_from)) {
+                       PyErr_SetString (PyExc_TypeError,
+                                        "transform_from must be callable or None");
+                       return NULL;
+               }
+               from_closure = pygbinding_closure_new (transform_from, user_data);
+       }
+
+       /* Canonicalize underscores to hyphens. Note the results must be freed. */
+       source_canon = g_strdelimit(g_strdup(source_name), "_", '-');
+       target_canon = g_strdelimit(g_strdup(target_name), "_", '-');
+
+       binding = g_object_bind_property_with_closures (G_OBJECT(self->obj), source_canon,
+                                                       pygobject_get(target), target_canon,
+                                                       flags, to_closure, from_closure);
+       g_free(source_canon);
+       g_free(target_canon);
+       source_canon = target_canon = NULL;
+
+       if (binding == NULL) {
+               source_repr = PyObject_Repr((PyObject*)self);
+               target_repr = PyObject_Repr(target);
+               PyErr_Format(PyExc_TypeError, "Cannot create binding from %s.%s to %s.%s",
+                            PYGLIB_PyUnicode_AsString(source_repr), source_name,
+                            PYGLIB_PyUnicode_AsString(target_repr), target_name);
+               Py_DECREF(source_repr);
+               Py_DECREF(target_repr);
+               return NULL;
+       }
+
+       return pygbinding_weak_ref_new(G_OBJECT (binding));
+}
+
 static PyObject *
 pygobject_freeze_notify(PyGObject *self, PyObject *args)
 {
     if (!PyArg_ParseTuple(args, ":GObject.freeze_notify"))
        return NULL;
-    
+
     CHECK_GOBJECT(self);
-    
+
     g_object_freeze_notify(self->obj);
-    Py_INCREF(Py_None);
-    return Py_None;
+    return pygcontext_freeze_notify_new(self->obj);
 }
 
 static PyObject *
@@ -1443,9 +1679,9 @@ pygobject_notify(PyGObject *self, PyObject *args)
 
     if (!PyArg_ParseTuple(args, "s:GObject.notify", &property_name))
        return NULL;
-    
+
     CHECK_GOBJECT(self);
-    
+
     g_object_notify(self->obj, property_name);
     Py_INCREF(Py_None);
     return Py_None;
@@ -1471,6 +1707,8 @@ pygobject_get_data(PyGObject *self, PyObject *args)
     GQuark quark;
     PyObject *data;
 
+    g_warning("GObject.get_data() and set_data() are deprecated. Use normal Python attributes instead");
+
     if (!PyArg_ParseTuple(args, "s:GObject.get_data", &key))
        return NULL;
     
@@ -1490,6 +1728,8 @@ pygobject_set_data(PyGObject *self, PyObject *args)
     GQuark quark;
     PyObject *data;
 
+    g_warning("GObject.get_data() and set_data() are deprecated. Use normal Python attributes instead");
+
     if (!PyArg_ParseTuple(args, "sO:GObject.set_data", &key, &data))
        return NULL;
     
@@ -1505,7 +1745,7 @@ pygobject_set_data(PyGObject *self, PyObject *args)
 static PyObject *
 pygobject_connect(PyGObject *self, PyObject *args)
 {
-    PyObject *first, *callback, *extra_args;
+    PyObject *first, *callback, *extra_args, *repr = NULL;
     gchar *name;
     guint sigid, len;
     gulong handlerid;
@@ -1533,9 +1773,11 @@ pygobject_connect(PyGObject *self, PyObject *args)
     
     if (!g_signal_parse_name(name, G_OBJECT_TYPE(self->obj),
                             &sigid, &detail, TRUE)) {
+       repr = PyObject_Repr((PyObject*)self);
        PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
-                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                    PYGLIB_PyUnicode_AsString(repr),
                     name);
+       Py_DECREF(repr);
        return NULL;
     }
     extra_args = PySequence_GetSlice(args, 2, len);
@@ -1556,7 +1798,7 @@ pygobject_connect(PyGObject *self, PyObject *args)
 static PyObject *
 pygobject_connect_after(PyGObject *self, PyObject *args)
 {
-    PyObject *first, *callback, *extra_args;
+    PyObject *first, *callback, *extra_args, *repr = NULL;
     gchar *name;
     guint sigid;
     gulong handlerid;
@@ -1586,9 +1828,11 @@ pygobject_connect_after(PyGObject *self, PyObject *args)
     
     if (!g_signal_parse_name(name, G_OBJECT_TYPE(self->obj),
                             &sigid, &detail, TRUE)) {
+       repr = PyObject_Repr((PyObject*)self);
        PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
-                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                    PYGLIB_PyUnicode_AsString(repr),
                     name);
+       Py_DECREF(repr);
        return NULL;
     }
     extra_args = PySequence_GetSlice(args, 2, len);
@@ -1609,7 +1853,7 @@ pygobject_connect_after(PyGObject *self, PyObject *args)
 static PyObject *
 pygobject_connect_object(PyGObject *self, PyObject *args)
 {
-    PyObject *first, *callback, *extra_args, *object;
+    PyObject *first, *callback, *extra_args, *object, *repr = NULL;
     gchar *name;
     guint sigid;
     gulong handlerid;
@@ -1639,9 +1883,11 @@ pygobject_connect_object(PyGObject *self, PyObject *args)
     
     if (!g_signal_parse_name(name, G_OBJECT_TYPE(self->obj),
                             &sigid, &detail, TRUE)) {
+       repr = PyObject_Repr((PyObject*)self);
        PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
-                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                    PYGLIB_PyUnicode_AsString(repr),
                     name);
+       Py_DECREF(repr);
        return NULL;
     }
     extra_args = PySequence_GetSlice(args, 3, len);
@@ -1662,7 +1908,7 @@ pygobject_connect_object(PyGObject *self, PyObject *args)
 static PyObject *
 pygobject_connect_object_after(PyGObject *self, PyObject *args)
 {
-    PyObject *first, *callback, *extra_args, *object;
+    PyObject *first, *callback, *extra_args, *object, *repr = NULL;
     gchar *name;
     guint sigid;
     gulong handlerid;
@@ -1692,9 +1938,11 @@ pygobject_connect_object_after(PyGObject *self, PyObject *args)
     
     if (!g_signal_parse_name(name, G_OBJECT_TYPE(self->obj),
                             &sigid, &detail, TRUE)) {
+       repr = PyObject_Repr((PyObject*)self);
        PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
-                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                    PYGLIB_PyUnicode_AsString(repr),
                     name);
+       Py_DECREF(repr);
        return NULL;
     }
     extra_args = PySequence_GetSlice(args, 3, len);
@@ -1752,8 +2000,7 @@ pygobject_handler_block(PyGObject *self, PyObject *args)
     CHECK_GOBJECT(self);
     
     g_signal_handler_block(self->obj, handler_id);
-    Py_INCREF(Py_None);
-    return Py_None;
+    return pygcontext_handler_block_new(self->obj, handler_id);
 }
 
 static PyObject *
@@ -1774,7 +2021,7 @@ pygobject_emit(PyGObject *self, PyObject *args)
     guint signal_id, i;
     Py_ssize_t len;
     GQuark detail;
-    PyObject *first, *py_ret;
+    PyObject *first, *py_ret, *repr = NULL;
     gchar *name;
     GSignalQuery query;
     GValue *params, ret = { 0, };
@@ -1795,9 +2042,11 @@ pygobject_emit(PyGObject *self, PyObject *args)
     
     if (!g_signal_parse_name(name, G_OBJECT_TYPE(self->obj),
                             &signal_id, &detail, TRUE)) {
+       repr = PyObject_Repr((PyObject*)self);
        PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
-                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                    PYGLIB_PyUnicode_AsString(repr),
                     name);
+       Py_DECREF(repr);
        return NULL;
     }
     g_signal_query(signal_id, &query);
@@ -1863,6 +2112,7 @@ pygobject_stop_emission(PyGObject *self, PyObject *args)
     gchar *signal;
     guint signal_id;
     GQuark detail;
+    PyObject *repr = NULL;
 
     if (!PyArg_ParseTuple(args, "s:GObject.stop_emission", &signal))
        return NULL;
@@ -1871,9 +2121,11 @@ pygobject_stop_emission(PyGObject *self, PyObject *args)
     
     if (!g_signal_parse_name(signal, G_OBJECT_TYPE(self->obj),
                             &signal_id, &detail, TRUE)) {
+       repr = PyObject_Repr((PyObject*)self);
        PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
-                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                    PYGLIB_PyUnicode_AsString(repr),
                     signal);
+       Py_DECREF(repr);
        return NULL;
     }
     g_signal_stop_emission(self->obj, signal_id, detail);
@@ -1987,7 +2239,7 @@ static PyObject *
 pygobject_copy(PyGObject *self)
 {
     PyErr_SetString(PyExc_TypeError,
-                   "gobject.GObject descendants' instances are non-copyable");
+                   "GObject descendants' instances are non-copyable");
     return NULL;
 }
 
@@ -1995,7 +2247,7 @@ static PyObject *
 pygobject_deepcopy(PyGObject *self, PyObject *args)
 {
     PyErr_SetString(PyExc_TypeError,
-                   "gobject.GObject descendants' instances are non-copyable");
+                   "GObject descendants' instances are non-copyable");
     return NULL;
 }
 
@@ -2003,7 +2255,7 @@ pygobject_deepcopy(PyGObject *self, PyObject *args)
 static PyObject *
 pygobject_disconnect_by_func(PyGObject *self, PyObject *args)
 {
-    PyObject *pyfunc = NULL;
+    PyObject *pyfunc = NULL, *repr = NULL;
     GClosure *closure = NULL;
     guint retval;
     
@@ -2019,8 +2271,10 @@ pygobject_disconnect_by_func(PyGObject *self, PyObject *args)
 
     closure = gclosure_from_pyfunc(self, pyfunc);
     if (!closure) {
+       repr = PyObject_Repr((PyObject*)pyfunc);
        PyErr_Format(PyExc_TypeError, "nothing connected to %s",
-                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)pyfunc)));
+                    PYGLIB_PyUnicode_AsString(repr));
+       Py_DECREF(repr);
        return NULL;
     }
     
@@ -2035,7 +2289,7 @@ pygobject_disconnect_by_func(PyGObject *self, PyObject *args)
 static PyObject *
 pygobject_handler_block_by_func(PyGObject *self, PyObject *args)
 {
-    PyObject *pyfunc = NULL;
+    PyObject *pyfunc = NULL, *repr = NULL;
     GClosure *closure = NULL;
     guint retval;
     
@@ -2051,8 +2305,10 @@ pygobject_handler_block_by_func(PyGObject *self, PyObject *args)
 
     closure = gclosure_from_pyfunc(self, pyfunc);
     if (!closure) {
+       repr = PyObject_Repr((PyObject*)pyfunc);
        PyErr_Format(PyExc_TypeError, "nothing connected to %s",
-                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)pyfunc)));
+                    PYGLIB_PyUnicode_AsString(repr));
+       Py_DECREF(repr);
        return NULL;
     }
     
@@ -2067,7 +2323,7 @@ pygobject_handler_block_by_func(PyGObject *self, PyObject *args)
 static PyObject *
 pygobject_handler_unblock_by_func(PyGObject *self, PyObject *args)
 {
-    PyObject *pyfunc = NULL;
+    PyObject *pyfunc = NULL, *repr = NULL;
     GClosure *closure = NULL;
     guint retval;
     
@@ -2083,8 +2339,10 @@ pygobject_handler_unblock_by_func(PyGObject *self, PyObject *args)
 
     closure = gclosure_from_pyfunc(self, pyfunc);
     if (!closure) {
+       repr = PyObject_Repr((PyObject*)pyfunc);
        PyErr_Format(PyExc_TypeError, "nothing connected to %s",
-                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)pyfunc)));
+                    PYGLIB_PyUnicode_AsString(repr));
+       Py_DECREF(repr);
        return NULL;
     }
     
@@ -2096,13 +2354,13 @@ pygobject_handler_unblock_by_func(PyGObject *self, PyObject *args)
     return PYGLIB_PyLong_FromLong(retval);
 }
 
+
 static PyMethodDef pygobject_methods[] = {
-    { "__gobject_init__", (PyCFunction)pygobject__gobject_init__,
-      METH_VARARGS|METH_KEYWORDS },
     { "get_property", (PyCFunction)pygobject_get_property, METH_VARARGS },
     { "get_properties", (PyCFunction)pygobject_get_properties, METH_VARARGS },
     { "set_property", (PyCFunction)pygobject_set_property, METH_VARARGS },
     { "set_properties", (PyCFunction)pygobject_set_properties, METH_VARARGS|METH_KEYWORDS },
+    { "bind_property", (PyCFunction)pygobject_bind_property, METH_VARARGS|METH_KEYWORDS },
     { "freeze_notify", (PyCFunction)pygobject_freeze_notify, METH_VARARGS },
     { "notify", (PyCFunction)pygobject_notify, METH_VARARGS },
     { "thaw_notify", (PyCFunction)pygobject_thaw_notify, METH_VARARGS },
@@ -2148,6 +2406,10 @@ pygobject_get_dict(PyGObject *self, void *closure)
 static PyObject *
 pygobject_get_refcount(PyGObject *self, void *closure)
 {
+    if (self->obj == NULL) {
+       PyErr_Format(PyExc_TypeError, "GObject instance is not yet created");
+       return NULL;
+    }
     return PYGLIB_PyLong_FromLong(self->obj->ref_count);
 }
 
@@ -2184,7 +2446,7 @@ typedef struct {
     gboolean have_floating_ref;
 } PyGObjectWeakRef;
 
-PYGLIB_DEFINE_TYPE("gobject.GObjectWeakRef", PyGObjectWeakRef_Type, PyGObjectWeakRef);
+PYGLIB_DEFINE_TYPE("gi._gobject.GObjectWeakRef", PyGObjectWeakRef_Type, PyGObjectWeakRef);
 
 static int
 pygobject_weak_ref_traverse(PyGObjectWeakRef *self, visitproc visit, void *arg)
@@ -2303,6 +2565,54 @@ pygobject_weak_ref_call(PyGObjectWeakRef *self, PyObject *args, PyObject *kw)
     }
 }
 
+
+/* -------------- GBinding Weak Reference ----------------- */
+
+/**
+ * BindingWeakRef
+ *
+ * The BindingWeakRef object is used to manage GBinding objects within python
+ * created through GObject.bind_property. It is a sub-class PyGObjectWeakRef so
+ * that we can maintain the same reference counting semantics between Python
+ * and GObject Binding objects. This gives explicit direct control of the
+ * binding lifetime by using the "unbind" method on the BindingWeakRef object
+ * along with implicit management based on the lifetime of the source or
+ * target objects.
+ */
+
+PYGLIB_DEFINE_TYPE("gi._gobject.GBindingWeakRef", PyGBindingWeakRef_Type, PyGObjectWeakRef);
+
+static PyObject *
+pygbinding_weak_ref_new(GObject *obj)
+{
+       PyGObjectWeakRef *self;
+
+       self = PyObject_GC_New(PyGObjectWeakRef, &PyGBindingWeakRef_Type);
+       self->callback = NULL;
+       self->user_data = NULL;
+       self->obj = obj;
+       g_object_weak_ref(self->obj, (GWeakNotify) pygobject_weak_ref_notify, self);
+       return (PyObject *) self;
+}
+
+static PyObject *
+pygbinding_weak_ref_unbind(PyGObjectWeakRef *self, PyObject *args)
+{
+    if (!self->obj) {
+        PyErr_SetString(PyExc_ValueError, "weak binding ref already unreffed");
+        return NULL;
+    }
+    g_object_unref(self->obj);
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyMethodDef pygbinding_weak_ref_methods[] = {
+    { "unbind", (PyCFunction)pygbinding_weak_ref_unbind, METH_NOARGS},
+    { NULL, NULL, 0}
+};
+
+
 static gpointer
 pyobject_copy(gpointer boxed)
 {
@@ -2334,7 +2644,6 @@ pygobject_object_register_types(PyObject *d)
     pygobject_has_updated_constructor_key =
         g_quark_from_static_string("PyGObject::has-updated-constructor");
     pygobject_instance_data_key = g_quark_from_static_string("PyGObject::instance-data");
-    pygobject_ref_sunk_key = g_quark_from_static_string("PyGObject::ref-sunk");
 
     /* GObject */
     if (!PY_TYPE_OBJECT)
@@ -2362,7 +2671,6 @@ pygobject_object_register_types(PyObject *d)
                             &PyGObject_Type, NULL);
     PyDict_SetItemString(PyGObject_Type.tp_dict, "__gdoc__",
                         pyg_object_descr_doc_get());
-    pyg_set_object_has_new_constructor(G_TYPE_OBJECT);
 
     /* GProps */
     PyGProps_Type.tp_dealloc = (destructor)PyGProps_dealloc;
@@ -2385,7 +2693,7 @@ pygobject_object_register_types(PyObject *d)
     descr = PyObject_New(PyObject, &PyGPropsDescr_Type);
     PyDict_SetItemString(PyGObject_Type.tp_dict, "props", descr);
     PyDict_SetItemString(PyGObject_Type.tp_dict, "__module__",
-                        o=PYGLIB_PyUnicode_FromString("gobject._gobject"));
+                        o=PYGLIB_PyUnicode_FromString("gi._gobject._gobject"));
     Py_DECREF(o);
 
     /* GPropsIter */
@@ -2406,4 +2714,26 @@ pygobject_object_register_types(PyObject *d)
     if (PyType_Ready(&PyGObjectWeakRef_Type) < 0)
         return;
     PyDict_SetItemString(d, "GObjectWeakRef", (PyObject *) &PyGObjectWeakRef_Type);
+
+    PyGBindingWeakRef_Type.tp_flags = Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC;
+    PyGBindingWeakRef_Type.tp_doc = "A GBinding weak reference";
+    PyGBindingWeakRef_Type.tp_methods = pygbinding_weak_ref_methods;
+    PyGBindingWeakRef_Type.tp_base = &PyGObjectWeakRef_Type;
+    if (PyType_Ready(&PyGBindingWeakRef_Type) < 0)
+        return;
+    PyDict_SetItemString(d, "GBindingWeakRef", (PyObject *) &PyGBindingWeakRef_Type);
+
+    PyGContextFreezeNotify_Type.tp_dealloc = (destructor)pygcontext_freeze_notify_dealloc;
+    PyGContextFreezeNotify_Type.tp_flags = Py_TPFLAGS_DEFAULT;
+    PyGContextFreezeNotify_Type.tp_doc = "Context manager for freeze/thaw of GObjects";
+    PyGContextFreezeNotify_Type.tp_methods = pygcontext_freeze_notify_methods;
+    if (PyType_Ready(&PyGContextFreezeNotify_Type) < 0)
+        return;
+
+    PyGContextHandlerBlock_Type.tp_dealloc = (destructor)pygcontext_handler_block_dealloc;
+    PyGContextHandlerBlock_Type.tp_flags = Py_TPFLAGS_DEFAULT;
+    PyGContextHandlerBlock_Type.tp_doc = "Context manager for handler blocking of GObjects";
+    PyGContextHandlerBlock_Type.tp_methods = pygcontext_handler_block_methods;
+    if (PyType_Ready(&PyGContextHandlerBlock_Type) < 0)
+        return;
 }
similarity index 93%
rename from gobject/pygobject.h
rename to gi/_gobject/pygobject.h
index 21743ba..8879fd0 100644 (file)
@@ -9,10 +9,7 @@
 
 G_BEGIN_DECLS
 
-/* This is deprecated, don't use */
-#define PYGIL_API_IS_BUGGY FALSE
-
-  /* PyGClosure is a _private_ structure */
+/* PyGClosure is a _private_ structure */
 typedef void (* PyClosureExceptionHandler) (GValue *ret, guint n_param_values, const GValue *params);
 typedef struct _PyGClosure PyGClosure;
 typedef struct _PyGObjectData PyGObjectData;
@@ -26,7 +23,8 @@ struct _PyGClosure {
 };
 
 typedef enum {
-    PYGOBJECT_USING_TOGGLE_REF = 1 << 0
+    PYGOBJECT_USING_TOGGLE_REF = 1 << 0,
+    PYGOBJECT_IS_FLOATING_REF = 1 << 1
 } PyGObjectFlags;
 
   /* closures is just an alias for what is found in the
@@ -92,8 +90,6 @@ struct _PyGObject_Functions {
     void (* register_class)(PyObject *dict, const gchar *class_name,
                            GType gtype, PyTypeObject *type, PyObject *bases);
     void (* register_wrapper)(PyObject *self);
-    void (* register_sinkfunc)(GType type,
-                              void (* sinkfunc)(GObject *object));
     PyTypeObject *(* lookup_class)(GType type);
     PyObject *(* newgobj)(GObject *obj);
 
@@ -182,13 +178,6 @@ struct _PyGObject_Functions {
     void      (*register_class_init) (GType gtype, PyGClassInitFunc class_init);
     void      (*register_interface_info) (GType gtype, const GInterfaceInfo *info);
     void      (*closure_set_exception_handler) (GClosure *closure, PyClosureExceptionHandler handler);
-    int       (*pygobject_constructv) (PyGObject  *self,
-                                       guint       n_parameters,
-                                       GParameter *parameters);
-    int       (*pygobject_construct) (PyGObject  *self,
-                                      const char *first_property_name,
-                                      ...);
-    void      (*set_object_has_new_constructor) (GType type);
 
     void      (*add_warning_redirection) (const char *domain,
                                           PyObject   *warning);
@@ -211,8 +200,6 @@ struct _PyGObject_Functions *_PyGObject_API;
 
 #define pygobject_register_class    (_PyGObject_API->register_class)
 #define pygobject_register_wrapper  (_PyGObject_API->register_wrapper)
-/* This is deprecated, sinkfuncs are not needed anymore */
-#define pygobject_register_sinkfunc (_PyGObject_API->register_sinkfunc)
 #define pygobject_lookup_class      (_PyGObject_API->lookup_class)
 #define pygobject_new               (_PyGObject_API->newgobj)
 #define pyg_closure_new             (_PyGObject_API->closure_new)
@@ -224,8 +211,6 @@ struct _PyGObject_Functions *_PyGObject_API;
 #define pyg_type_wrapper_new        (_PyGObject_API->type_wrapper_new)
 #define pyg_enum_get_value          (_PyGObject_API->enum_get_value)
 #define pyg_flags_get_value         (_PyGObject_API->flags_get_value)
-/* This is deprecated, call pyg_register_gtype_custom directly instead */
-#define pyg_register_boxed_custom   pyg_register_gtype_custom
 #define pyg_register_gtype_custom   (_PyGObject_API->register_gtype_custom)
 #define pyg_value_from_pyobject     (_PyGObject_API->value_from_pyobject)
 #define pyg_value_as_pyobject       (_PyGObject_API->value_as_pyobject)
@@ -259,9 +244,6 @@ struct _PyGObject_Functions *_PyGObject_API;
 #define pyg_gil_state_release       (_PyGObject_API->gil_state_release)
 #define pyg_register_class_init     (_PyGObject_API->register_class_init)
 #define pyg_register_interface_info (_PyGObject_API->register_interface_info)
-#define pygobject_construct         (_PyGObject_API->pygobject_construct)
-#define pygobject_constructv        (_PyGObject_API->pygobject_constructv)
-#define pyg_set_object_has_new_constructor (_PyGObject_API->set_object_has_new_constructor)
 #define pyg_add_warning_redirection   (_PyGObject_API->add_warning_redirection)
 #define pyg_disable_warning_redirections (_PyGObject_API->disable_warning_redirections)
 #define pyg_type_register_custom_callback (_PyGObject_API->type_register_custom)
@@ -308,7 +290,7 @@ pygobject_init(int req_major, int req_minor, int req_micro)
 {
     PyObject *gobject, *cobject;
     
-    gobject = PyImport_ImportModule("gobject");
+    gobject = PyImport_ImportModule("gi._gobject");
     if (!gobject) {
         if (PyErr_Occurred())
         {
@@ -375,8 +357,6 @@ pygobject_init(int req_major, int req_minor, int req_micro)
         PyObject *version;
 
         version = PyObject_GetAttrString(gobject, "pygobject_version");
-        if (!version)
-            version = PyObject_GetAttrString(gobject, "pygtk_version");
         if (!version) {
             PyErr_SetString(PyExc_ImportError,
                             "could not import gobject (version too old)");
@@ -406,18 +386,6 @@ pygobject_init(int req_major, int req_minor, int req_micro)
     return gobject;
 }
 
-/* deprecated macro, use pygobject_init() instead. */
-#define init_pygobject() G_STMT_START {         \
-    if (!pygobject_init(-1, -1, -1))            \
-        return;                                 \
-} G_STMT_END
-
-/* deprecated macro, use pygobject_init() instead. */
-#define init_pygobject_check(req_major, req_minor, req_micro) G_STMT_START {    \
-    if (!pygobject_init(req_major, req_minor, req_micro))                       \
-        return;                                                                 \
-} G_STMT_END
-
 /**
  * PYLIST_FROMGLIBLIST:
  * @type: the type of the GLib list e.g. #GList or #GSList
similarity index 99%
rename from gobject/pygparamspec.c
rename to gi/_gobject/pygparamspec.c
index 7743629..94f1dbb 100644 (file)
@@ -320,7 +320,7 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
     } else if (G_IS_PARAM_SPEC_STRING(pspec)) {
        if (!strcmp(attr, "__members__")) {
            return Py_BuildValue("[ssssssssssssss]", "__doc__", "__gtype__",
-                                "blurb", "cset_firth", "cset_nth", "default_value",
+                                "blurb", "cset_first", "cset_nth", "default_value",
                                 "ensure_non_null", "flags", "name", "nick",
                                 "null_fold_if_empty", "owner_type", "substitutor",
                                 "value_type");
similarity index 96%
rename from gobject/pygtype.c
rename to gi/_gobject/pygtype.c
index 5ee54aa..fe2c3b6 100644 (file)
@@ -727,6 +727,26 @@ pyg_value_array_from_pyobject(GValue *value,
     return 0;
 }
 
+static
+PyObject *
+pyg_get_gvariant_type()
+{
+    static PyObject *variant_type = NULL;
+    PyObject *py_module;
+
+    if (variant_type == NULL) {
+       py_module = PyImport_ImportModule ("gi.repository.GLib");
+       if (py_module == NULL)
+           return NULL;
+
+       variant_type = PyObject_GetAttrString (py_module, "Variant");
+
+       Py_DECREF (py_module);
+    }
+
+    return variant_type;
+}
+
 /**
  * pyg_value_from_pyobject:
  * @value: the GValue object to store the converted value in.
@@ -743,11 +763,12 @@ int
 pyg_value_from_pyobject(GValue *value, PyObject *obj)
 {
     PyObject *tmp;
+    GType value_type = G_VALUE_TYPE(value);
 
-    switch (G_TYPE_FUNDAMENTAL(G_VALUE_TYPE(value))) {
+    switch (G_TYPE_FUNDAMENTAL(value_type)) {
     case G_TYPE_INTERFACE:
        /* we only handle interface types that have a GObject prereq */
-       if (g_type_is_a(G_VALUE_TYPE(value), G_TYPE_OBJECT)) {
+       if (g_type_is_a(value_type, G_TYPE_OBJECT)) {
            if (obj == Py_None)
                g_value_set_object(value, NULL);
            else {
@@ -755,7 +776,7 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj)
                    return -1;
                }
                if (!G_TYPE_CHECK_INSTANCE_TYPE(pygobject_get(obj),
-                                               G_VALUE_TYPE(value))) {
+                                               value_type)) {
                    return -1;
                }
                g_value_set_object(value, pygobject_get(obj));
@@ -767,12 +788,12 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj)
     case G_TYPE_CHAR:
 #if PY_VERSION_HEX < 0x03000000
        if (PyString_Check(obj)) {
-           g_value_set_char(value, PyString_AsString(obj)[0]);
+           g_value_set_schar(value, PyString_AsString(obj)[0]);
        } else
 #endif
        if (PyUnicode_Check(obj)) {
            tmp = PyUnicode_AsUTF8String(obj);
-           g_value_set_char(value, PYGLIB_PyBytes_AsString(tmp)[0]);
+           g_value_set_schar(value, PYGLIB_PyBytes_AsString(tmp)[0]);
            Py_DECREF(tmp);
        } else {
            PyErr_Clear();
@@ -922,6 +943,8 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj)
            g_value_set_pointer(value, pyg_pointer_get(obj, gpointer));
        else if (PYGLIB_CPointer_Check(obj))
            g_value_set_pointer(value, PYGLIB_CPointer_GetPointer(obj, NULL));
+       else if (G_VALUE_HOLDS_GTYPE (value))
+           g_value_set_gtype (value, pyg_type_from_object (obj));
        else
            return -1;
        break;
@@ -988,6 +1011,17 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj)
        } else
            return -1;
        break;
+    case G_TYPE_VARIANT:
+        {
+            PyObject* variant_type = pyg_get_gvariant_type();
+            if (obj == Py_None)
+                g_value_set_variant(value, NULL);
+            else if (variant_type != NULL && PyObject_IsInstance(obj, variant_type))
+                g_value_set_variant(value, pyg_boxed_get(obj, GVariant));
+            else
+                return -1;
+            break;
+        }
     default:
        {
            PyGTypeMarshal *bm;
@@ -1022,11 +1056,11 @@ pyg_value_as_pyobject(const GValue *value, gboolean copy_boxed)
     switch (G_TYPE_FUNDAMENTAL(G_VALUE_TYPE(value))) {
     case G_TYPE_INTERFACE:
        if (g_type_is_a(G_VALUE_TYPE(value), G_TYPE_OBJECT))
-           return pygobject_new_sunk(g_value_get_object(value));
+           return pygobject_new(g_value_get_object(value));
        else
            break;
     case G_TYPE_CHAR: {
-       gint8 val = g_value_get_char(value);
+       gint8 val = g_value_get_schar(value);
        return PYGLIB_PyUnicode_FromStringAndSize((char *)&val, 1);
     }
     case G_TYPE_UCHAR: {
@@ -1097,8 +1131,11 @@ pyg_value_as_pyobject(const GValue *value, gboolean copy_boxed)
            return Py_None;
        }
     case G_TYPE_POINTER:
-       return pyg_pointer_new(G_VALUE_TYPE(value),
-                              g_value_get_pointer(value));
+       if (G_VALUE_HOLDS_GTYPE (value))
+           return pyg_type_wrapper_new (g_value_get_gtype (value));
+       else
+           return pyg_pointer_new(G_VALUE_TYPE(value),
+                                  g_value_get_pointer(value));
     case G_TYPE_BOXED: {
        PyGTypeMarshal *bm;
 
@@ -1140,7 +1177,16 @@ pyg_value_as_pyobject(const GValue *value, gboolean copy_boxed)
     case G_TYPE_PARAM:
        return pyg_param_spec_new(g_value_get_param(value));
     case G_TYPE_OBJECT:
-       return pygobject_new_sunk(g_value_get_object(value));
+       return pygobject_new(g_value_get_object(value));
+    case G_TYPE_VARIANT:
+        {
+           GVariant *v = g_value_get_variant(value);
+           if (v == NULL) {
+               Py_INCREF(Py_None);
+               return Py_None;
+           }
+           return pyg_boxed_new(G_TYPE_VARIANT, g_variant_ref(v), FALSE, FALSE);
+        }
     default:
        {
            PyGTypeMarshal *bm;
@@ -1223,8 +1269,11 @@ pyg_closure_marshal(GClosure *closure,
     }
 
     if (return_value && pyg_value_from_pyobject(return_value, ret) != 0) {
-       PyErr_SetString(PyExc_TypeError,
-                       "can't convert return value to desired type");
+       /* If we already have an exception set, use that, otherwise set a
+        * generic one */
+       if (!PyErr_Occurred())
+           PyErr_SetString(PyExc_TypeError,
+                            "can't convert return value to desired type");
 
        if (pc->exception_handler)
            pc->exception_handler(return_value, n_param_values, param_values);
@@ -1336,7 +1385,7 @@ pyg_signal_class_closure_marshal(GClosure *closure,
     g_return_if_fail(object != NULL && G_IS_OBJECT(object));
 
     /* get the wrapper for this object */
-    object_wrapper = pygobject_new_sunk(object);
+    object_wrapper = pygobject_new(object);
     g_return_if_fail(object_wrapper != NULL);
 
     /* construct method name for this class closure */
similarity index 100%
rename from gobject/pygtype.h
rename to gi/_gobject/pygtype.h
diff --git a/gi/_gobject/signalhelper.py b/gi/_gobject/signalhelper.py
new file mode 100644 (file)
index 0000000..0bd631d
--- /dev/null
@@ -0,0 +1,251 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# pygobject - Python bindings for the GObject library
+# Copyright (C) 2012 Simon Feltman
+#
+#   gobject/signalhelper.py: GObject signal binding decorator object
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# USA
+
+import sys
+import inspect
+
+from . import _gobject
+
+# Callable went away in python 3.0 and came back in 3.2.
+# Use versioning to figure out when to define it, otherwise we have to deal with
+# the complexity of using __builtin__ or builtin between python versions to
+# check if callable exists which PyFlakes will also complain about.
+if (3, 0) <= sys.version_info < (3, 2):
+    def callable(fn):
+        return hasattr(fn, '__call__')
+
+
+class Signal(str):
+    """
+    Object which gives a nice API for creating and binding signals.
+
+    Example:
+    class Spam(GObject.GObject):
+        velocity = 0
+
+        @GObject.Signal
+        def pushed(self):
+            self.velocity += 1
+
+        @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST)
+        def pulled(self):
+            self.velocity -= 1
+
+        stomped = GObject.Signal('stomped', arg_types=(int,))
+
+        @GObject.Signal
+        def annotated_signal(self, a:int, b:str):
+            "Python3 annotation support for parameter types.
+
+    def on_pushed(obj):
+        print(obj)
+
+    spam = Spam()
+    spam.pushed.connect(on_pushed)
+    spam.pushed.emit()
+    """
+    class BoundSignal(str):
+        """
+        Temporary binding object which can be used for connecting signals
+        without specifying the signal name string to connect.
+        """
+        def __new__(cls, name, *args, **kargs):
+            return str.__new__(cls, name)
+
+        def __init__(self, signal, gobj):
+            str.__init__(self)
+            self.signal = signal
+            self.gobj = gobj
+
+        def __repr__(self):
+            return 'BoundSignal("%s")' % self
+
+        def __call__(self, *args, **kargs):
+            """Call the signals closure."""
+            return self.signal.func(self.gobj, *args, **kargs)
+
+        def connect(self, callback, *args, **kargs):
+            """Same as GObject.GObject.connect except there is no need to specify
+            the signal name."""
+            return self.gobj.connect(self, callback, *args, **kargs)
+
+        def connect_detailed(self, callback, detail, *args, **kargs):
+            """Same as GObject.GObject.connect except there is no need to specify
+            the signal name. In addition concats "::<detail>" to the signal name
+            when connecting; for use with notifications like "notify" when a property
+            changes.
+            """
+            return self.gobj.connect(self + '::' + detail, callback, *args, **kargs)
+
+        def disconnect(self, handler_id):
+            """Same as GObject.GObject.disconnect."""
+            self.instance.disconnect(handler_id)
+
+        def emit(self, *args, **kargs):
+            """Same as GObject.GObject.emit except there is no need to specify
+            the signal name."""
+            self.gobj.emit(str(self), *args, **kargs)
+
+    def __new__(cls, name='', *args, **kargs):
+        if callable(name):
+            name = name.__name__
+        return str.__new__(cls, name)
+
+    def __init__(self, name='', func=None, flags=_gobject.SIGNAL_RUN_FIRST,
+                 return_type=None, arg_types=None, doc=''):
+        """
+        @param  name: name of signal or closure method when used as direct decorator.
+        @type   name: string or callable
+        @param  func: closure method.
+        @type   func: callable
+        @param  flags: flags specifying when to run closure
+        @type   flags: GObject.SignalFlags
+        @param  return_type: return type
+        @type   return_type: type
+        @param  arg_types: list of argument types specifying the signals function signature
+        @type   arg_types: None
+        @param  doc: documentation of signal object
+        @type   doc: string
+        """
+        if func and not name:
+            name = func.__name__
+        elif callable(name):
+            func = name
+            name = func.__name__
+        if func and not doc:
+            doc = func.__doc__
+
+        str.__init__(self)
+
+        if func and not (return_type or arg_types):
+            return_type, arg_types = get_signal_annotations(func)
+        if arg_types is None:
+            arg_types = tuple()
+
+        self.func = func
+        self.flags = flags
+        self.return_type = return_type
+        self.arg_types = arg_types
+        self.__doc__ = doc
+
+    def __get__(self, instance, owner=None):
+        """Returns a BoundSignal when accessed on an object instance."""
+        if instance is None:
+            return self
+        return self.BoundSignal(self, instance)
+
+    def __call__(self, obj, *args, **kargs):
+        """Allows for instantiated Signals to be used as a decorator or calling
+        of the underlying signal method."""
+
+        # If obj is a GObject, than we call this signal as a closure otherwise
+        # it is used as a re-application of a decorator.
+        if isinstance(obj, _gobject.GObject):
+            self.func(obj, *args, **kargs)
+        else:
+            # If self is already an allocated name, use it otherwise create a new named
+            # signal using the closure name as the name.
+            if str(self):
+                name = str(self)
+            else:
+                name = obj.__name__
+            # Return a new value of this type since it is based on an immutable string.
+            return type(self)(name=name, func=obj, flags=self.flags,
+                              return_type=self.return_type, arg_types=self.arg_types,
+                              doc=self.__doc__)
+
+    def copy(self, newName=None):
+        """Returns a renamed copy of the Signal."""
+        if newName is None:
+            newName = self.name
+        return type(self)(name=newName, func=self.func, flags=self.flags,
+                          return_type=self.return_type, arg_types=self.arg_types,
+                          doc=self.__doc__)
+
+    def get_signal_args(self):
+        """Returns a tuple of: (flags, return_type, arg_types)"""
+        return (self.flags, self.return_type, self.arg_types)
+
+
+class SignalOverride(Signal):
+    """Specialized sub-class of signal which can be used as a decorator for overriding
+    existing signals on GObjects.
+
+    Example:
+    class MyWidget(Gtk.Widget):
+        @GObject.SignalOverride
+        def configure_event(self):
+            pass
+    """
+    def get_signal_args(self):
+        """Returns the string 'override'."""
+        return 'override'
+
+
+def get_signal_annotations(func):
+    """Attempt pulling python 3 function annotations off of 'func' for
+    use as a signals type information. Returns an ordered nested tuple
+    of (return_type, (arg_type1, arg_type2, ...)). If the given function
+    does not have annotations then (None, tuple()) is returned.
+    """
+    arg_types = tuple()
+    return_type = None
+
+    if hasattr(func, '__annotations__'):
+        spec = inspect.getfullargspec(func)
+        arg_types = tuple(spec.annotations[arg] for arg in spec.args
+                          if arg in spec.annotations)
+        if 'return' in spec.annotations:
+            return_type = spec.annotations['return']
+
+    return return_type, arg_types
+
+
+def install_signals(cls):
+    """Adds Signal instances on a GObject derived class into the '__gsignals__'
+    dictionary to be picked up and registered as real GObject signals.
+    """
+    gsignals = getattr(cls, '__gsignals__', {})
+    newsignals = {}
+    for name, signal in cls.__dict__.items():
+        if isinstance(signal, Signal):
+            signalName = str(signal)
+            # Fixup a signal which is unnamed by using the class variable name.
+            # Since Signal is based on string which immutable,
+            # we must copy and replace the class variable.
+            if not signalName:
+                signalName = name
+                signal = signal.copy(name)
+                setattr(cls, name, signal)
+            if signalName in gsignals:
+                raise ValueError('Signal "%s" has already been registered.' % name)
+            newsignals[signalName] = signal
+            gsignals[signalName] = signal.get_signal_args()
+
+    cls.__gsignals__ = gsignals
+
+    # Setup signal closures by adding the specially named
+    # method to the class in the form of "do_<signal_name>".
+    for name, signal in newsignals.items():
+        if signal.func is not None:
+            funcName = 'do_' + name.replace('-', '_')
+            if not hasattr(cls, funcName):
+                setattr(cls, funcName, signal.func)
index 5ef166f..6ccd87f 100644 (file)
@@ -60,8 +60,9 @@ _wrap_pyg_enum_register_new_gtype_and_add (PyObject *self,
     GIEnumInfo *info;
     gint n_values;
     GEnumValue *g_enum_values;
-    GType g_type;
+    int i;
     const gchar *type_name;
+    GType g_type;
 
     if (!PyArg_ParseTupleAndKeywords (args, kwargs,
                                       "O:enum_add_make_new_gtype",
@@ -79,7 +80,7 @@ _wrap_pyg_enum_register_new_gtype_and_add (PyObject *self,
     n_values = g_enum_info_get_n_values (info);
     g_enum_values = g_new0 (GEnumValue, n_values + 1);
 
-    for (int i=0; i < n_values; i++) {
+    for (i = 0; i < n_values; i++) {
         GIValueInfo *value_info;
         GEnumValue *enum_value;
         const gchar *name;
@@ -147,8 +148,9 @@ _wrap_pyg_flags_register_new_gtype_and_add (PyObject *self,
     GIEnumInfo *info;
     gint n_values;
     GFlagsValue *g_flags_values;
-    GType g_type;
+    int i;
     const gchar *type_name;
+    GType g_type;
 
     if (!PyArg_ParseTupleAndKeywords (args, kwargs,
                                       "O:flags_add_make_new_gtype",
@@ -166,7 +168,7 @@ _wrap_pyg_flags_register_new_gtype_and_add (PyObject *self,
     n_values = g_enum_info_get_n_values (info);
     g_flags_values = g_new0 (GFlagsValue, n_values + 1);
 
-    for (int i=0; i < n_values; i++) {
+    for (i = 0; i < n_values; i++) {
         GIValueInfo *value_info;
         GFlagsValue *flags_value;
         const gchar *name;
@@ -201,33 +203,6 @@ _wrap_pyg_flags_register_new_gtype_and_add (PyObject *self,
     return pyg_flags_add (NULL, g_type_name (g_type), NULL, g_type);
 }
 
-
-static PyObject *
-_wrap_pyg_set_object_has_new_constructor (PyObject *self,
-                                          PyObject *args,
-                                          PyObject *kwargs)
-{
-    static char *kwlist[] = { "g_type", NULL };
-    PyObject *py_g_type;
-    GType g_type;
-
-    if (!PyArg_ParseTupleAndKeywords (args, kwargs,
-                                      "O!:set_object_has_new_constructor",
-                                      kwlist, &PyGTypeWrapper_Type, &py_g_type)) {
-        return NULL;
-    }
-
-    g_type = pyg_type_from_object (py_g_type);
-    if (!g_type_is_a (g_type, G_TYPE_OBJECT)) {
-        PyErr_SetString (PyExc_TypeError, "must be a subtype of GObject");
-        return NULL;
-    }
-
-    pyg_set_object_has_new_constructor (g_type);
-
-    Py_RETURN_NONE;
-}
-
 static void
 initialize_interface (GTypeInterface *iface, PyTypeObject *pytype)
 {
@@ -475,10 +450,8 @@ _wrap_pyg_variant_type_from_string (PyObject *self, PyObject *args)
 
     py_type = _pygi_type_import_by_name ("GLib", "VariantType");
 
-    if (PyType_IsSubtype (py_type, &PyGIBoxed_Type))
-        py_variant = _pygi_boxed_new ( (PyTypeObject *) py_type, type_string, FALSE);
-    else
-        py_variant = _pygi_struct_new ( (PyTypeObject *) py_type, type_string, FALSE);
+    py_variant = _pygi_boxed_new ( (PyTypeObject *) py_type, type_string, FALSE);
+
     return py_variant;
 }
 
@@ -488,7 +461,6 @@ static PyMethodDef _gi_functions[] = {
     { "flags_add", (PyCFunction) _wrap_pyg_flags_add, METH_VARARGS | METH_KEYWORDS },
     { "flags_register_new_gtype_and_add", (PyCFunction) _wrap_pyg_flags_register_new_gtype_and_add, METH_VARARGS | METH_KEYWORDS },
 
-    { "set_object_has_new_constructor", (PyCFunction) _wrap_pyg_set_object_has_new_constructor, METH_VARARGS | METH_KEYWORDS },
     { "register_interface_info", (PyCFunction) _wrap_pyg_register_interface_info, METH_VARARGS },
     { "hook_up_vfunc_implementation", (PyCFunction) _wrap_pyg_hook_up_vfunc_implementation, METH_VARARGS },
     { "variant_new_tuple", (PyCFunction) _wrap_pyg_variant_new_tuple, METH_VARARGS },
@@ -520,6 +492,7 @@ PYGLIB_MODULE_START(_gi, "_gi")
     _pygi_info_register_types (module);
     _pygi_struct_register_types (module);
     _pygi_boxed_register_types (module);
+    _pygi_ccallback_register_types (module);
     _pygi_argument_init();
 
     api = PYGLIB_CPointer_WrapPointer ( (void *) &CAPI, "gi._API");
index df08274..d83a384 100644 (file)
@@ -24,10 +24,8 @@ from __future__ import absolute_import
 import logging
 import sys
 
-import gobject
-
-from ._gi import Repository, RepositoryError
-from .module import DynamicModule, DynamicGObjectModule
+from ._gi import Repository
+from .module import DynamicModule, DynamicGObjectModule, DynamicGLibModule
 
 
 repository = Repository.get_default()
@@ -61,12 +59,14 @@ class DynamicImporter(object):
 
         path, namespace = fullname.rsplit('.', 1)
 
-        # Workaround for GObject
+        # Special case GObject and GLib
         if namespace == 'GObject':
-            sys.modules[fullname] = DynamicGObjectModule()
-            return sys.modules[fullname]
+            dynamic_module = DynamicGObjectModule()
+        elif namespace == "GLib":
+            dynamic_module = DynamicGLibModule()
+        else:
+            dynamic_module = DynamicModule(namespace)
 
-        dynamic_module = DynamicModule(namespace)
         modules[namespace] = dynamic_module
 
         dynamic_module.__file__ = '<%s>' % fullname
@@ -76,4 +76,3 @@ class DynamicImporter(object):
         dynamic_module._load()
 
         return dynamic_module
-
index 70df76c..e115fc7 100644 (file)
 
 from __future__ import absolute_import
 
-import os
-import gobject
-import string
+import sys
+import types
+
+_have_py3 = (sys.version_info[0] >= 3)
+
+from . import _glib, _gobject
+try:
+    maketrans = ''.maketrans
+except AttributeError:
+    # fallback for Python 2
+    from string import maketrans
 
 import gi
 from .overrides import registry
@@ -39,8 +47,10 @@ from ._gi import \
     ConstantInfo, \
     StructInfo, \
     UnionInfo, \
+    CallbackInfo, \
     Struct, \
     Boxed, \
+    CCallback, \
     enum_add, \
     enum_register_new_gtype_and_add, \
     flags_add, \
@@ -52,6 +62,7 @@ from .types import \
 
 repository = Repository.get_default()
 
+
 def get_parent_for_object(object_info):
     parent_object_info = object_info.get_parent()
 
@@ -63,7 +74,7 @@ def get_parent_for_object(object_info):
 
     # Workaround for GObject.Object and GObject.InitiallyUnowned.
     if namespace == 'GObject' and name == 'Object' or name == 'InitiallyUnowned':
-        return gobject.GObject
+        return _gobject.GObject
 
     module = __import__('gi.repository.%s' % namespace, fromlist=[name])
     return getattr(module, name)
@@ -90,6 +101,9 @@ class IntrospectionModule(object):
 
         repository.require(self._namespace, self._version)
         self.__path__ = repository.get_typelib_path(self._namespace)
+        if _have_py3:
+            # get_typelib_path() delivers bytes, not a string
+            self.__path__ = self.__path__.decode('UTF-8')
 
         if self._version is None:
             self._version = repository.get_version(self._namespace)
@@ -98,7 +112,7 @@ class IntrospectionModule(object):
         info = repository.find_by_name(self._namespace, name)
         if not info:
             raise AttributeError("%r object has no attribute %r" % (
-                    self.__name__, name))
+                                 self.__name__, name))
 
         if isinstance(info, EnumInfo):
             g_type = info.get_g_type()
@@ -106,16 +120,16 @@ class IntrospectionModule(object):
 
             if wrapper is None:
                 if info.is_flags():
-                    if g_type.is_a(gobject.TYPE_FLAGS):
+                    if g_type.is_a(_gobject.TYPE_FLAGS):
                         wrapper = flags_add(g_type)
                     else:
-                        assert g_type == gobject.TYPE_NONE
+                        assert g_type == _gobject.TYPE_NONE
                         wrapper = flags_register_new_gtype_and_add(info)
                 else:
-                    if g_type.is_a(gobject.TYPE_ENUM):
+                    if g_type.is_a(_gobject.TYPE_ENUM):
                         wrapper = enum_add(g_type)
                     else:
-                        assert g_type == gobject.TYPE_NONE
+                        assert g_type == _gobject.TYPE_NONE
                         wrapper = enum_register_new_gtype_and_add(info)
 
                 wrapper.__info__ = info
@@ -124,21 +138,21 @@ class IntrospectionModule(object):
                 # Don't use upper() here to avoid locale specific
                 # identifier conversion (e. g. in Turkish 'i'.upper() == 'i')
                 # see https://bugzilla.gnome.org/show_bug.cgi?id=649165
-                ascii_upper_trans = string.maketrans(
-                        'abcdefgjhijklmnopqrstuvwxyz', 
-                        'ABCDEFGJHIJKLMNOPQRSTUVWXYZ')
+                ascii_upper_trans = maketrans(
+                    'abcdefgjhijklmnopqrstuvwxyz',
+                    'ABCDEFGJHIJKLMNOPQRSTUVWXYZ')
                 for value_info in info.get_values():
-                    value_name = value_info.get_name().translate(ascii_upper_trans)
+                    value_name = value_info.get_name_unescaped().translate(ascii_upper_trans)
                     setattr(wrapper, value_name, wrapper(value_info.get_value()))
 
-            if g_type != gobject.TYPE_NONE:
+            if g_type != _gobject.TYPE_NONE:
                 g_type.pytype = wrapper
 
         elif isinstance(info, RegisteredTypeInfo):
             g_type = info.get_g_type()
 
             # Check if there is already a Python wrapper.
-            if g_type != gobject.TYPE_NONE:
+            if g_type != _gobject.TYPE_NONE:
                 type_ = g_type.pytype
                 if type_ is not None:
                     self.__dict__[name] = type_
@@ -148,18 +162,21 @@ class IntrospectionModule(object):
             if isinstance(info, ObjectInfo):
                 parent = get_parent_for_object(info)
                 interfaces = tuple(interface for interface in get_interfaces_for_object(info)
-                        if not issubclass(parent, interface))
+                                   if not issubclass(parent, interface))
                 bases = (parent,) + interfaces
                 metaclass = GObjectMeta
+            elif isinstance(info, CallbackInfo):
+                bases = (CCallback,)
+                metaclass = GObjectMeta
             elif isinstance(info, InterfaceInfo):
-                bases = (gobject.GInterface,)
+                bases = (_gobject.GInterface,)
                 metaclass = GObjectMeta
             elif isinstance(info, (StructInfo, UnionInfo)):
-                if g_type.is_a(gobject.TYPE_BOXED):
+                if g_type.is_a(_gobject.TYPE_BOXED):
                     bases = (Boxed,)
-                elif g_type.is_a(gobject.TYPE_POINTER) or \
-                     g_type == gobject.TYPE_NONE or \
-                     g_type.fundamental == g_type:
+                elif (g_type.is_a(_gobject.TYPE_POINTER) or
+                      g_type == _gobject.TYPE_NONE or
+                      g_type.fundamental == g_type):
                     bases = (Struct,)
                 else:
                     raise TypeError("unable to create a wrapper for %s.%s" % (info.get_namespace(), info.get_name()))
@@ -176,7 +193,7 @@ class IntrospectionModule(object):
             wrapper = metaclass(name, bases, dict_)
 
             # Register the new Python wrapper.
-            if g_type != gobject.TYPE_NONE:
+            if g_type != _gobject.TYPE_NONE:
                 g_type.pytype = wrapper
 
         elif isinstance(info, FunctionInfo):
@@ -191,52 +208,28 @@ class IntrospectionModule(object):
 
     def __repr__(self):
         path = repository.get_typelib_path(self._namespace)
+        if _have_py3:
+            # get_typelib_path() delivers bytes, not a string
+            path = path.decode('UTF-8')
         return "<IntrospectionModule %r from %r>" % (self._namespace, path)
 
-    def __dir__ (self):
+    def __dir__(self):
         # Python's default dir() is just dir(self.__class__) + self.__dict__.keys()
         result = set(dir(self.__class__))
         result.update(self.__dict__.keys())
 
         # update *set* because some repository attributes have already been
-        # wrapped by __getattr__() and included in self.__dict__
+        # wrapped by __getattr__() and included in self.__dict__; but skip
+        # Callback types, as these are not real objects which we can actually
+        # get
         namespace_infos = repository.get_infos(self._namespace)
-        result.update(info.get_name() for info in namespace_infos)
+        result.update(info.get_name() for info in namespace_infos if
+                      not isinstance(info, CallbackInfo))
 
         return list(result)
 
 
-class DynamicGObjectModule(IntrospectionModule):
-    """Wrapper for the GObject module
-
-    This class allows us to access both the static PyGObject module and the GI GObject module
-    through the same interface.  It is returned when by importing GObject from the gi repository:
-
-    from gi.repository import GObject
-
-    We use this because some PyGI interfaces generated from the GIR require GObject types not wrapped
-    by the static bindings.  This also allows access to module attributes in a way that is more
-    familiar to GI application developers.  Take signal flags as an example.  The G_SIGNAL_RUN_FIRST
-    flag would be accessed as GObject.SIGNAL_RUN_FIRST in the static bindings but in the dynamic bindings
-    can be accessed as GObject.SignalFlags.RUN_FIRST.  The latter follows a GI naming convention which
-    would be familiar to GI application developers in a number of languages.
-    """
-
-    def __init__(self):
-        IntrospectionModule.__init__(self, namespace='GObject')
-
-    def __getattr__(self, name):
-        # first see if this attr is in the gobject module
-        attr = getattr(gobject, name, None)
-
-        # if not in module assume request for an attr exported through GI
-        if attr is None:
-            attr = super(DynamicGObjectModule, self).__getattr__(name)
-
-        return attr
-
-
-class DynamicModule(object):
+class DynamicModule(types.ModuleType):
     def __init__(self, namespace):
         self._namespace = namespace
         self._introspection_module = None
@@ -247,10 +240,16 @@ class DynamicModule(object):
         version = gi.get_required_version(self._namespace)
         self._introspection_module = IntrospectionModule(self._namespace,
                                                          version)
+        try:
+            overrides_modules = __import__('gi.overrides', fromlist=[self._namespace])
+            self._overrides_module = getattr(overrides_modules, self._namespace, None)
+        except ImportError:
+            self._overrides_module = None
 
-        overrides_modules = __import__('gi.overrides', fromlist=[self._namespace])
-        self._overrides_module = getattr(overrides_modules, self._namespace, None)
         self.__path__ = repository.get_typelib_path(self._namespace)
+        if _have_py3:
+            # get_typelib_path() delivers bytes, not a string
+            self.__path__ = self.__path__.decode('UTF-8')
 
     def __getattr__(self, name):
         if self._overrides_module is not None:
@@ -259,9 +258,9 @@ class DynamicModule(object):
                 return getattr(self._overrides_module, name, None)
         else:
             # check the registry just in case the module hasn't loaded yet
-            # TODO: Only gtypes are registered in the registry right now 
-            #       but it would be nice to register all overrides and 
-            #       get rid of the module imports. We might actually see a 
+            # TODO: Only gtypes are registered in the registry right now
+            #       but it would be nice to register all overrides and
+            #       get rid of the module imports. We might actually see a
             #       speedup.
             key = '%s.%s' % (self._namespace, name)
             if key in registry:
@@ -269,11 +268,11 @@ class DynamicModule(object):
 
         return getattr(self._introspection_module, name)
 
-    def __dir__ (self):
+    def __dir__(self):
         # Python's default dir() is just dir(self.__class__) + self.__dict__.keys()
         result = set(dir(self.__class__))
         result.update(self.__dict__.keys())
-        
+
         result.update(dir(self._introspection_module))
         override_exports = getattr(self._overrides_module, '__all__', ())
         result.update(override_exports)
@@ -281,7 +280,70 @@ class DynamicModule(object):
 
     def __repr__(self):
         path = repository.get_typelib_path(self._namespace)
+        if _have_py3:
+            # get_typelib_path() delivers bytes, not a string
+            path = path.decode('UTF-8')
+
         return "<%s.%s %r from %r>" % (self.__class__.__module__,
-                                      self.__class__.__name__,
-                                      self._namespace,
-                                      path)
+                                       self.__class__.__name__,
+                                       self._namespace,
+                                       path)
+
+
+class DynamicGObjectModule(DynamicModule):
+    """Wrapper for the internal GObject module
+
+    This class allows us to access both the static internal PyGObject module and the GI GObject module
+    through the same interface.  It is returned when by importing GObject from the gi repository:
+
+    from gi.repository import GObject
+
+    We use this because some PyGI interfaces generated from the GIR require GObject types not wrapped
+    by the static bindings.  This also allows access to module attributes in a way that is more
+    familiar to GI application developers.  Take signal flags as an example.  The G_SIGNAL_RUN_FIRST
+    flag would be accessed as GObject.SIGNAL_RUN_FIRST in the static bindings but in the dynamic bindings
+    can be accessed as GObject.SignalFlags.RUN_FIRST.  The latter follows a GI naming convention which
+    would be familiar to GI application developers in a number of languages.
+    """
+
+    def __init__(self):
+        DynamicModule.__init__(self, namespace='GObject')
+
+    def __getattr__(self, name):
+        from . import _gobject
+
+        # first see if this attr is in the internal _gobject module
+        attr = getattr(_gobject, name, None)
+
+        # if not in module assume request for an attr exported through GI
+        if attr is None:
+            attr = super(DynamicGObjectModule, self).__getattr__(name)
+
+        return attr
+
+
+class DynamicGLibModule(DynamicModule):
+    """Wrapper for the internal GLib module
+
+    This class allows us to access both the static internal PyGLib module and the GI GLib module
+    through the same interface.  It is returned when by importing GLib from the gi repository:
+
+    from gi.repository import GLib
+
+    We use this because some PyGI interfaces generated from the GIR require GLib types not wrapped
+    by the static bindings.  This also allows access to module attributes in a way that is more
+    familiar to GI application developers.
+    """
+
+    def __init__(self):
+        DynamicModule.__init__(self, namespace='GLib')
+
+    def __getattr__(self, name):
+        # first see if this attr is in the internal _gobject module
+        attr = getattr(_glib, name, None)
+
+        # if not in module assume request for an attr exported through GI
+        if attr is None:
+            attr = super(DynamicGLibModule, self).__getattr__(name)
+
+        return attr
index aac8883..a25eda7 100644 (file)
@@ -28,6 +28,7 @@ __all__ = []
 OVERRIDES_CONSTANT = 7
 __all__.append('OVERRIDES_CONSTANT')
 
+
 class OverridesStruct(GIMarshallingTests.OverridesStruct):
 
     def __new__(cls, long_):
@@ -43,6 +44,7 @@ class OverridesStruct(GIMarshallingTests.OverridesStruct):
 OverridesStruct = override(OverridesStruct)
 __all__.append('OverridesStruct')
 
+
 class OverridesObject(GIMarshallingTests.OverridesObject):
 
     def __new__(cls, long_):
index 2caf205..c41f523 100644 (file)
@@ -25,16 +25,6 @@ GLib = modules['GLib']._introspection_module
 
 __all__ = []
 
-def _create_variant(value):
-    '''Create a variant containing the variant "value".
-    
-    This is usually done with the GLib.Variant.new_variant() leaf
-    constructor, but this is currently broken, see GNOME#639952.
-    '''
-    builder = GLib.VariantBuilder()
-    builder.init(variant_type_from_string('v'))
-    builder.add_value(value)
-    return builder.end()
 
 class _VariantCreator(object):
 
@@ -52,8 +42,7 @@ class _VariantCreator(object):
         's': GLib.Variant.new_string,
         'o': GLib.Variant.new_object_path,
         'g': GLib.Variant.new_signature,
-        #'v': GLib.Variant.new_variant,
-        'v': _create_variant,
+        'v': GLib.Variant.new_variant,
     }
 
     def _create(self, format, args):
@@ -95,16 +84,15 @@ class _VariantCreator(object):
     def _create_tuple(self, format, args):
         '''Handle the case where the outermost type of format is a tuple.'''
 
-        format = format[1:] # eat the '('
-        builder = GLib.VariantBuilder()
-        builder.init(variant_type_from_string('r'))
+        format = format[1:]  # eat the '('
+        builder = GLib.VariantBuilder.new(variant_type_from_string('r'))
         if args is not None:
-            if not args or type(args[0]) != type(()):
-                raise (TypeError, 'expected tuple argument')
+            if not args or not isinstance(args[0], tuple):
+                raise TypeError('expected tuple argument')
 
             for i in range(len(args[0])):
                 if format.startswith(')'):
-                    raise (TypeError, 'too many arguments for tuple signature')
+                    raise TypeError('too many arguments for tuple signature')
 
                 (v, format, _) = self._create(format, args[0][i:])
                 builder.add_value(v)
@@ -114,7 +102,7 @@ class _VariantCreator(object):
     def _create_dict(self, format, args):
         '''Handle the case where the outermost type of format is a dict.'''
 
-        builder = GLib.VariantBuilder()
+        builder = None
         if args is None or not args[0]:
             # empty value: we need to call _create() to parse the subtype,
             # and specify the element type precisely
@@ -122,21 +110,20 @@ class _VariantCreator(object):
             rest_format = self._create(rest_format, None)[1]
             if not rest_format.startswith('}'):
                 raise ValueError('dictionary type string not closed with }')
-            rest_format = rest_format[1:] # eat the }
+            rest_format = rest_format[1:]  # eat the}
             element_type = format[:len(format) - len(rest_format)]
-            builder.init(variant_type_from_string(element_type))
+            builder = GLib.VariantBuilder.new(variant_type_from_string(element_type))
         else:
-            builder.init(variant_type_from_string('a{?*}'))
+            builder = GLib.VariantBuilder.new(variant_type_from_string('a{?*}'))
             for k, v in args[0].items():
                 (key_v, rest_format, _) = self._create(format[2:], [k])
                 (val_v, rest_format, _) = self._create(rest_format, [v])
 
                 if not rest_format.startswith('}'):
                     raise ValueError('dictionary type string not closed with }')
-                rest_format = rest_format[1:] # eat the }
+                rest_format = rest_format[1:]  # eat the}
 
-                entry = GLib.VariantBuilder()
-                entry.init(variant_type_from_string('{?*}'))
+                entry = GLib.VariantBuilder.new(variant_type_from_string('{?*}'))
                 entry.add_value(key_v)
                 entry.add_value(val_v)
                 builder.add_value(entry.end())
@@ -148,15 +135,15 @@ class _VariantCreator(object):
     def _create_array(self, format, args):
         '''Handle the case where the outermost type of format is an array.'''
 
-        builder = GLib.VariantBuilder()
+        builder = None
         if args is None or not args[0]:
             # empty value: we need to call _create() to parse the subtype,
             # and specify the element type precisely
             rest_format = self._create(format[1:], None)[1]
             element_type = format[:len(format) - len(rest_format)]
-            builder.init(variant_type_from_string(element_type))
+            builder = GLib.VariantBuilder.new(variant_type_from_string(element_type))
         else:
-            builder.init(variant_type_from_string('a*'))
+            builder = GLib.VariantBuilder.new(variant_type_from_string('a*'))
             for i in range(len(args[0])):
                 (v, rest_format, _) = self._create(format[1:], args[0][i:])
                 builder.add_value(v)
@@ -164,27 +151,53 @@ class _VariantCreator(object):
             args = args[1:]
         return (builder.end(), rest_format, args)
 
+
 class Variant(GLib.Variant):
     def __new__(cls, format_string, value):
         '''Create a GVariant from a native Python object.
 
         format_string is a standard GVariant type signature, value is a Python
         object whose structure has to match the signature.
-        
+
         Examples:
           GLib.Variant('i', 1)
           GLib.Variant('(is)', (1, 'hello'))
-          GLib.Variant('(asa{sv})', ([], {'foo': GLib.Variant('b', True), 
+          GLib.Variant('(asa{sv})', ([], {'foo': GLib.Variant('b', True),
                                           'bar': GLib.Variant('i', 2)}))
         '''
         creator = _VariantCreator()
         (v, rest_format, _) = creator._create(format_string, [value])
         if rest_format:
             raise TypeError('invalid remaining format string: "%s"' % rest_format)
+        v.format_string = format_string
         return v
 
+    def __del__(self):
+        self.unref()
+
+    def __str__(self):
+        return self.print_(True)
+
     def __repr__(self):
-        return '<GLib.Variant(%s)>' % getattr(self, 'print')(True)
+        return "GLib.Variant('%s', %s)" % (self.format_string, self.print_(True))
+
+    def __eq__(self, other):
+        try:
+            return self.equal(other)
+        except TypeError:
+            return False
+
+    def __ne__(self, other):
+        try:
+            return not self.equal(other)
+        except TypeError:
+            return True
+
+    def __hash__(self):
+        # We're not using just hash(self.unpack()) because otherwise we'll have
+        # hash collisions between the same content in different variant types,
+        # which will cause a performance issue in set/dict/etc.
+        return hash((self.get_type_string(), self.unpack()))
 
     def unpack(self):
         '''Decompose a GVariant into a native Python object.'''
@@ -201,8 +214,8 @@ class Variant(GLib.Variant):
             'h': self.get_handle,
             'd': self.get_double,
             's': self.get_string,
-            'o': self.get_string, # object path
-            'g': self.get_string, # signature
+            'o': self.get_string,  # object path
+            'g': self.get_string,  # signature
         }
 
         # simple values
@@ -212,8 +225,8 @@ class Variant(GLib.Variant):
 
         # tuple
         if self.get_type_string().startswith('('):
-            res = [self.get_child_value(i).unpack() 
-                    for i in range(self.n_children())]
+            res = [self.get_child_value(i).unpack()
+                   for i in range(self.n_children())]
             return tuple(res)
 
         # dictionary
@@ -226,7 +239,7 @@ class Variant(GLib.Variant):
 
         # array
         if self.get_type_string().startswith('a'):
-            return [self.get_child_value(i).unpack() 
+            return [self.get_child_value(i).unpack()
                     for i in range(self.n_children())]
 
         # variant (just unbox transparently)
@@ -235,12 +248,64 @@ class Variant(GLib.Variant):
 
         raise NotImplementedError('unsupported GVariant type ' + self.get_type_string())
 
+    @classmethod
+    def split_signature(klass, signature):
+        '''Return a list of the element signatures of the topmost signature tuple.
+
+        If the signature is not a tuple, it returns one element with the entire
+        signature. If the signature is an empty tuple, the result is [].
+
+        This is useful for e. g. iterating over method parameters which are
+        passed as a single Variant.
+        '''
+        if signature == '()':
+            return []
+
+        if not signature.startswith('('):
+            return [signature]
+
+        result = []
+        head = ''
+        tail = signature[1:-1]  # eat the surrounding ()
+        while tail:
+            c = tail[0]
+            head += c
+            tail = tail[1:]
+
+            if c in ('m', 'a'):
+                # prefixes, keep collecting
+                continue
+            if c in ('(', '{'):
+                # consume until corresponding )/}
+                level = 1
+                up = c
+                if up == '(':
+                    down = ')'
+                else:
+                    down = '}'
+                while level > 0:
+                    c = tail[0]
+                    head += c
+                    tail = tail[1:]
+                    if c == up:
+                        level += 1
+                    elif c == down:
+                        level -= 1
+
+            # otherwise we have a simple type
+            result.append(head)
+            head = ''
+
+        return result
+
     #
     # Pythonic iterators
     #
+
     def __len__(self):
         if self.get_type_string() in ['s', 'o', 'g']:
             return len(self.get_string())
+        # Array, dict, tuple
         if self.get_type_string().startswith('a') or self.get_type_string().startswith('('):
             return self.n_children()
         raise TypeError('GVariant type %s does not have a length' % self.get_type_string())
@@ -278,6 +343,29 @@ class Variant(GLib.Variant):
 
         raise TypeError('GVariant type %s is not a container' % self.get_type_string())
 
+    #
+    # Pythonic bool operations
+    #
+
+    def __nonzero__(self):
+        return self.__bool__()
+
+    def __bool__(self):
+        if self.get_type_string() in ['y', 'n', 'q', 'i', 'u', 'x', 't', 'h', 'd']:
+            return self.unpack() != 0
+        if self.get_type_string() in ['b']:
+            return self.get_boolean()
+        if self.get_type_string() in ['s', 'o', 'g']:
+            return len(self.get_string()) != 0
+        # Array, dict, tuple
+        if self.get_type_string().startswith('a') or self.get_type_string().startswith('('):
+            return self.n_children() != 0
+        if self.get_type_string() in ['v']:
+            # unpack works recursively, hence bool also works recursively
+            return bool(self.unpack())
+        # Everything else is True
+        return True
+
     def keys(self):
         if not self.get_type_string().startswith('a{'):
             return TypeError, 'GVariant type %s is not a dictionary' % self.get_type_string()
@@ -288,10 +376,12 @@ class Variant(GLib.Variant):
             res.append(v.get_child_value(0).unpack())
         return res
 
+
 @classmethod
 def new_tuple(cls, *elements):
     return variant_new_tuple(elements)
 
+
 def get_string(self):
     value, length = GLib.Variant.get_string(self)
     return value
@@ -300,4 +390,3 @@ setattr(Variant, 'new_tuple', new_tuple)
 setattr(Variant, 'get_string', get_string)
 
 __all__.append('Variant')
-
index 7b86e1f..20ef910 100644 (file)
@@ -28,7 +28,9 @@ Gdk = modules['Gdk']._introspection_module
 
 __all__ = []
 
+
 class Color(Gdk.Color):
+    MAX_VALUE = 65535
 
     def __init__(self, red, green, blue):
         Gdk.Color.__init__(self)
@@ -45,6 +47,28 @@ class Color(Gdk.Color):
     def __repr__(self):
         return '<Gdk.Color(red=%d, green=%d, blue=%d)>' % (self.red, self.green, self.blue)
 
+    red_float = property(fget=lambda self: self.red / float(self.MAX_VALUE),
+                         fset=lambda self, v: setattr(self, 'red', int(v * self.MAX_VALUE)))
+
+    green_float = property(fget=lambda self: self.green / float(self.MAX_VALUE),
+                           fset=lambda self, v: setattr(self, 'green', int(v * self.MAX_VALUE)))
+
+    blue_float = property(fget=lambda self: self.blue / float(self.MAX_VALUE),
+                          fset=lambda self, v: setattr(self, 'blue', int(v * self.MAX_VALUE)))
+
+    def to_floats(self):
+        """Return (red_float, green_float, blue_float) triple."""
+
+        return (self.red_float, self.green_float, self.blue_float)
+
+    @staticmethod
+    def from_floats(red, green, blue):
+        """Return a new Color object from red/green/blue values from 0.0 to 1.0."""
+
+        return Color(int(red * Color.MAX_VALUE),
+                     int(green * Color.MAX_VALUE),
+                     int(blue * Color.MAX_VALUE))
+
 Color = override(Color)
 __all__.append('Color')
 
@@ -66,6 +90,27 @@ if Gdk._version == '3.0':
         def __repr__(self):
             return '<Gdk.Color(red=%f, green=%f, blue=%f, alpha=%f)>' % (self.red, self.green, self.blue, self.alpha)
 
+        def __iter__(self):
+            """Iterator which allows easy conversion to tuple and list types."""
+
+            yield self.red
+            yield self.green
+            yield self.blue
+            yield self.alpha
+
+        def to_color(self):
+            """Converts this RGBA into a Color instance which excludes alpha."""
+
+            return Color(int(self.red * Color.MAX_VALUE),
+                         int(self.green * Color.MAX_VALUE),
+                         int(self.blue * Color.MAX_VALUE))
+
+        @classmethod
+        def from_color(cls, color):
+            """Returns a new RGBA instance given a Color instance."""
+
+            return cls(color.red_float, color.green_float, color.blue_float)
+
     RGBA = override(RGBA)
     __all__.append('RGBA')
 
@@ -106,8 +151,10 @@ else:
             # Gdk.Window had to be made abstract,
             # this override allows using the standard constructor
             return Gdk.Window.new(parent, attributes, attributes_mask)
+
         def __init__(self, parent, attributes, attributes_mask):
             pass
+
         def cairo_create(self):
             return Gdk.cairo_create(self)
 
@@ -117,6 +164,7 @@ else:
 Gdk.EventType._2BUTTON_PRESS = getattr(Gdk.EventType, "2BUTTON_PRESS")
 Gdk.EventType._3BUTTON_PRESS = getattr(Gdk.EventType, "3BUTTON_PRESS")
 
+
 class Event(Gdk.Event):
     _UNION_MEMBERS = {
         Gdk.EventType.DELETE: 'any',
@@ -202,11 +250,12 @@ gsuccess_mask_funcs = ['get_state',
                        'get_coords',
                        'get_root_coords']
 
+
 def _gsuccess_mask(func):
     def cull_success(*args):
         result = func(*args)
         success = result[0]
-        if success == False:
+        if not success:
             return None
         else:
             if len(result) == 2:
@@ -235,6 +284,7 @@ for event_class in event_member_classes:
 
 # end GdkEvent overrides
 
+
 class DragContext(Gdk.DragContext):
     def finish(self, success, del_, time):
         Gtk = modules['Gtk']._introspection_module
@@ -243,6 +293,7 @@ class DragContext(Gdk.DragContext):
 DragContext = override(DragContext)
 __all__.append('DragContext')
 
+
 class Cursor(Gdk.Cursor):
     def __new__(cls, *args, **kwds):
         arg_len = len(args)
@@ -284,6 +335,66 @@ class Cursor(Gdk.Cursor):
 Cursor = override(Cursor)
 __all__.append('Cursor')
 
+_Gdk_color_parse = Gdk.color_parse
+
+
+@override(Gdk.color_parse)
+def color_parse(color):
+    success, color = _Gdk_color_parse(color)
+    if not success:
+        return None
+    return color
+
+# constants
+if Gdk._version >= '3.0':
+    SELECTION_PRIMARY = Gdk.atom_intern('PRIMARY', True)
+    __all__.append('SELECTION_PRIMARY')
+
+    SELECTION_SECONDARY = Gdk.atom_intern('SECONDARY', True)
+    __all__.append('SELECTION_SECONDARY')
+
+    SELECTION_CLIPBOARD = Gdk.atom_intern('CLIPBOARD', True)
+    __all__.append('SELECTION_CLIPBOARD')
+
+    TARGET_BITMAP = Gdk.atom_intern('BITMAP', True)
+    __all__.append('TARGET_BITMAP')
+
+    TARGET_COLORMAP = Gdk.atom_intern('COLORMAP', True)
+    __all__.append('TARGET_COLORMAP')
+
+    TARGET_DRAWABLE = Gdk.atom_intern('DRAWABLE', True)
+    __all__.append('TARGET_DRAWABLE')
+
+    TARGET_PIXMAP = Gdk.atom_intern('PIXMAP', True)
+    __all__.append('TARGET_PIXMAP')
+
+    TARGET_STRING = Gdk.atom_intern('STRING', True)
+    __all__.append('TARGET_STRING')
+
+    SELECTION_TYPE_ATOM = Gdk.atom_intern('ATOM', True)
+    __all__.append('SELECTION_TYPE_ATOM')
+
+    SELECTION_TYPE_BITMAP = Gdk.atom_intern('BITMAP', True)
+    __all__.append('SELECTION_TYPE_BITMAP')
+
+    SELECTION_TYPE_COLORMAP = Gdk.atom_intern('COLORMAP', True)
+    __all__.append('SELECTION_TYPE_COLORMAP')
+
+    SELECTION_TYPE_DRAWABLE = Gdk.atom_intern('DRAWABLE', True)
+    __all__.append('SELECTION_TYPE_DRAWABLE')
+
+    SELECTION_TYPE_INTEGER = Gdk.atom_intern('INTEGER', True)
+    __all__.append('SELECTION_TYPE_INTEGER')
+
+    SELECTION_TYPE_PIXMAP = Gdk.atom_intern('PIXMAP', True)
+    __all__.append('SELECTION_TYPE_PIXMAP')
+
+    SELECTION_TYPE_WINDOW = Gdk.atom_intern('WINDOW', True)
+    __all__.append('SELECTION_TYPE_WINDOW')
+
+    SELECTION_TYPE_STRING = Gdk.atom_intern('STRING', True)
+    __all__.append('SELECTION_TYPE_STRING')
+
 import sys
 
 initialized, argv = Gdk.init_check(sys.argv)
index 20adf0c..7f6e5c7 100644 (file)
@@ -29,6 +29,7 @@ Gio = modules['Gio']._introspection_module
 
 __all__ = []
 
+
 class FileEnumerator(Gio.FileEnumerator):
     def __iter__(self):
         return self
@@ -48,11 +49,22 @@ class FileEnumerator(Gio.FileEnumerator):
 FileEnumerator = override(FileEnumerator)
 __all__.append('FileEnumerator')
 
+
+class MenuItem(Gio.MenuItem):
+    def set_attribute(self, attributes):
+        for (name, format_string, value) in attributes:
+            self.set_attribute_value(name, GLib.Variant(format_string, value))
+
+
+MenuItem = override(MenuItem)
+__all__.append('MenuItem')
+
+
 class Settings(Gio.Settings):
     '''Provide dictionary-like access to GLib.Settings.'''
 
-    def __init__(self, schema, path=None, backend=None):
-        Gio.Settings.__init__(self, schema=schema, backend=backend, path=path)
+    def __init__(self, schema, path=None, backend=None, **kwargs):
+        Gio.Settings.__init__(self, schema=schema, backend=backend, path=path, **kwargs)
 
     def __contains__(self, key):
         return key in self.list_keys()
@@ -100,6 +112,7 @@ class Settings(Gio.Settings):
 Settings = override(Settings)
 __all__.append('Settings')
 
+
 class _DBusProxyMethodCall:
     '''Helper class to implement DBusProxy method calls.'''
 
@@ -138,14 +151,17 @@ class _DBusProxyMethodCall:
         if 'result_handler' in kwargs:
             # asynchronous call
             user_data = (kwargs['result_handler'],
-                    kwargs.get('error_handler'), kwargs.get('user_data'))
+                         kwargs.get('error_handler'),
+                         kwargs.get('user_data'))
             self.dbus_proxy.call(self.method_name, arg_variant,
-                    kwargs.get('flags', 0), kwargs.get('timeout', -1), None,
-                    self.__async_result_handler, user_data)
+                                 kwargs.get('flags', 0), kwargs.get('timeout', -1), None,
+                                 self.__async_result_handler, user_data)
         else:
             # synchronous call
             result = self.dbus_proxy.call_sync(self.method_name, arg_variant,
-                    kwargs.get('flags', 0), kwargs.get('timeout', -1), None)
+                                               kwargs.get('flags', 0),
+                                               kwargs.get('timeout', -1),
+                                               None)
             return self._unpack_result(result)
 
     @classmethod
@@ -163,9 +179,10 @@ class _DBusProxyMethodCall:
 
         return result
 
+
 class DBusProxy(Gio.DBusProxy):
     '''Provide comfortable and pythonic method calls.
-    
+
     This marshalls the method arguments into a GVariant, invokes the
     call_sync() method on the DBusProxy object, and unmarshalls the result
     GVariant back into a Python tuple.
@@ -193,7 +210,7 @@ class DBusProxy(Gio.DBusProxy):
       error_handler(proxy_object, exception, user_data) is called when it
       finishes. If error_handler is not given, result_handler is called with
       the exception object as result instead.
-    
+
     - user_data: Optional user data to pass to result_handler for
       asynchronous calls.
 
index 30e883c..5eab41b 100644 (file)
@@ -20,7 +20,6 @@
 # USA
 
 import sys
-import gobject
 from gi.repository import GObject
 from ..overrides import override
 from ..importer import modules
@@ -35,6 +34,18 @@ else:
 Gtk = modules['Gtk']._introspection_module
 __all__ = []
 
+if Gtk._version == '2.0':
+    import warnings
+    warn_msg = "You have imported the Gtk 2.0 module.  Because Gtk 2.0 \
+was not designed for use with introspection some of the \
+interfaces and API will fail.  As such this is not supported \
+by the pygobject development team and we encourage you to \
+port your app to Gtk 3 or greater. PyGTK is the recomended \
+python module to use with Gtk 2.0"
+
+    warnings.warn(warn_msg, RuntimeWarning)
+
+
 class Widget(Gtk.Widget):
 
     def translate_coordinates(self, dest_widget, src_x, src_y):
@@ -43,9 +54,13 @@ class Widget(Gtk.Widget):
         if success:
             return (dest_x, dest_y,)
 
+    def render_icon(self, stock_id, size, detail=None):
+        return super(Widget, self).render_icon(stock_id, size, detail)
+
 Widget = override(Widget)
 __all__.append('Widget')
 
+
 class Container(Gtk.Container, Widget):
 
     def __len__(self):
@@ -71,6 +86,7 @@ class Container(Gtk.Container, Widget):
 Container = override(Container)
 __all__.append('Container')
 
+
 class Editable(Gtk.Editable):
 
     def insert_text(self, text, position):
@@ -88,6 +104,7 @@ class Editable(Gtk.Editable):
 Editable = override(Editable)
 __all__.append("Editable")
 
+
 class Action(Gtk.Action):
     def __init__(self, name, label, tooltip, stock_id, **kwds):
         Gtk.Action.__init__(self, name=name, label=label, tooltip=tooltip, stock_id=stock_id, **kwds)
@@ -95,6 +112,7 @@ class Action(Gtk.Action):
 Action = override(Action)
 __all__.append("Action")
 
+
 class RadioAction(Gtk.RadioAction):
     def __init__(self, name, label, tooltip, stock_id, value, **kwds):
         Gtk.RadioAction.__init__(self, name=name, label=label, tooltip=tooltip, stock_id=stock_id, value=value, **kwds)
@@ -102,9 +120,10 @@ class RadioAction(Gtk.RadioAction):
 RadioAction = override(RadioAction)
 __all__.append("RadioAction")
 
+
 class ActionGroup(Gtk.ActionGroup):
     def __init__(self, name, **kwds):
-        super(ActionGroup, self).__init__(name = name, **kwds)
+        super(ActionGroup, self).__init__(name=name, **kwds)
 
     def add_actions(self, entries, user_data=None):
         """
@@ -140,7 +159,10 @@ class ActionGroup(Gtk.ActionGroup):
         def _process_action(name, stock_id=None, label=None, accelerator=None, tooltip=None, callback=None):
             action = Action(name, label, tooltip, stock_id)
             if callback is not None:
-                action.connect('activate', callback, user_data)
+                if user_data is None:
+                    action.connect('activate', callback)
+                else:
+                    action.connect('activate', callback, user_data)
 
             self.add_action_with_accel(action, accelerator)
 
@@ -186,7 +208,10 @@ class ActionGroup(Gtk.ActionGroup):
             action = Gtk.ToggleAction(name, label, tooltip, stock_id)
             action.set_active(is_active)
             if callback is not None:
-                action.connect('activate', callback, user_data)
+                if user_data is None:
+                    action.connect('activate', callback)
+                else:
+                    action.connect('activate', callback, user_data)
 
             self.add_action_with_accel(action, accelerator)
 
@@ -194,7 +219,6 @@ class ActionGroup(Gtk.ActionGroup):
             # using inner function above since entries can leave out optional arguments
             _process_action(*e)
 
-
     def add_radio_actions(self, entries, value=None, on_change=None, user_data=None):
         """
         The add_radio_actions() method is a convenience method that creates a
@@ -254,11 +278,15 @@ class ActionGroup(Gtk.ActionGroup):
                 first_action = action
 
         if first_action is not None and on_change is not None:
-            first_action.connect('changed', on_change, user_data)
+            if user_data is None:
+                first_action.connect('changed', on_change)
+            else:
+                first_action.connect('changed', on_change, user_data)
 
 ActionGroup = override(ActionGroup)
 __all__.append('ActionGroup')
 
+
 class UIManager(Gtk.UIManager):
     def add_ui_from_string(self, buffer):
         if not isinstance(buffer, _basestring):
@@ -274,6 +302,7 @@ class UIManager(Gtk.UIManager):
 UIManager = override(UIManager)
 __all__.append('UIManager')
 
+
 class ComboBox(Gtk.ComboBox, Container):
 
     def get_active_iter(self):
@@ -284,6 +313,36 @@ class ComboBox(Gtk.ComboBox, Container):
 ComboBox = override(ComboBox)
 __all__.append('ComboBox')
 
+
+class Box(Gtk.Box):
+    def __init__(self, homogeneous=False, spacing=0, **kwds):
+        super(Box, self).__init__(**kwds)
+        self.set_homogeneous(homogeneous)
+        self.set_spacing(spacing)
+
+Box = override(Box)
+__all__.append('Box')
+
+
+class SizeGroup(Gtk.SizeGroup):
+    def __init__(self, mode=Gtk.SizeGroupMode.VERTICAL):
+        super(SizeGroup, self).__init__(mode=mode)
+
+SizeGroup = override(SizeGroup)
+__all__.append('SizeGroup')
+
+
+class MenuItem(Gtk.MenuItem):
+    def __init__(self, label=None, **kwds):
+        if label:
+            super(MenuItem, self).__init__(label=label, **kwds)
+        else:
+            super(MenuItem, self).__init__(**kwds)
+
+MenuItem = override(MenuItem)
+__all__.append('MenuItem')
+
+
 class Builder(Gtk.Builder):
 
     def connect_signals(self, obj_or_map):
@@ -300,7 +359,7 @@ class Builder(Gtk.Builder):
             if not _callable(handler):
                 raise TypeError('Handler %s is not a method or function' % handler_name)
 
-            after = flags or GObject.ConnectFlags.AFTER
+            after = flags & GObject.ConnectFlags.AFTER
             if connect_obj is not None:
                 if after:
                     gobj.connect_object_after(signal_name, handler, connect_obj)
@@ -334,6 +393,24 @@ Builder = override(Builder)
 __all__.append('Builder')
 
 
+# NOTE: This must come before any other Window/Dialog subclassing, to ensure
+# that we have a correct inheritance hierarchy.
+
+
+class Window(Gtk.Window):
+    def __init__(self, type=Gtk.WindowType.TOPLEVEL, **kwds):
+        # type is a construct-only property; if it is already set (e. g. by
+        # GtkBuilder), do not try to set it again and just ignore it
+        try:
+            self.get_property('type')
+            Gtk.Window.__init__(self, **kwds)
+        except TypeError:
+            Gtk.Window.__init__(self, type=type, **kwds)
+
+Window = override(Window)
+__all__.append('Window')
+
+
 class Dialog(Gtk.Dialog, Container):
 
     def __init__(self,
@@ -361,15 +438,17 @@ class Dialog(Gtk.Dialog, Container):
             self.set_destroy_with_parent(True)
 
         # NO_SEPARATOR has been removed from Gtk 3
-        try:
-            if flags & Gtk.DialogFlags.NO_SEPARATOR:
-                self.set_has_separator(False)
-        except AttributeError:
-            pass
+        if hasattr(Gtk.DialogFlags, "NO_SEPARATOR") and (flags & Gtk.DialogFlags.NO_SEPARATOR):
+            self.set_has_separator(False)
+            import warnings
+            warnings.warn("Gtk.DialogFlags.NO_SEPARATOR has been depricated since Gtk+-3.0", DeprecationWarning)
 
         if buttons is not None:
             self.add_buttons(*buttons)
 
+    action_area = property(lambda dialog: dialog.get_action_area())
+    vbox = property(lambda dialog: dialog.get_content_area())
+
     def add_buttons(self, *args):
         """
         The add_buttons() method adds several buttons to the Gtk.Dialog using
@@ -397,22 +476,31 @@ class Dialog(Gtk.Dialog, Container):
 Dialog = override(Dialog)
 __all__.append('Dialog')
 
+
 class MessageDialog(Gtk.MessageDialog, Dialog):
     def __init__(self,
                  parent=None,
                  flags=0,
-                 type=Gtk.MessageType.INFO,
+                 message_type=Gtk.MessageType.INFO,
                  buttons=Gtk.ButtonsType.NONE,
                  message_format=None,
                  **kwds):
 
-        if message_format != None:
+        if message_format:
             kwds['text'] = message_format
+
+        # type keyword is used for backwards compat with PyGTK
+        if 'type' in kwds:
+            import warnings
+            warnings.warn("The use of the keyword type as a parameter of the Gtk.MessageDialog constructor has been depricated. Please use message_type instead.", DeprecationWarning)
+            message_type = kwds.pop('type')
+
         Gtk.MessageDialog.__init__(self,
                                    _buttons_property=buttons,
-                                   message_type=type,
+                                   message_type=message_type,
+                                   parent=parent,
+                                   flags=flags,
                                    **kwds)
-        Dialog.__init__(self, parent=parent, flags=flags)
 
     def format_secondary_text(self, message_format):
         self.set_property('secondary-use-markup', False)
@@ -425,23 +513,24 @@ class MessageDialog(Gtk.MessageDialog, Dialog):
 MessageDialog = override(MessageDialog)
 __all__.append('MessageDialog')
 
-class AboutDialog(Gtk.AboutDialog, Dialog):
+
+class AboutDialog(Gtk.AboutDialog):
     def __init__(self, **kwds):
         Gtk.AboutDialog.__init__(self, **kwds)
-        Dialog.__init__(self)
 
 AboutDialog = override(AboutDialog)
 __all__.append('AboutDialog')
 
-class ColorSelectionDialog(Gtk.ColorSelectionDialog, Dialog):
+
+class ColorSelectionDialog(Gtk.ColorSelectionDialog):
     def __init__(self, title=None, **kwds):
-        Gtk.ColorSelectionDialog.__init__(self, **kwds)
-        Dialog.__init__(self, title=title)
+        Gtk.ColorSelectionDialog.__init__(self, title=title, **kwds)
 
 ColorSelectionDialog = override(ColorSelectionDialog)
 __all__.append('ColorSelectionDialog')
 
-class FileChooserDialog(Gtk.FileChooserDialog, Dialog):
+
+class FileChooserDialog(Gtk.FileChooserDialog):
     def __init__(self,
                  title=None,
                  parent=None,
@@ -450,24 +539,23 @@ class FileChooserDialog(Gtk.FileChooserDialog, Dialog):
                  **kwds):
         Gtk.FileChooserDialog.__init__(self,
                                        action=action,
+                                       title=title,
+                                       parent=parent,
+                                       buttons=buttons,
                                        **kwds)
-        Dialog.__init__(self,
-                        title=title,
-                        parent=parent,
-                        buttons=buttons)
-
 FileChooserDialog = override(FileChooserDialog)
 __all__.append('FileChooserDialog')
 
-class FontSelectionDialog(Gtk.FontSelectionDialog, Dialog):
+
+class FontSelectionDialog(Gtk.FontSelectionDialog):
     def __init__(self, title=None, **kwds):
-        Gtk.FontSelectionDialog.__init__(self, **kwds)
-        Dialog.__init__(self, title=title)
+        Gtk.FontSelectionDialog.__init__(self, title=title, **kwds)
 
 FontSelectionDialog = override(FontSelectionDialog)
 __all__.append('FontSelectionDialog')
 
-class RecentChooserDialog(Gtk.RecentChooserDialog, Dialog):
+
+class RecentChooserDialog(Gtk.RecentChooserDialog):
     def __init__(self,
                  title=None,
                  parent=None,
@@ -475,17 +563,22 @@ class RecentChooserDialog(Gtk.RecentChooserDialog, Dialog):
                  buttons=None,
                  **kwds):
 
-        Gtk.RecentChooserDialog.__init__(self, recent_manager=manager, **kwds)
-        Dialog.__init__(self,
-                        title=title,
-                        parent=parent,
-                        buttons=buttons)
+        Gtk.RecentChooserDialog.__init__(self,
+                                         recent_manager=manager,
+                                         title=title,
+                                         parent=parent,
+                                         buttons=buttons,
+                                         **kwds)
 
 RecentChooserDialog = override(RecentChooserDialog)
 __all__.append('RecentChooserDialog')
 
+
 class IconView(Gtk.IconView):
 
+    def __init__(self, model=None, **kwds):
+        Gtk.IconView.__init__(self, model=model, **kwds)
+
     def get_item_at_pos(self, x, y):
         success, path, cell = super(IconView, self).get_item_at_pos(x, y)
         if success:
@@ -504,6 +597,16 @@ class IconView(Gtk.IconView):
 IconView = override(IconView)
 __all__.append('IconView')
 
+
+class ToolButton(Gtk.ToolButton):
+
+    def __init__(self, stock_id=None, **kwds):
+        Gtk.ToolButton.__init__(self, stock_id=stock_id, **kwds)
+
+ToolButton = override(ToolButton)
+__all__.append('ToolButton')
+
+
 class IMContext(Gtk.IMContext):
 
     def get_surrounding(self):
@@ -514,6 +617,7 @@ class IMContext(Gtk.IMContext):
 IMContext = override(IMContext)
 __all__.append('IMContext')
 
+
 class RecentInfo(Gtk.RecentInfo):
 
     def get_application_info(self, app_name):
@@ -524,6 +628,7 @@ class RecentInfo(Gtk.RecentInfo):
 RecentInfo = override(RecentInfo)
 __all__.append('RecentInfo')
 
+
 class TextBuffer(Gtk.TextBuffer):
     def _get_or_create_tag_table(self):
         table = self.get_tag_table()
@@ -564,11 +669,10 @@ class TextBuffer(Gtk.TextBuffer):
     def set_text(self, text, length=-1):
         Gtk.TextBuffer.set_text(self, text, length)
 
-    def insert(self, iter, text):
-        if not isinstance(text , _basestring):
+    def insert(self, iter, text, length=-1):
+        if not isinstance(text, _basestring):
             raise TypeError('text must be a string, not %s' % type(text))
 
-        length = len(text)
         Gtk.TextBuffer.insert(self, iter, text, length)
 
     def insert_with_tags(self, iter, text, *tags):
@@ -597,11 +701,10 @@ class TextBuffer(Gtk.TextBuffer):
 
         self.insert_with_tags(iter, text, *tag_objs)
 
-    def insert_at_cursor(self, text):
-        if not isinstance(text , _basestring):
+    def insert_at_cursor(self, text, length=-1):
+        if not isinstance(text, _basestring):
             raise TypeError('text must be a string, not %s' % type(text))
 
-        length = len(text)
         Gtk.TextBuffer.insert_at_cursor(self, text, length)
 
     def get_selection_bounds(self):
@@ -614,17 +717,24 @@ class TextBuffer(Gtk.TextBuffer):
 TextBuffer = override(TextBuffer)
 __all__.append('TextBuffer')
 
+
 class TextIter(Gtk.TextIter):
 
     def forward_search(self, string, flags, limit):
         success, match_start, match_end = super(TextIter, self).forward_search(string,
-            flags, limit)
-        return (match_start, match_end,)
+                                                                               flags, limit)
+        if success:
+            return (match_start, match_end)
+        else:
+            return None
 
     def backward_search(self, string, flags, limit):
         success, match_start, match_end = super(TextIter, self).backward_search(string,
-            flags, limit)
-        return (match_start, match_end,)
+                                                                                flags, limit)
+        if success:
+            return (match_start, match_end)
+        else:
+            return None
 
     def begins_tag(self, tag=None):
         return super(TextIter, self).begins_tag(tag)
@@ -638,6 +748,7 @@ class TextIter(Gtk.TextIter):
 TextIter = override(TextIter)
 __all__.append('TextIter')
 
+
 class TreeModel(Gtk.TreeModel):
     def __len__(self):
         return self.iter_n_children(None)
@@ -648,9 +759,9 @@ class TreeModel(Gtk.TreeModel):
     # alias for Python 2.x object protocol
     __nonzero__ = __bool__
 
-    def __getitem__(self, key):
+    def _getiter(self, key):
         if isinstance(key, Gtk.TreeIter):
-            return TreeModelRow(self, key)
+            return key
         elif isinstance(key, int) and key < 0:
             index = len(self) + key
             if index < 0:
@@ -659,13 +770,25 @@ class TreeModel(Gtk.TreeModel):
                 aiter = self.get_iter(index)
             except ValueError:
                 raise IndexError("could not find tree path '%s'" % key)
-            return TreeModelRow(self, aiter)
+            return aiter
         else:
             try:
                 aiter = self.get_iter(key)
             except ValueError:
                 raise IndexError("could not find tree path '%s'" % key)
-            return TreeModelRow(self, aiter)
+            return aiter
+
+    def __getitem__(self, key):
+        aiter = self._getiter(key)
+        return TreeModelRow(self, aiter)
+
+    def __setitem__(self, key, value):
+        row = self[key]
+        self.set_row(row.iter, value)
+
+    def __delitem__(self, key):
+        aiter = self._getiter(key)
+        self.remove(aiter)
 
     def __iter__(self):
         return TreeModelRowIter(self, self.get_iter_first())
@@ -696,6 +819,12 @@ class TreeModel(Gtk.TreeModel):
         if success:
             return next_iter
 
+    def iter_previous(self, aiter):
+        prev_iter = aiter.copy()
+        success = super(TreeModel, self).iter_previous(prev_iter)
+        if success:
+            return prev_iter
+
     def iter_children(self, aiter):
         success, child_iter = super(TreeModel, self).iter_children(aiter)
         if success:
@@ -711,100 +840,114 @@ class TreeModel(Gtk.TreeModel):
         if success:
             return parent_iter
 
-    def set_row(self, treeiter, row):
+    def _convert_row(self, row):
         # TODO: Accept a dictionary for row
         # model.append(None,{COLUMN_ICON: icon, COLUMN_NAME: name})
+        if isinstance(row, str):
+            raise TypeError('Expected a list or tuple, but got str')
 
         n_columns = self.get_n_columns()
         if len(row) != n_columns:
             raise ValueError('row sequence has the incorrect number of elements')
 
-        for i in range(n_columns):
-            value = row[i]
+        result = []
+        columns = []
+        for cur_col, value in enumerate(row):
+            # do not try to set None values, they are causing warnings
             if value is None:
-               continue  # None means skip this row
+                continue
+            result.append(self._convert_value(cur_col, value))
+            columns.append(cur_col)
+        return (result, columns)
 
-            self.set_value(treeiter, i, value)
-
-    def _convert_value(self, treeiter, column, value):
+    def set_row(self, treeiter, row):
+        converted_row, columns = self._convert_row(row)
+        for column in columns:
+            value = row[column]
             if value is None:
-                return
-
-            # we may need to convert to a basic type
-            type_ = self.get_column_type(column)
-            if type_ == GObject.TYPE_STRING:
-                if isinstance(value, str):
-                    value = str(value)
-                elif sys.version_info < (3, 0):
-                    if isinstance(value, unicode):
-                        value = value.encode('UTF-8')
-                    else:
-                        raise ValueError('Expected string or unicode for column %i but got %s%s' % (column, value, type(value)))
-                else:
-                    raise ValueError('Expected a string for column %i but got %s' % (column, type(value)))
-            elif type_ == GObject.TYPE_FLOAT or type_ == GObject.TYPE_DOUBLE:
-                if isinstance(value, float):
-                    value = float(value)
+                continue  # None means skip this row
+
+            self.set_value(treeiter, column, value)
+
+    def _convert_value(self, column, value):
+        if value is None:
+            return None
+
+        # we may need to convert to a basic type
+        type_ = self.get_column_type(column)
+        if type_ == GObject.TYPE_STRING:
+            if isinstance(value, str):
+                value = str(value)
+            elif sys.version_info < (3, 0):
+                if isinstance(value, unicode):
+                    value = value.encode('UTF-8')
                 else:
-                    raise ValueError('Expected a float for column %i but got %s' % (column, type(value)))
-            elif type_ == GObject.TYPE_LONG or type_ == GObject.TYPE_INT:
-                if isinstance(value, int):
-                    value = int(value)
-                elif sys.version_info < (3, 0):
-                    if isinstance(value, long):
-                        value = long(value)
-                    else:
-                        raise ValueError('Expected an long for column %i but got %s' % (column, type(value)))
+                    raise ValueError('Expected string or unicode for column %i but got %s%s' % (column, value, type(value)))
+            else:
+                raise ValueError('Expected a string for column %i but got %s' % (column, type(value)))
+        elif type_ == GObject.TYPE_FLOAT or type_ == GObject.TYPE_DOUBLE:
+            if isinstance(value, float):
+                value = float(value)
+            else:
+                raise ValueError('Expected a float for column %i but got %s' % (column, type(value)))
+        elif type_ == GObject.TYPE_LONG or type_ == GObject.TYPE_INT:
+            if isinstance(value, int):
+                value = int(value)
+            elif sys.version_info < (3, 0):
+                if isinstance(value, long):
+                    value = long(value)
                 else:
-                    raise ValueError('Expected an integer for column %i but got %s' % (column, type(value)))
-            elif type_ == GObject.TYPE_BOOLEAN:
-                cmp_classes = [int]
+                    raise ValueError('Expected an long for column %i but got %s' % (column, type(value)))
+            else:
+                raise ValueError('Expected an integer for column %i but got %s' % (column, type(value)))
+        elif type_ == GObject.TYPE_BOOLEAN:
+            cmp_classes = [int]
+            if sys.version_info < (3, 0):
+                cmp_classes.append(long)
+
+            if isinstance(value, tuple(cmp_classes)):
+                value = bool(value)
+            else:
+                raise ValueError('Expected a bool for column %i but got %s' % (column, type(value)))
+        else:
+            # use GValues directly to marshal to the correct type
+            # standard object checks should take care of validation
+            # so we don't have to do it here
+            value_container = GObject.Value()
+            value_container.init(type_)
+            if type_ == GObject.TYPE_CHAR:
+                value_container.set_char(value)
+                value = value_container
+            elif type_ == GObject.TYPE_UCHAR:
+                value_container.set_uchar(value)
+                value = value_container
+            elif type_ == GObject.TYPE_UNICHAR:
+                cmp_classes = [str]
                 if sys.version_info < (3, 0):
-                    cmp_classes.append(long)
+                    cmp_classes.append(unicode)
 
                 if isinstance(value, tuple(cmp_classes)):
-                    value = bool(value)
-                else:
-                    raise ValueError('Expected a bool for column %i but got %s' % (column, type(value)))
-            else:
-                # use GValues directly to marshal to the correct type
-                # standard object checks should take care of validation
-                # so we don't have to do it here
-                value_container = GObject.Value()
-                value_container.init(type_)
-                if type_ == GObject.TYPE_PYOBJECT:
-                    value_container.set_boxed(value)
-                    value = value_container
-                elif type_ == GObject.TYPE_CHAR:
-                    value_container.set_char(value)
-                    value = value_container
-                elif type_ == GObject.TYPE_UCHAR:
-                    value_container.set_uchar(value)
-                    value = value_container
-                elif type_ == GObject.TYPE_UNICHAR:
-                    cmp_classes = [str]
-                    if sys.version_info < (3, 0):
-                        cmp_classes.append(unicode)
-
-                    if isinstance(value, tuple(cmp_classes)):
-                        value = ord(value[0])
-
-                    value_container.set_uint(value)
-                    value = value_container
-                elif type_ == GObject.TYPE_UINT:
-                    value_container.set_uint(value)
-                    value = value_container
-                elif type_ == GObject.TYPE_ULONG:
-                    value_container.set_ulong(value)
-                    value = value_container
-                elif type_ == GObject.TYPE_INT64:
-                    value_container.set_int64(value)
-                    value = value_container
-                elif type_ == GObject.TYPE_UINT64:
-                    value_container.set_uint64(value)
-                    value = value_container
-
-            return value
+                    value = ord(value[0])
+
+                value_container.set_uint(value)
+                value = value_container
+            elif type_ == GObject.TYPE_UINT:
+                value_container.set_uint(value)
+                value = value_container
+            elif type_ == GObject.TYPE_ULONG:
+                value_container.set_ulong(value)
+                value = value_container
+            elif type_ == GObject.TYPE_INT64:
+                value_container.set_int64(value)
+                value = value_container
+            elif type_ == GObject.TYPE_UINT64:
+                value_container.set_uint64(value)
+                value = value_container
+            elif type_ == GObject.TYPE_PYOBJECT:
+                value_container.set_boxed(value)
+                value = value_container
+
+        return value
 
     def get(self, treeiter, *columns):
         n_columns = self.get_n_columns()
@@ -821,9 +964,13 @@ class TreeModel(Gtk.TreeModel):
 
         return tuple(values)
 
+    def filter_new(self, root=None):
+        return super(TreeModel, self).filter_new(root)
+
 TreeModel = override(TreeModel)
 __all__.append('TreeModel')
 
+
 class TreeSortable(Gtk.TreeSortable, ):
 
     def get_sort_column_id(self):
@@ -842,26 +989,45 @@ class TreeSortable(Gtk.TreeSortable, ):
 TreeSortable = override(TreeSortable)
 __all__.append('TreeSortable')
 
+
+class TreeModelSort(Gtk.TreeModelSort):
+    def __init__(self, model, **kwds):
+        Gtk.TreeModelSort.__init__(self, model=model, **kwds)
+
+TreeModelSort = override(TreeModelSort)
+__all__.append('TreeModelSort')
+
+
 class ListStore(Gtk.ListStore, TreeModel, TreeSortable):
     def __init__(self, *column_types):
         Gtk.ListStore.__init__(self)
         self.set_column_types(column_types)
 
-    def append(self, row=None):
-        treeiter = Gtk.ListStore.append(self)
-
+    def _do_insert(self, position, row):
         if row is not None:
-            self.set_row(treeiter, row)
+            row, columns = self._convert_row(row)
+            treeiter = self.insert_with_valuesv(position, columns, row)
+        else:
+            treeiter = Gtk.ListStore.insert(self, position)
 
         return treeiter
 
-    def insert(self, position, row=None):
-        treeiter = Gtk.ListStore.insert(self, position)
+    def append(self, row=None):
+        if row:
+            return self._do_insert(-1, row)
+        # gtk_list_store_insert() does not know about the "position == -1"
+        # case, so use append() here
+        else:
+            return Gtk.ListStore.append(self)
 
-        if row is not None:
-            self.set_row(treeiter, row)
+    def prepend(self, row=None):
+        return self._do_insert(0, row)
 
-        return treeiter
+    def insert(self, position, row=None):
+        return self._do_insert(position, row)
+
+    # FIXME: sends two signals; check if this can use an atomic
+    # insert_with_valuesv()
 
     def insert_before(self, sibling, row=None):
         treeiter = Gtk.ListStore.insert_before(self, sibling)
@@ -871,6 +1037,9 @@ class ListStore(Gtk.ListStore, TreeModel, TreeSortable):
 
         return treeiter
 
+    # FIXME: sends two signals; check if this can use an atomic
+    # insert_with_valuesv()
+
     def insert_after(self, sibling, row=None):
         treeiter = Gtk.ListStore.insert_after(self, sibling)
 
@@ -880,13 +1049,39 @@ class ListStore(Gtk.ListStore, TreeModel, TreeSortable):
         return treeiter
 
     def set_value(self, treeiter, column, value):
-        value = self._convert_value(treeiter, column, value)
+        value = self._convert_value(column, value)
         Gtk.ListStore.set_value(self, treeiter, column, value)
 
+    def set(self, treeiter, *args):
+
+        def _set_lists(columns, values):
+            if len(columns) != len(values):
+                raise TypeError('The number of columns do not match the number of values')
+            for col_num, val in zip(columns, values):
+                if not isinstance(col_num, int):
+                    raise TypeError('TypeError: Expected integer argument for column.')
+                self.set_value(treeiter, col_num, val)
+
+        if args:
+            if isinstance(args[0], int):
+                columns = args[::2]
+                values = args[1::2]
+                _set_lists(columns, values)
+            elif isinstance(args[0], (tuple, list)):
+                if len(args) != 2:
+                    raise TypeError('Too many arguments')
+                _set_lists(args[0], args[1])
+            elif isinstance(args[0], dict):
+                columns = args[0].keys()
+                values = args[0].values()
+                _set_lists(columns, values)
+            else:
+                raise TypeError('Argument list must be in the form of (column, value, ...), ((columns,...), (values, ...)) or {column: value}.  No -1 termination is needed.')
 
 ListStore = override(ListStore)
 __all__.append('ListStore')
 
+
 class TreeModelRow(object):
 
     def __init__(self, model, iter_or_path):
@@ -910,6 +1105,10 @@ class TreeModelRow(object):
         return self.get_next()
 
     @property
+    def previous(self):
+        return self.get_previous()
+
+    @property
     def parent(self):
         return self.get_parent()
 
@@ -918,6 +1117,11 @@ class TreeModelRow(object):
         if next_iter:
             return TreeModelRow(self.model, next_iter)
 
+    def get_previous(self):
+        prev_iter = self.model.iter_previous(self.iter)
+        if prev_iter:
+            return TreeModelRow(self.model, prev_iter)
+
     def get_parent(self):
         parent_iter = self.model.iter_parent(self.iter)
         if parent_iter:
@@ -930,6 +1134,12 @@ class TreeModelRow(object):
             elif key < 0:
                 key = self._convert_negative_index(key)
             return self.model.get_value(self.iter, key)
+        elif isinstance(key, slice):
+            start, stop, step = key.indices(self.model.get_n_columns())
+            alist = []
+            for i in range(start, stop, step):
+                alist.append(self.model.get_value(self.iter, i))
+            return alist
         else:
             raise TypeError("indices must be integers, not %s" % type(key).__name__)
 
@@ -939,9 +1149,19 @@ class TreeModelRow(object):
                 raise IndexError("column index is out of bounds: %d" % key)
             elif key < 0:
                 key = self._convert_negative_index(key)
-            return self.model.set_value(self.iter, key, value)
+            self.model.set_value(self.iter, key, value)
+        elif isinstance(key, slice):
+            start, stop, step = key.indices(self.model.get_n_columns())
+            indexList = range(start, stop, step)
+            if len(indexList) != len(value):
+                raise ValueError(
+                    "attempt to assign sequence of size %d to slice of size %d"
+                    % (len(value), len(indexList)))
+
+            for i, v in enumerate(indexList):
+                self.model.set_value(self.iter, v, value[i])
         else:
-            raise TypeError("indices must be integers, not %s" % type(key).__name__)
+            raise TypeError("index must be an integer or slice, not %s" % type(key).__name__)
 
     def _convert_negative_index(self, index):
         new_index = self.model.get_n_columns() + index
@@ -955,6 +1175,7 @@ class TreeModelRow(object):
 
 __all__.append('TreeModelRow')
 
+
 class TreeModelRowIter(object):
 
     def __init__(self, model, aiter):
@@ -976,6 +1197,7 @@ class TreeModelRowIter(object):
 
 __all__.append('TreeModelRowIter')
 
+
 class TreePath(Gtk.TreePath):
 
     def __new__(cls, path=0):
@@ -1012,30 +1234,45 @@ class TreePath(Gtk.TreePath):
     def __ge__(self, other):
         return other is None or self.compare(other) >= 0
 
+    def __iter__(self):
+        return iter(self.get_indices())
+
+    def __len__(self):
+        return self.get_depth()
+
+    def __getitem__(self, index):
+        return self.get_indices()[index]
+
 TreePath = override(TreePath)
 __all__.append('TreePath')
 
+
 class TreeStore(Gtk.TreeStore, TreeModel, TreeSortable):
 
     def __init__(self, *column_types):
         Gtk.TreeStore.__init__(self)
         self.set_column_types(column_types)
 
-    def append(self, parent, row=None):
-        treeiter = Gtk.TreeStore.append(self, parent)
-
+    def _do_insert(self, parent, position, row):
         if row is not None:
-            self.set_row(treeiter, row)
+            row, columns = self._convert_row(row)
+            treeiter = self.insert_with_values(parent, position, columns, row)
+        else:
+            treeiter = Gtk.TreeStore.insert(self, parent, position)
 
         return treeiter
 
-    def insert(self, parent, position, row=None):
-        treeiter = Gtk.TreeStore.insert(self, parent, position)
+    def append(self, parent, row=None):
+        return self._do_insert(parent, -1, row)
 
-        if row is not None:
-            self.set_row(treeiter, row)
+    def prepend(self, parent, row=None):
+        return self._do_insert(parent, 0, row)
 
-        return treeiter
+    def insert(self, parent, position, row=None):
+        return self._do_insert(parent, position, row)
+
+    # FIXME: sends two signals; check if this can use an atomic
+    # insert_with_valuesv()
 
     def insert_before(self, parent, sibling, row=None):
         treeiter = Gtk.TreeStore.insert_before(self, parent, sibling)
@@ -1045,6 +1282,9 @@ class TreeStore(Gtk.TreeStore, TreeModel, TreeSortable):
 
         return treeiter
 
+    # FIXME: sends two signals; check if this can use an atomic
+    # insert_with_valuesv()
+
     def insert_after(self, parent, sibling, row=None):
         treeiter = Gtk.TreeStore.insert_after(self, parent, sibling)
 
@@ -1054,20 +1294,56 @@ class TreeStore(Gtk.TreeStore, TreeModel, TreeSortable):
         return treeiter
 
     def set_value(self, treeiter, column, value):
-        value = self._convert_value(treeiter, column, value)
+        value = self._convert_value(column, value)
         Gtk.TreeStore.set_value(self, treeiter, column, value)
 
+    def set(self, treeiter, *args):
+
+        def _set_lists(columns, values):
+            if len(columns) != len(values):
+                raise TypeError('The number of columns do not match the number of values')
+            for col_num, val in zip(columns, values):
+                if not isinstance(col_num, int):
+                    raise TypeError('TypeError: Expected integer argument for column.')
+                self.set_value(treeiter, col_num, val)
+
+        if args:
+            if isinstance(args[0], int):
+                columns = args[::2]
+                values = args[1::2]
+                _set_lists(columns, values)
+            elif isinstance(args[0], (tuple, list)):
+                if len(args) != 2:
+                    raise TypeError('Too many arguments')
+                _set_lists(args[0], args[1])
+            elif isinstance(args[0], dict):
+                columns = args[0].keys()
+                values = args[0].values()
+                _set_lists(columns, values)
+            else:
+                raise TypeError('Argument list must be in the form of (column, value, ...), ((columns,...), (values, ...)) or {column: value}.  No -1 termination is needed.')
 
 TreeStore = override(TreeStore)
 __all__.append('TreeStore')
 
+
 class TreeView(Gtk.TreeView, Container):
 
+    def __init__(self, model=None):
+        Gtk.TreeView.__init__(self)
+        if model:
+            self.set_model(model)
+
     def get_path_at_pos(self, x, y):
         success, path, column, cell_x, cell_y = super(TreeView, self).get_path_at_pos(x, y)
         if success:
             return (path, column, cell_x, cell_y,)
 
+    def get_visible_range(self):
+        success, start_path, end_path = super(TreeView, self).get_visible_range()
+        if success:
+            return (start_path, end_path,)
+
     def get_dest_row_at_pos(self, drag_x, drag_y):
         success, path, pos = super(TreeView, self).get_dest_row_at_pos(drag_x, drag_y)
         if success:
@@ -1098,10 +1374,27 @@ class TreeView(Gtk.TreeView, Container):
             path = TreePath(path)
         super(TreeView, self).scroll_to_cell(path, column, use_align, row_align, col_align)
 
+    def set_cursor(self, path, column=None, start_editing=False):
+        if not isinstance(path, Gtk.TreePath):
+            path = TreePath(path)
+        super(TreeView, self).set_cursor(path, column, start_editing)
+
+    def get_cell_area(self, path, column=None):
+        if not isinstance(path, Gtk.TreePath):
+            path = TreePath(path)
+        return super(TreeView, self).get_cell_area(path, column)
+
+    def insert_column_with_attributes(self, position, title, cell, **kwargs):
+        column = TreeViewColumn()
+        column.set_title(title)
+        column.pack_start(cell, False)
+        self.insert_column(column, position)
+        column.set_attributes(cell, **kwargs)
 
 TreeView = override(TreeView)
 __all__.append('TreeView')
 
+
 class TreeViewColumn(Gtk.TreeViewColumn):
     def __init__(self, title='',
                  cell_renderer=None,
@@ -1121,9 +1414,17 @@ class TreeViewColumn(Gtk.TreeViewColumn):
     def set_cell_data_func(self, cell_renderer, func, func_data=None):
         super(TreeViewColumn, self).set_cell_data_func(cell_renderer, func, func_data)
 
+    def set_attributes(self, cell_renderer, **attributes):
+        Gtk.CellLayout.clear_attributes(self, cell_renderer)
+
+        for (name, value) in attributes.items():
+            Gtk.CellLayout.add_attribute(self, cell_renderer, name, value)
+
+
 TreeViewColumn = override(TreeViewColumn)
 __all__.append('TreeViewColumn')
 
+
 class TreeSelection(Gtk.TreeSelection):
 
     def select_path(self, path):
@@ -1139,6 +1440,7 @@ class TreeSelection(Gtk.TreeSelection):
             return (model, None)
 
     # for compatibility with PyGtk
+
     def get_selected_rows(self):
         rows, model = super(TreeSelection, self).get_selected_rows()
         return (model, rows)
@@ -1147,19 +1449,19 @@ class TreeSelection(Gtk.TreeSelection):
 TreeSelection = override(TreeSelection)
 __all__.append('TreeSelection')
 
+
 class Button(Gtk.Button, Container):
-    def __init__(self, label=None, stock=None, use_underline=False, **kwds):
+    def __init__(self, label=None, stock=None, use_stock=False, use_underline=False, **kwds):
         if stock:
             label = stock
             use_stock = True
             use_underline = True
-        else:
-            use_stock = False
         Gtk.Button.__init__(self, label=label, use_stock=use_stock,
                             use_underline=use_underline, **kwds)
 Button = override(Button)
 __all__.append('Button')
 
+
 class LinkButton(Gtk.LinkButton):
     def __init__(self, uri, label=None, **kwds):
         Gtk.LinkButton.__init__(self, uri=uri, label=label, **kwds)
@@ -1167,6 +1469,7 @@ class LinkButton(Gtk.LinkButton):
 LinkButton = override(LinkButton)
 __all__.append('LinkButton')
 
+
 class Label(Gtk.Label):
     def __init__(self, label=None, **kwds):
         Gtk.Label.__init__(self, label=label, **kwds)
@@ -1174,12 +1477,19 @@ class Label(Gtk.Label):
 Label = override(Label)
 __all__.append('Label')
 
+
 class Adjustment(Gtk.Adjustment):
     def __init__(self, *args, **kwds):
         arg_names = ('value', 'lower', 'upper',
-                        'step_increment', 'page_increment', 'page_size')
+                     'step_increment', 'page_increment', 'page_size')
         new_args = dict(zip(arg_names, args))
         new_args.update(kwds)
+
+        # PyGTK compatiblity
+        if 'page_incr' in new_args:
+            new_args['page_increment'] = new_args.pop('page_incr')
+        if 'step_incr' in new_args:
+            new_args['step_increment'] = new_args.pop('step_incr')
         Gtk.Adjustment.__init__(self, **new_args)
 
         # The value property is set between lower and (upper - page_size).
@@ -1191,6 +1501,7 @@ class Adjustment(Gtk.Adjustment):
 Adjustment = override(Adjustment)
 __all__.append('Adjustment')
 
+
 class Table(Gtk.Table, Container):
     def __init__(self, rows=1, columns=1, homogeneous=False, **kwds):
         if 'n_rows' in kwds:
@@ -1198,15 +1509,16 @@ class Table(Gtk.Table, Container):
 
         if 'n_columns' in kwds:
             columns = kwds.pop('n_columns')
-            
+
         Gtk.Table.__init__(self, n_rows=rows, n_columns=columns, homogeneous=homogeneous, **kwds)
 
-    def attach(self, child, left_attach, right_attach, top_attach, bottom_attach, xoptions=Gtk.AttachOptions.EXPAND|Gtk.AttachOptions.FILL, yoptions=Gtk.AttachOptions.EXPAND|Gtk.AttachOptions.FILL, xpadding=0, ypadding=0):
+    def attach(self, child, left_attach, right_attach, top_attach, bottom_attach, xoptions=Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, yoptions=Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, xpadding=0, ypadding=0):
         Gtk.Table.attach(self, child, left_attach, right_attach, top_attach, bottom_attach, xoptions, yoptions, xpadding, ypadding)
 
 Table = override(Table)
 __all__.append('Table')
 
+
 class ScrolledWindow(Gtk.ScrolledWindow):
     def __init__(self, hadjustment=None, vadjustment=None, **kwds):
         Gtk.ScrolledWindow.__init__(self, hadjustment=hadjustment, vadjustment=vadjustment, **kwds)
@@ -1214,6 +1526,23 @@ class ScrolledWindow(Gtk.ScrolledWindow):
 ScrolledWindow = override(ScrolledWindow)
 __all__.append('ScrolledWindow')
 
+
+class HScrollbar(Gtk.HScrollbar):
+    def __init__(self, adjustment=None, **kwds):
+        Gtk.HScrollbar.__init__(self, adjustment=adjustment, **kwds)
+
+HScrollbar = override(HScrollbar)
+__all__.append('HScrollbar')
+
+
+class VScrollbar(Gtk.VScrollbar):
+    def __init__(self, adjustment=None, **kwds):
+        Gtk.VScrollbar.__init__(self, adjustment=adjustment, **kwds)
+
+VScrollbar = override(VScrollbar)
+__all__.append('VScrollbar')
+
+
 class Paned(Gtk.Paned):
     def pack1(self, child, resize=False, shrink=True):
         super(Paned, self).pack1(child, resize, shrink)
@@ -1224,6 +1553,46 @@ class Paned(Gtk.Paned):
 Paned = override(Paned)
 __all__.append('Paned')
 
+
+class Arrow(Gtk.Arrow):
+    def __init__(self, arrow_type, shadow_type, **kwds):
+        Gtk.Arrow.__init__(self, arrow_type=arrow_type,
+                           shadow_type=shadow_type,
+                           **kwds)
+
+Arrow = override(Arrow)
+__all__.append('Arrow')
+
+
+class IconSet(Gtk.IconSet):
+    def __new__(cls, pixbuf=None):
+        if pixbuf is not None:
+            iconset = Gtk.IconSet.new_from_pixbuf(pixbuf)
+        else:
+            iconset = Gtk.IconSet.__new__(cls)
+        return iconset
+
+IconSet = override(IconSet)
+__all__.append('IconSet')
+
+
+class Viewport(Gtk.Viewport):
+    def __init__(self, hadjustment=None, vadjustment=None, **kwds):
+        Gtk.Viewport.__init__(self, hadjustment=hadjustment,
+                              vadjustment=vadjustment,
+                              **kwds)
+
+Viewport = override(Viewport)
+__all__.append('Viewport')
+
+
+class TreeModelFilter(Gtk.TreeModelFilter):
+    def set_visible_func(self, func, data=None):
+        super(TreeModelFilter, self).set_visible_func(func, data)
+
+TreeModelFilter = override(TreeModelFilter)
+__all__.append('TreeModelFilter')
+
 if Gtk._version != '2.0':
     class Menu(Gtk.Menu):
         def popup(self, parent_menu_shell, parent_menu_item, func, data, button, activate_time):
@@ -1232,11 +1601,15 @@ if Gtk._version != '2.0':
     __all__.append('Menu')
 
 _Gtk_main_quit = Gtk.main_quit
+
+
 @override(Gtk.main_quit)
 def main_quit(*args):
     _Gtk_main_quit()
 
 _Gtk_stock_lookup = Gtk.stock_lookup
+
+
 @override(Gtk.stock_lookup)
 def stock_lookup(*args):
     success, item = _Gtk_stock_lookup(*args)
index 7a15b46..8d95eee 100644 (file)
@@ -1,8 +1,5 @@
-PLATFORM_VERSION = 2.0
+pygioverridesdir = $(pyexecdir)/gi/overrides
 
-pkgpyexecdir = $(pyexecdir)/gi
-
-pygioverridesdir = $(pkgpyexecdir)/overrides
 pygioverrides_PYTHON = \
        GLib.py \
        Gtk.py \
@@ -13,5 +10,13 @@ pygioverrides_PYTHON = \
        keysyms.py \
        __init__.py
 
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygioverrides_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
 
--include $(top_srcdir)/git.mk
+all-local: build_pylinks
+check-local: build_pylinks
index 96ce126..2c78fe1 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -48,14 +65,19 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -77,6 +99,13 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
 am__installdirs = "$(DESTDIR)$(pygioverridesdir)"
 py_compile = $(top_srcdir)/py-compile
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -90,6 +119,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
@@ -110,14 +141,13 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GIOUNIX_CFLAGS = @GIOUNIX_CFLAGS@
-GIOUNIX_LIBS = @GIOUNIX_LIBS@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
 GI_DATADIR = @GI_DATADIR@
 GI_LIBS = @GI_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
 GLIB_MKENUMS = @GLIB_MKENUMS@
@@ -170,6 +200,8 @@ PYTHON = @PYTHON@
 PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
@@ -180,7 +212,6 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-XSLTPROC = @XSLTPROC@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -222,13 +253,12 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
-pkgpyexecdir = $(pyexecdir)/gi
+pkgpyexecdir = @pkgpyexecdir@
 pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
-pygobject_CODEGEN_DEFINES = @pygobject_CODEGEN_DEFINES@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
@@ -238,8 +268,7 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-PLATFORM_VERSION = 2.0
-pygioverridesdir = $(pkgpyexecdir)/overrides
+pygioverridesdir = $(pyexecdir)/gi/overrides
 pygioverrides_PYTHON = \
        GLib.py \
        Gtk.py \
@@ -291,8 +320,11 @@ clean-libtool:
        -rm -rf .libs _libs
 install-pygioverridesPYTHON: $(pygioverrides_PYTHON)
        @$(NORMAL_INSTALL)
-       test -z "$(pygioverridesdir)" || $(MKDIR_P) "$(DESTDIR)$(pygioverridesdir)"
        @list='$(pygioverrides_PYTHON)'; dlist=; list2=; test -n "$(pygioverridesdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pygioverridesdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pygioverridesdir)" || exit 1; \
+       fi; \
        for p in $$list; do \
          if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
          if test -f $$b$$p; then \
@@ -308,9 +340,10 @@ install-pygioverridesPYTHON: $(pygioverrides_PYTHON)
        done || exit $$?; \
        if test -n "$$dlist"; then \
          if test -z "$(DESTDIR)"; then \
-           PYTHON=$(PYTHON) $(py_compile) --basedir "$(pygioverridesdir)" $$dlist; \
+           $(am__py_compile) --basedir "$(pygioverridesdir)" $$dlist; \
          else \
-           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(pygioverridesdir)" $$dlist; \
+           $(am__py_compile) --destdir "$(DESTDIR)" \
+                             --basedir "$(pygioverridesdir)" $$dlist; \
          fi; \
        else :; fi
 
@@ -319,14 +352,14 @@ uninstall-pygioverridesPYTHON:
        @list='$(pygioverrides_PYTHON)'; test -n "$(pygioverridesdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
+       dir='$(DESTDIR)$(pygioverridesdir)'; \
        filesc=`echo "$$files" | sed 's|$$|c|'`; \
        fileso=`echo "$$files" | sed 's|$$|o|'`; \
-       echo " ( cd '$(DESTDIR)$(pygioverridesdir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(pygioverridesdir)" && rm -f $$files || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pygioverridesdir)' && rm -f" $$filesc ")"; \
-       cd "$(DESTDIR)$(pygioverridesdir)" && rm -f $$filesc || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pygioverridesdir)' && rm -f" $$fileso ")"; \
-       cd "$(DESTDIR)$(pygioverridesdir)" && rm -f $$fileso
+       st=0; \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
+         $(am__uninstall_files_from_dir) || st=$$?; \
+       done; \
+       exit $$st
 tags: TAGS
 TAGS:
 
@@ -365,8 +398,9 @@ distdir: $(DISTFILES)
          fi; \
        done
 check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) check-local
 check: check-am
-all-am: Makefile
+all-am: Makefile all-local
 installdirs:
        for dir in "$(DESTDIR)$(pygioverridesdir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
@@ -381,10 +415,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
@@ -462,15 +501,15 @@ ps-am:
 
 uninstall-am: uninstall-pygioverridesPYTHON
 
-.MAKE: install-am install-strip
+.MAKE: check-am install-am install-strip
 
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       distclean distclean-generic distclean-libtool distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-pdf \
-       install-pdf-am install-ps install-ps-am \
+.PHONY: all all-am all-local check check-am check-local clean \
+       clean-generic clean-libtool distclean distclean-generic \
+       distclean-libtool distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
        install-pygioverridesPYTHON install-strip installcheck \
        installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-generic \
@@ -478,7 +517,16 @@ uninstall-am: uninstall-pygioverridesPYTHON
        uninstall-pygioverridesPYTHON
 
 
--include $(top_srcdir)/git.mk
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygioverrides_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+all-local: build_pylinks
+check-local: build_pylinks
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 3269806..34c76cc 100644 (file)
@@ -25,17 +25,28 @@ Pango = modules['Pango']._introspection_module
 
 __all__ = []
 
+
+class Context(Pango.Context):
+
+    def get_metrics(self, desc, language=None):
+        return super(Context, self).get_metrics(desc, language)
+
+Context = override(Context)
+__all__.append('Context')
+
+
 class FontDescription(Pango.FontDescription):
 
     def __new__(cls, string=None):
         if string is not None:
-            return Pango.font_description_from_string (string)
+            return Pango.font_description_from_string(string)
         else:
             return Pango.FontDescription.__new__(cls)
 
 FontDescription = override(FontDescription)
 __all__.append('FontDescription')
 
+
 class Layout(Pango.Layout):
 
     def __new__(cls, context):
@@ -46,6 +57,8 @@ class Layout(Pango.Layout):
         # __new__ and it is not a PangoLayout property
         super(Layout, self).__init__(**kwds)
 
+    def set_markup(self, text, length=-1):
+        super(Layout, self).set_markup(text, length)
+
 Layout = override(Layout)
 __all__.append('Layout')
-
index a98974f..0e4c489 100644 (file)
@@ -1,36 +1,42 @@
-import sys
 import types
 
-import gobject
+from gi import _gobject
+
+# support overrides in different directories than our gi module
+from pkgutil import extend_path
+__path__ = extend_path(__path__, __name__)
 
 registry = None
+
+
 class _Registry(dict):
     def __setitem__(self, key, value):
-        '''We do checks here to make sure only submodules of the override 
+        '''We do checks here to make sure only submodules of the override
         module are added.  Key and value should be the same object and come
-        from the gi.override module.  
+        from the gi.override module.
 
         We add the override to the dict as "override_module.name".  For instance
         if we were overriding Gtk.Button you would retrive it as such:
         registry['Gtk.Button']
-        ''' 
+        '''
         if not key == value:
             raise KeyError('You have tried to modify the registry.  This should only be done by the override decorator')
 
-        info = getattr(value, '__info__')
-        if info == None:
-            raise KeyError('Can not override a type %s, which is not in a gobject introspection typelib' % value.__name__)
+        try:
+            info = getattr(value, '__info__')
+        except AttributeError:
+            raise TypeError('Can not override a type %s, which is not in a gobject introspection typelib' % value.__name__)
 
         if not value.__module__.startswith('gi.overrides'):
             raise KeyError('You have tried to modify the registry outside of the overrides module.  This is not allowed')
 
         g_type = info.get_g_type()
-        assert g_type != gobject.TYPE_NONE
-        if g_type != gobject.TYPE_INVALID:
-            g_type.pytype = value 
+        assert g_type != _gobject.TYPE_NONE
+        if g_type != _gobject.TYPE_INVALID:
+            g_type.pytype = value
 
             # strip gi.overrides from module name
-            module =  value.__module__[13:]
+            module = value.__module__[13:]
             key = "%s.%s" % (module, value.__name__)
             super(_Registry, self).__setitem__(key, value)
 
@@ -55,12 +61,11 @@ class overridefunc(object):
 
 registry = _Registry()
 
+
 def override(type_):
     '''Decorator for registering an override'''
-    if type(type_) == types.FunctionType:
+    if isinstance(type_, types.FunctionType):
         return overridefunc(type_)
     else:
         registry.register(type_)
         return type_
-
-
index a9b5b60..5fd633a 100644 (file)
 #include <datetime.h>
 #include <pygobject.h>
 #include <pyglib-python-compat.h>
+#include <pyglib.h>
+
+static gboolean
+gi_argument_to_gssize (GIArgument *arg_in,
+                       GITypeTag  type_tag,
+                       gssize *gssize_out)
+{
+    switch (type_tag) {
+      case GI_TYPE_TAG_INT8:
+          *gssize_out = arg_in->v_int8;
+          return TRUE;
+      case GI_TYPE_TAG_UINT8:
+          *gssize_out = arg_in->v_uint8;
+          return TRUE;
+      case GI_TYPE_TAG_INT16:
+          *gssize_out = arg_in->v_int16;
+          return TRUE;
+      case GI_TYPE_TAG_UINT16:
+          *gssize_out = arg_in->v_uint16;
+          return TRUE;
+      case GI_TYPE_TAG_INT32:
+          *gssize_out = arg_in->v_int32;
+          return TRUE;
+      case GI_TYPE_TAG_UINT32:
+          *gssize_out = arg_in->v_uint32;
+          return TRUE;
+      case GI_TYPE_TAG_INT64:
+          *gssize_out = arg_in->v_int64;
+          return TRUE;
+      case GI_TYPE_TAG_UINT64:
+          *gssize_out = arg_in->v_uint64;
+          return TRUE;
+      default:
+          PyErr_Format (PyExc_TypeError,
+                        "Unable to marshal %s to gssize",
+                        g_type_tag_to_string(type_tag));
+          return FALSE;
+    }
+}
+
+void
+_pygi_hash_pointer_to_arg (GIArgument *arg,
+                           GITypeTag  type_tag)
+{
+    switch (type_tag) {
+        case GI_TYPE_TAG_INT8:
+            arg->v_int8 = GPOINTER_TO_INT (arg->v_pointer);
+            break;
+        case GI_TYPE_TAG_INT16:
+            arg->v_int16 = GPOINTER_TO_INT (arg->v_pointer);
+            break;
+        case GI_TYPE_TAG_INT32:
+            arg->v_int32 = GPOINTER_TO_INT (arg->v_pointer);
+            break;
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+        case GI_TYPE_TAG_INTERFACE:
+            break;
+        default:
+            g_critical ("Unsupported type %s", g_type_tag_to_string(type_tag));
+    }
+}
+
+gpointer
+_pygi_arg_to_hash_pointer (const GIArgument *arg,
+                           GITypeTag        type_tag)
+{
+    switch (type_tag) {
+        case GI_TYPE_TAG_INT8:
+            return GINT_TO_POINTER (arg->v_int8);
+        case GI_TYPE_TAG_UINT8:
+            return GINT_TO_POINTER (arg->v_uint8);
+        case GI_TYPE_TAG_INT16:
+            return GINT_TO_POINTER (arg->v_int16);
+        case GI_TYPE_TAG_UINT16:
+            return GINT_TO_POINTER (arg->v_uint16);
+        case GI_TYPE_TAG_INT32:
+            return GINT_TO_POINTER (arg->v_int32);
+        case GI_TYPE_TAG_UINT32:
+            return GINT_TO_POINTER (arg->v_uint32);
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+        case GI_TYPE_TAG_INTERFACE:
+            return arg->v_pointer;
+        default:
+            g_critical ("Unsupported type %s", g_type_tag_to_string(type_tag));
+            return arg->v_pointer;
+    }
+}
 
 static void
 _pygi_g_type_tag_py_bounds (GITypeTag   type_tag,
@@ -437,8 +526,8 @@ check_number_release:
             }
 
             if (size != 1) {
-                PyErr_Format (PyExc_TypeError, "Must be a one character string, not %ld characters",
-                              size);
+                PyErr_Format (PyExc_TypeError, "Must be a one character string, not %" G_GINT64_FORMAT " characters",
+                              (gint64)size);
                 retval = 0;
                 break;
             }
@@ -652,51 +741,115 @@ check_number_release:
     return retval;
 }
 
+/**
+ * _pygi_argument_to_array
+ * @arg: The argument to convert
+ * @args: Arguments to method invocation, possibly contaning the array length.
+ *        Set to NULL if this is not for a method call
+ * @callable_info: Info on the callable, if this a method call; otherwise NULL
+ * @type_info: The type info for @arg
+ * @out_free_array: A return location for a gboolean that indicates whether
+ *                  or not the wrapped GArray should be freed
+ *
+ * Make sure an array type argument is wrapped in a GArray.
+ *
+ * Note: This method can *not* be folded into _pygi_argument_to_object() because
+ * arrays are special in the sense that they might require access to @args in
+ * order to get the length.
+ *
+ * Returns: A GArray wrapping @arg. If @out_free_array has been set to TRUE then
+ *          free the array with g_array_free() without freeing the data members.
+ *          Otherwise don't free the array.
+ */
 GArray *
 _pygi_argument_to_array (GIArgument  *arg,
                          GIArgument  *args[],
-                         GITypeInfo *type_info,
-                         gboolean is_method)
+                         GICallableInfo *callable_info,                  
+                         GITypeInfo  *type_info,
+                         gboolean    *out_free_array)
 {
     GITypeInfo *item_type_info;
     gboolean is_zero_terminated;
     gsize item_size;
     gssize length;
     GArray *g_array;
+    
+    g_return_val_if_fail (g_type_info_get_tag (type_info) == GI_TYPE_TAG_ARRAY, NULL);
 
     if (arg->v_pointer == NULL) {
         return NULL;
     }
+    
+    switch (g_type_info_get_array_type (type_info)) {
+        case GI_ARRAY_TYPE_C:
+            is_zero_terminated = g_type_info_is_zero_terminated (type_info);
+            item_type_info = g_type_info_get_param_type (type_info, 0);
 
-    is_zero_terminated = g_type_info_is_zero_terminated (type_info);
-    item_type_info = g_type_info_get_param_type (type_info, 0);
+            item_size = _pygi_g_type_info_size (item_type_info);
 
-    item_size = _pygi_g_type_info_size (item_type_info);
+            g_base_info_unref ( (GIBaseInfo *) item_type_info);
 
-    g_base_info_unref ( (GIBaseInfo *) item_type_info);
+            if (is_zero_terminated) {
+                length = g_strv_length (arg->v_pointer);
+            } else {
+                length = g_type_info_get_array_fixed_size (type_info);
+                if (length < 0) {
+                    if (G_UNLIKELY (args == NULL)) {
+                        g_critical ("Unable to determine array length for %p",
+                                    arg->v_pointer);
+                        g_array = g_array_new (is_zero_terminated, FALSE, item_size);
+                        *out_free_array = TRUE;
+                        return g_array;
+                    }
+                    gint length_arg_pos;
+                    GIArgInfo *length_arg_info;
+                    GITypeInfo *length_type_info;
+
+                    length_arg_pos = g_type_info_get_array_length (type_info);
+                    g_assert (length_arg_pos >= 0);
+                    g_assert (callable_info);
+                    length_arg_info = g_callable_info_get_arg (callable_info, length_arg_pos);
+                    length_type_info = g_arg_info_get_type (length_arg_info);
+                    if (!gi_argument_to_gssize (args[length_arg_pos],
+                                                g_type_info_get_tag (length_type_info),
+                                                &length)) {
+                        return NULL;
+                    }
+                }
+            }
 
-    if (is_zero_terminated) {
-        length = g_strv_length (arg->v_pointer);
-    } else {
-        length = g_type_info_get_array_fixed_size (type_info);
-        if (length < 0) {
-            gint length_arg_pos;
+            g_assert (length >= 0);
 
-            length_arg_pos = g_type_info_get_array_length (type_info);
-            g_assert (length_arg_pos >= 0);
+            g_array = g_array_new (is_zero_terminated, FALSE, item_size);
 
-            /* FIXME: Take into account the type of the argument. */
-            length = args[length_arg_pos]->v_int;
+            g_array->data = arg->v_pointer;
+            g_array->len = length;
+            *out_free_array = TRUE;
+            break;
+        case GI_ARRAY_TYPE_ARRAY:
+        case GI_ARRAY_TYPE_BYTE_ARRAY:
+            /* Note: GByteArray is really just a GArray */
+            g_array = arg->v_pointer;
+            *out_free_array = FALSE;
+            break;
+        case GI_ARRAY_TYPE_PTR_ARRAY:
+        {
+            GPtrArray *ptr_array = (GPtrArray*) arg->v_pointer;
+            g_array = g_array_sized_new (FALSE, FALSE,
+                                         sizeof(gpointer),
+                                         ptr_array->len);
+             g_array->data = (char*) ptr_array->pdata;
+             g_array->len = ptr_array->len;
+             *out_free_array = TRUE;
+             break;
         }
+        default:
+            g_critical ("Unexpected array type %u",
+                        g_type_info_get_array_type (type_info));
+            g_array = NULL;
+            break;
     }
 
-    g_assert (length >= 0);
-
-    g_array = g_array_new (is_zero_terminated, FALSE, item_size);
-
-    g_array->data = arg->v_pointer;
-    g_array->len = length;
-
     return g_array;
 }
 
@@ -714,37 +867,38 @@ _pygi_argument_from_object (PyObject   *object,
     switch (type_tag) {
         case GI_TYPE_TAG_VOID:
             g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
-            arg.v_pointer = object;
+            arg.v_pointer = object == Py_None ? NULL : object;
             break;
         case GI_TYPE_TAG_BOOLEAN:
         {
             arg.v_boolean = PyObject_IsTrue (object);
             break;
         }
-        case GI_TYPE_TAG_UINT8:
-            if (PYGLIB_PyBytes_Check(object)) {
-                arg.v_long = (long)(PYGLIB_PyBytes_AsString(object)[0]);
-                break;
-            }
-
         case GI_TYPE_TAG_INT8:
         case GI_TYPE_TAG_INT16:
-        case GI_TYPE_TAG_UINT16:
         case GI_TYPE_TAG_INT32:
         {
             PyObject *int_;
 
             int_ = PYGLIB_PyNumber_Long (object);
             if (int_ == NULL) {
+                PyErr_SetString (PyExc_TypeError, "expected int argument");
                 break;
             }
 
-            arg.v_long = PYGLIB_PyLong_AsLong (int_);
+            if (type_tag == GI_TYPE_TAG_INT32)
+                arg.v_int32 = PYGLIB_PyLong_AsLong (int_);
+            else if (type_tag == GI_TYPE_TAG_INT8)
+                arg.v_int8 = PYGLIB_PyLong_AsLong (int_);
+            else if (type_tag == GI_TYPE_TAG_INT16)
+                arg.v_int16 = PYGLIB_PyLong_AsLong (int_);
 
             Py_DECREF (int_);
 
             break;
         }
+        case GI_TYPE_TAG_UINT8:
+        case GI_TYPE_TAG_UINT16:
         case GI_TYPE_TAG_UINT32:
         case GI_TYPE_TAG_UINT64:
         {
@@ -753,6 +907,7 @@ _pygi_argument_from_object (PyObject   *object,
 
             number = PYGLIB_PyNumber_Long (object);
             if (number == NULL) {
+                PyErr_SetString (PyExc_TypeError, "expected int argument");
                 break;
             }
 
@@ -763,7 +918,14 @@ _pygi_argument_from_object (PyObject   *object,
 #endif
             value = PyLong_AsUnsignedLongLong (number);
 
-            arg.v_uint64 = value;
+            if (type_tag == GI_TYPE_TAG_UINT32)
+                arg.v_uint32 = value;
+            else if (type_tag == GI_TYPE_TAG_UINT64)
+                arg.v_uint64 = value;
+            else if (type_tag == GI_TYPE_TAG_UINT8)
+                arg.v_uint8 = value;
+            else if (type_tag == GI_TYPE_TAG_UINT16)
+                arg.v_uint16 = value;
 
             Py_DECREF (number);
 
@@ -776,6 +938,7 @@ _pygi_argument_from_object (PyObject   *object,
 
             number = PYGLIB_PyNumber_Long (object);
             if (number == NULL) {
+                PyErr_SetString (PyExc_TypeError, "expected int argument");
                 break;
             }
 
@@ -798,6 +961,7 @@ _pygi_argument_from_object (PyObject   *object,
 
             float_ = PyNumber_Float (object);
             if (float_ == NULL) {
+                PyErr_SetString (PyExc_TypeError, "expected float or int argument");
                 break;
             }
 
@@ -812,6 +976,7 @@ _pygi_argument_from_object (PyObject   *object,
 
             float_ = PyNumber_Float (object);
             if (float_ == NULL) {
+                PyErr_SetString (PyExc_TypeError, "expected float or int argument");
                 break;
             }
 
@@ -943,6 +1108,16 @@ _pygi_argument_from_object (PyObject   *object,
                 break;
             }
 
+            /* Note, strings are sequences, but we cannot accept them here */
+            if (!PySequence_Check (object) || 
+#if PY_VERSION_HEX < 0x03000000
+                PyString_Check (object) || 
+#endif
+                PyUnicode_Check (object)) {
+                PyErr_SetString (PyExc_TypeError, "expected sequence");
+                break;
+            }
+
             length = PySequence_Length (object);
             if (length < 0) {
                 break;
@@ -1089,12 +1264,18 @@ array_success:
                         result = pygi_struct_foreign_convert_to_g_argument (
                                      object, info, transfer, &arg);
                     } else if (g_type_is_a (type, G_TYPE_BOXED)) {
-                        arg.v_pointer = pyg_boxed_get (object, void);
-                        if (transfer == GI_TRANSFER_EVERYTHING) {
-                            arg.v_pointer = g_boxed_copy (type, arg.v_pointer);
+                        if (pyg_boxed_check (object, type)) {
+                            arg.v_pointer = pyg_boxed_get (object, void);
+                            if (transfer == GI_TRANSFER_EVERYTHING) {
+                                arg.v_pointer = g_boxed_copy (type, arg.v_pointer);
+                            }
+                        } else {
+                            PyErr_Format (PyExc_TypeError, "wrong boxed type");
                         }
-                    } else if (g_type_is_a (type, G_TYPE_POINTER) || type == G_TYPE_NONE) {
-                        g_warn_if_fail (!g_type_info_is_pointer (type_info) || transfer == GI_TRANSFER_NOTHING);
+                    } else if (g_type_is_a (type, G_TYPE_POINTER) || 
+                               g_type_is_a (type, G_TYPE_VARIANT) || 
+                               type == G_TYPE_NONE) {
+                       g_warn_if_fail (g_type_is_a (type, G_TYPE_VARIANT) || !g_type_info_is_pointer (type_info) || transfer == GI_TRANSFER_NOTHING);
                         arg.v_pointer = pyg_pointer_get (object, void);
                     } else {
                         PyErr_Format (PyExc_NotImplementedError, "structure type '%s' is not supported yet", g_type_name (type));
@@ -1112,7 +1293,7 @@ array_success:
                         break;
                     }
 
-                    arg.v_long = PYGLIB_PyLong_AsLong (int_);
+                    arg.v_int = PYGLIB_PyLong_AsLong (int_);
 
                     Py_DECREF (int_);
 
@@ -1285,7 +1466,8 @@ list_item_error:
                     goto hash_table_item_error;
                 }
 
-                g_hash_table_insert (hash_table, key.v_pointer, value.v_pointer);
+                g_hash_table_insert (hash_table, key.v_pointer,
+                                     _pygi_arg_to_hash_pointer (&value, g_type_info_get_tag (value_type_info)));
                 continue;
 
 hash_table_item_error:
@@ -1316,23 +1498,18 @@ hash_table_release:
     return arg;
 }
 
-static glong
-_pygi_glong_from_argument (GIArgument  *arg,
-                    GITypeInfo *type_info)
-{
-    gsize item_size = _pygi_g_type_info_size (type_info);
-
-    if (item_size == sizeof (glong))
-        return arg->v_long;
-    else if (item_size == sizeof (gint))
-        return arg->v_int;
-    else
-        {
-            g_warning ("pygi: unsupported item size %ld", item_size);
-            return arg->v_long;
-        }
-}
-
+/**
+ * _pygi_argument_to_object:
+ * @arg: The argument to convert to an object. 
+ * @type_info: Type info for @arg
+ * @transfer:
+ *
+ * If the argument is of type array, it must be encoded in a GArray, by calling
+ * _pygi_argument_to_array(). This logic can not be folded into this method
+ * as determining array lengths may require access to method call arguments.
+ * 
+ * Returns: A PyObject representing @arg
+ */
 PyObject *
 _pygi_argument_to_object (GIArgument  *arg,
                           GITypeInfo *type_info,
@@ -1344,7 +1521,8 @@ _pygi_argument_to_object (GIArgument  *arg,
     type_tag = g_type_info_get_tag (type_info);
     switch (type_tag) {
         case GI_TYPE_TAG_VOID:
-            if (g_type_info_is_pointer (type_info)) {
+            if (g_type_info_is_pointer (type_info) &&
+                    (arg->v_pointer != NULL)) {
                 /* Raw Python objects are passed to void* args */
                 g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
                 object = arg->v_pointer;
@@ -1468,75 +1646,57 @@ _pygi_argument_to_object (GIArgument  *arg,
         }
         case GI_TYPE_TAG_ARRAY:
         {
+            /* Arrays are assumed to be packed in a GArray */
             GArray *array;
             GITypeInfo *item_type_info;
             GITypeTag item_type_tag;
             GITransfer item_transfer;
             gsize i, item_size;
 
-            array = arg->v_pointer;
-
+            if (arg->v_pointer == NULL)
+                return PyList_New (0);
+            
             item_type_info = g_type_info_get_param_type (type_info, 0);
             g_assert (item_type_info != NULL);
 
             item_type_tag = g_type_info_get_tag (item_type_info);
             item_transfer = transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
+            
+            array = arg->v_pointer;
+            item_size = g_array_get_element_size (array);
+            
+            if (G_UNLIKELY (item_size > sizeof(GIArgument))) {
+                g_critical ("Stack overflow protection. "
+                            "Can't copy array element into GIArgument.");
+                return PyList_New (0);
+            }
 
             if (item_type_tag == GI_TYPE_TAG_UINT8) {
                 /* Return as a byte array */
-                if (arg->v_pointer == NULL) {
-                    object = PYGLIB_PyBytes_FromString ("");
-                    break;
-                }
-
-                object = PYGLIB_PyBytes_FromStringAndSize(array->data, array->len);
-                break;
-
+                object = PYGLIB_PyBytes_FromStringAndSize (array->data, array->len);
             } else {
-                if (arg->v_pointer == NULL) {
-                    object = PyList_New (0);
-                    break;
-                }
-
                 object = PyList_New (array->len);
                 if (object == NULL) {
+                    g_critical ("Failure to allocate array for %u items", array->len);
+                    g_base_info_unref ( (GIBaseInfo *) item_type_info);
                     break;
                 }
 
-            }
-            item_size = g_array_get_element_size (array);
-
-            for (i = 0; i < array->len; i++) {
-                GIArgument item;
-                PyObject *py_item;
-                gboolean is_struct = FALSE;
-
-                if (item_type_tag == GI_TYPE_TAG_INTERFACE) {
-                    GIBaseInfo *iface_info = g_type_info_get_interface (item_type_info);
-                    switch (g_base_info_get_type (iface_info)) {
-                        case GI_INFO_TYPE_STRUCT:
-                        case GI_INFO_TYPE_BOXED:
-                            is_struct = TRUE;
-                        default:
-                            break;
+                for (i = 0; i < array->len; i++) {
+                    GIArgument item = { 0 };
+                    PyObject *py_item;
+                    
+                    memcpy (&item, array->data + i * item_size, item_size);
+
+                    py_item = _pygi_argument_to_object (&item, item_type_info, item_transfer);
+                    if (py_item == NULL) {
+                        Py_CLEAR (object);
+                        _PyGI_ERROR_PREFIX ("Item %zu: ", i);
+                        break;
                     }
-                    g_base_info_unref ( (GIBaseInfo *) iface_info);
-                }
 
-                if (is_struct) {
-                    item.v_pointer = &_g_array_index (array, GIArgument, i);
-                } else {
-                    memcpy (&item, &_g_array_index (array, GIArgument, i), item_size);
-                }
-
-                py_item = _pygi_argument_to_object (&item, item_type_info, item_transfer);
-                if (py_item == NULL) {
-                    Py_CLEAR (object);
-                    _PyGI_ERROR_PREFIX ("Item %zu: ", i);
-                    break;
+                    PyList_SET_ITEM (object, i, py_item);
                 }
-
-                PyList_SET_ITEM (object, i, py_item);
             }
 
             g_base_info_unref ( (GIBaseInfo *) item_type_info);
@@ -1553,17 +1713,7 @@ _pygi_argument_to_object (GIArgument  *arg,
             switch (info_type) {
                 case GI_INFO_TYPE_CALLBACK:
                 {
-                    /* There is no way we can support a callback return
-                     * as we are never sure if the callback was set from C
-                     * or Python.  API that return callbacks are broken
-                     * so we print a warning and send back a None
-                     */
-
-                    g_warning ("You are trying to use an API which returns a callback."
-                               "Callback returns can not be supported. Returning None instead.");
-                    object = Py_None;
-                    Py_INCREF (object);
-                    break;
+                    g_assert_not_reached();
                 }
                 case GI_INFO_TYPE_BOXED:
                 case GI_INFO_TYPE_STRUCT:
@@ -1605,6 +1755,13 @@ _pygi_argument_to_object (GIArgument  *arg,
                         }
 
                         Py_XDECREF (py_type);
+                   } else if (type == G_TYPE_VARIANT) {
+                        PyObject *py_type;
+
+                        g_variant_ref_sink (arg->v_pointer);
+                        py_type = _pygi_type_import_by_gi_info (info);
+                        object = _pygi_struct_new ( (PyTypeObject *) py_type, arg->v_pointer,
+                                                    transfer == GI_TRANSFER_EVERYTHING);
                     } else if (type == G_TYPE_NONE) {
                         PyObject *py_type;
 
@@ -1638,28 +1795,26 @@ _pygi_argument_to_object (GIArgument  *arg,
                         /* An enum with a GType of None is an enum without GType */
                         PyObject *py_type = _pygi_type_import_by_gi_info (info);
                         PyObject *py_args = NULL;
-                        glong val = _pygi_glong_from_argument (arg, type_info);
 
                         if (!py_type)
                             return NULL;
 
                         py_args = PyTuple_New (1);
-                        if (PyTuple_SetItem (py_args, 0, PyLong_FromLong (val)) != 0) {
+                        if (PyTuple_SetItem (py_args, 0, PyLong_FromLong (arg->v_int)) != 0) {
                             Py_DECREF (py_args);
                             Py_DECREF (py_type);
                             return NULL;
                         }
 
-                        object = PyObject_CallFunction (py_type, "l", val);
+                        object = PyObject_CallFunction (py_type, "i", arg->v_int);
 
                         Py_DECREF (py_args);
                         Py_DECREF (py_type);
 
                     } else if (info_type == GI_INFO_TYPE_ENUM) {
-                        glong val = _pygi_glong_from_argument (arg, type_info);
-                        object = pyg_enum_from_gtype (type, val);
+                        object = pyg_enum_from_gtype (type, arg->v_int);
                     } else {
-                        object = pyg_flags_from_gtype (type, arg->v_long);
+                        object = pyg_flags_from_gtype (type, arg->v_int);
                     }
 
                     break;
@@ -1671,6 +1826,21 @@ _pygi_argument_to_object (GIArgument  *arg,
                         Py_INCREF (object);
                         break;
                     }
+
+                    if (G_IS_PARAM_SPEC (arg->v_pointer)) {
+                      object = pyg_param_spec_new (arg->v_pointer);
+                      break;
+                    }
+
+                    /* since we will unref the object when the
+                     * wrapper is destroyed and we don't want
+                     * GTK removing the object while the
+                     * wrapper is live, we take a gobject reference
+                     * when one is not transfered to us
+                     */
+                    if (transfer == GI_TRANSFER_NOTHING)
+                        g_object_ref (G_OBJECT(arg->v_pointer));
+
                     object = pygobject_new (arg->v_pointer);
                     break;
                 default:
@@ -1762,6 +1932,7 @@ _pygi_argument_to_object (GIArgument  *arg,
                     break;
                 }
 
+                _pygi_hash_pointer_to_arg (&value, g_type_info_get_tag (value_type_info));
                 py_value = _pygi_argument_to_object (&value, value_type_info, item_transfer);
                 if (py_value == NULL) {
                     Py_DECREF (py_key);
@@ -1784,8 +1955,29 @@ _pygi_argument_to_object (GIArgument  *arg,
             break;
         }
         case GI_TYPE_TAG_ERROR:
-            /* Errors should be handled in the invoke wrapper. */
-            g_assert_not_reached();
+        {
+            GError *error = (GError *) arg->v_pointer;
+            if (error != NULL && transfer == GI_TRANSFER_NOTHING) {
+                /* If we have not been transferred the ownership we must copy
+                 * the error, because pyglib_error_check() is going to free it.
+                 */
+                error = g_error_copy (error);
+            }
+
+            if (pyglib_error_check (&error)) {
+                PyObject *err_type;
+                PyObject *err_value;
+                PyObject *err_trace;
+                PyErr_Fetch (&err_type, &err_value, &err_trace);
+                Py_XDECREF (err_type);
+                Py_XDECREF (err_trace);
+                object = err_value;
+            } else {
+                object = Py_None;
+                Py_INCREF (object);
+                break;
+            }
+        }
     }
 
     return object;
@@ -1806,17 +1998,21 @@ _pygi_argument_from_g_value(const GValue *value,
         case GI_TYPE_TAG_INT8:
         case GI_TYPE_TAG_INT16:
         case GI_TYPE_TAG_INT32:
-        case GI_TYPE_TAG_INT64:
             arg.v_int = g_value_get_int (value);
             break;
+        case GI_TYPE_TAG_INT64:
+            arg.v_int64 = g_value_get_int64 (value);
+            break;
         case GI_TYPE_TAG_UINT8:
         case GI_TYPE_TAG_UINT16:
         case GI_TYPE_TAG_UINT32:
-        case GI_TYPE_TAG_UINT64:
             arg.v_uint = g_value_get_uint (value);
             break;
+        case GI_TYPE_TAG_UINT64:
+            arg.v_uint64 = g_value_get_uint64 (value);
+            break;
         case GI_TYPE_TAG_UNICHAR:
-            arg.v_uint32 = g_value_get_char (value);
+            arg.v_uint32 = g_value_get_schar (value);
             break;
         case GI_TYPE_TAG_FLOAT:
             arg.v_float = g_value_get_float (value);
@@ -1851,12 +2047,17 @@ _pygi_argument_from_g_value(const GValue *value,
 
             switch (info_type) {
                 case GI_INFO_TYPE_FLAGS:
+                    arg.v_long = g_value_get_flags (value);
+                    break;
                 case GI_INFO_TYPE_ENUM:
                     arg.v_long = g_value_get_enum (value);
                     break;
                 case GI_INFO_TYPE_INTERFACE:
                 case GI_INFO_TYPE_OBJECT:
-                    arg.v_pointer = g_value_get_object (value);
+                    if (G_VALUE_HOLDS_PARAM (value))
+                      arg.v_pointer = g_value_get_param (value);
+                    else
+                      arg.v_pointer = g_value_get_object (value);
                     break;
                 case GI_INFO_TYPE_BOXED:
                 case GI_INFO_TYPE_STRUCT:
@@ -1876,6 +2077,8 @@ _pygi_argument_from_g_value(const GValue *value,
             break;
         }
         case GI_TYPE_TAG_ERROR:
+            arg.v_pointer = g_value_get_boxed (value);
+            break;
         case GI_TYPE_TAG_VOID:
             g_critical("Converting of type '%s' is not implemented", g_type_tag_to_string(type_tag));
             g_assert_not_reached();
@@ -1997,6 +2200,10 @@ _pygi_argument_release (GIArgument   *arg,
                                 || (direction == GI_DIRECTION_OUT && transfer != GI_TRANSFER_NOTHING)) {
                             g_slice_free (GValue, value);
                         }
+                    } else if (g_type_is_a (type, G_TYPE_CLOSURE)) {
+                        if (direction == GI_DIRECTION_IN && transfer == GI_TRANSFER_NOTHING) {
+                            g_closure_unref (arg->v_pointer);
+                        }
                     } else if (g_struct_info_is_foreign ( (GIStructInfo*) info)) {
                         if (direction == GI_DIRECTION_OUT && transfer == GI_TRANSFER_EVERYTHING) {
                             pygi_struct_foreign_release (info, arg->v_pointer);
index 7224c75..a1420ee 100644 (file)
@@ -30,6 +30,12 @@ G_BEGIN_DECLS
 
 
 /* Private */
+gpointer _pygi_arg_to_hash_pointer (const GIArgument *arg,
+                                    GITypeTag         type_tag);
+
+void _pygi_hash_pointer_to_arg (GIArgument *arg,
+                                GITypeTag   type_tag);
+
 gint _pygi_g_type_interface_check_object (GIBaseInfo *info,
                                           PyObject   *object);
 
@@ -44,8 +50,9 @@ gint _pygi_g_registered_type_info_check_object (GIRegisteredTypeInfo *info,
 
 GArray* _pygi_argument_to_array (GIArgument  *arg,
                                  GIArgument  *args[],
-                                 GITypeInfo *type_info,
-                                 gboolean    is_method);
+                                 GICallableInfo *callable_info,
+                                 GITypeInfo  *type_info,
+                                 gboolean    *out_free_array);
 
 GIArgument _pygi_argument_from_object (PyObject   *object,
                                       GITypeInfo *type_info,
diff --git a/gi/pygi-cache.c b/gi/pygi-cache.c
new file mode 100644 (file)
index 0000000..d6531ed
--- /dev/null
@@ -0,0 +1,1500 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#include "pygi-info.h"
+#include "pygi-cache.h"
+#include "pygi-marshal-to-py.h"
+#include "pygi-marshal-from-py.h"
+#include "pygi-marshal-cleanup.h"
+#include "pygi-type.h"
+#include <girepository.h>
+
+PyGIArgCache * _arg_cache_new (GITypeInfo *type_info,
+                               PyGICallableCache *callable_cache,
+                               GIArgInfo *arg_info,
+                               GITransfer transfer,
+                               PyGIDirection direction,
+                               gssize c_arg_index,
+                               gssize py_arg_index);
+
+PyGIArgCache * _arg_cache_new_for_interface (GIInterfaceInfo *iface_info,
+                                             PyGICallableCache *callable_cache,
+                                             GIArgInfo *arg_info,
+                                             GITransfer transfer,
+                                             PyGIDirection direction,
+                                             gssize c_arg_index,
+                                             gssize py_arg_index);
+/* cleanup */
+static void
+_pygi_arg_cache_free (PyGIArgCache *cache)
+{
+    if (cache == NULL)
+        return;
+
+    if (cache->type_info != NULL)
+        g_base_info_unref ( (GIBaseInfo *)cache->type_info);
+    if (cache->destroy_notify)
+        cache->destroy_notify (cache);
+    else
+        g_slice_free (PyGIArgCache, cache);
+}
+
+static void
+_interface_cache_free_func (PyGIInterfaceCache *cache)
+{
+    if (cache != NULL) {
+        Py_XDECREF (cache->py_type);
+        if (cache->type_name != NULL)
+            g_free (cache->type_name);
+        if (cache->interface_info != NULL)
+            g_base_info_unref ( (GIBaseInfo *)cache->interface_info);
+        g_slice_free (PyGIInterfaceCache, cache);
+    }
+}
+
+static void
+_hash_cache_free_func (PyGIHashCache *cache)
+{
+    if (cache != NULL) {
+        _pygi_arg_cache_free (cache->key_cache);
+        _pygi_arg_cache_free (cache->value_cache);
+        g_slice_free (PyGIHashCache, cache);
+    }
+}
+
+static void
+_sequence_cache_free_func (PyGISequenceCache *cache)
+{
+    if (cache != NULL) {
+        _pygi_arg_cache_free (cache->item_cache);
+        g_slice_free (PyGISequenceCache, cache);
+    }
+}
+
+static void
+_callback_cache_free_func (PyGICallbackCache *cache)
+{
+    if (cache != NULL) {
+        if (cache->interface_info != NULL)
+            g_base_info_unref ( (GIBaseInfo *)cache->interface_info);
+
+        g_slice_free (PyGICallbackCache, cache);
+    }
+}
+
+void
+_pygi_callable_cache_free (PyGICallableCache *cache)
+{
+    gssize i;
+
+    if (cache == NULL)
+        return;
+
+    g_slist_free (cache->to_py_args);
+    g_slist_free (cache->arg_name_list);
+    g_hash_table_destroy (cache->arg_name_hash);
+
+    for (i = 0; i < cache->n_args; i++) {
+        PyGIArgCache *tmp = cache->args_cache[i];
+        _pygi_arg_cache_free (tmp);
+    }
+    if (cache->return_cache != NULL)
+        _pygi_arg_cache_free (cache->return_cache);
+
+    g_slice_free1 (cache->n_args * sizeof (PyGIArgCache *), cache->args_cache);
+    g_slice_free (PyGICallableCache, cache);
+}
+
+/* cache generation */
+
+static PyGIInterfaceCache *
+_interface_cache_new (GIInterfaceInfo *iface_info)
+{
+    PyGIInterfaceCache *ic;
+
+    ic = g_slice_new0 (PyGIInterfaceCache);
+    ( (PyGIArgCache *)ic)->destroy_notify = (GDestroyNotify)_interface_cache_free_func;
+    ic->g_type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *)iface_info);
+    ic->py_type = _pygi_type_import_by_gi_info ( (GIBaseInfo *) iface_info);
+
+    if (ic->py_type == NULL)
+        return NULL;
+
+    ic->type_name = _pygi_g_base_info_get_fullname (iface_info);
+    return ic;
+}
+
+static PyGISequenceCache *
+_sequence_cache_new (GITypeInfo *type_info,
+                     GIDirection direction,
+                     GITransfer transfer,
+                     gssize child_offset)
+{
+    PyGISequenceCache *sc;
+    GITypeInfo *item_type_info;
+    GITransfer item_transfer;
+
+    sc = g_slice_new0 (PyGISequenceCache);
+    ( (PyGIArgCache *)sc)->destroy_notify = (GDestroyNotify)_sequence_cache_free_func;
+
+    sc->is_zero_terminated = g_type_info_is_zero_terminated (type_info);
+    sc->fixed_size = g_type_info_get_array_fixed_size (type_info);
+    sc->len_arg_index = g_type_info_get_array_length (type_info);
+    if (sc->len_arg_index >= 0)
+        sc->len_arg_index += child_offset;
+
+    item_type_info = g_type_info_get_param_type (type_info, 0);
+
+    item_transfer =
+        transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
+
+    sc->item_cache = _arg_cache_new (item_type_info,
+                                     NULL,
+                                     NULL,
+                                     item_transfer,
+                                     direction,
+                                     0, 0);
+
+    if (sc->item_cache == NULL) {
+        _pygi_arg_cache_free ( (PyGIArgCache *)sc);
+        return NULL;
+    }
+
+    sc->item_size = _pygi_g_type_info_size (item_type_info);
+    g_base_info_unref ( (GIBaseInfo *)item_type_info);
+
+    return sc;
+}
+static PyGIHashCache *
+_hash_cache_new (GITypeInfo *type_info,
+                 GIDirection direction,
+                 GITransfer transfer)
+{
+    PyGIHashCache *hc;
+    GITypeInfo *key_type_info;
+    GITypeInfo *value_type_info;
+    GITransfer item_transfer;
+
+    hc = g_slice_new0 (PyGIHashCache);
+    ( (PyGIArgCache *)hc)->destroy_notify = (GDestroyNotify)_hash_cache_free_func;
+    key_type_info = g_type_info_get_param_type (type_info, 0);
+    value_type_info = g_type_info_get_param_type (type_info, 1);
+
+    item_transfer =
+        transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
+
+    hc->key_cache = _arg_cache_new (key_type_info,
+                                    NULL,
+                                    NULL,
+                                    item_transfer,
+                                    direction,
+                                    0, 0);
+
+    if (hc->key_cache == NULL) {
+        _pygi_arg_cache_free ( (PyGIArgCache *)hc);
+        return NULL;
+    }
+
+    hc->value_cache = _arg_cache_new (value_type_info,
+                                      NULL,
+                                      NULL,
+                                      item_transfer,
+                                      direction,
+                                      0, 0);
+
+    if (hc->value_cache == NULL) {
+        _pygi_arg_cache_free ( (PyGIArgCache *)hc);
+        return NULL;
+    }
+
+    g_base_info_unref( (GIBaseInfo *)key_type_info);
+    g_base_info_unref( (GIBaseInfo *)value_type_info);
+
+    return hc;
+}
+
+static PyGICallbackCache *
+_callback_cache_new (GIArgInfo *arg_info,
+                     GIInterfaceInfo *iface_info,
+                     gssize child_offset)
+{
+   PyGICallbackCache *cc;
+
+   cc = g_slice_new0 (PyGICallbackCache);
+   ( (PyGIArgCache *)cc)->destroy_notify = (GDestroyNotify)_callback_cache_free_func;
+
+   cc->user_data_index = g_arg_info_get_closure (arg_info);
+   if (cc->user_data_index != -1)
+       cc->user_data_index += child_offset;
+   cc->destroy_notify_index = g_arg_info_get_destroy (arg_info);
+   if (cc->destroy_notify_index != -1)
+       cc->destroy_notify_index += child_offset;
+   cc->scope = g_arg_info_get_scope (arg_info);
+   g_base_info_ref( (GIBaseInfo *)iface_info);
+   cc->interface_info = iface_info;
+   return cc;
+}
+
+static PyGIArgCache *
+_arg_cache_alloc (void)
+{
+    return g_slice_new0 (PyGIArgCache);
+}
+
+static void
+_arg_cache_from_py_void_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_void;
+}
+
+static void
+_arg_cache_to_py_void_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_void;
+}
+
+static void
+_arg_cache_from_py_boolean_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_boolean;
+}
+
+static void
+_arg_cache_to_py_boolean_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_boolean;
+}
+
+static void
+_arg_cache_from_py_int8_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_int8;
+}
+
+static void
+_arg_cache_to_py_int8_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_int8;
+}
+
+static void
+_arg_cache_from_py_uint8_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_uint8;
+}
+
+static void
+_arg_cache_to_py_uint8_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_uint8;
+}
+
+static void
+_arg_cache_from_py_int16_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_int16;
+}
+
+static void
+_arg_cache_to_py_int16_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_int16;
+}
+
+static void
+_arg_cache_from_py_uint16_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_uint16;
+}
+
+static void
+_arg_cache_to_py_uint16_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_uint16;
+}
+
+static void
+_arg_cache_from_py_int32_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_int32;
+}
+
+static void
+_arg_cache_to_py_int32_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_int32;
+}
+
+static void
+_arg_cache_from_py_uint32_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_uint32;
+}
+
+static void
+_arg_cache_to_py_uint32_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_uint32;
+}
+
+static void
+_arg_cache_from_py_int64_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_int64;
+}
+
+static void
+_arg_cache_to_py_int64_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_int64;
+}
+
+static void
+_arg_cache_from_py_uint64_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_uint64;
+}
+
+static void
+_arg_cache_to_py_uint64_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_uint64;
+}
+
+static void
+_arg_cache_from_py_float_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_float;
+}
+
+static void
+_arg_cache_to_py_float_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_float;
+}
+
+static void
+_arg_cache_from_py_double_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_double;
+}
+
+static void
+_arg_cache_to_py_double_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_double;
+}
+
+static void
+_arg_cache_from_py_unichar_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_unichar;
+}
+
+static void
+_arg_cache_to_py_unichar_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_unichar;
+}
+
+static void
+_arg_cache_from_py_gtype_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_gtype;
+}
+
+static void
+_arg_cache_to_py_gtype_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_gtype;
+}
+
+static void
+_arg_cache_from_py_utf8_setup (PyGIArgCache *arg_cache,
+                               GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_utf8;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_utf8;
+}
+
+static void
+_arg_cache_to_py_utf8_setup (PyGIArgCache *arg_cache,
+                               GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_utf8;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_utf8;
+}
+
+static void
+_arg_cache_from_py_filename_setup (PyGIArgCache *arg_cache,
+                                 GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_filename;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_utf8;
+}
+
+static void
+_arg_cache_to_py_filename_setup (PyGIArgCache *arg_cache,
+                                 GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_filename;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_utf8;
+}
+
+static gboolean
+_arg_cache_from_py_array_setup (PyGIArgCache *arg_cache,
+                                PyGICallableCache *callable_cache,
+                                GITypeInfo *type_info,
+                                GITransfer transfer,
+                                PyGIDirection direction,
+                                gssize arg_index)
+{
+    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+    seq_cache->array_type = g_type_info_get_array_type (type_info);
+
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_array;
+
+    if (seq_cache->len_arg_index >= 0) {
+        PyGIArgCache *child_cache = 
+            callable_cache->args_cache[seq_cache->len_arg_index];
+
+        if (child_cache == NULL) {
+            child_cache = _arg_cache_alloc ();
+        } else if (child_cache->meta_type == PYGI_META_ARG_TYPE_CHILD ||
+                   child_cache->meta_type == PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE) {
+            return TRUE;
+        }
+
+        if (seq_cache->len_arg_index < arg_index)
+            child_cache->meta_type = PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE;
+        else
+            child_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+
+        child_cache->direction = direction;
+        child_cache->to_py_marshaller = NULL;
+        child_cache->from_py_marshaller = NULL;
+
+        callable_cache->args_cache[seq_cache->len_arg_index] = child_cache;
+    }
+
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_array;
+
+    return TRUE;
+}
+
+static gboolean
+_arg_cache_to_py_array_setup (PyGIArgCache *arg_cache,
+                              PyGICallableCache *callable_cache,
+                              GITypeInfo *type_info,
+                              GITransfer transfer,
+                              PyGIDirection direction,
+                              gssize arg_index)
+{
+    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_array;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_array;
+
+    seq_cache->array_type = g_type_info_get_array_type (type_info);
+
+    if (seq_cache->len_arg_index >= 0) {
+        PyGIArgCache *child_cache = callable_cache->args_cache[seq_cache->len_arg_index];
+        if (seq_cache->len_arg_index < arg_index)
+             callable_cache->n_to_py_child_args++;
+
+        if (child_cache != NULL) {
+            callable_cache->to_py_args =
+                g_slist_remove (callable_cache->to_py_args, child_cache);
+
+            if (child_cache->meta_type == PYGI_META_ARG_TYPE_CHILD ||
+                child_cache->meta_type == PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE)
+                return TRUE;
+        } else {
+            child_cache = _arg_cache_alloc ();
+        }
+
+        child_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+        child_cache->direction = direction;
+        child_cache->to_py_marshaller = NULL;
+        child_cache->from_py_marshaller = NULL;
+
+        callable_cache->args_cache[seq_cache->len_arg_index] = child_cache;
+    }
+
+    return TRUE;
+}
+
+static void
+_arg_cache_from_py_glist_setup (PyGIArgCache *arg_cache,
+                                GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_glist;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_glist;
+}
+
+static void
+_arg_cache_to_py_glist_setup (PyGIArgCache *arg_cache,
+                              GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_glist;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_glist;
+}
+
+static void
+_arg_cache_from_py_gslist_setup (PyGIArgCache *arg_cache,
+                                 GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_gslist;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_glist;
+}
+
+static void
+_arg_cache_to_py_gslist_setup (PyGIArgCache *arg_cache,
+                                 GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_gslist;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_glist;
+}
+
+static void
+_arg_cache_from_py_ghash_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_ghash;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_ghash;
+}
+
+static void
+_arg_cache_to_py_ghash_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_ghash;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_ghash;
+}
+
+static void
+_arg_cache_from_py_gerror_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_gerror;
+    arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+}
+
+static void
+_arg_cache_to_py_gerror_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_gerror;
+    arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+}
+
+static void
+_arg_cache_from_py_interface_union_setup (PyGIArgCache *arg_cache,
+                                          GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_struct;
+}
+
+static void
+_arg_cache_to_py_interface_union_setup (PyGIArgCache *arg_cache,
+                                        GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_struct;
+}
+
+static void
+_arg_cache_from_py_interface_struct_setup (PyGIArgCache *arg_cache,
+                                           GIInterfaceInfo *iface_info,
+                                           GITransfer transfer)
+{
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+    iface_cache->is_foreign = g_struct_info_is_foreign ( (GIStructInfo*)iface_info);
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_struct;
+
+    if (iface_cache->g_type == G_TYPE_VALUE)
+        arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_struct_gvalue;
+    else if (iface_cache->is_foreign)
+        arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_struct_foreign;
+}
+
+static void
+_arg_cache_to_py_interface_struct_setup (PyGIArgCache *arg_cache,
+                                         GIInterfaceInfo *iface_info,
+                                         GITransfer transfer)
+{
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+    iface_cache->is_foreign = g_struct_info_is_foreign ( (GIStructInfo*)iface_info);
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_struct;
+
+    if (iface_cache->is_foreign)
+        arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_interface_struct_foreign;
+}
+
+static void
+_arg_cache_from_py_interface_object_setup (PyGIArgCache *arg_cache,
+                                           GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_object;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_object;
+}
+
+static void
+_arg_cache_to_py_interface_object_setup (PyGIArgCache *arg_cache,
+                                         GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_object;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_interface_object;
+}
+
+static void
+_arg_cache_from_py_interface_callback_setup (PyGIArgCache *arg_cache,
+                                             PyGICallableCache *callable_cache)
+{
+    PyGICallbackCache *callback_cache = (PyGICallbackCache *)arg_cache;
+    if (callback_cache->user_data_index >= 0) {
+        PyGIArgCache *user_data_arg_cache = _arg_cache_alloc ();
+        user_data_arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD_WITH_PYARG;
+        user_data_arg_cache->direction = PYGI_DIRECTION_FROM_PYTHON;
+        callable_cache->args_cache[callback_cache->user_data_index] = user_data_arg_cache;
+    }
+
+    if (callback_cache->destroy_notify_index >= 0) {
+        PyGIArgCache *destroy_arg_cache = _arg_cache_alloc ();
+        destroy_arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+        destroy_arg_cache->direction = PYGI_DIRECTION_FROM_PYTHON;
+        callable_cache->args_cache[callback_cache->destroy_notify_index] = destroy_arg_cache;
+    }
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_callback;
+}
+
+static void
+_arg_cache_to_py_interface_callback_setup (void)
+{
+    PyErr_Format(PyExc_NotImplementedError,
+                 "Callback returns are not supported");
+}
+
+static void
+_arg_cache_from_py_interface_enum_setup (PyGIArgCache *arg_cache,
+                                         GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_enum;
+}
+
+static void
+_arg_cache_to_py_interface_enum_setup (PyGIArgCache *arg_cache,
+                                       GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_enum;
+}
+
+static void
+_arg_cache_from_py_interface_flags_setup (PyGIArgCache *arg_cache,
+                                          GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_flags;
+}
+
+static void
+_arg_cache_to_py_interface_flags_setup (PyGIArgCache *arg_cache,
+                                        GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_flags;
+}
+
+PyGIArgCache *
+_arg_cache_new_for_interface (GIInterfaceInfo *iface_info,
+                              PyGICallableCache *callable_cache,
+                              GIArgInfo *arg_info,
+                              GITransfer transfer,
+                              PyGIDirection direction,
+                              gssize c_arg_index,
+                              gssize py_arg_index)
+{
+    PyGIInterfaceCache *iface_cache = NULL;
+    PyGIArgCache *arg_cache = NULL;
+    gssize child_offset = 0;
+    GIInfoType info_type;
+
+    if (callable_cache != NULL)
+        child_offset =
+            (callable_cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
+                 callable_cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) ? 1: 0;
+
+    info_type = g_base_info_get_type ( (GIBaseInfo *)iface_info);
+
+    /* Callbacks are special cased */
+    if (info_type != GI_INFO_TYPE_CALLBACK) {
+        iface_cache = _interface_cache_new (iface_info);
+
+        arg_cache = (PyGIArgCache *)iface_cache;
+        if (arg_cache == NULL)
+            return NULL;
+    }
+
+    switch (info_type) {
+        case GI_INFO_TYPE_UNION:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_interface_union_setup (arg_cache, transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_interface_union_setup (arg_cache, transfer);
+
+            break;
+        case GI_INFO_TYPE_STRUCT:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_interface_struct_setup (arg_cache,
+                                                          iface_info,
+                                                          transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_interface_struct_setup (arg_cache,
+                                                        iface_info,
+                                                        transfer);
+            break;
+        case GI_INFO_TYPE_OBJECT:
+        case GI_INFO_TYPE_INTERFACE:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_interface_object_setup (arg_cache, transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_interface_object_setup (arg_cache, transfer);
+
+            break;
+        case GI_INFO_TYPE_BOXED:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                _arg_cache_from_py_interface_struct_setup (arg_cache,
+                                                       iface_info,
+                                                       transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                _arg_cache_to_py_interface_struct_setup (arg_cache,
+                                                      iface_info,
+                                                      transfer);
+            break;
+        case GI_INFO_TYPE_CALLBACK:
+            {
+                PyGICallbackCache *callback_cache;
+
+                if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+                    _arg_cache_to_py_interface_callback_setup ();
+                    return NULL;
+                }
+
+                callback_cache =
+                    _callback_cache_new (arg_info,
+                                         iface_info,
+                                         child_offset);
+
+                arg_cache = (PyGIArgCache *)callback_cache;
+                if (arg_cache == NULL)
+                    return NULL;
+
+                if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                    _arg_cache_from_py_interface_callback_setup (arg_cache, callable_cache);
+
+                break;
+            }
+        case GI_INFO_TYPE_ENUM:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_interface_enum_setup (arg_cache, transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_interface_enum_setup (arg_cache, transfer);
+
+            break;
+        case GI_INFO_TYPE_FLAGS:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_interface_flags_setup (arg_cache, transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_interface_flags_setup (arg_cache, transfer);
+
+            break;
+        default:
+            g_assert_not_reached ();
+    }
+
+    if (arg_cache != NULL) {
+        arg_cache->direction = direction;
+        arg_cache->transfer = transfer;
+        arg_cache->type_tag = GI_TYPE_TAG_INTERFACE;
+        arg_cache->py_arg_index = py_arg_index;
+        arg_cache->c_arg_index = c_arg_index;
+
+        if (iface_cache != NULL) {
+            g_base_info_ref ( (GIBaseInfo *)iface_info);
+            iface_cache->interface_info = iface_info;
+        }
+    }
+
+    return arg_cache;
+}
+
+PyGIArgCache *
+_arg_cache_new (GITypeInfo *type_info,
+                PyGICallableCache *callable_cache,
+                GIArgInfo *arg_info,
+                GITransfer transfer,
+                PyGIDirection direction,
+                gssize c_arg_index,
+                gssize py_arg_index)
+{
+    PyGIArgCache *arg_cache = NULL;
+    gssize child_offset = 0;
+    GITypeTag type_tag;
+
+    type_tag = g_type_info_get_tag (type_info);
+
+    if (callable_cache != NULL)
+        child_offset =
+            (callable_cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
+                callable_cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) ? 1: 0;
+
+    switch (type_tag) {
+       case GI_TYPE_TAG_VOID:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_void_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_void_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_BOOLEAN:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_boolean_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_boolean_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_INT8:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_int8_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_int8_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_UINT8:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_uint8_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_uint8_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_INT16:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_int16_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_int16_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_UINT16:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_uint16_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_uint16_setup (arg_cache);
+           break;
+       case GI_TYPE_TAG_INT32:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_int32_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_int32_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_UINT32:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_uint32_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_uint32_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_INT64:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_int64_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_int64_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_UINT64:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_uint64_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_uint64_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_FLOAT:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_float_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_float_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_DOUBLE:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_double_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_double_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_UNICHAR:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_unichar_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_unichar_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_GTYPE:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_gtype_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_gtype_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_UTF8:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_utf8_setup (arg_cache, transfer);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_utf8_setup (arg_cache, transfer);
+
+           break;
+       case GI_TYPE_TAG_FILENAME:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_filename_setup (arg_cache, transfer);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_filename_setup (arg_cache, transfer);
+
+           break;
+       case GI_TYPE_TAG_ARRAY:
+           {
+               PyGISequenceCache *seq_cache =
+                   _sequence_cache_new (type_info,
+                                        direction,
+                                        transfer,
+                                        child_offset);
+
+               arg_cache = (PyGIArgCache *)seq_cache;
+               if (arg_cache == NULL)
+                   break;
+
+               if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_from_py_array_setup (arg_cache,
+                                                   callable_cache,
+                                                   type_info,
+                                                   transfer,
+                                                   direction,
+                                                   c_arg_index);
+
+               if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_to_py_array_setup (arg_cache,
+                                                 callable_cache,
+                                                 type_info,
+                                                 transfer,
+                                                 direction,
+                                                 c_arg_index);
+
+               /* ugly edge case code:
+                *  
+                * length can come before the array parameter which means we
+                * need to update indexes if this happens
+                */ 
+               if (seq_cache->len_arg_index > -1 &&
+                   callable_cache->args_cache[seq_cache->len_arg_index]->meta_type == PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE) {
+                   gssize i;
+                   PyGIArgCache *child_cache =
+                       callable_cache->args_cache[seq_cache->len_arg_index];
+
+                   child_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+                   py_arg_index -= 1;
+                   callable_cache->n_py_args -= 1;
+
+                   for (i = seq_cache->len_arg_index + 1; 
+                          i < callable_cache->n_args; 
+                            i++) {
+                       PyGIArgCache *update_cache = callable_cache->args_cache[i];
+                       if (update_cache == NULL)
+                           break;
+
+                       update_cache->py_arg_index -= 1;
+                   }
+               }
+
+               break;
+           }
+       case GI_TYPE_TAG_GLIST:
+           {
+               PyGISequenceCache *seq_cache =
+                   _sequence_cache_new (type_info,
+                                        direction,
+                                        transfer,
+                                        child_offset);
+
+               arg_cache = (PyGIArgCache *)seq_cache;
+               if (arg_cache == NULL)
+                   break;
+
+               if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_from_py_glist_setup (arg_cache, transfer);
+
+               if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_to_py_glist_setup (arg_cache, transfer);
+
+
+               break;
+           }
+       case GI_TYPE_TAG_GSLIST:
+           {
+               PyGISequenceCache *seq_cache =
+                   _sequence_cache_new (type_info,
+                                        direction,
+                                        transfer,
+                                        child_offset);
+
+               arg_cache = (PyGIArgCache *)seq_cache;
+               if (arg_cache == NULL)
+                   break;
+
+               if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_from_py_gslist_setup (arg_cache, transfer);
+
+               if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_to_py_gslist_setup (arg_cache, transfer);
+
+               break;
+            }
+       case GI_TYPE_TAG_GHASH:
+           arg_cache =
+               (PyGIArgCache *)_hash_cache_new (type_info,
+                                                direction,
+                                                transfer);
+
+           if (arg_cache == NULL)
+                   break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_ghash_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+               _arg_cache_to_py_ghash_setup (arg_cache);
+           }
+
+           break;
+       case GI_TYPE_TAG_INTERFACE:
+           {
+               GIInterfaceInfo *interface_info = g_type_info_get_interface (type_info);
+               arg_cache = _arg_cache_new_for_interface (interface_info,
+                                                         callable_cache,
+                                                         arg_info,
+                                                         transfer,
+                                                         direction,
+                                                         c_arg_index,
+                                                         py_arg_index);
+
+               g_base_info_unref ( (GIBaseInfo *)interface_info);
+               break;
+           }
+       case GI_TYPE_TAG_ERROR:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_gerror_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_gerror_setup (arg_cache);
+
+           break;
+    }
+
+    if (arg_cache != NULL) {
+        arg_cache->direction = direction;
+        arg_cache->transfer = transfer;
+        arg_cache->type_tag = type_tag;
+        arg_cache->py_arg_index = py_arg_index;
+        arg_cache->c_arg_index = c_arg_index;
+        arg_cache->is_pointer = g_type_info_is_pointer (type_info);
+        g_base_info_ref ( (GIBaseInfo *) type_info);
+        arg_cache->type_info = type_info;
+    }
+
+    return arg_cache;
+}
+
+static void
+_arg_name_list_generate (PyGICallableCache *callable_cache)
+{
+    GSList * arg_name_list = NULL;
+    int i;
+
+    if (callable_cache->arg_name_hash == NULL) {
+        callable_cache->arg_name_hash = g_hash_table_new (g_str_hash, g_str_equal);
+    } else {
+        g_hash_table_remove_all (callable_cache->arg_name_hash);
+    }
+
+    for (i=0; i < callable_cache->n_args; i++) {
+        PyGIArgCache *arg_cache = NULL;
+
+        arg_cache = callable_cache->args_cache[i];
+
+        if (arg_cache->meta_type != PYGI_META_ARG_TYPE_CHILD &&
+            arg_cache->meta_type != PYGI_META_ARG_TYPE_CLOSURE &&
+                (arg_cache->direction == PYGI_DIRECTION_FROM_PYTHON ||
+                 arg_cache->direction == PYGI_DIRECTION_BIDIRECTIONAL)) {
+
+            gpointer arg_name = (gpointer)arg_cache->arg_name;
+
+            arg_name_list = g_slist_prepend (arg_name_list, arg_name);
+            if (arg_name != NULL) {
+                g_hash_table_insert (callable_cache->arg_name_hash, arg_name, arg_name);
+            }
+        }
+    }
+
+    callable_cache->arg_name_list = g_slist_reverse (arg_name_list);
+}
+
+/* Generate the cache for the callable's arguments */
+static gboolean
+_args_cache_generate (GICallableInfo *callable_info,
+                      PyGICallableCache *callable_cache)
+{
+    gssize arg_index = 0;
+    gssize i;
+    GITypeInfo *return_info;
+    GITransfer return_transfer;
+    PyGIArgCache *return_cache;
+    PyGIDirection return_direction;
+
+    /* determine if we are marshalling the return to or from python */
+    if (callable_cache->function_type == PYGI_FUNCTION_TYPE_CALLBACK)
+        return_direction = PYGI_DIRECTION_FROM_PYTHON;
+    else
+        return_direction = PYGI_DIRECTION_TO_PYTHON;
+
+    /* cache the return arg */
+    return_info =
+        g_callable_info_get_return_type (callable_info);
+    return_transfer =
+        g_callable_info_get_caller_owns (callable_info);
+    return_cache =
+        _arg_cache_new (return_info,
+                        callable_cache,
+                        NULL,
+                        return_transfer,
+                        return_direction,
+                        -1,
+                        -1);
+    if (return_cache == NULL)
+        return FALSE;
+
+    return_cache->is_skipped = g_callable_info_skip_return (callable_info);
+    callable_cache->return_cache = return_cache;
+    g_base_info_unref (return_info);
+
+    /* first arg is the instance */
+    if (callable_cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
+            callable_cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) {
+        GIInterfaceInfo *interface_info;
+        PyGIArgCache *instance_cache;
+        PyGIDirection instance_direction;
+
+        instance_direction = PYGI_DIRECTION_FROM_PYTHON;
+
+
+        interface_info = g_base_info_get_container ( (GIBaseInfo *)callable_info);
+
+        instance_cache =
+            _arg_cache_new_for_interface (interface_info,
+                                          callable_cache,
+                                          NULL,
+                                          GI_TRANSFER_NOTHING,
+                                          instance_direction,
+                                          arg_index,
+                                          0);
+
+        /* FIXME: marshal interfaces from_py */
+        instance_cache->from_py_marshaller = _pygi_marshal_from_py_interface_instance;
+        g_base_info_unref ( (GIBaseInfo *)interface_info);
+
+        if (instance_cache == NULL)
+            return FALSE;
+
+        callable_cache->args_cache[arg_index] = instance_cache;
+
+        arg_index++;
+        callable_cache->n_from_py_args++;
+        callable_cache->n_py_args++;
+    }
+
+
+    for (i=0; arg_index < callable_cache->n_args; arg_index++, i++) {
+        PyGIArgCache *arg_cache = NULL;
+        GIArgInfo *arg_info;
+        GITypeInfo *type_info;
+        GIDirection gi_direction;
+        PyGIDirection direction;
+        GITransfer transfer;
+        GITypeTag type_tag;
+        gboolean is_caller_allocates = FALSE;
+        gssize py_arg_index = -1;
+
+        arg_info = g_callable_info_get_arg (callable_info, i);
+
+        if (g_arg_info_get_closure (arg_info) == i) {
+
+            arg_cache = _arg_cache_alloc ();
+            callable_cache->args_cache[arg_index] = arg_cache;
+
+            arg_cache->arg_name = g_base_info_get_name ((GIBaseInfo *) arg_info);
+            arg_cache->direction = PYGI_DIRECTION_FROM_PYTHON;
+            arg_cache->meta_type = PYGI_META_ARG_TYPE_CLOSURE;
+            arg_cache->c_arg_index = i;
+
+            callable_cache->n_from_py_args++;
+
+            g_base_info_unref ( (GIBaseInfo *)arg_info);
+
+            continue;
+        }
+
+        /* For vfuncs and callbacks our marshalling directions
+           are reversed */
+        gi_direction = g_arg_info_get_direction (arg_info);
+        if (gi_direction == GI_DIRECTION_INOUT) {
+            direction = PYGI_DIRECTION_BIDIRECTIONAL;
+        } else if (gi_direction == GI_DIRECTION_IN) {
+            direction = PYGI_DIRECTION_FROM_PYTHON;
+            if (callable_cache->function_type == PYGI_FUNCTION_TYPE_CALLBACK)
+                direction = PYGI_DIRECTION_TO_PYTHON;
+        } else {
+            direction = PYGI_DIRECTION_TO_PYTHON;
+            if (callable_cache->function_type == PYGI_FUNCTION_TYPE_CALLBACK)
+                direction = PYGI_DIRECTION_FROM_PYTHON;
+        }
+
+        transfer = g_arg_info_get_ownership_transfer (arg_info);
+        type_info = g_arg_info_get_type (arg_info);
+        type_tag = g_type_info_get_tag (type_info);
+
+        if (type_tag == GI_TYPE_TAG_INTERFACE)
+            is_caller_allocates = g_arg_info_is_caller_allocates (arg_info);
+
+        /* must be an child arg filled in by its owner
+         * and continue
+         * fill in it's c_arg_index, add to the in count
+         */
+        if (callable_cache->args_cache[arg_index] != NULL) {
+            arg_cache = callable_cache->args_cache[arg_index];
+            if (arg_cache->meta_type == PYGI_META_ARG_TYPE_CHILD_WITH_PYARG) {
+                arg_cache->py_arg_index = callable_cache->n_py_args;
+                callable_cache->n_py_args++;
+            }
+
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+                arg_cache->c_arg_index = callable_cache->n_from_py_args;
+                callable_cache->n_from_py_args++;
+            }
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+                callable_cache->n_to_py_args++;
+                callable_cache->n_to_py_child_args++;
+            }
+
+            arg_cache->type_tag = g_type_info_get_tag (type_info);
+
+            g_base_info_unref ( (GIBaseInfo *)arg_info);
+            continue;
+        }
+
+        if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+            py_arg_index = callable_cache->n_py_args;
+            callable_cache->n_from_py_args++;
+            callable_cache->n_py_args++;
+        }
+
+        arg_cache =
+            _arg_cache_new (type_info,
+                            callable_cache,
+                            arg_info,
+                            transfer,
+                            direction,
+                            arg_index,
+                            py_arg_index);
+
+        if (arg_cache == NULL)
+            goto arg_err;
+
+        arg_cache->arg_name = g_base_info_get_name ((GIBaseInfo *) arg_info);
+        arg_cache->allow_none = g_arg_info_may_be_null(arg_info);
+        arg_cache->is_caller_allocates = is_caller_allocates;
+
+        if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+            callable_cache->n_to_py_args++;
+
+            if (arg_cache == NULL)
+                goto arg_err;
+
+            callable_cache->to_py_args =
+                g_slist_append (callable_cache->to_py_args, arg_cache);
+        }
+
+        callable_cache->args_cache[arg_index] = arg_cache;
+        g_base_info_unref( (GIBaseInfo *)type_info);
+        g_base_info_unref( (GIBaseInfo *)arg_info);
+
+        continue;
+arg_err:
+        g_base_info_unref( (GIBaseInfo *)type_info);
+        g_base_info_unref( (GIBaseInfo *)arg_info);
+        return FALSE;
+    }
+
+    _arg_name_list_generate (callable_cache);
+
+    return TRUE;
+}
+
+PyGICallableCache *
+_pygi_callable_cache_new (GICallableInfo *callable_info, gboolean is_ccallback)
+{
+    PyGICallableCache *cache;
+    GIInfoType type = g_base_info_get_type ( (GIBaseInfo *)callable_info);
+
+    cache = g_slice_new0 (PyGICallableCache);
+
+    if (cache == NULL)
+        return NULL;
+
+    cache->name = g_base_info_get_name ((GIBaseInfo *)callable_info);
+
+    if (type == GI_INFO_TYPE_FUNCTION) {
+        GIFunctionInfoFlags flags;
+
+        flags = g_function_info_get_flags ( (GIFunctionInfo *)callable_info);
+
+        if (flags & GI_FUNCTION_IS_CONSTRUCTOR)
+            cache->function_type = PYGI_FUNCTION_TYPE_CONSTRUCTOR;
+        else if (flags & GI_FUNCTION_IS_METHOD)
+            cache->function_type = PYGI_FUNCTION_TYPE_METHOD;
+    } else if (type == GI_INFO_TYPE_VFUNC) {
+        cache->function_type = PYGI_FUNCTION_TYPE_VFUNC;
+    } else if (type == GI_INFO_TYPE_CALLBACK) {
+        if (is_ccallback)
+            cache->function_type = PYGI_FUNCTION_TYPE_CCALLBACK;
+        else
+            cache->function_type = PYGI_FUNCTION_TYPE_CALLBACK;
+    } else {
+        cache->function_type = PYGI_FUNCTION_TYPE_METHOD;
+    }
+
+    cache->n_args = g_callable_info_get_n_args (callable_info);
+
+    /* if we are a method or vfunc make sure the instance parameter is counted */
+    if (cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
+            cache->function_type == PYGI_FUNCTION_TYPE_VFUNC)
+        cache->n_args++;
+
+    if (cache->n_args > 0)
+        cache->args_cache = g_slice_alloc0 (cache->n_args * sizeof (PyGIArgCache *));
+
+    if (!_args_cache_generate (callable_info, cache))
+        goto err;
+
+    return cache;
+err:
+    _pygi_callable_cache_free (cache);
+    return NULL;
+}
diff --git a/gi/pygi-cache.h b/gi/pygi-cache.h
new file mode 100644 (file)
index 0000000..6e5e0ab
--- /dev/null
@@ -0,0 +1,197 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGI_CACHE_H__
+#define __PYGI_CACHE_H__
+
+#include <Python.h>
+#include <girepository.h>
+
+#include "pygi-invoke-state-struct.h"
+
+G_BEGIN_DECLS
+
+typedef struct _PyGICallableCache PyGICallableCache;
+typedef struct _PyGIArgCache PyGIArgCache;
+
+typedef gboolean (*PyGIMarshalFromPyFunc) (PyGIInvokeState   *state,
+                                           PyGICallableCache *callable_cache,
+                                           PyGIArgCache      *arg_cache,
+                                           PyObject          *py_arg,
+                                           GIArgument        *arg);
+
+typedef PyObject *(*PyGIMarshalToPyFunc) (PyGIInvokeState   *state,
+                                          PyGICallableCache *callable_cache,
+                                          PyGIArgCache      *arg_cache,
+                                          GIArgument        *arg);
+
+typedef void (*PyGIMarshalCleanupFunc) (PyGIInvokeState *state,
+                                        PyGIArgCache    *arg_cache,
+                                        gpointer         data,
+                                        gboolean         was_processed);
+
+/* Argument meta types denote how we process the argument:
+ *  - PYGI_META_ARG_TYPE_PARENT - parents may or may not have children
+ *    but are always processed via the normal marshaller for their
+ *    actual GI type.  If they have children the marshaller will
+ *    also handle marshalling the children.
+ *  - PYGI_META_ARG_TYPE_CHILD - Children without python argument are
+ *    ignored by the marshallers and handled directly by their parents
+ *    marshaller.
+ *  - PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE -Sometimes children arguments
+ *    come before the parent.  In these cases they need to be flagged
+ *    so that the argument list counts must be updated for the cache to
+ *    be valid
+ *  - Children with pyargs (PYGI_META_ARG_TYPE_CHILD_WITH_PYARG) are processed
+ *    the same as other child args but also have an index into the 
+ *    python parameters passed to the invoker
+ */
+typedef enum {
+    PYGI_META_ARG_TYPE_PARENT,
+    PYGI_META_ARG_TYPE_CHILD,
+    PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE,
+    PYGI_META_ARG_TYPE_CHILD_WITH_PYARG,
+    PYGI_META_ARG_TYPE_CLOSURE,
+} PyGIMetaArgType;
+
+/*
+ * GI determines function types via a combination of flags and info classes.
+ * Since for branching purposes they are mutually exclusive, the 
+ * PyGIFunctionType enum consolidates them into one enumeration for ease of 
+ * branching and debugging.
+ */
+typedef enum {
+    PYGI_FUNCTION_TYPE_FUNCTION,
+    PYGI_FUNCTION_TYPE_METHOD,
+    PYGI_FUNCTION_TYPE_CONSTRUCTOR,
+    PYGI_FUNCTION_TYPE_VFUNC,
+    PYGI_FUNCTION_TYPE_CALLBACK,
+    PYGI_FUNCTION_TYPE_CCALLBACK,
+ } PyGIFunctionType;
+
+/*
+ * In PyGI IN and OUT arguments mean different things depending on the context
+ * of the callable (e.g. is it a callback that is being called from C or a
+ * function that is being called from python).  We don't as much care if the
+ * parameter is an IN or OUT C parameter, than we do if the parameter is being
+ * marshalled into Python or from Python.
+ */
+typedef enum {
+    PYGI_DIRECTION_TO_PYTHON,
+    PYGI_DIRECTION_FROM_PYTHON,
+    PYGI_DIRECTION_BIDIRECTIONAL
+ } PyGIDirection;
+
+
+struct _PyGIArgCache
+{
+    const gchar *arg_name;
+
+    PyGIMetaArgType meta_type;
+    gboolean is_pointer;
+    gboolean is_caller_allocates;
+    gboolean is_skipped;
+    gboolean allow_none;
+
+    PyGIDirection direction;
+    GITransfer transfer;
+    GITypeTag type_tag;
+    GITypeInfo *type_info;
+
+    PyGIMarshalFromPyFunc from_py_marshaller;
+    PyGIMarshalToPyFunc to_py_marshaller;
+
+    PyGIMarshalCleanupFunc from_py_cleanup;
+    PyGIMarshalCleanupFunc to_py_cleanup;
+
+    GDestroyNotify destroy_notify;
+
+    gssize c_arg_index;
+    gssize py_arg_index;
+};
+
+typedef struct _PyGISequenceCache
+{
+    PyGIArgCache arg_cache;
+    gssize fixed_size;
+    gssize len_arg_index;
+    gboolean is_zero_terminated;
+    gsize item_size;
+    GIArrayType array_type;
+    PyGIArgCache *item_cache;
+} PyGISequenceCache;
+
+typedef struct _PyGIInterfaceCache
+{
+    PyGIArgCache arg_cache;
+    gboolean is_foreign;
+    GType g_type;
+    PyObject *py_type;
+    GIInterfaceInfo *interface_info;
+    gchar *type_name;
+} PyGIInterfaceCache;
+
+typedef struct _PyGIHashCache
+{
+    PyGIArgCache arg_cache;
+    PyGIArgCache *key_cache;
+    PyGIArgCache *value_cache;
+} PyGIHashCache;
+
+typedef struct _PyGICallbackCache
+{
+    PyGIArgCache arg_cache;
+    gssize user_data_index;
+    gssize destroy_notify_index;
+    GIScopeType scope;
+    GIInterfaceInfo *interface_info;
+} PyGICallbackCache;
+
+struct _PyGICallableCache
+{
+    const gchar *name;
+
+    PyGIFunctionType function_type;
+
+    PyGIArgCache *return_cache;
+    PyGIArgCache **args_cache;
+    GSList *to_py_args;
+    GSList *arg_name_list; /* for keyword arg matching */
+    GHashTable *arg_name_hash;
+
+    /* counts */
+    gssize n_from_py_args;
+    gssize n_to_py_args;
+    gssize n_to_py_child_args;
+
+    gssize n_args;
+    gssize n_py_args;
+};
+
+void _pygi_arg_cache_clear     (PyGIArgCache *cache);
+void _pygi_callable_cache_free (PyGICallableCache *cache);
+
+PyGICallableCache *_pygi_callable_cache_new (GICallableInfo *callable_info,
+                                             gboolean is_ccallback);
+
+G_END_DECLS
+
+#endif /* __PYGI_CACHE_H__ */
diff --git a/gi/pygi-ccallback.c b/gi/pygi-ccallback.c
new file mode 100644 (file)
index 0000000..bf3ec8a
--- /dev/null
@@ -0,0 +1,100 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
+ *
+ *   pygi-boxed-closure.c: wrapper to handle GClosure box types with C callbacks.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#include "pygi-private.h"
+
+#include <pygobject.h>
+#include <girepository.h>
+#include <pyglib-python-compat.h>
+
+
+static PyObject *
+_ccallback_call(PyGICCallback *self, PyObject *args, PyObject *kwargs)
+{
+    PyObject *result;
+    GCallback *func;
+
+    if (self->cache == NULL) {
+        self->cache = _pygi_callable_cache_new (self->info, TRUE);
+        if (self->cache == NULL)
+            return NULL;
+    }
+
+    result = pygi_callable_info_invoke( (GIBaseInfo *) self->info,
+                                         args,
+                                         kwargs,
+                                         self->cache,
+                                         self->callback,
+                                         self->user_data);
+    return result;
+}
+
+PYGLIB_DEFINE_TYPE("gi.CCallback", PyGICCallback_Type, PyGICCallback);
+
+PyObject *
+_pygi_ccallback_new (GCallback callback,
+                     gpointer user_data,
+                     GIScopeType scope,
+                     GIFunctionInfo *info,
+                     GDestroyNotify destroy_notify)
+{
+    PyGICCallback *self;
+
+    if (!callback) {
+        Py_RETURN_NONE;
+    }
+
+    self = (PyGICCallback *) PyGICCallback_Type.tp_alloc (&PyGICCallback_Type, 0);
+    if (self == NULL) {
+        return NULL;
+    }
+
+    self->callback = (GCallback) callback;
+    self->user_data = user_data;
+    self->scope = scope;
+    self->destroy_notify_func = destroy_notify;
+    self->info = g_base_info_ref( (GIBaseInfo *) info);
+
+    return (PyObject *) self;
+}
+
+static void
+_ccallback_dealloc (PyGICCallback *self)
+{
+    g_base_info_unref ( (GIBaseInfo *)self->info);
+}
+
+void
+_pygi_ccallback_register_types (PyObject *m)
+{
+    Py_TYPE(&PyGICCallback_Type) = &PyType_Type;
+    PyGICCallback_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
+    PyGICCallback_Type.tp_dealloc = (destructor) _ccallback_dealloc;
+    PyGICCallback_Type.tp_call = (ternaryfunc) _ccallback_call;
+
+
+    if (PyType_Ready (&PyGICCallback_Type))
+        return;
+    if (PyModule_AddObject (m, "CCallback", (PyObject *) &PyGICCallback_Type))
+        return;
+}
diff --git a/gi/pygi-ccallback.h b/gi/pygi-ccallback.h
new file mode 100644 (file)
index 0000000..c796092
--- /dev/null
@@ -0,0 +1,41 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGI_CCLOSURE_H__
+#define __PYGI_CCLOSURE_H__
+
+#include <Python.h>
+
+G_BEGIN_DECLS
+
+extern PyTypeObject PyGICCallback_Type;
+
+PyObject * _pygi_ccallback_new (GCallback       callback,
+                                gpointer        user_data,
+                                GIScopeType     scope,
+                                GIFunctionInfo *info,
+                                GDestroyNotify  destroy_notify);
+
+void _pygi_ccallback_register_types (PyObject *m);
+
+G_END_DECLS
+
+#endif /* __PYGI_CCLOSURE_H__ */
index 35281a2..f6f5c51 100644 (file)
 static GSList* async_free_list;
 
 static void
+_pygi_closure_assign_pyobj_to_retval (gpointer retval, PyObject *object,
+                                      GITypeInfo *type_info,
+                                      GITransfer transfer)
+{
+    GIArgument arg = _pygi_argument_from_object (object, type_info, transfer);
+    GITypeTag type_tag = g_type_info_get_tag (type_info);
+
+    if (retval == NULL)
+        return;
+
+    switch (type_tag) {
+        case GI_TYPE_TAG_BOOLEAN:
+           *((ffi_sarg *) retval) = arg.v_boolean;
+           break;
+        case GI_TYPE_TAG_INT8:
+           *((ffi_sarg *) retval) = arg.v_int8;
+           break;
+        case GI_TYPE_TAG_UINT8:
+           *((ffi_arg *) retval) = arg.v_uint8;
+           break;
+        case GI_TYPE_TAG_INT16:
+           *((ffi_sarg *) retval) = arg.v_int16;
+           break;
+        case GI_TYPE_TAG_UINT16:
+           *((ffi_arg *) retval) = arg.v_uint16;
+           break;
+        case GI_TYPE_TAG_INT32:
+           *((ffi_sarg *) retval) = arg.v_int32;
+           break;
+        case GI_TYPE_TAG_UINT32:
+           *((ffi_arg *) retval) = arg.v_uint32;
+           break;
+        case GI_TYPE_TAG_INT64:
+           *((ffi_sarg *) retval) = arg.v_int64;
+           break;
+        case GI_TYPE_TAG_UINT64:
+           *((ffi_arg *) retval) = arg.v_uint64;
+           break;
+        case GI_TYPE_TAG_FLOAT:
+           *((gfloat *) retval) = arg.v_float;
+           break;
+        case GI_TYPE_TAG_DOUBLE:
+           *((gdouble *) retval) = arg.v_double;
+           break;
+        default:
+           *((GIArgument *) retval) = arg;
+           break;
+      }
+}
+
+static void
 _pygi_closure_assign_pyobj_to_out_argument (gpointer out_arg, PyObject *object,
                                             GITypeInfo *type_info,
                                             GITransfer transfer)
@@ -72,6 +123,27 @@ _pygi_closure_assign_pyobj_to_out_argument (gpointer out_arg, PyObject *object,
         case GI_TYPE_TAG_DOUBLE:
            *((gdouble *) out_arg) = arg.v_double;
            break;
+        case GI_TYPE_TAG_INTERFACE:
+        {
+           GIBaseInfo *interface;
+           GIInfoType interface_type;
+
+           interface = g_type_info_get_interface (type_info);
+           interface_type = g_base_info_get_type (interface);
+
+           if (!g_type_info_is_pointer (type_info) &&
+               interface_type == GI_INFO_TYPE_STRUCT) {
+               if (object == Py_None) {
+                   arg.v_pointer = NULL;
+               } else {
+                   gsize item_size = _pygi_g_type_info_size (type_info);
+                   memcpy (out_arg, arg.v_pointer, item_size);
+               }
+               break;
+           }
+        }
+
+        /* Fall through */
         default:
            *((GIArgument *) out_arg) = arg;
            break;
@@ -155,7 +227,8 @@ _pygi_closure_convert_ffi_arguments (GICallableInfo *callable_info, void **args)
                         g_args[i].v_double = * (double *) args[i];
                         g_base_info_unref (interface);
                         break;
-                    } else if (interface_type == GI_INFO_TYPE_STRUCT) {
+                    } else if (interface_type == GI_INFO_TYPE_STRUCT ||
+                               interface_type == GI_INFO_TYPE_CALLBACK) {
                         g_args[i].v_pointer = * (gpointer *) args[i];
                         g_base_info_unref (interface);
                         break;
@@ -163,11 +236,16 @@ _pygi_closure_convert_ffi_arguments (GICallableInfo *callable_info, void **args)
 
                     g_base_info_unref (interface);
                 }
+                case GI_TYPE_TAG_ERROR:
+                case GI_TYPE_TAG_GHASH:
                 case GI_TYPE_TAG_GLIST:
                 case GI_TYPE_TAG_GSLIST:
+                case GI_TYPE_TAG_ARRAY:
+                case GI_TYPE_TAG_VOID:
                     g_args[i].v_pointer = * (gpointer *) args[i];
                     break;
                 default:
+                    g_warning ("Unhandled type tag %s", g_type_tag_to_string (tag));
                     g_args[i].v_pointer = 0;
             }
         }
@@ -186,6 +264,9 @@ _pygi_closure_convert_arguments (GICallableInfo *callable_info, void **args,
     int n_in_args = 0;
     int n_out_args = 0;
     int i;
+    int user_data_arg = -1;
+    int destroy_notify_arg = -1;
+
     GIArgument *g_args = NULL;
 
     *py_args = NULL;
@@ -198,6 +279,10 @@ _pygi_closure_convert_arguments (GICallableInfo *callable_info, void **args,
     g_args = _pygi_closure_convert_ffi_arguments (callable_info, args);
 
     for (i = 0; i < n_args; i++) {
+        /* Special case callbacks and skip over userdata and Destroy Notify */
+        if (i == user_data_arg || i == destroy_notify_arg)
+            continue;
+
         GIArgInfo *arg_info = g_callable_info_get_arg (callable_info, i);
         GIDirection direction = g_arg_info_get_direction (arg_info);
 
@@ -207,6 +292,7 @@ _pygi_closure_convert_arguments (GICallableInfo *callable_info, void **args,
             GITransfer transfer = g_arg_info_get_ownership_transfer (arg_info);
             PyObject *value;
             GIArgument *arg;
+            gboolean free_array = FALSE;
 
             if (direction == GI_DIRECTION_IN && arg_tag == GI_TYPE_TAG_VOID &&
                     g_type_info_is_pointer (arg_type)) {
@@ -218,13 +304,60 @@ _pygi_closure_convert_arguments (GICallableInfo *callable_info, void **args,
                     value = user_data;
                     Py_INCREF (value);
                 }
+            } else if (direction == GI_DIRECTION_IN &&
+                       arg_tag == GI_TYPE_TAG_INTERFACE) {
+                /* Handle callbacks as a special case */
+                GIBaseInfo *info;
+                GIInfoType info_type;
+
+                info = g_type_info_get_interface (arg_type);
+                info_type = g_base_info_get_type (info);
+
+                arg = (GIArgument*) &g_args[i];
+
+                if (info_type == GI_INFO_TYPE_CALLBACK) {
+                    gpointer user_data = NULL;
+                    GDestroyNotify destroy_notify = NULL;
+                    GIScopeType scope = g_arg_info_get_scope(arg_info);
+
+                    user_data_arg = g_arg_info_get_closure(arg_info);
+                    destroy_notify_arg = g_arg_info_get_destroy(arg_info);
+
+                    if (user_data_arg != -1)
+                        user_data = g_args[user_data_arg].v_pointer;
+
+                    if (destroy_notify_arg != -1)
+                        user_data = (GDestroyNotify) g_args[destroy_notify_arg].v_pointer;
+
+                    value = _pygi_ccallback_new(arg->v_pointer,
+                                                user_data,
+                                                scope,
+                                                (GIFunctionInfo *) info,
+                                                destroy_notify);
+                } else
+                    value = _pygi_argument_to_object (arg, arg_type, transfer);
+
+                g_base_info_unref (info);
+                if (value == NULL) {
+                    g_base_info_unref (arg_type);
+                    g_base_info_unref (arg_info);
+                    goto error;
+                }
             } else {
                 if (direction == GI_DIRECTION_IN)
                     arg = (GIArgument*) &g_args[i];
                 else
                     arg = (GIArgument*) g_args[i].v_pointer;
+                
+                if (g_type_info_get_tag (arg_type) == GI_TYPE_TAG_ARRAY)
+                    arg->v_pointer = _pygi_argument_to_array (arg, (GIArgument **) args, 
+                                                              callable_info, arg_type, &free_array);
 
                 value = _pygi_argument_to_object (arg, arg_type, transfer);
+                
+                if (free_array)
+                    g_array_free (arg->v_pointer, FALSE);
+                
                 if (value == NULL) {
                     g_base_info_unref (arg_type);
                     g_base_info_unref (arg_info);
@@ -276,10 +409,10 @@ _pygi_closure_set_out_arguments (GICallableInfo *callable_info,
         GITransfer transfer = g_callable_info_get_caller_owns (callable_info);
         if (PyTuple_Check (py_retval)) {
             PyObject *item = PyTuple_GET_ITEM (py_retval, 0);
-            _pygi_closure_assign_pyobj_to_out_argument (resp, item,
+            _pygi_closure_assign_pyobj_to_retval (resp, item,
                 return_type_info, transfer);
         } else {
-            _pygi_closure_assign_pyobj_to_out_argument (resp, py_retval,
+            _pygi_closure_assign_pyobj_to_retval (resp, py_retval,
                 return_type_info, transfer);
         }
         i_py_retval++;
@@ -330,9 +463,6 @@ _pygi_closure_handle (ffi_cif *cif,
 {
     PyGILState_STATE state;
     PyGICClosure *closure = data;
-    GITypeTag  return_tag;
-    GITransfer return_transfer;
-    GITypeInfo *return_type;
     PyObject *retval;
     PyObject *py_args;
     GIArgument *out_args = NULL;
@@ -341,10 +471,6 @@ _pygi_closure_handle (ffi_cif *cif,
       may be executing python code */
     state = PyGILState_Ensure();
 
-    return_type = g_callable_info_get_return_type (closure->info);
-    return_tag = g_type_info_get_tag (return_type);
-    return_transfer = g_callable_info_get_caller_owns (closure->info);
-
     if (!_pygi_closure_convert_arguments ( (GICallableInfo *) closure->info, args,
                                            closure->user_data,
                                            &py_args, &out_args)) {
@@ -365,7 +491,6 @@ _pygi_closure_handle (ffi_cif *cif,
 
 end:
     g_free (out_args);
-    g_base_info_unref ( (GIBaseInfo*) return_type);
 
     PyGILState_Release (state);
 
@@ -392,8 +517,10 @@ end:
 
 void _pygi_invoke_closure_free (gpointer data)
 {
+    PyGILState_STATE state;
     PyGICClosure* invoke_closure = (PyGICClosure *) data;
 
+    state = PyGILState_Ensure();
     Py_DECREF (invoke_closure->function);
 
     g_callable_info_free_closure (invoke_closure->info,
@@ -403,6 +530,7 @@ void _pygi_invoke_closure_free (gpointer data)
         g_base_info_unref ( (GIBaseInfo*) invoke_closure->info);
 
     Py_XDECREF (invoke_closure->user_data);
+    PyGILState_Release (state);
 
     g_slice_free (PyGICClosure, invoke_closure);
 }
@@ -418,8 +546,7 @@ _pygi_make_native_closure (GICallableInfo* info,
     ffi_closure *fficlosure;
 
     /* Begin by cleaning up old async functions */
-    g_slist_foreach (async_free_list, (GFunc) _pygi_invoke_closure_free, NULL);
-    g_slist_free (async_free_list);
+    g_slist_free_full (async_free_list, (GDestroyNotify) _pygi_invoke_closure_free);
     async_free_list = NULL;
 
     /* Build the closure itself */
index e332a22..d1846c5 100644 (file)
 #include <pycairo/py3cairo.h>
 #endif
 
-Pycairo_CAPI_t *Pycairo_CAPI;
+static Pycairo_CAPI_t *Pycairo_CAPI;
 
 #include "pygi-foreign.h"
 
 #include <pyglib-python-compat.h>
 
-PyObject *
+static PyObject *
 cairo_context_to_arg (PyObject        *value,
-                      GIInterfaceInfo *iface_info,
+                      GIInterfaceInfo *interface_info,
                       GITransfer       transfer,
                       GIArgument      *arg)
 {
@@ -55,9 +55,8 @@ cairo_context_to_arg (PyObject        *value,
     Py_RETURN_NONE;
 }
 
-PyObject *
-cairo_context_from_arg (GIInterfaceInfo *iface_info,
-                        gpointer data)
+static PyObject *
+cairo_context_from_arg (GIInterfaceInfo *interface_info, gpointer data)
 {
     cairo_t *context = (cairo_t*) data;
 
@@ -66,7 +65,7 @@ cairo_context_from_arg (GIInterfaceInfo *iface_info,
     return PycairoContext_FromContext (context, &PycairoContext_Type, NULL);
 }
 
-PyObject *
+static PyObject *
 cairo_context_release (GIBaseInfo *base_info,
                        gpointer    struct_)
 {
@@ -75,9 +74,9 @@ cairo_context_release (GIBaseInfo *base_info,
 }
 
 
-PyObject *
+static PyObject *
 cairo_surface_to_arg (PyObject        *value,
-                      GIInterfaceInfo *iface_info,
+                      GIInterfaceInfo *interface_info,
                       GITransfer       transfer,
                       GIArgument      *arg)
 {
@@ -95,9 +94,8 @@ cairo_surface_to_arg (PyObject        *value,
     Py_RETURN_NONE;
 }
 
-PyObject *
-cairo_surface_from_arg (GIInterfaceInfo *iface_info, 
-                        gpointer         data)
+static PyObject *
+cairo_surface_from_arg (GIInterfaceInfo *interface_info, gpointer data)
 {
     cairo_surface_t *surface = (cairo_surface_t*) data;
 
@@ -106,7 +104,7 @@ cairo_surface_from_arg (GIInterfaceInfo *iface_info,
     return PycairoSurface_FromSurface (surface, NULL);
 }
 
-PyObject *
+static PyObject *
 cairo_surface_release (GIBaseInfo *base_info,
                        gpointer    struct_)
 {
@@ -114,10 +112,88 @@ cairo_surface_release (GIBaseInfo *base_info,
     Py_RETURN_NONE;
 }
 
-static PyMethodDef _gi_cairo_functions[] = {};
+
+static PyObject *
+cairo_path_to_arg (PyObject        *value,
+                   GIInterfaceInfo *interface_info,
+                   GITransfer       transfer,
+                   GIArgument      *arg)
+{
+    cairo_path_t *path;
+
+    g_assert (transfer == GI_TRANSFER_NOTHING);
+
+    path = ( (PycairoPath*) value)->path;
+    if (!path) {
+        PyErr_SetString (PyExc_ValueError, "Path instance wrapping a NULL path");
+        return NULL;
+    }
+
+    arg->v_pointer = path;
+    Py_RETURN_NONE;
+}
+
+static PyObject *
+cairo_path_from_arg (GIInterfaceInfo *interface_info, gpointer data)
+{
+    cairo_path_t *path = (cairo_path_t*) data;
+
+    return PycairoPath_FromPath (path);
+}
+
+static PyObject *
+cairo_path_release (GIBaseInfo *base_info,
+                    gpointer    struct_)
+{
+    cairo_path_destroy ( (cairo_path_t*) struct_);
+    Py_RETURN_NONE;
+}
+
+static PyObject *
+cairo_font_options_to_arg (PyObject        *value,
+                           GIInterfaceInfo *interface_info,
+                           GITransfer       transfer,
+                           GIArgument      *arg)
+{
+    cairo_font_options_t *font_options;
+
+    g_assert (transfer == GI_TRANSFER_NOTHING);
+
+    font_options = ( (PycairoFontOptions*) value)->font_options;
+    if (!font_options) {
+        PyErr_SetString (PyExc_ValueError, "FontOptions instance wrapping a NULL font_options");
+        return NULL;
+    }
+
+    arg->v_pointer = font_options;
+    Py_RETURN_NONE;
+}
+
+static PyObject *
+cairo_font_options_from_arg (GIInterfaceInfo *interface_info, gpointer data)
+{
+    cairo_font_options_t *font_options = (cairo_font_options_t*) data;
+
+    return PycairoFontOptions_FromFontOptions (cairo_font_options_copy (font_options));
+}
+
+static PyObject *
+cairo_font_options_release (GIBaseInfo *base_info,
+                            gpointer    struct_)
+{
+    cairo_font_options_destroy ( (cairo_font_options_t*) struct_);
+    Py_RETURN_NONE;
+}
+
+static PyMethodDef _gi_cairo_functions[] = { {0,} };
 PYGLIB_MODULE_START(_gi_cairo, "_gi_cairo")
 {
+#if PY_VERSION_HEX < 0x03000000
     Pycairo_IMPORT;
+#else
+    Pycairo_CAPI = (Pycairo_CAPI_t*) PyCapsule_Import("cairo.CAPI", 0);
+#endif
+
     if (Pycairo_CAPI == NULL)
         return PYGLIB_MODULE_ERROR_RETURN;
 
@@ -132,5 +208,17 @@ PYGLIB_MODULE_START(_gi_cairo, "_gi_cairo")
                                   cairo_surface_to_arg,
                                   cairo_surface_from_arg,
                                   cairo_surface_release);
+
+    pygi_register_foreign_struct ("cairo",
+                                  "Path",
+                                  cairo_path_to_arg,
+                                  cairo_path_from_arg,
+                                  cairo_path_release);
+
+    pygi_register_foreign_struct ("cairo",
+                                  "FontOptions",
+                                  cairo_font_options_to_arg,
+                                  cairo_font_options_from_arg,
+                                  cairo_font_options_release);
 }
 PYGLIB_MODULE_END;
index 9249d44..e799d98 100644 (file)
@@ -28,7 +28,7 @@
 
 PyObject *
 g_variant_to_arg (PyObject        *value,
-                  GIInterfaceInfo *type_info,
+                  GIInterfaceInfo *interface_info,
                   GITransfer       transfer,
                   GIArgument      *arg)
 {
@@ -41,11 +41,12 @@ g_variant_to_arg (PyObject        *value,
 }
 
 PyObject *
-g_variant_from_arg (GIInterfaceInfo *iface_info,
+g_variant_from_arg (GIInterfaceInfo *interface_info,
                     gpointer         data)
 {
     GVariant *variant = (GVariant *) data;
-    PyObject *type = _pygi_type_import_by_gi_info (iface_info);
+
+    PyObject *type = _pygi_type_import_by_gi_info (interface_info);
 
     g_variant_ref_sink (variant);
 
@@ -54,7 +55,7 @@ g_variant_from_arg (GIInterfaceInfo *iface_info,
 
 PyObject *
 g_variant_release_foreign (GIBaseInfo *base_info,
-                           gpointer    struct_)
+                           gpointer struct_)
 {
     g_variant_unref ( (GVariant *) struct_);
     Py_RETURN_NONE;
index 8ebc4cd..43ea9c7 100644 (file)
 
 #include "pygi-foreign.h"
 
-PyObject *g_variant_to_arg          (PyObject        *value,
-                                     GIInterfaceInfo *iface_info,
-                                     GITransfer       transfer,
-                                     GIArgument      *arg);
-PyObject *g_variant_from_arg        (GIInterfaceInfo *iface_info,
-                                     gpointer         data);
+PyObject *g_variant_to_arg(PyObject        *value,
+                           GIInterfaceInfo *interface_info,
+                           GITransfer       transfer,
+                           GIArgument      *arg);
+
+PyObject *g_variant_from_arg(GITypeInfo *type_info,
+                             gpointer    data);
+
 PyObject *g_variant_release_foreign (GIBaseInfo *base_info,
                                      gpointer    struct_);
 
index eafaca3..14d20af 100644 (file)
@@ -41,7 +41,7 @@ typedef struct {
 
 static GPtrArray *foreign_structs = NULL;
 
-void
+static void
 init_foreign_structs ()
 {
     foreign_structs = g_ptr_array_new ();
@@ -108,33 +108,36 @@ pygi_struct_foreign_lookup (GIBaseInfo *base_info)
 
 PyObject *
 pygi_struct_foreign_convert_to_g_argument (PyObject        *value,
-                                           GIInterfaceInfo *iface_info,
+                                           GIInterfaceInfo *interface_info,
                                            GITransfer       transfer,
                                            GIArgument      *arg)
 {
-    GIBaseInfo *base_info = (GIBaseInfo *) iface_info;
-    PyGIForeignStruct *foreign_struct = pygi_struct_foreign_lookup (base_info);
+    PyObject *result;
 
-    if (foreign_struct == NULL)
-        return NULL;
+    GIBaseInfo *base_info = (GIBaseInfo *) interface_info;
+    PyGIForeignStruct *foreign_struct = pygi_struct_foreign_lookup (base_info);
 
-    if (!foreign_struct->to_func (value, iface_info, transfer, arg))
-        return NULL;
+    if (foreign_struct == NULL) {
+        PyErr_Format(PyExc_KeyError, "could not find foreign type %s",
+                     g_base_info_get_name (base_info));
+        return FALSE;
+    }
 
-    Py_RETURN_NONE;
+    result = foreign_struct->to_func (value, interface_info, transfer, arg);
+    return result;
 }
 
 PyObject *
-pygi_struct_foreign_convert_from_g_argument (GIInterfaceInfo *iface_info,
+pygi_struct_foreign_convert_from_g_argument (GIInterfaceInfo *interface_info,
                                              GIArgument      *arg)
 {
-    GIBaseInfo *base_info = (GIBaseInfo *) iface_info;
+    GIBaseInfo *base_info = (GIBaseInfo *) interface_info;
     PyGIForeignStruct *foreign_struct = pygi_struct_foreign_lookup (base_info);
 
     if (foreign_struct == NULL)
         return NULL;
 
-    return foreign_struct->from_func (iface_info, arg);
+    return foreign_struct->from_func (interface_info, arg);
 }
 
 PyObject *
@@ -149,10 +152,7 @@ pygi_struct_foreign_release (GIBaseInfo *base_info,
     if (!foreign_struct->release_func)
         Py_RETURN_NONE;
 
-    if (!foreign_struct->release_func (base_info, struct_))
-        return NULL;
-
-    Py_RETURN_NONE;
+    return foreign_struct->release_func (base_info, struct_);
 }
 
 void
index b07f682..dd5f896 100644 (file)
 
 #include "pygi.h"
 
-PyObject *pygi_struct_foreign_convert_to_g_argument   (PyObject        *value,
-                                                       GIInterfaceInfo *iface_info,
-                                                       GITransfer       transfer,
+PyObject *pygi_struct_foreign_convert_to_g_argument (PyObject           *value,
+                                                     GIInterfaceInfo    *interface_info,
+                                                     GITransfer          transfer,
+                                                     GIArgument         *arg);
+PyObject *pygi_struct_foreign_convert_from_g_argument (GIInterfaceInfo *interface_info,
                                                        GIArgument      *arg);
-PyObject *pygi_struct_foreign_convert_from_g_argument (GIInterfaceInfo *iface_info,
-                                                       GIArgument      *arg);
-PyObject *pygi_struct_foreign_release                 (GIBaseInfo      *base_info,
-                                                       gpointer         struct_);
+PyObject *pygi_struct_foreign_release (GITypeInfo *type_info,
+                                       gpointer struct_);
 
 void pygi_register_foreign_struct_real (const char* namespace_,
                                         const char* name,
index 1bfd7d8..dfcaf55 100644 (file)
@@ -22,6 +22,7 @@
  */
 
 #include "pygi-private.h"
+#include "pygi-cache.h"
 
 #include <pygobject.h>
 #include <pyglib-python-compat.h>
@@ -37,6 +38,8 @@ _base_info_dealloc (PyGIBaseInfo *self)
 
     g_base_info_unref (self->info);
 
+    _pygi_callable_cache_free(self->cache);
+
     Py_TYPE( (PyObject *) self)->tp_free ( (PyObject *) self);
 }
 
@@ -92,6 +95,48 @@ PYGLIB_DEFINE_TYPE("gi.BaseInfo", PyGIBaseInfo_Type, PyGIBaseInfo);
 static PyObject *
 _wrap_g_base_info_get_name (PyGIBaseInfo *self)
 {
+    /* It may be better to use keyword.iskeyword(); keep in sync with
+     * python -c 'import keyword; print(keyword.kwlist)' */
+#if PY_VERSION_HEX < 0x03000000
+    /* Python 2.x */
+    static const gchar* keywords[] = {"and", "as", "assert", "break", "class",
+        "continue", "def", "del", "elif", "else", "except", "exec", "finally",
+        "for", "from", "global", "if", "import", "in", "is", "lambda", "not",
+        "or", "pass", "print", "raise", "return", "try", "while", "with",
+        "yield", NULL};
+#elif PY_VERSION_HEX < 0x04000000
+    /* Python 3.x; note that we explicitly keep "print"; it is not a keyword
+     * any more, but we do not want to break API between Python versions */
+    static const gchar* keywords[] = {"False", "None", "True", "and", "as",
+        "assert", "break", "class", "continue", "def", "del", "elif", "else",
+        "except", "finally", "for", "from", "global", "if", "import", "in",
+        "is", "lambda", "nonlocal", "not", "or", "pass", "raise", "return",
+        "try", "while", "with", "yield",
+        "print", NULL};
+#else
+    #error Need keyword list for this major Python version
+#endif
+
+    const gchar *name, **i;
+
+    name = g_base_info_get_name (self->info);
+
+    /* escape keywords */
+    for (i = keywords; *i != NULL; ++i) {
+        if (strcmp (name, *i) == 0) {
+            gchar *escaped = g_strconcat (name, "_", NULL);
+            PyObject *obj = PYGLIB_PyUnicode_FromString (escaped);
+            g_free (escaped);
+            return obj;
+        }
+    }
+
+    return PYGLIB_PyUnicode_FromString (name);
+}
+
+static PyObject *
+_wrap_g_base_info_get_name_unescaped (PyGIBaseInfo *self)
+{
     return PYGLIB_PyUnicode_FromString (g_base_info_get_name (self->info));
 }
 
@@ -118,6 +163,7 @@ _wrap_g_base_info_get_container (PyGIBaseInfo *self)
 
 static PyMethodDef _PyGIBaseInfo_methods[] = {
     { "get_name", (PyCFunction) _wrap_g_base_info_get_name, METH_NOARGS },
+    { "get_name_unescaped", (PyCFunction) _wrap_g_base_info_get_name_unescaped, METH_NOARGS },
     { "get_namespace", (PyCFunction) _wrap_g_base_info_get_namespace, METH_NOARGS },
     { "get_container", (PyCFunction) _wrap_g_base_info_get_container, METH_NOARGS },
     { NULL, NULL, 0 }
@@ -162,9 +208,6 @@ _pygi_info_new (GIBaseInfo *info)
         case GI_INFO_TYPE_CONSTANT:
             type = &PyGIConstantInfo_Type;
             break;
-        case GI_INFO_TYPE_ERROR_DOMAIN:
-            type = &PyGIErrorDomainInfo_Type;
-            break;
         case GI_INFO_TYPE_UNION:
             type = &PyGIUnionInfo_Type;
             break;
@@ -192,6 +235,9 @@ _pygi_info_new (GIBaseInfo *info)
         case GI_INFO_TYPE_UNRESOLVED:
             type = &PyGIUnresolvedInfo_Type;
             break;
+        default:
+            g_assert_not_reached();
+            break;
     }
 
     self = (PyGIBaseInfo *) type->tp_alloc (type, 0);
@@ -430,12 +476,8 @@ _pygi_g_type_info_size (GITypeInfo *type_info)
         case GI_TYPE_TAG_DOUBLE:
         case GI_TYPE_TAG_GTYPE:
         case GI_TYPE_TAG_UNICHAR:
-            if (g_type_info_is_pointer (type_info)) {
-                size = sizeof (gpointer);
-            } else {
-                size = _pygi_g_type_tag_size (type_tag);
-                g_assert (size > 0);
-            }
+            size = _pygi_g_type_tag_size (type_tag);
+            g_assert (size > 0);
             break;
         case GI_TYPE_TAG_INTERFACE:
         {
@@ -481,7 +523,6 @@ _pygi_g_type_info_size (GITypeInfo *type_info)
                 case GI_INFO_TYPE_INVALID:
                 case GI_INFO_TYPE_FUNCTION:
                 case GI_INFO_TYPE_CONSTANT:
-                case GI_INFO_TYPE_ERROR_DOMAIN:
                 case GI_INFO_TYPE_VALUE:
                 case GI_INFO_TYPE_SIGNAL:
                 case GI_INFO_TYPE_PROPERTY:
@@ -489,6 +530,7 @@ _pygi_g_type_info_size (GITypeInfo *type_info)
                 case GI_INFO_TYPE_ARG:
                 case GI_INFO_TYPE_TYPE:
                 case GI_INFO_TYPE_UNRESOLVED:
+                default:
                     g_assert_not_reached();
                     break;
             }
@@ -860,7 +902,6 @@ pygi_g_struct_info_is_simple (GIStructInfo *struct_info)
                     case GI_INFO_TYPE_INVALID:
                     case GI_INFO_TYPE_FUNCTION:
                     case GI_INFO_TYPE_CONSTANT:
-                    case GI_INFO_TYPE_ERROR_DOMAIN:
                     case GI_INFO_TYPE_VALUE:
                     case GI_INFO_TYPE_SIGNAL:
                     case GI_INFO_TYPE_PROPERTY:
@@ -868,7 +909,9 @@ pygi_g_struct_info_is_simple (GIStructInfo *struct_info)
                     case GI_INFO_TYPE_ARG:
                     case GI_INFO_TYPE_TYPE:
                     case GI_INFO_TYPE_UNRESOLVED:
+                    default:
                         g_assert_not_reached();
+                        break;
                 }
 
                 g_base_info_unref (info);
@@ -1026,6 +1069,13 @@ _wrap_g_object_info_get_vfuncs (PyGIBaseInfo *self)
     return _get_vfuncs (self, GI_INFO_TYPE_OBJECT);
 }
 
+static PyObject *
+_wrap_g_object_info_get_abstract (PyGIBaseInfo *self)
+{
+    gboolean is_abstract  = g_object_info_get_abstract ( (GIObjectInfo*) self->info);
+    return PyBool_FromLong (is_abstract);
+}
+
 static PyMethodDef _PyGIObjectInfo_methods[] = {
     { "get_parent", (PyCFunction) _wrap_g_object_info_get_parent, METH_NOARGS },
     { "get_methods", (PyCFunction) _wrap_g_object_info_get_methods, METH_NOARGS },
@@ -1033,6 +1083,7 @@ static PyMethodDef _PyGIObjectInfo_methods[] = {
     { "get_interfaces", (PyCFunction) _wrap_g_object_info_get_interfaces, METH_NOARGS },
     { "get_constants", (PyCFunction) _wrap_g_object_info_get_constants, METH_NOARGS },
     { "get_vfuncs", (PyCFunction) _wrap_g_object_info_get_vfuncs, METH_NOARGS },
+    { "get_abstract", (PyCFunction) _wrap_g_object_info_get_abstract, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
@@ -1104,6 +1155,7 @@ _wrap_g_constant_info_get_value (PyGIBaseInfo *self)
     GITypeInfo *type_info;
     GIArgument value;
     PyObject *py_value;
+    gboolean free_array = FALSE;
 
     if (g_constant_info_get_value ( (GIConstantInfo *) self->info, &value) < 0) {
         PyErr_SetString (PyExc_RuntimeError, "unable to get value");
@@ -1112,8 +1164,18 @@ _wrap_g_constant_info_get_value (PyGIBaseInfo *self)
 
     type_info = g_constant_info_get_type ( (GIConstantInfo *) self->info);
 
+    if (g_type_info_get_tag (type_info) == GI_TYPE_TAG_ARRAY) {
+        value.v_pointer = _pygi_argument_to_array (&value, NULL, NULL,
+                                                   type_info, &free_array);
+    }
+
     py_value = _pygi_argument_to_object (&value, type_info, GI_TRANSFER_NOTHING);
+    
+    if (free_array) {
+        g_array_free (value.v_pointer, FALSE);
+    }
 
+    g_constant_info_free_value (self->info, &value);
     g_base_info_unref ( (GIBaseInfo *) type_info);
 
     return py_value;
@@ -1158,6 +1220,7 @@ _wrap_g_field_info_get_value (PyGIBaseInfo *self,
     GITypeInfo *field_type_info;
     GIArgument value;
     PyObject *py_value = NULL;
+    gboolean free_array = FALSE;
 
     memset(&value, 0, sizeof(GIArgument));
 
@@ -1219,7 +1282,7 @@ _wrap_g_field_info_get_value (PyGIBaseInfo *self,
 
                 offset = g_field_info_get_offset ( (GIFieldInfo *) self->info);
 
-                value.v_pointer = pointer + offset;
+                value.v_pointer = (char*) pointer + offset;
 
                 goto argument_to_object;
             }
@@ -1234,18 +1297,15 @@ _wrap_g_field_info_get_value (PyGIBaseInfo *self,
         goto out;
     }
 
-    if ( (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_ARRAY) &&
-            (g_type_info_get_array_type (field_type_info) == GI_ARRAY_TYPE_C)) {
-        value.v_pointer = _pygi_argument_to_array (&value, NULL,
-                                                   field_type_info, FALSE);
+    if (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_ARRAY) {
+        value.v_pointer = _pygi_argument_to_array (&value, NULL, NULL,
+                                                   field_type_info, &free_array);
     }
 
 argument_to_object:
     py_value = _pygi_argument_to_object (&value, field_type_info, GI_TRANSFER_NOTHING);
 
-    if ( (value.v_pointer != NULL) &&
-            (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_ARRAY) &&
-               (g_type_info_get_array_type (field_type_info) == GI_ARRAY_TYPE_C)) {
+    if (free_array) {
         g_array_free (value.v_pointer, FALSE);
     }
 
@@ -1358,7 +1418,7 @@ _wrap_g_field_info_set_value (PyGIBaseInfo *self,
                 size = g_struct_info_get_size ( (GIStructInfo *) info);
                 g_assert (size > 0);
 
-                g_memmove (pointer + offset, value.v_pointer, size);
+                g_memmove ((char*) pointer + offset, value.v_pointer, size);
 
                 g_base_info_unref (info);
 
@@ -1371,6 +1431,39 @@ _wrap_g_field_info_set_value (PyGIBaseInfo *self,
         }
 
         g_base_info_unref (info);
+    } else if (g_type_info_is_pointer (field_type_info)
+            && g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_VOID) {
+        int offset;
+
+        if (py_value != Py_None && !PYGLIB_PyLong_Check(py_value)) {
+            if (PyErr_WarnEx(PyExc_RuntimeWarning,
+                         "Usage of gpointers to store objects has been deprecated. "
+                         "Please integer values instead, see: https://bugzilla.gnome.org/show_bug.cgi?id=683599",
+                         1))
+                goto out;
+        }
+
+        offset = g_field_info_get_offset ((GIFieldInfo *) self->info);
+        value = _pygi_argument_from_object (py_value, field_type_info, GI_TRANSFER_NOTHING);
+
+        /* Decrement the previous python object stashed on the void pointer.
+         * This seems somewhat dangerous as the code is blindly assuming any
+         * void pointer field stores a python object pointer and then decrefs it.
+         * This is essentially the same as something like:
+         *  Py_XDECREF(struct->void_ptr); */
+        Py_XDECREF(G_STRUCT_MEMBER (gpointer, pointer, offset));
+
+        /* Assign and increment the newly assigned object. At this point the value
+         * arg will hold a pointer the python object "py_value" or NULL.
+         * This is essentially:
+         *  struct->void_ptr = value.v_pointer;
+         *  Py_XINCREF(struct->void_ptr);
+         */
+        G_STRUCT_MEMBER (gpointer, pointer, offset) = (gpointer)value.v_pointer;
+        Py_XINCREF(G_STRUCT_MEMBER (gpointer, pointer, offset));
+
+        retval = Py_None;
+        goto out;
     }
 
     value = _pygi_argument_from_object (py_value, field_type_info, GI_TRANSFER_EVERYTHING);
diff --git a/gi/pygi-invoke-state-struct.h b/gi/pygi-invoke-state-struct.h
new file mode 100644 (file)
index 0000000..f5a3d3e
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef __PYGI_INVOKE_STATE_STRUCT_H__
+#define __PYGI_INVOKE_STATE_STRUCT_H__
+
+#include <Python.h>
+
+#include <girepository.h>
+
+G_BEGIN_DECLS
+
+typedef struct _PyGIInvokeState
+{
+    PyObject *py_in_args;
+    gssize n_py_in_args;
+    gssize current_arg;
+
+    GType implementor_gtype;
+
+    GIArgument **args;
+    GIArgument *in_args;
+
+    /* Out args and out values
+     * In order to pass a parameter and get something back out in C
+     * we need to pass a pointer to the value, e.g.
+     *    int *out_integer;
+     *
+     * so while out_args == out_integer, out_value == *out_integer
+     * or in other words out_args = &out_values
+     *
+     * We do all of our processing on out_values but we pass out_args to 
+     * the actual function.
+     */
+    GIArgument *out_args;
+    GIArgument *out_values;
+
+    GIArgument return_arg;
+
+    GError *error;
+
+    gboolean failed;
+
+    gpointer user_data;
+} PyGIInvokeState;
+
+G_END_DECLS
+
+#endif
index f9e09bb..cabdab9 100644 (file)
@@ -2,6 +2,7 @@
  * vim: tabstop=4 shiftwidth=4 expandtab
  *
  * Copyright (C) 2005-2009 Johan Dahlin <johan@gnome.org>
+ * Copyright (C) 2011 John (J5) Palimier <johnp@redhat.com>
  *
  *   pygi-invoke.c: main invocation function
  *
 
 #include <pyglib.h>
 #include "pygi-invoke.h"
+#include "pygi-marshal-cleanup.h"
 
-struct invocation_state
+static inline gboolean
+_invoke_callable (PyGIInvokeState *state,
+                  PyGICallableCache *cache,
+                  GICallableInfo *callable_info,
+                  GCallback function_ptr)
 {
-    gboolean is_method;
-    gboolean is_constructor;
-
-    gsize n_args;
-    gsize n_in_args;
-    gsize n_out_args;
-    gsize n_backup_args;
-    Py_ssize_t n_py_args;
-    gsize n_aux_in_args;
-    gsize n_aux_out_args;
-    gsize n_return_values;
-
-    guint8 callback_index;
-    guint8 user_data_index;
-    guint8 destroy_notify_index;
-    PyGICClosure *closure;
-
-    glong error_arg_pos;
-
-    GIArgInfo **arg_infos;
-    GITypeInfo **arg_type_infos;
-    GITypeInfo *return_type_info;
-    GITypeTag return_type_tag;
-
-    GIArgument **args;
-    gboolean *args_is_auxiliary;
-
-    GIArgument *in_args;
-    GIArgument *out_args;
-    GIArgument *out_values;
-    GIArgument *backup_args;
-    GIArgument return_arg;
-
-    PyObject  *return_value;
-
-    GType      implementor_gtype;
-
-    /* hack to avoid treating C arrays as GArrays during free
-     * due to overly complicated array handling
-     * this will be removed when the new invoke branch is merged
-     */
-    gboolean c_arrays_are_wrapped;
-};
+    GError *error;
+    gint retval;
 
-static gboolean
-_initialize_invocation_state (struct invocation_state *state,
-                              GIFunctionInfo *info,
-                              PyObject *py_args,
-                              PyObject *kwargs)
-{
-    if (g_base_info_get_type (info) == GI_INFO_TYPE_FUNCTION) {
-        GIFunctionInfoFlags flags = g_function_info_get_flags (info);
+    error = NULL;
 
-        state->is_method = (flags & GI_FUNCTION_IS_METHOD) != 0;
-        state->is_constructor = (flags & GI_FUNCTION_IS_CONSTRUCTOR) != 0;
-        state->implementor_gtype = 0;
-    } else {
-        PyObject *obj;
+    pyg_begin_allow_threads;
 
-        state->is_method = TRUE;
-        state->is_constructor = FALSE;
+    /* FIXME: use this for now but we can streamline the calls */
+    if (cache->function_type == PYGI_FUNCTION_TYPE_VFUNC)
+        retval = g_vfunc_info_invoke ( callable_info,
+                                       state->implementor_gtype,
+                                       state->in_args,
+                                       cache->n_from_py_args,
+                                       state->out_args,
+                                       cache->n_to_py_args,
+                                      &state->return_arg,
+                                      &error);
+    else if (g_base_info_get_type (callable_info) == GI_INFO_TYPE_CALLBACK)
+        retval = g_callable_info_invoke (callable_info,
+                                         function_ptr,
+                                         state->in_args,
+                                         cache->n_from_py_args,
+                                         state->out_args,
+                                         cache->n_to_py_args,
+                                         &state->return_arg,
+                                         FALSE,
+                                         FALSE,
+                                         &error);
+    else
+        retval = g_function_info_invoke ( callable_info,
+                                          state->in_args,
+                                          cache->n_from_py_args,
+                                          state->out_args,
+                                          cache->n_to_py_args,
+                                         &state->return_arg,
+                                         &error);
+    pyg_end_allow_threads;
 
-        obj = PyDict_GetItemString (kwargs, "gtype");
-        if (obj == NULL) {
-            PyErr_SetString (PyExc_TypeError,
-                             "need the GType of the implementor class");
-            return FALSE;
-        }
+    if (!retval) {
+        g_assert (error != NULL);
+        pyglib_error_check (&error);
 
-        state->implementor_gtype = pyg_type_from_object (obj);
-        if (state->implementor_gtype == 0)
-            return FALSE;
+        /* It is unclear if the error occured before or after the C
+         * function was invoked so for now assume success
+         * We eventually should marshal directly to FFI so we no longer
+         * have to use the reference implementation
+         */
+        pygi_marshal_cleanup_args_from_py_marshal_success (state, cache);
+
+        return FALSE;
     }
 
-    /* Count arguments. */
-    state->n_args = g_callable_info_get_n_args ( (GICallableInfo *) info);
-    state->n_in_args = 0;
-    state->n_out_args = 0;
-    state->n_backup_args = 0;
-    state->n_aux_in_args = 0;
-    state->n_aux_out_args = 0;
-
-    /* Check the argument count. */
-    state->n_py_args = PyTuple_Size (py_args);
-    g_assert (state->n_py_args >= 0);
-
-    state->error_arg_pos = -1;
-
-    state->arg_infos = g_slice_alloc0 (sizeof (gpointer) * state->n_args);
-    state->arg_type_infos = g_slice_alloc0 (sizeof (gpointer) * state->n_args);
-    state->args_is_auxiliary = g_slice_alloc0 (sizeof (gboolean) * state->n_args);
-
-    state->return_value = NULL;
-    state->closure = NULL;
-    state->return_type_info = NULL;
-    state->args = NULL;
-    state->in_args = NULL;
-    state->out_args = NULL;
-    state->out_values = NULL;
-    state->backup_args = NULL;
-
-    /* HACK: this gets marked FALSE whenever a C array in the args is
-     *       not wrapped by a GArray
-     */
-    state->c_arrays_are_wrapped = TRUE;
+    if (state->error != NULL) {
+        if (pyglib_error_check (&(state->error))) {
+            /* even though we errored out, the call itself was successful,
+               so we assume the call processed all of the parameters */
+            pygi_marshal_cleanup_args_from_py_marshal_success (state, cache);
+            return FALSE;
+        }
+    }
 
     return TRUE;
 }
 
 static gboolean
-_prepare_invocation_state (struct invocation_state *state,
-                           GIFunctionInfo *function_info, PyObject *py_args)
+_check_for_unexpected_kwargs (const gchar *function_name,
+                              GHashTable  *arg_name_hash,
+                              PyObject    *py_kwargs)
 {
-    gsize i;
-
-    if (!_pygi_scan_for_callbacks (function_info,
-                                   state->is_method,
-                                   &state->callback_index, &state->user_data_index,
-                                   &state->destroy_notify_index))
-        return FALSE;
-
-    if (state->callback_index != G_MAXUINT8) {
+    PyObject *dict_key, *dict_value;
+    Py_ssize_t dict_iter_pos = 0;
+
+    while (PyDict_Next (py_kwargs, &dict_iter_pos, &dict_key, &dict_value)) {
+        PyObject *key;
+
+#if PY_VERSION_HEX < 0x03000000
+        if (PyString_Check (dict_key)) {
+            Py_INCREF (dict_key);
+            key = dict_key;
+        } else
+#endif
+        {
+            key = PyUnicode_AsUTF8String (dict_key);
+            if (key == NULL) {
+                return FALSE;
+            }
+        }
 
-        if (!_pygi_create_callback (function_info,
-                                    state->is_method,
-                                    state->is_constructor,
-                                    state->n_args, state->n_py_args,
-                                    py_args, state->callback_index,
-                                    state->user_data_index,
-                                    state->destroy_notify_index, &state->closure))
+        if (g_hash_table_lookup (arg_name_hash, PyBytes_AsString(key)) == NULL) {
+            PyErr_Format (PyExc_TypeError,
+                          "%.200s() got an unexpected keyword argument '%.400s'",
+                          function_name,
+                          PyBytes_AsString (key));
+            Py_DECREF (key);
             return FALSE;
-
-        state->args_is_auxiliary[state->callback_index] = FALSE;
-        if (state->destroy_notify_index != G_MAXUINT8) {
-            state->args_is_auxiliary[state->destroy_notify_index] = TRUE;
-            state->n_aux_in_args += 1;
         }
-    }
 
-    if (state->is_method) {
-        /* The first argument is the instance. */
-        state->n_in_args += 1;
+        Py_DECREF (key);
     }
+    return TRUE;
+}
 
-    /* We do a first (well, second) pass here over the function to scan for special cases.
-     * This is currently array+length combinations, GError and GValue.
-     */
-    for (i = 0; i < state->n_args; i++) {
-        GIDirection direction;
-        GITransfer transfer;
-        GITypeTag arg_type_tag;
-
-        state->arg_infos[i] = g_callable_info_get_arg ( (GICallableInfo *) function_info,
-                                                        i);
-
-        state->arg_type_infos[i] = g_arg_info_get_type (state->arg_infos[i]);
-
-        direction = g_arg_info_get_direction (state->arg_infos[i]);
-        transfer = g_arg_info_get_ownership_transfer (state->arg_infos[i]);
-        arg_type_tag = g_type_info_get_tag (state->arg_type_infos[i]);
-
-        if (direction == GI_DIRECTION_IN || direction == GI_DIRECTION_INOUT) {
-            state->n_in_args += 1;
-        }
-        if (direction == GI_DIRECTION_INOUT) {
-            state->n_backup_args += 1;
-        }
-        if (direction == GI_DIRECTION_OUT || direction == GI_DIRECTION_INOUT) {
-            state->n_out_args += 1;
-        }
-
-        switch (arg_type_tag) {
-            case GI_TYPE_TAG_ARRAY:
-            {
-                gint length_arg_pos;
-
-                length_arg_pos = g_type_info_get_array_length (state->arg_type_infos[i]);
-
-                if (length_arg_pos < 0) {
-                    break;
-                }
-
-                /* For array lengths, we're going to delete the length argument;
-                 * so remove the extra backup we just added above */
-                if (direction == GI_DIRECTION_INOUT) {
-                    state->n_backup_args -= 1;
-                }
-
-                g_assert (length_arg_pos < state->n_args);
-                state->args_is_auxiliary[length_arg_pos] = TRUE;
-
-                if (direction == GI_DIRECTION_IN || direction == GI_DIRECTION_INOUT) {
-                    state->n_aux_in_args += 1;
-                }
-                if (direction == GI_DIRECTION_OUT || direction == GI_DIRECTION_INOUT) {
-                    state->n_aux_out_args += 1;
-                }
-
-                break;
-            }
-            case GI_TYPE_TAG_ERROR:
-                g_warn_if_fail (state->error_arg_pos < 0);
-                state->error_arg_pos = i;
-                break;
-            default:
-                break;
-        }
+/**
+ * _py_args_combine_and_check_length:
+ * @function_name: the name of the function being called. Used for error messages.
+ * @arg_name_list: a list of the string names for each argument. The length
+ *                 of this list is the number of required arguments for the
+ *                 function. If an argument has no name, NULL is put in its
+ *                 position in the list.
+ * @py_args: the tuple of positional arguments. A referece is stolen, and this
+             tuple will be either decreffed or returned as is.
+ * @py_kwargs: the dict of keyword arguments to be merged with py_args.
+ *             A reference is borrowed.
+ *
+ * Returns: The py_args and py_kwargs combined into one tuple.
+ */
+static PyObject *
+_py_args_combine_and_check_length (const gchar *function_name,
+                                   GSList      *arg_name_list,
+                                   GHashTable  *arg_name_hash,
+                                   PyObject    *py_args,
+                                   PyObject    *py_kwargs)
+{
+    PyObject *combined_py_args = NULL;
+    Py_ssize_t n_py_args, n_py_kwargs, i;
+    guint n_expected_args;
+    GSList *l;
+
+    n_py_args = PyTuple_GET_SIZE (py_args);
+    if (py_kwargs == NULL)
+        n_py_kwargs = 0;
+    else
+        n_py_kwargs = PyDict_Size (py_kwargs);
+
+    n_expected_args = g_slist_length (arg_name_list);
+    if (n_py_kwargs == 0 && n_py_args == n_expected_args) {
+        return py_args;
     }
 
-    state->return_type_info = g_callable_info_get_return_type ( (GICallableInfo *) function_info);
-    state->return_type_tag = g_type_info_get_tag (state->return_type_info);
+    if (n_expected_args < n_py_args) {
+        PyErr_Format (PyExc_TypeError,
+                      "%.200s() takes exactly %d %sargument%s (%zd given)",
+                      function_name,
+                      n_expected_args,
+                      n_py_kwargs > 0 ? "non-keyword " : "",
+                      n_expected_args == 1 ? "" : "s",
+                      n_py_args);
 
-    if (state->return_type_tag == GI_TYPE_TAG_ARRAY) {
-        gint length_arg_pos;
-        length_arg_pos = g_type_info_get_array_length (state->return_type_info);
-
-        if (length_arg_pos >= 0) {
-            g_assert (length_arg_pos < state->n_args);
-            state->args_is_auxiliary[length_arg_pos] = TRUE;
-            state->n_aux_out_args += 1;
-        }
+        Py_DECREF (py_args);
+        return NULL;
     }
 
-    state->n_return_values = state->n_out_args - state->n_aux_out_args;
-    if (state->return_type_tag != GI_TYPE_TAG_VOID) {
-        state->n_return_values += 1;
+    if (n_py_kwargs > 0 && !_check_for_unexpected_kwargs (function_name,
+                                                          arg_name_hash,
+                                                          py_kwargs)) {
+        Py_DECREF (py_args);
+        return NULL;
     }
 
-    {
-        gsize n_py_args_expected;
-        Py_ssize_t py_args_pos;
+    /* will hold arguments from both py_args and py_kwargs
+     * when they are combined into a single tuple */
+    combined_py_args = PyTuple_New (n_expected_args);
 
-        n_py_args_expected = state->n_in_args
-                             + (state->is_constructor ? 1 : 0)
-                             - state->n_aux_in_args
-                             - (state->error_arg_pos >= 0 ? 1 : 0);
-
-        if (state->n_py_args != n_py_args_expected) {
-            PyErr_Format (PyExc_TypeError,
-                          "%s() takes exactly %zd argument(s) (%zd given)",
-                          g_base_info_get_name ( (GIBaseInfo *) function_info),
-                          n_py_args_expected, state->n_py_args);
-            return FALSE;
-        }
-
-        /* Check argument typestate-> */
-        py_args_pos = 0;
-        if (state->is_constructor || state->is_method) {
-            py_args_pos += 1;
-        }
+    for (i = 0; i < n_py_args; i++) {
+        PyObject *item = PyTuple_GET_ITEM (py_args, i);
+        Py_INCREF (item);
+        PyTuple_SET_ITEM (combined_py_args, i, item);
+    }
 
-        for (i = 0; i < state->n_args; i++) {
-            GIDirection direction;
-            GITypeTag type_tag;
-            PyObject *py_arg;
-            gint retval;
-            gboolean allow_none;
+    Py_CLEAR(py_args);
 
-            direction = g_arg_info_get_direction (state->arg_infos[i]);
-            type_tag = g_type_info_get_tag (state->arg_type_infos[i]);
+    for (i = 0, l = arg_name_list; i < n_expected_args && l; i++, l = l->next) {
+        PyObject *py_arg_item, *kw_arg_item = NULL;
+        const gchar *arg_name = l->data;
 
-            if (direction == GI_DIRECTION_OUT
-                    || state->args_is_auxiliary[i]
-                    || type_tag == GI_TYPE_TAG_ERROR) {
-                continue;
-            }
+        if (n_py_kwargs > 0 && arg_name != NULL) {
+            /* NULL means this argument has no keyword name */
+            /* ex. the first argument to a method or constructor */
+            kw_arg_item = PyDict_GetItemString (py_kwargs, arg_name);
+        }
+        py_arg_item = PyTuple_GET_ITEM (combined_py_args, i);
 
-            g_assert (py_args_pos < state->n_py_args);
-            py_arg = PyTuple_GET_ITEM (py_args, py_args_pos);
+        if (kw_arg_item != NULL && py_arg_item == NULL) {
+            Py_INCREF (kw_arg_item);
+            PyTuple_SET_ITEM (combined_py_args, i, kw_arg_item);
 
-            allow_none = g_arg_info_may_be_null (state->arg_infos[i]);
+        } else if (kw_arg_item == NULL && py_arg_item == NULL) {
+            PyErr_Format (PyExc_TypeError,
+                          "%.200s() takes exactly %d %sargument%s (%zd given)",
+                          function_name,
+                          n_expected_args,
+                          n_py_kwargs > 0 ? "non-keyword " : "",
+                          n_expected_args == 1 ? "" : "s",
+                          n_py_args);
 
-            retval = _pygi_g_type_info_check_object (state->arg_type_infos[i],
-                                                     py_arg,
-                                                     allow_none);
+            Py_DECREF (combined_py_args);
+            return NULL;
 
-            if (retval < 0) {
-                return FALSE;
-            } else if (!retval) {
-                _PyGI_ERROR_PREFIX ("argument %zd: ", py_args_pos);
-                return FALSE;
-            }
+        } else if (kw_arg_item != NULL && py_arg_item != NULL) {
+            PyErr_Format (PyExc_TypeError,
+                          "%.200s() got multiple values for keyword argument '%.200s'",
+                          function_name,
+                          arg_name);
 
-            py_args_pos += 1;
+            Py_DECREF (combined_py_args);
+            return NULL;
         }
-
-        g_assert (py_args_pos == state->n_py_args);
     }
 
-    state->args = g_slice_alloc0 (sizeof (gpointer) * state->n_args);
-    state->in_args = g_slice_alloc0 (sizeof (GIArgument) * state->n_in_args);
-    state->out_args = g_slice_alloc0 (sizeof (GIArgument) * state->n_out_args);
-    state->out_values = g_slice_alloc0 (sizeof (GIArgument) * state->n_out_args);
-    state->backup_args = g_slice_alloc0 (sizeof (GIArgument) * state->n_backup_args);
-
-    /* Bind args so we can use an unique index. */
-    {
-        gsize in_args_pos;
-        gsize out_args_pos;
-
-        in_args_pos = state->is_method ? 1 : 0;
-        out_args_pos = 0;
-
-        for (i = 0; i < state->n_args; i++) {
-            GIDirection direction;
-            GIBaseInfo *info;
-            gboolean is_caller_allocates;
-
-            direction = g_arg_info_get_direction (state->arg_infos[i]);
-            is_caller_allocates = g_arg_info_is_caller_allocates (state->arg_infos[i]);
-
-            switch (direction) {
-                case GI_DIRECTION_IN:
-                    g_assert (in_args_pos < state->n_in_args);
-                    state->args[i] = &state->in_args[in_args_pos];
-                    in_args_pos += 1;
-                    break;
-                case GI_DIRECTION_INOUT:
-                    g_assert (in_args_pos < state->n_in_args);
-                    g_assert (out_args_pos < state->n_out_args);
-
-                    state->in_args[in_args_pos].v_pointer = &state->out_values[out_args_pos];
-                    in_args_pos += 1;
-                case GI_DIRECTION_OUT:
-                    g_assert (out_args_pos < state->n_out_args);
-
-                    /* caller allocates only applies to structures but GI has
-                     * no way to denote that yet, so we only use caller allocates
-                     * if we see  a structure
-                     */
-                    if (is_caller_allocates) {
-                        GITypeTag type_tag;
-
-                        is_caller_allocates = FALSE;
-                        type_tag = g_type_info_get_tag (state->arg_type_infos[i]);
-
-                        if (type_tag  == GI_TYPE_TAG_INTERFACE) {
-                            GIInfoType info_type;
+    return combined_py_args;
+}
 
-                            info = g_type_info_get_interface (state->arg_type_infos[i]);
-                            g_assert (info != NULL);
-                            info_type = g_base_info_get_type (info);
+static inline gboolean
+_invoke_state_init_from_callable_cache (PyGIInvokeState *state,
+                                        PyGICallableCache *cache,
+                                        PyObject *py_args,
+                                        PyObject *kwargs)
+{
+    state->implementor_gtype = 0;
 
-                            if (info_type == GI_INFO_TYPE_STRUCT)
-                                is_caller_allocates = TRUE;
-                        }
-                    }
+    /* TODO: We don't use the class parameter sent in by  the structure
+     * so we remove it from the py_args tuple but we can keep it 
+     * around if we want to call actual gobject constructors
+     * in the future instead of calling g_object_new
+     */
+    if (cache->function_type == PYGI_FUNCTION_TYPE_CONSTRUCTOR) {
+        PyObject *constructor_class;
+        constructor_class = PyTuple_GetItem (py_args, 0);
 
-                    if (is_caller_allocates) {
-                        /* if caller allocates only use one level of indirection */
-                        state->out_args[out_args_pos].v_pointer = NULL;
-                        state->args[i] = &state->out_args[out_args_pos];
-                        if (g_struct_info_is_foreign((GIStructInfo *) info) ) {
-                            PyObject *foreign_struct =
-                                pygi_struct_foreign_convert_from_g_argument(info, NULL);
-
-                            pygi_struct_foreign_convert_to_g_argument(
-                                foreign_struct,
-                                info,
-                                GI_TRANSFER_EVERYTHING,
-                                state->args[i]);
-
-                            Py_DECREF(foreign_struct);
-                        } else if (g_type_is_a (g_registered_type_info_get_g_type (info), G_TYPE_BOXED)) {
-                            state->args[i]->v_pointer = _pygi_boxed_alloc (info, NULL);
-                        } else {
-                            gssize size = g_struct_info_get_size ( (GIStructInfo *) info);
-                            state->args[i]->v_pointer = g_malloc0 (size);
-                        }
-                    } else {
-                        state->out_args[out_args_pos].v_pointer = &state->out_values[out_args_pos];
-                        state->out_values[out_args_pos].v_pointer = NULL;
-                        state->args[i] = &state->out_values[out_args_pos];
-                    }
+        if (constructor_class == NULL) {
+            PyErr_Clear ();
+            PyErr_Format (PyExc_TypeError,
+                          "Constructors require the class to be passed in as an argument, "
+                          "No arguments passed to the %s constructor.",
+                          cache->name);
 
-                    out_args_pos += 1;
-            }
+            return FALSE;
         }
-
-        g_assert (in_args_pos == state->n_in_args);
-        g_assert (out_args_pos == state->n_out_args);
-    }
-
-    /* Convert the input arguments. */
-    {
-        Py_ssize_t py_args_pos;
-        gsize backup_args_pos;
-
-        py_args_pos = 0;
-        backup_args_pos = 0;
-
-        if (state->is_constructor) {
-            /* Skip the first argument. */
-            py_args_pos += 1;
-        } else if (state->is_method) {
-            /* Get the instance. */
-            GIBaseInfo *container_info;
-            GIInfoType container_info_type;
-            PyObject *py_arg;
-            gint check_val;
-
-            container_info = g_base_info_get_container (function_info);
-            container_info_type = g_base_info_get_type (container_info);
-
-            g_assert (py_args_pos < state->n_py_args);
-            py_arg = PyTuple_GET_ITEM (py_args, py_args_pos);
-
-            /* In python 2 python takes care of checking the type
-             * of the self instance.  In python 3 it does not
-             * so we have to check it here
-             */
-            check_val = _pygi_g_type_interface_check_object(container_info,
-                                                            py_arg);
-            if (check_val < 0) {
-                return FALSE;
-            } else if (!check_val) {
-                _PyGI_ERROR_PREFIX ("instance: ");
-                return FALSE;
-            }
-
-            switch (container_info_type) {
-                case GI_INFO_TYPE_UNION:
-                case GI_INFO_TYPE_STRUCT:
-                {
-                    GType type;
-
-                    type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *) container_info);
-
-                    if (g_type_is_a (type, G_TYPE_BOXED)) {
-                        g_assert (state->n_in_args > 0);
-                        state->in_args[0].v_pointer = pyg_boxed_get (py_arg, void);
-                    } else if (g_struct_info_is_foreign (container_info)) {
-                        PyObject *result;
-                        result = pygi_struct_foreign_convert_to_g_argument (
-                                     py_arg, container_info,
-                                     GI_TRANSFER_NOTHING,
-                                     &state->in_args[0]);
-                    } else if (g_type_is_a (type, G_TYPE_POINTER) || type == G_TYPE_NONE) {
-                        g_assert (state->n_in_args > 0);
-                        state->in_args[0].v_pointer = pyg_pointer_get (py_arg, void);
-                    } else {
-                        PyErr_Format (PyExc_TypeError, "unable to convert an instance of '%s'", g_type_name (type));
-                        return FALSE;
-                    }
-
-                    break;
-                }
-                case GI_INFO_TYPE_OBJECT:
-                case GI_INFO_TYPE_INTERFACE:
-                    g_assert (state->n_in_args > 0);
-                    state->in_args[0].v_pointer = pygobject_get (py_arg);
-                    break;
-                default:
-                    /* Other types don't have methods. */
-                    g_assert_not_reached();
-            }
-
-            py_args_pos += 1;
+    } else if (cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) {
+        PyObject *py_gtype;
+        py_gtype = PyTuple_GetItem (py_args, 0);
+        if (py_gtype == NULL) {
+            PyErr_SetString (PyExc_TypeError,
+                             "need the GType of the implementor class");
+            return FALSE;
         }
 
-        for (i = 0; i < state->n_args; i++) {
-            GIDirection direction;
-
-            if (i == state->callback_index) {
-                if (state->closure)
-                    state->args[i]->v_pointer = state->closure->closure;
-                else
-                    /* Some callbacks params accept NULL */
-                    state->args[i]->v_pointer = NULL;
-                py_args_pos++;
-                continue;
-            } else if (i == state->user_data_index) {
-                state->args[i]->v_pointer = state->closure;
-                py_args_pos++;
-                continue;
-            } else if (i == state->destroy_notify_index) {
-                if (state->closure) {
-                    /* No need to clean up if the callback is NULL */
-                    PyGICClosure *destroy_notify = _pygi_destroy_notify_create();
-                    state->args[i]->v_pointer = destroy_notify->closure;
-                }
-                continue;
-            }
-
-            if (state->args_is_auxiliary[i]) {
-                continue;
-            }
-
-            direction = g_arg_info_get_direction (state->arg_infos[i]);
-
-            if (direction == GI_DIRECTION_IN || direction == GI_DIRECTION_INOUT) {
-                PyObject *py_arg;
-                GITypeTag arg_type_tag;
-                GITransfer transfer;
+        state->implementor_gtype = pyg_type_from_object (py_gtype);
 
-                arg_type_tag = g_type_info_get_tag (state->arg_type_infos[i]);
-
-                if (arg_type_tag == GI_TYPE_TAG_ERROR) {
-                    GError **error;
-
-                    error = g_slice_new (GError *);
-                    *error = NULL;
-
-                    state->args[i]->v_pointer = error;
-                    continue;
-                }
-
-                transfer = g_arg_info_get_ownership_transfer (state->arg_infos[i]);
-
-                g_assert (py_args_pos < state->n_py_args);
-                py_arg = PyTuple_GET_ITEM (py_args, py_args_pos);
-
-                *state->args[i] = _pygi_argument_from_object (py_arg, state->arg_type_infos[i], transfer);
-
-                if (PyErr_Occurred()) {
-                    /* TODO: release previous input arguments. */
-                    return FALSE;
-                }
+        if (state->implementor_gtype == 0)
+            return FALSE;
+    }
 
-                if (direction == GI_DIRECTION_INOUT) {
-                    /* We need to keep a copy of the argument to be able to release it later. */
-                    g_assert (backup_args_pos < state->n_backup_args);
-                    state->backup_args[backup_args_pos] = *state->args[i];
-                    backup_args_pos += 1;
-                }
+    if  (cache->function_type == PYGI_FUNCTION_TYPE_CONSTRUCTOR ||
+            cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) {
 
-                if (arg_type_tag == GI_TYPE_TAG_ARRAY) {
-                    GArray *array;
-                    gssize length_arg_pos;
+        /* we could optimize this by using offsets instead of modifying the tuple but it makes the
+         * code more error prone and confusing so don't do that unless profiling shows
+         * significant gain
+         */
+        state->py_in_args = PyTuple_GetSlice (py_args, 1, PyTuple_Size (py_args));
+    } else {
+        state->py_in_args = py_args;
+        Py_INCREF (state->py_in_args);
+    }
 
-                    array = state->args[i]->v_pointer;
+    state->py_in_args = _py_args_combine_and_check_length (cache->name,
+                                                           cache->arg_name_list,
+                                                           cache->arg_name_hash,
+                                                           state->py_in_args,
+                                                           kwargs);
 
-                    length_arg_pos = g_type_info_get_array_length (state->arg_type_infos[i]);
-                    if (length_arg_pos >= 0) {
-                        int len = 0;
-                        /* Set the auxiliary argument holding the length. */
-                        if (array)
-                            len = array->len;
+    if (state->py_in_args == NULL) {
+        return FALSE;
+    }
+    state->n_py_in_args = PyTuple_Size (state->py_in_args);
 
-                        state->args[length_arg_pos]->v_size = len;
-                    }
+    state->args = g_slice_alloc0 (cache->n_args * sizeof (GIArgument *));
+    if (state->args == NULL && cache->n_args != 0) {
+        PyErr_NoMemory();
+        return FALSE;
+    }
 
-                    /* Get rid of the GArray. */
-                    if ( (array != NULL) &&
-                            (g_type_info_get_array_type (state->arg_type_infos[i]) == GI_ARRAY_TYPE_C)) {
-                        state->args[i]->v_pointer = array->data;
-
-                        /* HACK: We have unwrapped a C array so
-                         *       set the state to reflect this.
-                         *       If there is an error between now
-                         *       and when we rewrap the array
-                         *       we will leak C arrays due to
-                         *       being in an inconsitant state.
-                         *       e.g. for interfaces with more
-                         *       than one C array argument, an
-                         *       error may occure when not all
-                         *       C arrays have been rewrapped.
-                         *       This will be removed once the invoke
-                         *       rewrite branch is merged.
-                         */
-                        state->c_arrays_are_wrapped = FALSE;
-                        if (direction != GI_DIRECTION_INOUT || transfer != GI_TRANSFER_NOTHING) {
-                            /* The array hasn't been referenced anywhere, so free it to avoid losing memory. */
-                            g_array_free (array, FALSE);
-                        }
-                    }
-                }
+    state->in_args = g_slice_alloc0 (cache->n_from_py_args * sizeof(GIArgument));
+    if (state->in_args == NULL && cache->n_from_py_args != 0) {
+        PyErr_NoMemory ();
+        return FALSE;
+    }
 
-                py_args_pos += 1;
-            }
-        }
+    state->out_values = g_slice_alloc0 (cache->n_to_py_args * sizeof(GIArgument));
+    if (state->out_values == NULL && cache->n_to_py_args != 0) {
+        PyErr_NoMemory ();
+        return FALSE;
+    }
 
-        g_assert (py_args_pos == state->n_py_args);
-        g_assert (backup_args_pos == state->n_backup_args);
+    state->out_args = g_slice_alloc0 (cache->n_to_py_args * sizeof(GIArgument));
+    if (state->out_args == NULL && cache->n_to_py_args != 0) {
+        PyErr_NoMemory ();
+        return FALSE;
     }
 
+    state->error = NULL;
+
     return TRUE;
 }
 
-static gboolean
-_invoke_function (struct invocation_state *state,
-                  GICallableInfo *callable_info, PyObject *py_args)
+static inline void
+_invoke_state_clear (PyGIInvokeState *state, PyGICallableCache *cache)
 {
-    GError *error;
-    gint retval;
+    g_slice_free1 (cache->n_args * sizeof(GIArgument *), state->args);
+    g_slice_free1 (cache->n_from_py_args * sizeof(GIArgument), state->in_args);
+    g_slice_free1 (cache->n_to_py_args * sizeof(GIArgument), state->out_args);
+    g_slice_free1 (cache->n_to_py_args * sizeof(GIArgument), state->out_values);
 
-    error = NULL;
+    Py_XDECREF (state->py_in_args);
+}
 
-    pyg_begin_allow_threads;
-    if (g_base_info_get_type (callable_info) == GI_INFO_TYPE_FUNCTION) {
-        retval = g_function_info_invoke ( (GIFunctionInfo *) callable_info,
-                                          state->in_args,
-                                          state->n_in_args,
-                                          state->out_args,
-                                          state->n_out_args,
-                                          &state->return_arg,
-                                          &error);
+static gboolean _caller_alloc (PyGIInvokeState *state,
+                               PyGIArgCache *arg_cache,
+                               gssize arg_count,
+                               gssize out_count)
+{
+    PyGIInterfaceCache *iface_cache;
+
+    g_assert (arg_cache->type_tag == GI_TYPE_TAG_INTERFACE);
+
+    iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+    state->out_args[out_count].v_pointer = NULL;
+    state->args[arg_count] = &state->out_args[out_count];
+    if (iface_cache->g_type == G_TYPE_BOXED) {
+        state->args[arg_count]->v_pointer =
+            _pygi_boxed_alloc (iface_cache->interface_info, NULL);
+    } else if (iface_cache->g_type == G_TYPE_VALUE) {
+        state->args[arg_count]->v_pointer = g_slice_new0 (GValue);
+    } else if (iface_cache->is_foreign) {
+        PyObject *foreign_struct =
+            pygi_struct_foreign_convert_from_g_argument (
+                iface_cache->interface_info,
+                NULL);
+
+            pygi_struct_foreign_convert_to_g_argument (foreign_struct,
+                                                       iface_cache->interface_info,
+                                                       GI_TRANSFER_EVERYTHING,
+                                                       state->args[arg_count]);
     } else {
-        retval = g_vfunc_info_invoke ( (GIVFuncInfo *) callable_info,
-                                       state->implementor_gtype,
-                                       state->in_args,
-                                       state->n_in_args,
-                                       state->out_args,
-                                       state->n_out_args,
-                                       &state->return_arg,
-                                       &error);
+            gssize size = g_struct_info_get_size(
+                (GIStructInfo *)iface_cache->interface_info);
+            state->args[arg_count]->v_pointer = g_malloc0 (size);
     }
-    pyg_end_allow_threads;
-
-    if (!retval) {
-        pyglib_error_check(&error);
-
-        /* TODO: release input arguments. */
 
+    if (state->args[arg_count]->v_pointer == NULL)
         return FALSE;
-    }
-
-    if (state->error_arg_pos >= 0) {
-        GError **error;
-
-        error = state->args[state->error_arg_pos]->v_pointer;
 
-        if (pyglib_error_check(error)) {
-            /* TODO: release input arguments. */
-
-            return FALSE;
-        }
-    }
 
     return TRUE;
 }
 
-static gboolean
-_process_invocation_state (struct invocation_state *state,
-                           GIFunctionInfo *function_info, PyObject *py_args)
+static inline gboolean
+_invoke_marshal_in_args (PyGIInvokeState *state, PyGICallableCache *cache)
 {
-    gsize i;
+    gssize i, in_count, out_count;
+    in_count = 0;
+    out_count = 0;
+
+    if (state->n_py_in_args > cache->n_py_args) {
+        PyErr_Format (PyExc_TypeError,
+                      "%s() takes exactly %zd argument(s) (%zd given)",
+                      cache->name,
+                      cache->n_py_args,
+                      state->n_py_in_args);
+        return FALSE;
+    }
 
-    /* Convert the return value. */
-    if (state->is_constructor) {
-        PyTypeObject *py_type;
-        GIBaseInfo *info;
-        GIInfoType info_type;
-        GITransfer transfer;
+    for (i = 0; i < cache->n_args; i++) {
+        GIArgument *c_arg;
+        PyGIArgCache *arg_cache = cache->args_cache[i];
+        PyObject *py_arg = NULL;
 
-        if (state->return_arg.v_pointer == NULL) {
-            PyErr_SetString (PyExc_TypeError, "constructor returned NULL");
-            return FALSE;
-        }
+        switch (arg_cache->direction) {
+            case PYGI_DIRECTION_FROM_PYTHON:
+                state->args[i] = &(state->in_args[in_count]);
+                in_count++;
 
-        g_assert (state->n_py_args > 0);
-        py_type = (PyTypeObject *) PyTuple_GET_ITEM (py_args, 0);
-
-        info = g_type_info_get_interface (state->return_type_info);
-        g_assert (info != NULL);
-
-        info_type = g_base_info_get_type (info);
-
-        transfer = g_callable_info_get_caller_owns ( (GICallableInfo *) function_info);
-
-        switch (info_type) {
-            case GI_INFO_TYPE_UNION:
-            case GI_INFO_TYPE_STRUCT:
-            {
-                GType type;
-
-                type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *) info);
-
-                if (g_struct_info_is_foreign (info)) {
-                    state->return_value =
-                        pygi_struct_foreign_convert_from_g_argument (
-                            info, state->return_arg.v_pointer);
-                } else if (g_type_is_a (type, G_TYPE_BOXED)) {
-                    g_warn_if_fail (transfer == GI_TRANSFER_EVERYTHING);
-                    state->return_value = _pygi_boxed_new (py_type, state->return_arg.v_pointer, transfer == GI_TRANSFER_EVERYTHING);
-                } else if (g_type_is_a (type, G_TYPE_POINTER) || type == G_TYPE_NONE) {
-                    if (transfer != GI_TRANSFER_NOTHING)
-                        g_warning ("Return argument in %s returns a struct "
-                                   "with a transfer mode of \"full\" "
-                                   "Transfer mode should be set to None for "
-                                   "struct types as there is no way to free "
-                                   "them safely.  Ignoring transfer mode "
-                                   "to prevent a potential invalid free. "
-                                   "This may cause a leak in your application.",
-                                   g_base_info_get_name ( (GIBaseInfo *) function_info) );
-
-                    state->return_value = _pygi_struct_new (py_type, state->return_arg.v_pointer, FALSE);
-                } else {
-                    PyErr_Format (PyExc_TypeError, "cannot create '%s' instances", py_type->tp_name);
-                    g_base_info_unref (info);
+                if (arg_cache->meta_type == PYGI_META_ARG_TYPE_CLOSURE) {
+                    state->args[i]->v_pointer = state->user_data;
+                    continue;
+                } else if (arg_cache->meta_type != PYGI_META_ARG_TYPE_PARENT)
+                    continue;
+
+                if (arg_cache->py_arg_index >= state->n_py_in_args) {
+                    PyErr_Format (PyExc_TypeError,
+                                  "%s() takes exactly %zd argument(s) (%zd given)",
+                                   cache->name,
+                                   cache->n_py_args,
+                                   state->n_py_in_args);
+
+                    /* clean up all of the args we have already marshalled,
+                     * since invoke will not be called
+                     */
+                    pygi_marshal_cleanup_args_from_py_parameter_fail (state,
+                                                                      cache,
+                                                                      i - 1);
                     return FALSE;
                 }
 
+                py_arg =
+                    PyTuple_GET_ITEM (state->py_in_args,
+                                      arg_cache->py_arg_index);
+
                 break;
-            }
-            case GI_INFO_TYPE_OBJECT:
-                if (state->return_arg.v_pointer == NULL) {
-                    PyErr_SetString (PyExc_TypeError, "constructor returned NULL");
-                    break;
-                }
-                state->return_value = pygobject_new (state->return_arg.v_pointer);
-                if (transfer == GI_TRANSFER_EVERYTHING) {
-                    /* The new wrapper increased the reference count, so decrease it. */
-                    g_object_unref (state->return_arg.v_pointer);
+            case PYGI_DIRECTION_BIDIRECTIONAL:
+                /* this will be filled in if it is an child value */
+                if (state->in_args[in_count].v_pointer != NULL)
+                    state->out_values[out_count] = state->in_args[in_count];
+
+                state->in_args[in_count].v_pointer = &state->out_values[out_count];
+                in_count++;
+
+                if (arg_cache->meta_type != PYGI_META_ARG_TYPE_CHILD) {
+                    if (arg_cache->py_arg_index >= state->n_py_in_args) {
+                        PyErr_Format (PyExc_TypeError,
+                                      "%s() takes exactly %zd argument(s) (%zd given)",
+                                       cache->name,
+                                       cache->n_py_args,
+                                       state->n_py_in_args);
+                        pygi_marshal_cleanup_args_from_py_parameter_fail (state,
+                                                                          cache,
+                                                                          i - 1);
+                        return FALSE;
+                    }
+
+                    py_arg =
+                        PyTuple_GET_ITEM (state->py_in_args,
+                                          arg_cache->py_arg_index);
                 }
-                if (state->is_constructor && G_IS_INITIALLY_UNOWNED (state->return_arg.v_pointer)) {
-                    /* GInitiallyUnowned constructors always end up with one extra reference, so decrease it. */
-                    g_object_unref (state->return_arg.v_pointer);
+            case PYGI_DIRECTION_TO_PYTHON:
+                if (arg_cache->is_caller_allocates) {
+                    if (!_caller_alloc (state, arg_cache, i, out_count)) {
+                        PyErr_Format (PyExc_TypeError,
+                                      "Could not caller allocate argument %zd of callable %s",
+                                      i, cache->name);
+                        pygi_marshal_cleanup_args_from_py_parameter_fail (state,
+                                                                          cache,
+                                                                          i - 1);
+                        return FALSE;
+                    }
+                } else {
+                    state->out_args[out_count].v_pointer = &state->out_values[out_count];
+                    state->args[i] = &state->out_values[out_count];
                 }
+                out_count++;
                 break;
-            default:
-                /* Other types don't have neither methods nor constructors. */
-                g_assert_not_reached();
         }
 
-        g_base_info_unref (info);
-
-        if (state->return_value == NULL) {
-            /* TODO: release arguments. */
-            return FALSE;
-        }
-    } else {
-        GITransfer transfer;
-
-        if ( (state->return_type_tag == GI_TYPE_TAG_ARRAY) &&
-                (g_type_info_get_array_type (state->return_type_info) == GI_ARRAY_TYPE_C)) {
-            /* Create a #GArray. */
-            state->return_arg.v_pointer = _pygi_argument_to_array (&state->return_arg, state->args, state->return_type_info, state->is_method);
-        }
-
-        transfer = g_callable_info_get_caller_owns ( (GICallableInfo *) function_info);
+        c_arg = state->args[i];
+        if (arg_cache->from_py_marshaller != NULL) {
+            if (!arg_cache->allow_none && py_arg == Py_None) {
+                PyErr_Format (PyExc_TypeError,
+                              "Argument %zd does not allow None as a value",
+                              i);
+
+                 pygi_marshal_cleanup_args_from_py_parameter_fail (state,
+                                                                   cache,
+                                                                   i - 1);
+                 return FALSE;
+            }
+            gboolean success = arg_cache->from_py_marshaller (state,
+                                                              cache,
+                                                              arg_cache,
+                                                              py_arg,
+                                                              c_arg);
+            if (!success) {
+                pygi_marshal_cleanup_args_from_py_parameter_fail (state,
+                                                                  cache,
+                                                                  i - 1);
+                return FALSE;
+            }
 
-        state->return_value = _pygi_argument_to_object (&state->return_arg, state->return_type_info, transfer);
-        if (state->return_value == NULL) {
-            /* TODO: release argument. */
-            return FALSE;
         }
 
-        _pygi_argument_release (&state->return_arg, state->return_type_info, transfer, GI_DIRECTION_OUT);
-
-        if (state->return_type_tag == GI_TYPE_TAG_ARRAY
-                && transfer == GI_TRANSFER_NOTHING) {
-            /* We created a #GArray, so free it. */
-            state->return_arg.v_pointer = g_array_free (state->return_arg.v_pointer, FALSE);
-        }
     }
 
-    /* Convert output arguments and release arguments. */
-    {
-        gsize return_values_pos;
-
-        return_values_pos = 0;
-
-        if (state->n_return_values > 1) {
-            /* Return a tuple. */
-            PyObject *return_values;
+    return TRUE;
+}
 
-            return_values = PyTuple_New (state->n_return_values);
-            if (return_values == NULL) {
-                /* TODO: release arguments. */
-                return FALSE;
+static inline PyObject *
+_invoke_marshal_out_args (PyGIInvokeState *state, PyGICallableCache *cache)
+{
+    PyObject *py_out = NULL;
+    PyObject *py_return = NULL;
+    gssize total_out_args = cache->n_to_py_args;
+    gboolean has_return = FALSE;
+
+    if (cache->return_cache) {
+        if (!cache->return_cache->is_skipped) {
+            if (cache->function_type == PYGI_FUNCTION_TYPE_CONSTRUCTOR) {
+                if (state->return_arg.v_pointer == NULL) {
+                    PyErr_SetString (PyExc_TypeError, "constructor returned NULL");
+                    pygi_marshal_cleanup_args_return_fail (state,
+                                                       cache);
+                    return NULL;
+                }
             }
 
-            if (state->return_type_tag == GI_TYPE_TAG_VOID) {
-                /* The current return value is None. */
-                Py_DECREF (state->return_value);
-            } else {
-                /* Put the return value first. */
-                g_assert (state->return_value != NULL);
-                PyTuple_SET_ITEM (return_values, return_values_pos, state->return_value);
-                return_values_pos += 1;
+            py_return = cache->return_cache->to_py_marshaller ( state,
+                                                                cache,
+                                                                cache->return_cache,
+                                                               &state->return_arg);
+            if (py_return == NULL) {
+                pygi_marshal_cleanup_args_return_fail (state,
+                                                       cache);
+                return NULL;
             }
 
-            state->return_value = return_values;
-        }
-
-        for (i = 0; i < state->n_args; i++) {
-            GIDirection direction;
-            GITypeTag type_tag;
-            GITransfer transfer;
 
-            if (state->args_is_auxiliary[i]) {
-                /* Auxiliary arguments are handled at the same time as their relatives. */
-                continue;
+            if (cache->return_cache->type_tag != GI_TYPE_TAG_VOID) {
+                total_out_args++;
+                has_return = TRUE;
             }
-
-            direction = g_arg_info_get_direction (state->arg_infos[i]);
-            transfer = g_arg_info_get_ownership_transfer (state->arg_infos[i]);
-
-            type_tag = g_type_info_get_tag (state->arg_type_infos[i]);
-
-            if ( (type_tag == GI_TYPE_TAG_ARRAY) &&
-                    (g_type_info_get_array_type (state->arg_type_infos[i]) == GI_ARRAY_TYPE_C) &&
-                    (direction != GI_DIRECTION_IN || transfer == GI_TRANSFER_NOTHING)) {
-                /* Create a #GArray. */
-                state->args[i]->v_pointer = _pygi_argument_to_array (state->args[i], state->args, state->arg_type_infos[i], state->is_method);
+        } else {
+            if (cache->return_cache->transfer == GI_TRANSFER_EVERYTHING) {
+                PyGIMarshalCleanupFunc to_py_cleanup =
+                    cache->return_cache->to_py_cleanup;
+
+                if (to_py_cleanup != NULL)
+                    to_py_cleanup ( state,
+                                    cache->return_cache,
+                                   &state->return_arg,
+                                    FALSE);
             }
-
-            if (direction == GI_DIRECTION_INOUT || direction == GI_DIRECTION_OUT) {
-                /* Convert the argument. */
-                PyObject *obj;
-
-                /* If we created it, deallocate when it goes out of scope
-                 * otherwise it is unsafe to deallocate random structures
-                 * we are given
-                 */
-                if (type_tag == GI_TYPE_TAG_INTERFACE) {
-                    GIBaseInfo *info;
-                    GIInfoType info_type;
-                    GType type;
-
-                    info = g_type_info_get_interface (state->arg_type_infos[i]);
-                    g_assert (info != NULL);
-                    info_type = g_base_info_get_type (info);
-                    type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *) info);
-
-                    if ( (info_type == GI_INFO_TYPE_STRUCT) &&
-                             !g_struct_info_is_foreign((GIStructInfo *) info) &&
-                             !g_type_is_a (type, G_TYPE_BOXED)) {
-                        if (g_arg_info_is_caller_allocates (state->arg_infos[i])) {
-                            transfer = GI_TRANSFER_EVERYTHING;
-                        } else if (transfer == GI_TRANSFER_EVERYTHING) {
-                            transfer = GI_TRANSFER_NOTHING;
-                            g_warning ("Out argument %ld in %s returns a struct "
-                                       "with a transfer mode of \"full\". "
-                                       "Transfer mode should be set to \"none\" for "
-                                       "struct type returns as there is no way to free "
-                                       "them safely.  Ignoring transfer mode "
-                                       "to prevent a potential invalid free. "
-                                       "This may cause a leak in your application.",
-                                       i, g_base_info_get_name ( (GIBaseInfo *) function_info) );
-                        }
-                    }
-                }
-
-                obj = _pygi_argument_to_object (state->args[i], state->arg_type_infos[i], transfer);
-                if (obj == NULL) {
-                    /* TODO: release arguments. */
-                    return FALSE;
-                }
-
-                g_assert (return_values_pos < state->n_return_values);
-
-                if (state->n_return_values > 1) {
-                    PyTuple_SET_ITEM (state->return_value, return_values_pos, obj);
-                } else {
-                    /* The current return value is None. */
-                    Py_DECREF (state->return_value);
-                    state->return_value = obj;
-                }
-
-                return_values_pos += 1;
-            }
-
         }
-
-        /* HACK: We rewrapped any C arrays above in a GArray so they are ok to
-         *       free as GArrays.  We will always leak C arrays if there is
-         *       an error before we reach this state as there is no easy way
-         *       to know which arrays were wrapped if there are more than one.
-         *       This will be removed with better array handling once merge
-         *       the invoke rewrite branch.
-         */
-        state->c_arrays_are_wrapped = TRUE;
-        g_assert (state->n_return_values <= 1 || return_values_pos == state->n_return_values);
-    }
-
-    return TRUE;
-}
-
-static void
-_free_invocation_state (struct invocation_state *state)
-{
-    gsize i;
-    gsize backup_args_pos;
-
-    if (state->return_type_info != NULL) {
-        g_base_info_unref ( (GIBaseInfo *) state->return_type_info);
     }
 
-    if (state->closure != NULL) {
-        if (state->closure->scope == GI_SCOPE_TYPE_CALL)
-            _pygi_invoke_closure_free (state->closure);
-    }
+    total_out_args -= cache->n_to_py_child_args;
 
-    /* release all arguments. */
-    backup_args_pos = 0;
-    for (i = 0; i < state->n_args; i++) {
+    if (cache->n_to_py_args - cache->n_to_py_child_args  == 0) {
+        if (cache->return_cache->is_skipped && state->error == NULL) {
+            /* we skip the return value and have no (out) arguments to return,
+             * so py_return should be NULL. But we must not return NULL,
+             * otherwise Python will expect an exception.
+             */
+            g_assert (py_return == NULL);
+            Py_INCREF(Py_None);
+            py_return = Py_None;
+        }
 
-        if (state->args_is_auxiliary[i]) {
-            /* Auxiliary arguments are not released. */
-            continue;
+        py_out = py_return;
+    } else if (total_out_args == 1) {
+        /* if we get here there is one out arg an no return */
+        PyGIArgCache *arg_cache = (PyGIArgCache *)cache->to_py_args->data;
+        py_out = arg_cache->to_py_marshaller (state,
+                                              cache,
+                                              arg_cache,
+                                              state->args[arg_cache->c_arg_index]);
+        if (py_out == NULL) {
+            pygi_marshal_cleanup_args_to_py_parameter_fail (state,
+                                                            cache,
+                                                            0);
+            return NULL;
         }
 
-        if (state->arg_infos[i] != NULL
-            && state->arg_type_infos[i] != NULL) {
-            GIDirection direction;
-            GITypeTag type_tag;
-            GITransfer transfer;
-
-            direction = g_arg_info_get_direction (state->arg_infos[i]);
-            transfer = g_arg_info_get_ownership_transfer (state->arg_infos[i]);
-
-            /* Release the argument. */
-            if (direction == GI_DIRECTION_INOUT) {
-                if (state->args != NULL) {
-                    _pygi_argument_release (&state->backup_args[backup_args_pos],
-                                            state->arg_type_infos[i],
-                                            transfer, GI_DIRECTION_IN);
-                }
-                backup_args_pos += 1;
-            }
-            if (state->args != NULL && state->args[i] != NULL) {
-                type_tag = g_type_info_get_tag (state->arg_type_infos[i]);
-
-                if (type_tag == GI_TYPE_TAG_ARRAY &&
-                        (direction == GI_DIRECTION_IN || direction == GI_DIRECTION_INOUT) &&
-                        (g_type_info_get_array_type (state->arg_type_infos[i]) == GI_ARRAY_TYPE_C) &&
-                        !state->c_arrays_are_wrapped) {
-                    /* HACK: Noop - we are in an inconsitant state due to
-                     *       complex array handler so leak any C arrays
-                     *       as we don't know if we can free them safely.
-                     *       This will be removed when we merge the
-                     *       invoke rewrite branch.
-                     */
-                } else {
-                    _pygi_argument_release (state->args[i], state->arg_type_infos[i],
-                                            transfer, direction);
-                }
+    } else {
+        gssize py_arg_index = 0;
+        GSList *cache_item = cache->to_py_args;
+        /* return a tuple */
+        py_out = PyTuple_New (total_out_args);
+        if (has_return) {
+            PyTuple_SET_ITEM (py_out, py_arg_index, py_return);
+            py_arg_index++;
+        }
 
-                if (type_tag == GI_TYPE_TAG_ARRAY
-                    && (direction != GI_DIRECTION_IN && transfer == GI_TRANSFER_NOTHING)) {
-                    /* We created an *out* #GArray and it has not been released above, so free it. */
-                    state->args[i]->v_pointer = g_array_free (state->args[i]->v_pointer, FALSE);
-                }
+        for(; py_arg_index < total_out_args; py_arg_index++) {
+            PyGIArgCache *arg_cache = (PyGIArgCache *)cache_item->data;
+            PyObject *py_obj = arg_cache->to_py_marshaller (state,
+                                                            cache,
+                                                            arg_cache,
+                                                            state->args[arg_cache->c_arg_index]);
+
+            if (py_obj == NULL) {
+                if (has_return)
+                    py_arg_index--;
+                pygi_marshal_cleanup_args_to_py_parameter_fail (state,
+                                                                cache,
+                                                                py_arg_index);
+                Py_DECREF (py_out);
+                return NULL;
             }
 
+            PyTuple_SET_ITEM (py_out, py_arg_index, py_obj);
+            cache_item = cache_item->next;
         }
-
-        if (state->arg_type_infos[i] != NULL)
-            g_base_info_unref ( (GIBaseInfo *) state->arg_type_infos[i]);
-        if (state->arg_infos[i] != NULL)
-            g_base_info_unref ( (GIBaseInfo *) state->arg_infos[i]);
     }
-    g_assert (backup_args_pos == state->n_backup_args);
+    return py_out;
+}
 
-    g_slice_free1 (sizeof (gpointer) * state->n_args, state->arg_infos);
-    g_slice_free1 (sizeof (gpointer) * state->n_args, state->arg_type_infos);
-    g_slice_free1 (sizeof (gboolean) * state->n_args, state->args_is_auxiliary);
+PyObject *
+pygi_callable_info_invoke (GIBaseInfo *info, PyObject *py_args,
+                           PyObject *kwargs, PyGICallableCache *cache,
+                           GCallback function_ptr, gpointer user_data)
+{
+    PyGIInvokeState state = { 0, };
+    PyObject *ret = NULL;
 
-    if (state->args != NULL) {
-        g_slice_free1 (sizeof (gpointer) * state->n_args, state->args);
-    }
+    if (!_invoke_state_init_from_callable_cache (&state, cache, py_args, kwargs))
+        goto err;
 
-    if (state->in_args != NULL) {
-        g_slice_free1 (sizeof (GIArgument) * state->n_in_args, state->in_args);
-    }
+    if (cache->function_type == PYGI_FUNCTION_TYPE_CCALLBACK)
+        state.user_data = user_data;
 
-    if (state->out_args != NULL) {
-        g_slice_free1 (sizeof (GIArgument) * state->n_out_args, state->out_args);
-    }
+    if (!_invoke_marshal_in_args (&state, cache))
+        goto err;
 
-    if (state->out_values != NULL) {
-        g_slice_free1 (sizeof (GIArgument) * state->n_out_args, state->out_values);
-    }
+    if (!_invoke_callable (&state, cache, info, function_ptr))
+        goto err;
 
-    if (state->backup_args != NULL) {
-        g_slice_free1 (sizeof (GIArgument) * state->n_backup_args, state->backup_args);
-    }
+    pygi_marshal_cleanup_args_from_py_marshal_success (&state, cache);
 
-    if (PyErr_Occurred()) {
-        Py_CLEAR (state->return_value);
-    }
+    ret = _invoke_marshal_out_args (&state, cache);
+    if (ret)
+        pygi_marshal_cleanup_args_to_py_marshal_success (&state, cache);
+err:
+    _invoke_state_clear (&state, cache);
+    return ret;
 }
 
-
 PyObject *
 _wrap_g_callable_info_invoke (PyGIBaseInfo *self, PyObject *py_args,
                               PyObject *kwargs)
 {
-    struct invocation_state state = { 0, };
-
-    if (!_initialize_invocation_state (&state, self->info, py_args, kwargs)) {
-        _free_invocation_state (&state);
-        return NULL;
+    if (self->cache == NULL) {
+        self->cache = _pygi_callable_cache_new (self->info, FALSE);
+        if (self->cache == NULL)
+            return NULL;
     }
 
-    if (!_prepare_invocation_state (&state, self->info, py_args)) {
-        _free_invocation_state (&state);
-        return NULL;
-    }
-
-    if (!_invoke_function (&state, self->info, py_args)) {
-        _free_invocation_state (&state);
-        return NULL;
-    }
-
-    if (!_process_invocation_state (&state, self->info, py_args)) {
-        _free_invocation_state (&state);
-        return NULL;
-    }
-
-    _free_invocation_state (&state);
-    return state.return_value;
+    return pygi_callable_info_invoke (self->info, py_args, kwargs, self->cache, NULL, NULL);
 }
-
index dc1ce18..051bc8d 100644 (file)
 #include <girepository.h>
 
 #include "pygi-private.h"
-
+#include "pygi-invoke-state-struct.h"
 G_BEGIN_DECLS
 
+PyObject *pygi_callable_info_invoke (GIBaseInfo *info, PyObject *py_args,
+                                     PyObject *kwargs, PyGICallableCache *cache,
+                                     GCallback function_ptr, gpointer user_data);
 PyObject *_wrap_g_callable_info_invoke (PyGIBaseInfo *self, PyObject *py_args,
                                         PyObject *kwargs);
 
diff --git a/gi/pygi-marshal-cleanup.c b/gi/pygi-marshal-cleanup.c
new file mode 100644 (file)
index 0000000..503c61d
--- /dev/null
@@ -0,0 +1,552 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+ #include "pygi-marshal-cleanup.h"
+ #include <glib.h>
+static inline void
+_cleanup_caller_allocates (PyGIInvokeState    *state,
+                           PyGIArgCache       *cache,
+                           gpointer            data)
+{
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)cache;
+
+    if (iface_cache->g_type == G_TYPE_BOXED) {
+        gsize size;
+        size = g_struct_info_get_size (iface_cache->interface_info);
+        g_slice_free1 (size, data);
+    } else if (iface_cache->g_type == G_TYPE_VALUE) {
+        g_slice_free (GValue, data);
+    } else if (iface_cache->is_foreign) {
+        pygi_struct_foreign_release ((GIBaseInfo *)iface_cache->interface_info,
+                                     data);
+    } else {
+        g_free (data);
+    }
+}
+
+/**
+ * Cleanup during invoke can happen in multiple
+ * stages, each of which can be the result of a
+ * successful compleation of that stage or an error
+ * occured which requires partial cleanup.
+ *
+ * For the most part, either the C interface being
+ * invoked or the python object which wraps the
+ * parameters, handle their lifecycles but in some
+ * cases, where we have intermediate objects,
+ * or when we fail processing a parameter, we need
+ * to handle the clean up manually.
+ *
+ * There are two argument processing stages.
+ * They are the in stage, where we process python
+ * parameters into their C counterparts, and the out
+ * stage, where we process out C parameters back
+ * into python objects. The in stage also sets up
+ * temporary out structures for caller allocated
+ * parameters which need to be cleaned up either on
+ * in stage failure or at the completion of the out
+ * stage (either success or failure)
+ *
+ * The in stage must call one of these cleanup functions:
+ *    - pygi_marshal_cleanup_args_from_py_marshal_success
+ *       (continue to out stage)
+ *    - pygi_marshal_cleanup_args_from_py_parameter_fail
+ *       (final, exit from invoke)
+ *
+ * The out stage must call one of these cleanup functions which are all final:
+ *    - pygi_marshal_cleanup_args_to_py_marshal_success
+ *    - pygi_marshal_cleanup_args_return_fail
+ *    - pygi_marshal_cleanup_args_to_py_parameter_fail
+ *
+ **/
+void
+pygi_marshal_cleanup_args_from_py_marshal_success (PyGIInvokeState   *state,
+                                                   PyGICallableCache *cache)
+{
+    gssize i;
+
+    /* For in success, call cleanup for all GI_DIRECTION_IN values only. */
+    for (i = 0; i < cache->n_args; i++) {
+        PyGIArgCache *arg_cache = cache->args_cache[i];
+        PyGIMarshalCleanupFunc cleanup_func = arg_cache->from_py_cleanup;
+
+        if (cleanup_func &&
+                arg_cache->direction == PYGI_DIRECTION_FROM_PYTHON &&
+                    state->args[i]->v_pointer != NULL)
+            cleanup_func (state, arg_cache, state->args[i]->v_pointer, TRUE);
+    }
+}
+
+void
+pygi_marshal_cleanup_args_to_py_marshal_success (PyGIInvokeState   *state,
+                                                 PyGICallableCache *cache)
+{
+    /* clean up the return if available */
+    if (cache->return_cache != NULL) {
+        PyGIMarshalCleanupFunc cleanup_func = cache->return_cache->to_py_cleanup;
+        if (cleanup_func && state->return_arg.v_pointer != NULL)
+            cleanup_func (state,
+                          cache->return_cache,
+                          state->return_arg.v_pointer,
+                          TRUE);
+    }
+
+    /* Now clean up args */
+    GSList *cache_item = cache->to_py_args;
+    while (cache_item) {
+        PyGIArgCache *arg_cache = (PyGIArgCache *) cache_item->data;
+        PyGIMarshalCleanupFunc cleanup_func = arg_cache->to_py_cleanup;
+        gpointer data = state->args[arg_cache->c_arg_index]->v_pointer;
+
+        if (cleanup_func != NULL && data != NULL)
+            cleanup_func (state,
+                          arg_cache,
+                          data,
+                          TRUE);
+
+        cache_item = cache_item->next;
+    }
+}
+
+void
+pygi_marshal_cleanup_args_from_py_parameter_fail (PyGIInvokeState   *state,
+                                                  PyGICallableCache *cache,
+                                                  gssize failed_arg_index)
+{
+    gssize i;
+
+    state->failed = TRUE;
+
+    for (i = 0; i < cache->n_args  && i <= failed_arg_index; i++) {
+        PyGIArgCache *arg_cache = cache->args_cache[i];
+        PyGIMarshalCleanupFunc cleanup_func = arg_cache->from_py_cleanup;
+        gpointer data = state->args[i]->v_pointer;
+
+        if (cleanup_func &&
+                arg_cache->direction == PYGI_DIRECTION_FROM_PYTHON &&
+                    data != NULL) {
+            cleanup_func (state,
+                          arg_cache,
+                          data,
+                          i < failed_arg_index);
+
+        } else if (arg_cache->is_caller_allocates && data != NULL) {
+            _cleanup_caller_allocates (state,
+                                       arg_cache,
+                                       data);
+        }
+    }
+}
+
+void
+pygi_marshal_cleanup_args_return_fail (PyGIInvokeState   *state,
+                                       PyGICallableCache *cache)
+{
+    state->failed = TRUE;
+}
+
+void
+pygi_marshal_cleanup_args_to_py_parameter_fail (PyGIInvokeState   *state,
+                                              PyGICallableCache *cache,
+                                              gssize failed_to_py_arg_index)
+{
+    state->failed = TRUE;
+}
+
+void
+_pygi_marshal_cleanup_from_py_utf8 (PyGIInvokeState *state,
+                                    PyGIArgCache    *arg_cache,
+                                    gpointer         data,
+                                    gboolean         was_processed)
+{
+    /* We strdup strings so always free if we have processed this
+       parameter for input */
+    if (was_processed)
+        g_free (data);
+}
+
+void
+_pygi_marshal_cleanup_to_py_utf8 (PyGIInvokeState *state,
+                                  PyGIArgCache    *arg_cache,
+                                  gpointer         data,
+                                  gboolean         was_processed)
+{
+    /* Python copies the string so we need to free it
+       if the interface is transfering ownership, 
+       whether or not it has been processed yet */
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        g_free (data);
+}
+
+void
+_pygi_marshal_cleanup_from_py_interface_object (PyGIInvokeState *state,
+                                                PyGIArgCache    *arg_cache,
+                                                gpointer         data,
+                                                gboolean         was_processed)
+{
+    /* If we processed the parameter but fail before invoking the method,
+       we need to remove the ref we added */
+    if (was_processed && state->failed && data != NULL &&
+            arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        g_object_unref (G_OBJECT(data));
+}
+
+void
+_pygi_marshal_cleanup_to_py_interface_object (PyGIInvokeState *state,
+                                              PyGIArgCache    *arg_cache,
+                                              gpointer         data,
+                                              gboolean         was_processed)
+{
+    /* If we error out and the object is not marshalled into a PyGObject
+       we must take care of removing the ref */
+    if (!was_processed && arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        g_object_unref (G_OBJECT(data));
+}
+
+void 
+_pygi_marshal_cleanup_from_py_interface_struct_gvalue (PyGIInvokeState *state,
+                                                       PyGIArgCache    *arg_cache,
+                                                       gpointer         data,
+                                                       gboolean         was_processed)
+{
+    if (was_processed) {
+        PyObject *py_arg = PyTuple_GET_ITEM (state->py_in_args,
+                                             arg_cache->py_arg_index);
+        GType py_object_type =
+            pyg_type_from_object_strict ( (PyObject *) py_arg->ob_type, FALSE);
+
+        if (py_object_type != G_TYPE_VALUE) {
+            g_value_unset ((GValue *) data);
+            g_slice_free (GValue, data);
+        }
+    }
+}
+
+void
+_pygi_marshal_cleanup_from_py_interface_struct_foreign (PyGIInvokeState *state,
+                                                        PyGIArgCache    *arg_cache,
+                                                        gpointer         data,
+                                                        gboolean         was_processed)
+{
+    if (state->failed && was_processed)
+        pygi_struct_foreign_release (
+            ( (PyGIInterfaceCache *)arg_cache)->interface_info,
+            data);
+}
+
+void
+_pygi_marshal_cleanup_to_py_interface_struct_foreign (PyGIInvokeState *state,
+                                                      PyGIArgCache    *arg_cache,
+                                                      gpointer         data,
+                                                      gboolean         was_processed)
+{
+    if (!was_processed && arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        pygi_struct_foreign_release ( 
+            ( (PyGIInterfaceCache *)arg_cache)->interface_info,
+            data);
+}
+
+static GArray*
+_wrap_c_array (PyGIInvokeState   *state,
+               PyGISequenceCache *sequence_cache,
+               gpointer           data)
+{
+    GArray *array_;
+    gsize   len = 0;
+  
+    if (sequence_cache->fixed_size >= 0) {
+        len = sequence_cache->fixed_size;
+    } else if (sequence_cache->is_zero_terminated) {
+        len = g_strv_length ((gchar **)data);
+    } else if (sequence_cache->len_arg_index >= 0) {
+        GIArgument *len_arg = state->args[sequence_cache->len_arg_index];
+        len = len_arg->v_long;
+    }
+
+    array_ = g_array_new (FALSE,
+                          FALSE,
+                          sequence_cache->item_size);
+
+    if (array_ == NULL)
+        return NULL;
+
+    g_free (array_->data);
+    array_->data = data;
+    array_->len = len;
+
+    return array_;
+}
+
+void
+_pygi_marshal_cleanup_from_py_array (PyGIInvokeState *state,
+                                     PyGIArgCache    *arg_cache,
+                                     gpointer         data,
+                                     gboolean         was_processed)
+{
+    if (was_processed) {
+        GArray *array_ = NULL;
+        GPtrArray *ptr_array_ = NULL;
+        PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+        /* If this isn't a garray create one to help process variable sized
+           array elements */
+        if (sequence_cache->array_type == GI_ARRAY_TYPE_C) {
+            array_ = _wrap_c_array (state, sequence_cache, data);
+            
+            if (array_ == NULL)
+                return;
+            
+        } else if (sequence_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
+            ptr_array_ = (GPtrArray *) data;
+        } else {
+            array_ = (GArray *) data;
+        }
+
+        /* clean up items first */
+        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+            gsize i;
+            guint len = (array_ != NULL) ? array_->len : ptr_array_->len;
+            PyGIMarshalCleanupFunc cleanup_func =
+                sequence_cache->item_cache->from_py_cleanup;
+
+            for (i = 0; i < len; i++) {
+                gpointer item;
+
+                /* case 1: GPtrArray */
+                if (ptr_array_ != NULL)
+                    item = g_ptr_array_index (ptr_array_, i);
+                /* case 2: C array or GArray with object pointers */
+                else if (sequence_cache->item_cache->is_pointer)
+                    item = g_array_index (array_, gpointer, i);
+                /* case 3: C array or GArray with simple types or structs */
+                else
+                    item = array_->data + i * sequence_cache->item_size;
+
+                cleanup_func (state, sequence_cache->item_cache, item, TRUE);
+            }
+        }
+
+        /* Only free the array when we didn't transfer ownership */
+        if (sequence_cache->array_type == GI_ARRAY_TYPE_C) {
+            g_array_free (array_, arg_cache->transfer == GI_TRANSFER_NOTHING);
+        } else if (state->failed ||
+                   arg_cache->transfer == GI_TRANSFER_NOTHING) {
+            if (array_ != NULL)
+                g_array_free (array_, TRUE);
+            else
+                g_ptr_array_free (ptr_array_, TRUE);
+        }
+    }
+}
+
+void
+_pygi_marshal_cleanup_to_py_array (PyGIInvokeState *state,
+                                   PyGIArgCache    *arg_cache,
+                                   gpointer         data,
+                                   gboolean         was_processed)
+{
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING ||
+        arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+        GArray *array_ = NULL;
+        GPtrArray *ptr_array_ = NULL;
+        PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+        /* If this isn't a garray create one to help process variable sized
+           array elements */
+        if (sequence_cache->array_type == GI_ARRAY_TYPE_C) {
+            array_ = _wrap_c_array (state, sequence_cache, data);
+            
+            if (array_ == NULL)
+                return;
+
+        } else if (sequence_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
+            ptr_array_ = (GPtrArray *) data;
+        } else {
+            array_ = (GArray *) data;
+        }
+
+        if (sequence_cache->item_cache->to_py_cleanup != NULL) {
+            gsize i;
+            guint len = (array_ != NULL) ? array_->len : ptr_array_->len;
+
+            PyGIMarshalCleanupFunc cleanup_func = sequence_cache->item_cache->to_py_cleanup;
+            for (i = 0; i < len; i++) {
+                cleanup_func (state,
+                              sequence_cache->item_cache,
+                              (array_ != NULL) ? g_array_index (array_, gpointer, i) : g_ptr_array_index (ptr_array_, i),
+                              was_processed);
+            }
+        }
+
+        if (array_ != NULL)
+            g_array_free (array_, TRUE);
+        else
+            g_ptr_array_free (ptr_array_, TRUE);
+    }
+}
+
+void
+_pygi_marshal_cleanup_from_py_glist  (PyGIInvokeState *state,
+                                      PyGIArgCache    *arg_cache,
+                                      gpointer         data,
+                                      gboolean         was_processed)
+{
+    if (was_processed) {
+        GSList *list_;
+        PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+        list_ = (GSList *)data;
+
+        /* clean up items first */
+        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+            PyGIMarshalCleanupFunc cleanup_func =
+                sequence_cache->item_cache->from_py_cleanup;
+            GSList *node = list_;
+            while (node != NULL) {
+                cleanup_func (state,
+                              sequence_cache->item_cache,
+                              node->data,
+                              TRUE);
+                node = node->next;
+            }
+        }
+
+        if (state->failed ||
+               arg_cache->transfer == GI_TRANSFER_NOTHING ||
+                  arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+            switch (arg_cache->type_tag) {
+                case GI_TYPE_TAG_GLIST:
+                    g_list_free ( (GList *)list_);
+                    break;
+                case GI_TYPE_TAG_GSLIST:
+                    g_slist_free (list_);
+                    break;
+                default:
+                    g_assert_not_reached();
+            }
+        }
+    }
+}
+
+void
+_pygi_marshal_cleanup_to_py_glist (PyGIInvokeState *state,
+                                   PyGIArgCache    *arg_cache,
+                                   gpointer         data,
+                                   gboolean         was_processed)
+{
+    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING ||
+            arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+        GSList *list_ = (GSList *)data;
+
+        if (sequence_cache->item_cache->to_py_cleanup != NULL) {
+            PyGIMarshalCleanupFunc cleanup_func =
+                sequence_cache->item_cache->to_py_cleanup;
+            GSList *node = list_;
+
+            while (node != NULL) {
+                cleanup_func (state,
+                              sequence_cache->item_cache,
+                              node->data,
+                              was_processed);
+                node = node->next;
+            }
+        }
+
+        if (arg_cache->transfer == GI_TRANSFER_EVERYTHING) {
+            switch (arg_cache->type_tag) {
+                case GI_TYPE_TAG_GLIST:
+                    g_list_free ( (GList *)list_);
+                    break;
+                case GI_TYPE_TAG_GSLIST:
+                    g_slist_free (list_);
+                    break;
+                default:
+                    g_assert_not_reached();
+            }
+        }
+    }
+}
+
+void
+_pygi_marshal_cleanup_from_py_ghash  (PyGIInvokeState *state,
+                                      PyGIArgCache    *arg_cache,
+                                      gpointer         data,
+                                      gboolean         was_processed)
+{
+    if (data == NULL)
+        return;
+
+    if (was_processed) {
+        GHashTable *hash_;
+        PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
+
+        hash_ = (GHashTable *)data;
+
+        /* clean up keys and values first */
+        if (hash_cache->key_cache->from_py_cleanup != NULL ||
+                hash_cache->value_cache->from_py_cleanup != NULL) {
+            GHashTableIter hiter;
+            gpointer key;
+            gpointer value;
+
+            PyGIMarshalCleanupFunc key_cleanup_func =
+                hash_cache->key_cache->from_py_cleanup;
+            PyGIMarshalCleanupFunc value_cleanup_func =
+                hash_cache->value_cache->from_py_cleanup;
+
+            g_hash_table_iter_init (&hiter, hash_);
+            while (g_hash_table_iter_next (&hiter, &key, &value)) {
+                if (key != NULL && key_cleanup_func != NULL)
+                    key_cleanup_func (state,
+                                      hash_cache->key_cache,
+                                      key,
+                                      TRUE);
+                if (value != NULL && value_cleanup_func != NULL)
+                    value_cleanup_func (state,
+                                        hash_cache->value_cache,
+                                        value,
+                                        TRUE);
+            }
+        }
+
+        if (state->failed ||
+               arg_cache->transfer == GI_TRANSFER_NOTHING ||
+                  arg_cache->transfer == GI_TRANSFER_CONTAINER)
+            g_hash_table_destroy (hash_);
+
+    }
+}
+
+void
+_pygi_marshal_cleanup_to_py_ghash (PyGIInvokeState *state,
+                                   PyGIArgCache    *arg_cache,
+                                   gpointer         data,
+                                   gboolean         was_processed)
+{
+    if (data == NULL)
+        return;
+
+    /* assume hashtable has boxed key and value */
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        g_hash_table_destroy ( (GHashTable *)data);
+}
diff --git a/gi/pygi-marshal-cleanup.h b/gi/pygi-marshal-cleanup.h
new file mode 100644 (file)
index 0000000..92027be
--- /dev/null
@@ -0,0 +1,97 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGI_MARSHAL_CLEANUP_H__
+#define __PYGI_MARSHAL_CLEANUP_H__
+
+#include "pygi-private.h"
+
+G_BEGIN_DECLS
+
+void pygi_marshal_cleanup_args_from_py_marshal_success  (PyGIInvokeState   *state,
+                                                         PyGICallableCache *cache);
+void pygi_marshal_cleanup_args_from_py_parameter_fail   (PyGIInvokeState   *state,
+                                                         PyGICallableCache *cache,
+                                                         gssize failed_arg_index);
+
+void pygi_marshal_cleanup_args_to_py_marshal_success (PyGIInvokeState   *state,
+                                                      PyGICallableCache *cache);
+void pygi_marshal_cleanup_args_return_fail           (PyGIInvokeState   *state,
+                                                      PyGICallableCache *cache);
+void pygi_marshal_cleanup_args_to_py_parameter_fail  (PyGIInvokeState   *state,
+                                                      PyGICallableCache *cache,
+                                                      gssize failed_to_py_arg_index);
+
+void _pygi_marshal_cleanup_from_py_utf8                      (PyGIInvokeState *state,
+                                                              PyGIArgCache    *arg_cache,
+                                                              gpointer         data,
+                                                              gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_utf8                        (PyGIInvokeState *state,
+                                                              PyGIArgCache    *arg_cache,
+                                                              gpointer         data,
+                                                              gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_interface_struct_gvalue   (PyGIInvokeState *state,
+                                                              PyGIArgCache    *arg_cache,
+                                                              gpointer         data,
+                                                              gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_interface_struct_foreign  (PyGIInvokeState *state,
+                                                              PyGIArgCache    *arg_cache,
+                                                              gpointer         data,
+                                                              gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_interface_struct_foreign (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_interface_object       (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_interface_object         (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_array                  (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_array                    (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_glist                  (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_glist                    (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_ghash                  (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_ghash                    (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+G_END_DECLS
+
+#endif /* __PYGI_MARSHAL_CLEANUP_H__ */
diff --git a/gi/pygi-marshal-from-py.c b/gi/pygi-marshal-from-py.c
new file mode 100644 (file)
index 0000000..a6572ef
--- /dev/null
@@ -0,0 +1,1735 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>,  Red Hat, Inc.
+ *
+ *   pygi-marshal-from-py.c: Functions to convert PyObjects to C types.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#include "pygi-private.h"
+
+#include <string.h>
+#include <time.h>
+#include <pygobject.h>
+#include <pyglib-python-compat.h>
+
+#include "pygi-cache.h"
+#include "pygi-marshal-cleanup.h"
+#include "pygi-marshal-from-py.h"
+
+gboolean
+gi_argument_from_py_ssize_t (GIArgument   *arg_out,
+                             Py_ssize_t    size_in,
+                             GITypeTag     type_tag)                             
+{
+    switch (type_tag) {
+    case GI_TYPE_TAG_VOID:
+    case GI_TYPE_TAG_BOOLEAN:
+    case GI_TYPE_TAG_INT8:
+    case GI_TYPE_TAG_UINT8:
+    case GI_TYPE_TAG_INT16:
+    case GI_TYPE_TAG_UINT16:
+        goto unhandled_type;
+
+        /* Ranges assume two's complement */
+    case GI_TYPE_TAG_INT32:
+        if (size_in >= G_MININT32 && size_in <= G_MAXINT32) {
+            arg_out->v_int32 = size_in;
+            return TRUE;
+        } else {
+            goto overflow;
+        }
+
+    case GI_TYPE_TAG_UINT32:
+        if (size_in >= 0 && size_in <= G_MAXUINT32) {
+            arg_out->v_uint32 = size_in;
+            return TRUE;
+        } else {
+            goto overflow;
+        }
+
+    case GI_TYPE_TAG_INT64:
+        arg_out->v_int64 = size_in;
+        return TRUE;
+
+    case GI_TYPE_TAG_UINT64:
+        if (size_in >= 0) {
+            arg_out->v_uint64 = size_in;
+            return TRUE;
+        } else {
+            goto overflow;
+        }
+            
+    case GI_TYPE_TAG_FLOAT:
+    case GI_TYPE_TAG_DOUBLE:
+    case GI_TYPE_TAG_GTYPE:
+    case GI_TYPE_TAG_UTF8:
+    case GI_TYPE_TAG_FILENAME:
+    case GI_TYPE_TAG_ARRAY:
+    case GI_TYPE_TAG_INTERFACE:
+    case GI_TYPE_TAG_GLIST:
+    case GI_TYPE_TAG_GSLIST:
+    case GI_TYPE_TAG_GHASH:
+    case GI_TYPE_TAG_ERROR:
+    case GI_TYPE_TAG_UNICHAR:
+    default:
+        goto unhandled_type;
+    }
+
+ overflow:
+    PyErr_Format (PyExc_OverflowError,
+                  "Unable to marshal C Py_ssize_t %zd to %s",
+                  size_in,
+                  g_type_tag_to_string (type_tag));
+    return FALSE;
+
+ unhandled_type:
+    PyErr_Format (PyExc_TypeError,
+                  "Unable to marshal C Py_ssize_t %zd to %s",
+                  size_in,
+                  g_type_tag_to_string (type_tag));
+    return FALSE;
+}
+
+gboolean
+gi_argument_from_c_long (GIArgument *arg_out,
+                         long        c_long_in,
+                         GITypeTag   type_tag)
+{
+    switch (type_tag) {
+      case GI_TYPE_TAG_INT8:
+          arg_out->v_int8 = c_long_in;
+          return TRUE;
+      case GI_TYPE_TAG_UINT8:
+          arg_out->v_uint8 = c_long_in;
+          return TRUE;
+      case GI_TYPE_TAG_INT16:
+          arg_out->v_int16 = c_long_in;
+          return TRUE;
+      case GI_TYPE_TAG_UINT16:
+          arg_out->v_uint16 = c_long_in;
+          return TRUE;
+      case GI_TYPE_TAG_INT32:
+          arg_out->v_int32 = c_long_in;
+          return TRUE;
+      case GI_TYPE_TAG_UINT32:
+          arg_out->v_uint32 = c_long_in;
+          return TRUE;
+      case GI_TYPE_TAG_INT64:
+          arg_out->v_int64 = c_long_in;
+          return TRUE;
+      case GI_TYPE_TAG_UINT64:
+          arg_out->v_uint64 = c_long_in;
+          return TRUE;
+      default:
+          PyErr_Format (PyExc_TypeError,
+                        "Unable to marshal C long %ld to %s",
+                        c_long_in,
+                        g_type_tag_to_string (type_tag));
+          return FALSE;
+    }
+}
+
+/*
+ * _is_union_member - check to see if the py_arg is actually a member of the
+ * expected C union
+ */
+static gboolean
+_is_union_member (PyGIInterfaceCache *iface_cache, PyObject *py_arg) {
+    gint i;
+    gint n_fields;
+    GIUnionInfo *union_info;
+    GIInfoType info_type;
+    gboolean is_member = FALSE;
+
+    info_type = g_base_info_get_type (iface_cache->interface_info);
+
+    if (info_type != GI_INFO_TYPE_UNION)
+        return FALSE;
+
+    union_info = (GIUnionInfo *) iface_cache->interface_info;
+    n_fields = g_union_info_get_n_fields (union_info);
+
+    for (i = 0; i < n_fields; i++) {
+        GIFieldInfo *field_info;
+        GITypeInfo *field_type_info;
+
+        field_info = g_union_info_get_field (union_info, i);
+        field_type_info = g_field_info_get_type (field_info);
+
+        /* we can only check if the members are interfaces */
+        if (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_INTERFACE) {
+            GIInterfaceInfo *field_iface_info;
+            PyObject *py_type;
+
+            field_iface_info = g_type_info_get_interface (field_type_info);
+            py_type = _pygi_type_import_by_gi_info ((GIBaseInfo *) field_iface_info);
+
+            if (py_type != NULL && PyObject_IsInstance (py_arg, py_type)) {
+                is_member = TRUE;
+            }
+
+            Py_XDECREF (py_type);
+            g_base_info_unref ( ( GIBaseInfo *) field_iface_info);
+        }
+
+        g_base_info_unref ( ( GIBaseInfo *) field_type_info);
+        g_base_info_unref ( ( GIBaseInfo *) field_info);
+
+        if (is_member)
+            break;
+    }
+
+    return is_member;
+}
+
+gboolean
+_pygi_marshal_from_py_void (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            PyObject          *py_arg,
+                            GIArgument        *arg)
+{
+    g_warn_if_fail (arg_cache->transfer == GI_TRANSFER_NOTHING);
+
+    arg->v_pointer = py_arg;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_boolean (PyGIInvokeState   *state,
+                               PyGICallableCache *callable_cache,
+                               PyGIArgCache      *arg_cache,
+                               PyObject          *py_arg,
+                               GIArgument        *arg)
+{
+    arg->v_boolean = PyObject_IsTrue (py_arg);
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_int8 (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            PyObject          *py_arg,
+                            GIArgument        *arg)
+{
+    PyObject *py_long;
+    long long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+    long_ = PYGLIB_PyLong_AsLong (py_long);
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, -128, 127);
+        return FALSE;
+    }
+
+    if (long_ < -128 || long_ > 127) {
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, -128, 127);
+        return FALSE;
+    }
+
+    arg->v_int8 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_uint8 (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    unsigned long long_;
+
+    if (PYGLIB_PyBytes_Check (py_arg)) {
+
+        if (PYGLIB_PyBytes_Size (py_arg) != 1) {
+            PyErr_Format (PyExc_TypeError, "Must be a single character");
+            return FALSE;
+        }
+
+        long_ = (unsigned char)(PYGLIB_PyBytes_AsString (py_arg)[0]);
+
+    } else if (PyNumber_Check (py_arg)) {
+        PyObject *py_long;
+        py_long = PYGLIB_PyNumber_Long (py_arg);
+        if (!py_long)
+            return FALSE;
+
+        long_ = PYGLIB_PyLong_AsLong (py_long);
+        Py_DECREF (py_long);
+
+        if (PyErr_Occurred ()) {
+            PyErr_Clear();
+
+            PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, 0, 255);
+            return FALSE;
+        }
+    } else {
+        PyErr_Format (PyExc_TypeError, "Must be number or single byte string, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    if (long_ < 0 || long_ > 255) {
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, 0, 255);
+        return FALSE;
+    }
+
+    arg->v_uint8 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_int16 (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyObject *py_long;
+    long long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+    long_ = PYGLIB_PyLong_AsLong (py_long);
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, -32768, 32767);
+        return FALSE;
+    }
+
+    if (long_ < -32768 || long_ > 32767) {
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, -32768, 32767);
+        return FALSE;
+    }
+
+    arg->v_int16 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_uint16 (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyObject *py_long;
+    long long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+    long_ = PYGLIB_PyLong_AsLong (py_long);
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%li not in range %d to %d", long_, 0, 65535);
+        return FALSE;
+    }
+
+    if (long_ < 0 || long_ > 65535) {
+        PyErr_Format (PyExc_ValueError, "%li not in range %d to %d", long_, 0, 65535);
+        return FALSE;
+    }
+
+    arg->v_uint16 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_int32 (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyObject *py_long;
+    long long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+    long_ = PYGLIB_PyLong_AsLong (py_long);
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear();
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, G_MININT32, G_MAXINT32);
+        return FALSE;
+    }
+
+    if (long_ < G_MININT32 || long_ > G_MAXINT32) {
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, G_MININT32, G_MAXINT32);
+        return FALSE;
+    }
+
+    arg->v_int32 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_uint32 (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyObject *py_long;
+    long long long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+#if PY_VERSION_HEX < 0x03000000
+    if (PyInt_Check (py_long))
+        long_ = PyInt_AsLong (py_long);
+    else
+#endif
+        long_ = PyLong_AsLongLong (py_long);
+
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%lli not in range %i to %u", long_, 0, G_MAXUINT32);
+        return FALSE;
+    }
+
+    if (long_ < 0 || long_ > G_MAXUINT32) {
+        PyErr_Format (PyExc_ValueError, "%lli not in range %i to %u", long_, 0, G_MAXUINT32);
+        return FALSE;
+    }
+
+    arg->v_uint32 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_int64 (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyObject *py_long;
+    gint64 long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+#if PY_VERSION_HEX < 0x03000000
+    if (PyInt_Check (py_long))
+        long_ = (gint64) PyInt_AS_LONG (py_long);
+    else
+#endif
+        long_ = (gint64) PyLong_AsLongLong (py_long);
+
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        /* OverflowError occured but range errors should be returned as ValueError */
+        char *long_str;
+        PyObject *py_str;
+
+        PyErr_Clear ();
+
+        py_str = PyObject_Str (py_long);
+
+        if (PyUnicode_Check (py_str)) {
+            PyObject *py_bytes = PyUnicode_AsUTF8String (py_str);
+            Py_DECREF (py_str);
+
+            if (py_bytes == NULL)
+                return FALSE;
+
+            long_str = g_strdup (PYGLIB_PyBytes_AsString (py_bytes));
+            if (long_str == NULL) {
+                PyErr_NoMemory ();
+                return FALSE;
+            }
+
+            Py_DECREF (py_bytes);
+        } else {
+            long_str = g_strdup (PYGLIB_PyBytes_AsString(py_str));
+            Py_DECREF (py_str);
+        }
+
+        PyErr_Format (PyExc_ValueError, "%s not in range %" G_GINT64_FORMAT " to %" G_GINT64_FORMAT,
+                      long_str, G_MININT64, G_MAXINT64);
+
+        g_free (long_str);
+        return FALSE;
+    }
+
+    if (long_ < G_MININT64 || long_ > G_MAXINT64) {
+        PyErr_Format (PyExc_ValueError, "%" G_GINT64_FORMAT " not in range %" G_GINT64_FORMAT " to %" G_GINT64_FORMAT, long_, G_MININT64, G_MAXINT64);
+        return FALSE;
+    }
+
+    arg->v_int64 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_uint64 (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyObject *py_long;
+    guint64 ulong_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+#if PY_VERSION_HEX < 0x03000000
+    if (PyInt_Check (py_long)) {
+        gint64 long_ = (gint64) PyInt_AsLong (py_long);
+        if (long_ < 0) {
+            PyErr_Format (PyExc_ValueError, "%" G_GUINT64_FORMAT " not in range %d to %" G_GUINT64_FORMAT,
+                          (gint64) long_, 0, G_MAXUINT64);
+            return FALSE;
+        }
+        ulong_ = long_;
+    } else
+#endif
+        ulong_ = PyLong_AsUnsignedLongLong (py_long);
+
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        /* OverflowError occured but range errors should be returned as ValueError */
+        char *long_str;
+        PyObject *py_str;
+
+        PyErr_Clear ();
+
+        py_str = PyObject_Str (py_long);
+
+        if (PyUnicode_Check (py_str)) {
+            PyObject *py_bytes = PyUnicode_AsUTF8String (py_str);
+            Py_DECREF (py_str);
+
+            if (py_bytes == NULL)
+                return FALSE;
+
+            long_str = g_strdup (PYGLIB_PyBytes_AsString (py_bytes));
+            if (long_str == NULL) {
+                PyErr_NoMemory ();
+                return FALSE;
+            }
+
+            Py_DECREF (py_bytes);
+        } else {
+            long_str = g_strdup (PYGLIB_PyBytes_AsString (py_str));
+            Py_DECREF (py_str);
+        }
+
+        PyErr_Format (PyExc_ValueError, "%s not in range %d to %" G_GUINT64_FORMAT,
+                      long_str, 0, G_MAXUINT64);
+
+        g_free (long_str);
+        return FALSE;
+    }
+
+    if (ulong_ > G_MAXUINT64) {
+        PyErr_Format (PyExc_ValueError, "%" G_GUINT64_FORMAT " not in range %d to %" G_GUINT64_FORMAT, ulong_, 0, G_MAXUINT64);
+        return FALSE;
+    }
+
+    arg->v_uint64 = ulong_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_float (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyObject *py_float;
+    double double_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_float = PyNumber_Float (py_arg);
+    if (!py_float)
+        return FALSE;
+
+    double_ = PyFloat_AsDouble (py_float);
+    Py_DECREF (py_float);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%f not in range %f to %f", double_, -G_MAXFLOAT, G_MAXFLOAT);
+        return FALSE;
+    }
+
+    if (double_ < -G_MAXFLOAT || double_ > G_MAXFLOAT) {
+        PyErr_Format (PyExc_ValueError, "%f not in range %f to %f", double_, -G_MAXFLOAT, G_MAXFLOAT);
+        return FALSE;
+    }
+
+    arg->v_float = double_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_double (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyObject *py_float;
+    double double_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_float = PyNumber_Float (py_arg);
+    if (!py_float)
+        return FALSE;
+
+    double_ = PyFloat_AsDouble (py_float);
+    Py_DECREF (py_float);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%f not in range %f to %f", double_, -G_MAXDOUBLE, G_MAXDOUBLE);
+        return FALSE;
+    }
+
+    if (double_ < -G_MAXDOUBLE || double_ > G_MAXDOUBLE) {
+        PyErr_Format (PyExc_ValueError, "%f not in range %f to %f", double_, -G_MAXDOUBLE, G_MAXDOUBLE);
+        return FALSE;
+    }
+
+    arg->v_double = double_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_unichar (PyGIInvokeState   *state,
+                               PyGICallableCache *callable_cache,
+                               PyGIArgCache      *arg_cache,
+                               PyObject          *py_arg,
+                               GIArgument        *arg)
+{
+    Py_ssize_t size;
+    gchar *string_;
+
+    if (PyUnicode_Check (py_arg)) {
+       PyObject *py_bytes;
+
+       size = PyUnicode_GET_SIZE (py_arg);
+       py_bytes = PyUnicode_AsUTF8String (py_arg);
+       string_ = strdup(PYGLIB_PyBytes_AsString (py_bytes));
+       Py_DECREF (py_bytes);
+
+#if PY_VERSION_HEX < 0x03000000
+    } else if (PyString_Check (py_arg)) {
+       PyObject *pyuni = PyUnicode_FromEncodedObject (py_arg, "UTF-8", "strict");
+       if (!pyuni)
+           return FALSE;
+
+       size = PyUnicode_GET_SIZE (pyuni);
+       string_ = g_strdup (PyString_AsString(py_arg));
+       Py_DECREF (pyuni);
+#endif
+    } else {
+       PyErr_Format (PyExc_TypeError, "Must be string, not %s",
+                     py_arg->ob_type->tp_name);
+       return FALSE;
+    }
+
+    if (size != 1) {
+       PyErr_Format (PyExc_TypeError, "Must be a one character string, not %" G_GINT64_FORMAT " characters",
+                     (gint64) size);
+       g_free (string_);
+       return FALSE;
+    }
+
+    arg->v_uint32 = g_utf8_get_char (string_);
+    g_free (string_);
+
+    return TRUE;
+}
+gboolean
+_pygi_marshal_from_py_gtype (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    long type_ = pyg_type_from_object (py_arg);
+
+    if (type_ == 0) {
+        PyErr_Format (PyExc_TypeError, "Must be gobject.GType, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    arg->v_long = type_;
+    return TRUE;
+}
+gboolean
+_pygi_marshal_from_py_utf8 (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            PyObject          *py_arg,
+                            GIArgument        *arg)
+{
+    gchar *string_;
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    if (PyUnicode_Check (py_arg)) {
+        PyObject *pystr_obj = PyUnicode_AsUTF8String (py_arg);
+        if (!pystr_obj)
+            return FALSE;
+
+        string_ = g_strdup (PYGLIB_PyBytes_AsString (pystr_obj));
+        Py_DECREF (pystr_obj);
+    }
+#if PY_VERSION_HEX < 0x03000000
+    else if (PyString_Check (py_arg)) {
+        string_ = g_strdup (PyString_AsString (py_arg));
+    }
+#endif
+    else {
+        PyErr_Format (PyExc_TypeError, "Must be string, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    arg->v_string = string_;
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_filename (PyGIInvokeState   *state,
+                                PyGICallableCache *callable_cache,
+                                PyGIArgCache      *arg_cache,
+                                PyObject          *py_arg,
+                                GIArgument        *arg)
+{
+    gchar *string_;
+    GError *error = NULL;
+
+    if (PyUnicode_Check (py_arg)) {
+        PyObject *pystr_obj = PyUnicode_AsUTF8String (py_arg);
+        if (!pystr_obj)
+            return FALSE;
+
+        string_ = g_strdup (PYGLIB_PyBytes_AsString (pystr_obj));
+        Py_DECREF (pystr_obj);
+    }
+#if PY_VERSION_HEX < 0x03000000
+    else if (PyString_Check (py_arg)) {
+        string_ = g_strdup (PyString_AsString (py_arg));
+    }
+#endif
+    else {
+        PyErr_Format (PyExc_TypeError, "Must be string, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    arg->v_string = g_filename_from_utf8 (string_, -1, NULL, NULL, &error);
+    g_free (string_);
+
+    if (arg->v_string == NULL) {
+        PyErr_SetString (PyExc_Exception, error->message);
+        g_error_free (error);
+        /* TODO: Convert the error to an exception. */
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_array (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyGIMarshalFromPyFunc from_py_marshaller;
+    int i;
+    Py_ssize_t length;
+    gssize item_size;
+    gboolean is_ptr_array;
+    GArray *array_ = NULL;
+    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    if (!PySequence_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    length = PySequence_Length (py_arg);
+    if (length < 0)
+        return FALSE;
+
+    if (sequence_cache->fixed_size >= 0 &&
+        sequence_cache->fixed_size != length) {
+        PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
+                      sequence_cache->fixed_size, length);
+
+        return FALSE;
+    }
+
+    item_size = sequence_cache->item_size;
+    is_ptr_array = (sequence_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY);
+    if (is_ptr_array) {
+        array_ = (GArray *)g_ptr_array_new ();
+    } else {
+        array_ = g_array_sized_new (sequence_cache->is_zero_terminated,
+                                    FALSE,
+                                    item_size,
+                                    length);
+    }
+
+    if (array_ == NULL) {
+        PyErr_NoMemory ();
+        return FALSE;
+    }
+
+    if (sequence_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8 &&
+        PYGLIB_PyBytes_Check (py_arg)) {
+        memcpy(array_->data, PYGLIB_PyBytes_AsString (py_arg), length);
+        if (sequence_cache->is_zero_terminated) {
+            /* If array_ has been created with zero_termination, space for the
+             * terminator is properly allocated, so we're not off-by-one here. */
+            array_->data[length] = '\0';
+        }
+        goto array_success;
+    }
+
+    from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
+    for (i = 0; i < length; i++) {
+        GIArgument item;
+        PyObject *py_item = PySequence_GetItem (py_arg, i);
+        if (py_item == NULL)
+            goto err;
+
+        if (!from_py_marshaller ( state,
+                                  callable_cache,
+                                  sequence_cache->item_cache,
+                                  py_item,
+                                 &item))
+            goto err;
+
+        /* FIXME: it is much more efficent to have seperate marshaller
+         *        for ptr arrays than doing the evaluation
+         *        and casting each loop iteration
+         */
+        if (is_ptr_array) {
+            g_ptr_array_add((GPtrArray *)array_, item.v_pointer);
+        } else if (sequence_cache->item_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
+            PyGIInterfaceCache *item_iface_cache = (PyGIInterfaceCache *) sequence_cache->item_cache;
+            GIBaseInfo *base_info = (GIBaseInfo *) item_iface_cache->interface_info;
+            GIInfoType info_type = g_base_info_get_type (base_info);
+
+            switch (info_type) {
+                case GI_INFO_TYPE_UNION:
+                case GI_INFO_TYPE_STRUCT:
+                {
+                    PyGIArgCache *item_arg_cache = (PyGIArgCache *)item_iface_cache;
+                    PyGIMarshalCleanupFunc from_py_cleanup = item_arg_cache->from_py_cleanup;
+                    gboolean is_boxed = g_type_is_a (item_iface_cache->g_type, G_TYPE_BOXED);
+                    gboolean is_gvalue = item_iface_cache->g_type == G_TYPE_VALUE;
+                    gboolean is_gvariant = item_iface_cache->g_type == G_TYPE_VARIANT;
+                    
+                    if (is_gvariant) {
+                        /* Item size will always be that of a pointer,
+                         * since GVariants are opaque hence always passed by ref */
+                        g_assert (item_size == sizeof (item.v_pointer));
+                        g_array_insert_val (array_, i, item.v_pointer);
+                    } else if (is_gvalue) {
+                        GValue* dest = (GValue*) (array_->data + (i * item_size));
+                        memset (dest, 0, item_size);
+                        if (item.v_pointer != NULL) {
+                            g_value_init (dest, G_VALUE_TYPE ((GValue*) item.v_pointer));
+                            g_value_copy ((GValue*) item.v_pointer, dest);
+                        }
+
+                        if (from_py_cleanup) {
+                            from_py_cleanup (state, item_arg_cache, item.v_pointer, TRUE);
+                            /* we freed the original copy already, the new one is a 
+                             * struct in an array. _pygi_marshal_cleanup_from_py_array()
+                             * must not free it again */
+                            item_arg_cache->from_py_cleanup = NULL;
+                        }
+                    } else if (!is_boxed) {
+                        /* HACK: Gdk.Atom is merely an integer wrapped in a pointer,
+                         * so we must not dereference it; just copy the pointer
+                         * value, and don't attempt to free it. TODO: find out
+                         * if there are other data types with similar behaviour
+                         * and generalize. */
+                        if (g_strcmp0 (item_iface_cache->type_name, "Gdk.Atom") == 0) {
+                            g_assert (item_size == sizeof (item.v_pointer));
+                            memcpy (array_->data + (i * item_size), &item.v_pointer, item_size);
+                        } else {
+                            memcpy (array_->data + (i * item_size), item.v_pointer, item_size);
+
+                            if (from_py_cleanup)
+                                from_py_cleanup (state, item_arg_cache, item.v_pointer, TRUE);
+                        }
+                    } else {
+                        g_array_insert_val (array_, i, item);
+                    }
+                    break;
+                }
+                default:
+                    g_array_insert_val (array_, i, item);
+            }
+        } else {
+            g_array_insert_val (array_, i, item);
+        }
+        continue;
+err:
+        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+            gsize j;
+            PyGIMarshalCleanupFunc cleanup_func =
+                sequence_cache->item_cache->from_py_cleanup;
+
+            for(j = 0; j < i; j++) {
+                cleanup_func (state,
+                              sequence_cache->item_cache,
+                              g_array_index (array_, gpointer, j),
+                              TRUE);
+            }
+        }
+
+        if (is_ptr_array)
+            g_ptr_array_free ( ( GPtrArray *)array_, TRUE);
+        else
+            g_array_free (array_, TRUE);
+        _PyGI_ERROR_PREFIX ("Item %i: ", i);
+        return FALSE;
+    }
+
+array_success:
+    if (sequence_cache->len_arg_index >= 0) {
+        /* we have an child arg to handle */
+        PyGIArgCache *child_cache =
+            callable_cache->args_cache[sequence_cache->len_arg_index];
+
+        if (child_cache->direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+            gint *len_arg = (gint *)state->in_args[child_cache->c_arg_index].v_pointer;
+            /* if we are not setup yet just set the in arg */
+            if (len_arg == NULL) {
+                if (!gi_argument_from_py_ssize_t (&state->in_args[child_cache->c_arg_index],
+                                                  length,
+                                                  child_cache->type_tag)) {
+                    goto err;
+                }
+            } else {
+                *len_arg = length;
+            }
+        } else {
+            if (!gi_argument_from_py_ssize_t (&state->in_args[child_cache->c_arg_index],
+                                              length,
+                                              child_cache->type_tag)) {
+                goto err;
+            }
+        }
+    }
+
+    if (sequence_cache->array_type == GI_ARRAY_TYPE_C) {
+        arg->v_pointer = array_->data;
+        g_array_free (array_, FALSE);
+    } else {
+        arg->v_pointer = array_;
+    }
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_glist (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyGIMarshalFromPyFunc from_py_marshaller;
+    int i;
+    Py_ssize_t length;
+    GList *list_ = NULL;
+    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    if (!PySequence_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    length = PySequence_Length (py_arg);
+    if (length < 0)
+        return FALSE;
+
+    if (sequence_cache->fixed_size >= 0 &&
+        sequence_cache->fixed_size != length) {
+        PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
+                      sequence_cache->fixed_size, length);
+
+        return FALSE;
+    }
+
+    from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
+    for (i = 0; i < length; i++) {
+        GIArgument item;
+        PyObject *py_item = PySequence_GetItem (py_arg, i);
+        if (py_item == NULL)
+            goto err;
+
+        if (!from_py_marshaller ( state,
+                                  callable_cache,
+                                  sequence_cache->item_cache,
+                                  py_item,
+                                 &item))
+            goto err;
+
+        list_ = g_list_prepend (list_, _pygi_arg_to_hash_pointer (&item, sequence_cache->item_cache->type_tag));
+        continue;
+err:
+        /* FIXME: clean up list
+        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+            PyGIMarshalCleanupFunc cleanup = sequence_cache->item_cache->from_py_cleanup;
+        }
+        */
+        g_list_free (list_);
+        _PyGI_ERROR_PREFIX ("Item %i: ", i);
+        return FALSE;
+    }
+
+    arg->v_pointer = g_list_reverse (list_);
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_gslist (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyGIMarshalFromPyFunc from_py_marshaller;
+    int i;
+    Py_ssize_t length;
+    GSList *list_ = NULL;
+    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    if (!PySequence_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    length = PySequence_Length (py_arg);
+    if (length < 0)
+        return FALSE;
+
+    if (sequence_cache->fixed_size >= 0 &&
+        sequence_cache->fixed_size != length) {
+        PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
+                      sequence_cache->fixed_size, length);
+
+        return FALSE;
+    }
+
+    from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
+    for (i = 0; i < length; i++) {
+        GIArgument item;
+        PyObject *py_item = PySequence_GetItem (py_arg, i);
+        if (py_item == NULL)
+            goto err;
+
+        if (!from_py_marshaller ( state,
+                             callable_cache,
+                             sequence_cache->item_cache,
+                             py_item,
+                            &item))
+            goto err;
+
+        list_ = g_slist_prepend (list_, _pygi_arg_to_hash_pointer (&item, sequence_cache->item_cache->type_tag));
+        continue;
+err:
+        /* FIXME: Clean up list
+        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+            PyGIMarshalCleanupFunc cleanup = sequence_cache->item_cache->from_py_cleanup;
+        }
+        */
+
+        g_slist_free (list_);
+        _PyGI_ERROR_PREFIX ("Item %i: ", i);
+        return FALSE;
+    }
+
+    arg->v_pointer = g_slist_reverse (list_);
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_ghash (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyGIMarshalFromPyFunc key_from_py_marshaller;
+    PyGIMarshalFromPyFunc value_from_py_marshaller;
+
+    int i;
+    Py_ssize_t length;
+    PyObject *py_keys, *py_values;
+
+    GHashFunc hash_func;
+    GEqualFunc equal_func;
+
+    GHashTable *hash_ = NULL;
+    PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    py_keys = PyMapping_Keys (py_arg);
+    if (py_keys == NULL) {
+        PyErr_Format (PyExc_TypeError, "Must be mapping, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    length = PyMapping_Length (py_arg);
+    if (length < 0) {
+        Py_DECREF (py_keys);
+        return FALSE;
+    }
+
+    py_values = PyMapping_Values (py_arg);
+    if (py_values == NULL) {
+        Py_DECREF (py_keys);
+        return FALSE;
+    }
+
+    key_from_py_marshaller = hash_cache->key_cache->from_py_marshaller;
+    value_from_py_marshaller = hash_cache->value_cache->from_py_marshaller;
+
+    switch (hash_cache->key_cache->type_tag) {
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+            hash_func = g_str_hash;
+            equal_func = g_str_equal;
+            break;
+        default:
+            hash_func = NULL;
+            equal_func = NULL;
+    }
+
+    hash_ = g_hash_table_new (hash_func, equal_func);
+    if (hash_ == NULL) {
+        PyErr_NoMemory ();
+        Py_DECREF (py_keys);
+        Py_DECREF (py_values);
+        return FALSE;
+    }
+
+    for (i = 0; i < length; i++) {
+        GIArgument key, value;
+        PyObject *py_key = PyList_GET_ITEM (py_keys, i);
+        PyObject *py_value = PyList_GET_ITEM (py_values, i);
+        if (py_key == NULL || py_value == NULL)
+            goto err;
+
+        if (!key_from_py_marshaller ( state,
+                                      callable_cache,
+                                      hash_cache->key_cache,
+                                      py_key,
+                                     &key))
+            goto err;
+
+        if (!value_from_py_marshaller ( state,
+                                        callable_cache,
+                                        hash_cache->value_cache,
+                                        py_value,
+                                       &value))
+            goto err;
+
+        g_hash_table_insert (hash_,
+                             _pygi_arg_to_hash_pointer (&key, hash_cache->key_cache->type_tag),
+                             _pygi_arg_to_hash_pointer (&value, hash_cache->value_cache->type_tag));
+        continue;
+err:
+        /* FIXME: cleanup hash keys and values */
+        Py_XDECREF (py_key);
+        Py_XDECREF (py_value);
+        Py_DECREF (py_keys);
+        Py_DECREF (py_values);
+        g_hash_table_unref (hash_);
+        _PyGI_ERROR_PREFIX ("Item %i: ", i);
+        return FALSE;
+    }
+
+    arg->v_pointer = hash_;
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_gerror (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling for GErrors is not implemented");
+    return FALSE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_callback (PyGIInvokeState   *state,
+                                          PyGICallableCache *callable_cache,
+                                          PyGIArgCache      *arg_cache,
+                                          PyObject          *py_arg,
+                                          GIArgument        *arg)
+{
+    GICallableInfo *callable_info;
+    PyGICClosure *closure;
+    PyGIArgCache *user_data_cache = NULL;
+    PyGIArgCache *destroy_cache = NULL;
+    PyGICallbackCache *callback_cache;
+    PyObject *py_user_data = NULL;
+
+    callback_cache = (PyGICallbackCache *)arg_cache;
+
+    if (callback_cache->user_data_index > 0) {
+        user_data_cache = callable_cache->args_cache[callback_cache->user_data_index];
+        if (user_data_cache->py_arg_index < state->n_py_in_args) {
+            py_user_data = PyTuple_GetItem (state->py_in_args, user_data_cache->py_arg_index);
+            if (!py_user_data)
+                return FALSE;
+        } else {
+            py_user_data = Py_None;
+            Py_INCREF (Py_None);
+        }
+    }
+
+    if (py_arg == Py_None && !(py_user_data == Py_None || py_user_data == NULL)) {
+        Py_DECREF (py_user_data);
+        PyErr_Format (PyExc_TypeError,
+                      "When passing None for a callback userdata must also be None");
+
+        return FALSE;
+    }
+
+    if (py_arg == Py_None) {
+        Py_XDECREF (py_user_data);
+        return TRUE;
+    }
+
+    if (!PyCallable_Check (py_arg)) {
+        Py_XDECREF (py_user_data);
+        PyErr_Format (PyExc_TypeError,
+                      "Callback needs to be a function or method not %s",
+                      py_arg->ob_type->tp_name);
+
+        return FALSE;
+    }
+
+    if (callback_cache->destroy_notify_index > 0)
+        destroy_cache = callable_cache->args_cache[callback_cache->destroy_notify_index];
+
+    callable_info = (GICallableInfo *)callback_cache->interface_info;
+
+    closure = _pygi_make_native_closure (callable_info, callback_cache->scope, py_arg, py_user_data);
+    arg->v_pointer = closure->closure;
+    if (user_data_cache != NULL) {
+        state->in_args[user_data_cache->c_arg_index].v_pointer = closure;
+    }
+
+    if (destroy_cache) {
+        PyGICClosure *destroy_notify = _pygi_destroy_notify_create ();
+        state->in_args[destroy_cache->c_arg_index].v_pointer = destroy_notify->closure;
+    }
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_enum (PyGIInvokeState   *state,
+                                      PyGICallableCache *callable_cache,
+                                      PyGIArgCache      *arg_cache,
+                                      PyObject          *py_arg,
+                                      GIArgument        *arg)
+{
+    PyObject *py_long;
+    long c_long;
+    gint is_instance;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+    GIBaseInfo *interface;
+
+    is_instance = PyObject_IsInstance (py_arg, iface_cache->py_type);
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (py_long == NULL) {
+        PyErr_Clear();
+        goto err;
+    }
+
+    c_long = PYGLIB_PyLong_AsLong (py_long);
+    Py_DECREF (py_long);
+
+    /* Write c_long into arg */
+    interface = g_type_info_get_interface (arg_cache->type_info);
+    assert(g_base_info_get_type (interface) == GI_INFO_TYPE_ENUM);
+    if (!gi_argument_from_c_long(arg,
+                                 c_long,
+                                 g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
+          g_assert_not_reached();
+          return FALSE;
+    }
+
+    /* If this is not an instance of the Enum type that we want
+     * we need to check if the value is equivilant to one of the
+     * Enum's memebers */
+    if (!is_instance) {
+        int i;
+        gboolean is_found = FALSE;
+
+        for (i = 0; i < g_enum_info_get_n_values (iface_cache->interface_info); i++) {
+            GIValueInfo *value_info =
+                g_enum_info_get_value (iface_cache->interface_info, i);
+            glong enum_value = g_value_info_get_value (value_info);
+            g_base_info_unref ( (GIBaseInfo *)value_info);
+            if (c_long == enum_value) {
+                is_found = TRUE;
+                break;
+            }
+        }
+
+        if (!is_found)
+            goto err;
+    }
+
+    return TRUE;
+
+err:
+    PyErr_Format (PyExc_TypeError, "Expected a %s, but got %s",
+                  iface_cache->type_name, py_arg->ob_type->tp_name);
+    return FALSE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_flags (PyGIInvokeState   *state,
+                                       PyGICallableCache *callable_cache,
+                                       PyGIArgCache      *arg_cache,
+                                       PyObject          *py_arg,
+                                       GIArgument        *arg)
+{
+    PyObject *py_long;
+    long c_long;
+    gint is_instance;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+    GIBaseInfo *interface;
+
+    is_instance = PyObject_IsInstance (py_arg, iface_cache->py_type);
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (py_long == NULL) {
+        PyErr_Clear ();
+        goto err;
+    }
+
+    c_long = PYGLIB_PyLong_AsLong (py_long);
+    Py_DECREF (py_long);
+
+    /* only 0 or argument of type Flag is allowed */
+    if (!is_instance && c_long != 0)
+        goto err;
+
+    /* Write c_long into arg */
+    interface = g_type_info_get_interface (arg_cache->type_info);
+    g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_FLAGS);
+    if (!gi_argument_from_c_long(arg, c_long,
+                                 g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
+        return FALSE;
+    }
+
+    return TRUE;
+
+err:
+    PyErr_Format (PyExc_TypeError, "Expected a %s, but got %s",
+                  iface_cache->type_name, py_arg->ob_type->tp_name);
+    return FALSE;
+
+}
+
+gboolean
+_pygi_marshal_from_py_interface_struct (PyGIInvokeState   *state,
+                                        PyGICallableCache *callable_cache,
+                                        PyGIArgCache      *arg_cache,
+                                        PyObject          *py_arg,
+                                        GIArgument        *arg)
+{
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    /* FIXME: handle this large if statement in the cache
+     *        and set the correct marshaller
+     */
+
+    if (iface_cache->g_type == G_TYPE_CLOSURE) {
+        GClosure *closure;
+        GType object_gtype = pyg_type_from_object_strict (py_arg, FALSE);
+
+        if ( !(PyCallable_Check(py_arg) || 
+               g_type_is_a (object_gtype, G_TYPE_CLOSURE))) {
+            PyErr_Format (PyExc_TypeError, "Must be callable, not %s",
+                          py_arg->ob_type->tp_name);
+            return FALSE;
+        }
+
+        if (g_type_is_a (object_gtype, G_TYPE_CLOSURE))
+            closure = (GClosure *)pyg_boxed_get (py_arg, void);
+        else
+            closure = pyg_closure_new (py_arg, NULL, NULL);
+
+        if (closure == NULL) {
+            PyErr_SetString (PyExc_RuntimeError, "PyObject conversion to GClosure failed");
+            return FALSE;
+        }
+
+        arg->v_pointer = closure;
+        return TRUE;
+    } else if (iface_cache->g_type == G_TYPE_VALUE) {
+        GValue *value;
+        GType object_type;
+
+        object_type = pyg_type_from_object_strict ( (PyObject *) py_arg->ob_type, FALSE);
+        if (object_type == G_TYPE_INVALID) {
+            PyErr_SetString (PyExc_RuntimeError, "unable to retrieve object's GType");
+            return FALSE;
+        }
+
+        /* if already a gvalue, use that, else marshal into gvalue */
+        if (object_type == G_TYPE_VALUE) {
+            value = (GValue *)( (PyGObject *)py_arg)->obj;
+        } else {
+            value = g_slice_new0 (GValue);
+            g_value_init (value, object_type);
+            if (pyg_value_from_pyobject (value, py_arg) < 0) {
+                g_slice_free (GValue, value);
+                PyErr_SetString (PyExc_RuntimeError, "PyObject conversion to GValue failed");
+                return FALSE;
+            }
+        }
+
+        arg->v_pointer = value;
+        return TRUE;
+    } else if (iface_cache->is_foreign) {
+        PyObject *success;
+        success = pygi_struct_foreign_convert_to_g_argument (py_arg,
+                                                             iface_cache->interface_info,
+                                                             arg_cache->transfer,
+                                                             arg);
+
+        return (success == Py_None);
+    } else if (!PyObject_IsInstance (py_arg, iface_cache->py_type)) {
+        /* first check to see if this is a member of the expected union */
+        if (!_is_union_member (iface_cache, py_arg)) {
+            if (!PyErr_Occurred()) {
+                PyObject *module = PyObject_GetAttrString(py_arg, "__module__");
+
+                PyErr_Format (PyExc_TypeError, "argument %s: Expected %s, but got %s%s%s",
+                              arg_cache->arg_name ? arg_cache->arg_name : "self",
+                              iface_cache->type_name,
+                              module ? PYGLIB_PyUnicode_AsString(module) : "",
+                              module ? "." : "",
+                              py_arg->ob_type->tp_name);
+                if (module)
+                    Py_DECREF (module);
+            }
+
+            return FALSE;
+        }
+    }
+
+    if (g_type_is_a (iface_cache->g_type, G_TYPE_BOXED)) {
+        arg->v_pointer = pyg_boxed_get (py_arg, void);
+        if (arg_cache->transfer == GI_TRANSFER_EVERYTHING) {
+            arg->v_pointer = g_boxed_copy (iface_cache->g_type, arg->v_pointer);
+        }
+    } else if (g_type_is_a (iface_cache->g_type, G_TYPE_POINTER) ||
+                   g_type_is_a (iface_cache->g_type, G_TYPE_VARIANT) ||
+                       iface_cache->g_type  == G_TYPE_NONE) {
+        arg->v_pointer = pyg_pointer_get (py_arg, void);
+    } else {
+        PyErr_Format (PyExc_NotImplementedError,
+                      "structure type '%s' is not supported yet",
+                      g_type_name(iface_cache->g_type));
+        return FALSE;
+    }
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_boxed (PyGIInvokeState   *state,
+                                       PyGICallableCache *callable_cache,
+                                       PyGIArgCache      *arg_cache,
+                                       PyObject          *py_arg,
+                                       GIArgument        *arg)
+{
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling for this type is not implemented yet");
+    return FALSE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_object (PyGIInvokeState   *state,
+                                        PyGICallableCache *callable_cache,
+                                        PyGIArgCache      *arg_cache,
+                                        PyObject          *py_arg,
+                                        GIArgument        *arg)
+{
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    if (!PyObject_IsInstance (py_arg, ( (PyGIInterfaceCache *)arg_cache)->py_type)) {
+        PyObject *module = PyObject_GetAttrString(py_arg, "__module__");
+
+        PyErr_Format (PyExc_TypeError, "argument %s: Expected %s, but got %s%s%s",
+                      arg_cache->arg_name ? arg_cache->arg_name : "self",
+                      ( (PyGIInterfaceCache *)arg_cache)->type_name,
+                      module ? PYGLIB_PyUnicode_AsString(module) : "",
+                      module ? "." : "",
+                      py_arg->ob_type->tp_name);
+        if (module)
+            Py_DECREF (module);
+        return FALSE;
+    }
+
+    arg->v_pointer = pygobject_get(py_arg);
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        g_object_ref (arg->v_pointer);
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_union (PyGIInvokeState   *state,
+                                       PyGICallableCache *callable_cache,
+                                       PyGIArgCache      *arg_cache,
+                                       PyObject          *py_arg,
+                                       GIArgument        *arg)
+{
+    PyErr_Format(PyExc_NotImplementedError,
+                 "Marshalling for this type is not implemented yet");
+    return FALSE;
+}
+
+gboolean _pygi_marshal_from_py_interface_instance (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg)
+{
+    GIInfoType info_type;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+    info_type = g_base_info_get_type (iface_cache->interface_info);
+    switch (info_type) {
+        case GI_INFO_TYPE_UNION:
+        case GI_INFO_TYPE_STRUCT:
+        {
+            GType type = iface_cache->g_type;
+
+            if (!PyObject_IsInstance (py_arg, iface_cache->py_type)) {
+                /* wait, we might be a member of a union so manually check */
+                if (!_is_union_member (iface_cache, py_arg)) {
+                    if (!PyErr_Occurred()) {
+                        PyObject *module = PyObject_GetAttrString(py_arg, "__module__");
+                        PyErr_Format (PyExc_TypeError,
+                                      "argument %s: Expected a %s, but got %s%s%s",
+                                      arg_cache->arg_name ? arg_cache->arg_name : "self",
+                                      iface_cache->type_name,
+                                      module ? PYGLIB_PyUnicode_AsString(module) : "",
+                                      module ? "." : "",
+                                      py_arg->ob_type->tp_name);
+                        if (module)
+                            Py_DECREF (module);
+                    }
+                    return FALSE;
+                }
+            }
+
+            if (g_type_is_a (type, G_TYPE_BOXED)) {
+                arg->v_pointer = pyg_boxed_get (py_arg, void);
+            } else if (g_type_is_a (type, G_TYPE_POINTER) ||
+                           g_type_is_a (type, G_TYPE_VARIANT) ||
+                               type == G_TYPE_NONE) {
+                arg->v_pointer = pyg_pointer_get (py_arg, void);
+            } else {
+                 PyErr_Format (PyExc_TypeError, "unable to convert an instance of '%s'", g_type_name (type));
+                 return FALSE;
+            }
+
+            break;
+        }
+        case GI_INFO_TYPE_OBJECT:
+        case GI_INFO_TYPE_INTERFACE:
+            arg->v_pointer = pygobject_get (py_arg);
+            if (arg->v_pointer != NULL) {
+                GType obj_type = G_OBJECT_TYPE (( GObject *)arg->v_pointer);
+                GType expected_type = iface_cache->g_type;
+
+                if (!g_type_is_a (obj_type, expected_type)) {
+                    PyObject *module = PyObject_GetAttrString(py_arg, "__module__");
+                    PyErr_Format (PyExc_TypeError, "argument %s: Expected %s, but got %s%s%s",
+                                  arg_cache->arg_name ? arg_cache->arg_name : "self",
+                                  iface_cache->type_name,
+                                  module ? PYGLIB_PyUnicode_AsString(module) : "",
+                                  module ? "." : "",
+                                  py_arg->ob_type->tp_name);
+                    if (module)
+                        Py_DECREF (module);
+                    return FALSE;
+                }
+            }
+            break;
+        default:
+            /* Other types don't have methods. */
+            g_assert_not_reached ();
+   }
+
+   return TRUE;
+}
diff --git a/gi/pygi-marshal-from-py.h b/gi/pygi-marshal-from-py.h
new file mode 100644 (file)
index 0000000..b82f890
--- /dev/null
@@ -0,0 +1,189 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGI_MARSHAL_from_py_PY_H__
+#define __PYGI_MARSHAL_from_py_PY_H__
+
+#include <Python.h>
+
+#include <girepository.h>
+
+#include "pygi-private.h"
+
+G_BEGIN_DECLS
+
+gboolean _pygi_marshal_from_py_ssize_t     (PyGIArgCache      *arg_cache,
+                                            Py_ssize_t         size,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_void        (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_boolean     (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_int8        (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_uint8       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_int16       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_uint16      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_int32       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_uint32      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_int64       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_uint64      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_float       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_double      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_unichar     (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_gtype       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_utf8        (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_filename    (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_array       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_glist       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_gslist      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_ghash       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_gerror      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_callback (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_enum     (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_flags    (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_struct   (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_interface(PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_boxed    (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_object   (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_union    (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_instance (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+
+G_END_DECLS
+
+#endif /* __PYGI_MARSHAL_from_py_PY__ */
diff --git a/gi/pygi-marshal-to-py.c b/gi/pygi-marshal-to-py.c
new file mode 100644 (file)
index 0000000..811d8b0
--- /dev/null
@@ -0,0 +1,909 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>,  Red Hat, Inc.
+ *
+ *   pygi-marshal-from-py.c: functions for converting C types to PyObject
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#include "pygi-private.h"
+
+#include <string.h>
+#include <time.h>
+
+#include <pyglib.h>
+#include <pygobject.h>
+#include <pyglib-python-compat.h>
+
+#include "pygi-cache.h"
+#include "pygi-marshal-cleanup.h"
+#include "pygi-marshal-to-py.h"
+
+gboolean
+gi_argument_to_c_long (GIArgument *arg_in,
+                       long *c_long_out,
+                       GITypeTag type_tag)
+{
+    switch (type_tag) {
+      case GI_TYPE_TAG_INT8:
+          *c_long_out = arg_in->v_int8;
+          return TRUE;
+      case GI_TYPE_TAG_UINT8:
+          *c_long_out = arg_in->v_uint8;
+          return TRUE;
+      case GI_TYPE_TAG_INT16:
+          *c_long_out = arg_in->v_int16;
+          return TRUE;
+      case GI_TYPE_TAG_UINT16:
+          *c_long_out = arg_in->v_uint16;
+          return TRUE;
+      case GI_TYPE_TAG_INT32:
+          *c_long_out = arg_in->v_int32;
+          return TRUE;
+      case GI_TYPE_TAG_UINT32:
+          *c_long_out = arg_in->v_uint32;
+          return TRUE;
+      case GI_TYPE_TAG_INT64:
+          *c_long_out = arg_in->v_int64;
+          return TRUE;
+      case GI_TYPE_TAG_UINT64:
+          *c_long_out = arg_in->v_uint64;
+          return TRUE;
+      default:
+          PyErr_Format (PyExc_TypeError,
+                        "Unable to marshal %s to C long",
+                        g_type_tag_to_string (type_tag));
+          return FALSE;
+    }
+}
+
+gboolean
+gi_argument_to_gsize (GIArgument *arg_in,
+                      gsize      *gsize_out,
+                      GITypeTag   type_tag)
+{
+    switch (type_tag) {
+      case GI_TYPE_TAG_INT8:
+          *gsize_out = arg_in->v_int8;
+          return TRUE;
+      case GI_TYPE_TAG_UINT8:
+          *gsize_out = arg_in->v_uint8;
+          return TRUE;
+      case GI_TYPE_TAG_INT16:
+          *gsize_out = arg_in->v_int16;
+          return TRUE;
+      case GI_TYPE_TAG_UINT16:
+          *gsize_out = arg_in->v_uint16;
+          return TRUE;
+      case GI_TYPE_TAG_INT32:
+          *gsize_out = arg_in->v_int32;
+          return TRUE;
+      case GI_TYPE_TAG_UINT32:
+          *gsize_out = arg_in->v_uint32;
+          return TRUE;
+      case GI_TYPE_TAG_INT64:
+          *gsize_out = arg_in->v_int64;
+          return TRUE;
+      case GI_TYPE_TAG_UINT64:
+          *gsize_out = arg_in->v_uint64;
+          return TRUE;
+      default:
+          PyErr_Format (PyExc_TypeError,
+                        "Unable to marshal %s to gsize",
+                        g_type_tag_to_string (type_tag));
+          return FALSE;
+    }
+}
+
+
+PyObject *
+_pygi_marshal_to_py_void (PyGIInvokeState   *state,
+                          PyGICallableCache *callable_cache,
+                          PyGIArgCache      *arg_cache,
+                          GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+    if (arg_cache->is_pointer)
+        py_obj = arg->v_pointer;
+    else
+        py_obj = Py_None;
+
+    Py_XINCREF (py_obj);
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_boolean (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             GIArgument        *arg)
+{
+    PyObject *py_obj = PyBool_FromLong (arg->v_boolean);
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_int8 (PyGIInvokeState   *state,
+                          PyGICallableCache *callable_cache,
+                          PyGIArgCache      *arg_cache,
+                          GIArgument        *arg)
+{
+    PyObject *py_obj = PYGLIB_PyLong_FromLong (arg->v_int8);
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_uint8 (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj =  PYGLIB_PyLong_FromLong (arg->v_uint8);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_int16 (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj =  PYGLIB_PyLong_FromLong (arg->v_int16);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_uint16 (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    PyObject *py_obj =  PYGLIB_PyLong_FromLong (arg->v_uint16);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_int32 (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj = PYGLIB_PyLong_FromLong (arg->v_int32);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_uint32 (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    PyObject *py_obj = PyLong_FromLongLong (arg->v_uint32);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_int64 (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj = PyLong_FromLongLong (arg->v_int64);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_uint64 (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    PyObject *py_obj = PyLong_FromUnsignedLongLong (arg->v_uint64);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_float (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj = PyFloat_FromDouble (arg->v_float);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_double (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    PyObject *py_obj = PyFloat_FromDouble (arg->v_double);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_unichar (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    /* Preserve the bidirectional mapping between 0 and "" */
+    if (arg->v_uint32 == 0) {
+        py_obj = PYGLIB_PyUnicode_FromString ("");
+    } else if (g_unichar_validate (arg->v_uint32)) {
+        gchar utf8[6];
+        gint bytes;
+
+        bytes = g_unichar_to_utf8 (arg->v_uint32, utf8);
+        py_obj = PYGLIB_PyUnicode_FromStringAndSize ((char*)utf8, bytes);
+    } else {
+        /* TODO: Convert the error to an exception. */
+        PyErr_Format (PyExc_TypeError,
+                      "Invalid unicode codepoint %" G_GUINT32_FORMAT,
+                      arg->v_uint32);
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_gtype (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    py_obj = pyg_type_wrapper_new ( (GType)arg->v_long);
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_utf8 (PyGIInvokeState   *state,
+                          PyGICallableCache *callable_cache,
+                          PyGIArgCache      *arg_cache,
+                          GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+    if (arg->v_string == NULL) {
+        py_obj = Py_None;
+        Py_INCREF (py_obj);
+        return py_obj;
+     }
+
+    py_obj = PYGLIB_PyUnicode_FromString (arg->v_string);
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_filename (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              GIArgument        *arg)
+{
+    gchar *string;
+    PyObject *py_obj = NULL;
+    GError *error = NULL;
+
+    if (arg->v_string == NULL) {
+        py_obj = Py_None;
+        Py_INCREF (py_obj);
+        return py_obj;
+    }
+
+    string = g_filename_to_utf8 (arg->v_string, -1, NULL, NULL, &error);
+    if (string == NULL) {
+        PyErr_SetString (PyExc_Exception, error->message);
+        /* TODO: Convert the error to an exception. */
+        return NULL;
+    }
+
+    py_obj = PYGLIB_PyUnicode_FromString (string);
+    g_free (string);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_array (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    GArray *array_;
+    PyObject *py_obj = NULL;
+    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+    gsize processed_items = 0;
+
+     /* GArrays make it easier to iterate over arrays
+      * with different element sizes but requires that
+      * we allocate a GArray if the argument was a C array
+      */
+    if (seq_cache->array_type == GI_ARRAY_TYPE_C) {
+        gsize len;
+        if (seq_cache->fixed_size >= 0) {
+            g_assert(arg->v_pointer != NULL);
+            len = seq_cache->fixed_size;
+        } else if (seq_cache->is_zero_terminated) {
+            if (arg->v_pointer == NULL) {
+                len = 0;
+            } else if (seq_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8) {
+                len = strlen (arg->v_pointer);
+            } else {
+                len = g_strv_length ((gchar **)arg->v_pointer);
+            }
+        } else {
+            GIArgument *len_arg = state->args[seq_cache->len_arg_index];
+
+            if (!gi_argument_to_gsize (len_arg,
+                                       &len,
+                                       callable_cache->args_cache[seq_cache->len_arg_index]->type_tag)) {
+                return NULL;
+            }
+        }
+
+        array_ = g_array_new (FALSE,
+                              FALSE,
+                              seq_cache->item_size);
+        if (array_ == NULL) {
+            PyErr_NoMemory ();
+
+            if (arg_cache->transfer == GI_TRANSFER_EVERYTHING && arg->v_pointer != NULL)
+                g_free (arg->v_pointer);
+
+            return NULL;
+        }
+
+        if (array_->data != NULL) 
+            g_free (array_->data);
+        array_->data = arg->v_pointer;
+        array_->len = len;
+    } else {
+        array_ = arg->v_pointer;
+    }
+
+    if (seq_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8) {
+        if (arg->v_pointer == NULL) {
+            py_obj = PYGLIB_PyBytes_FromString ("");
+        } else {
+            py_obj = PYGLIB_PyBytes_FromStringAndSize (array_->data, array_->len);
+        }
+    } else {
+        if (arg->v_pointer == NULL) {
+            py_obj = PyList_New (0);
+        } else {
+            int i;
+
+            gsize item_size;
+            PyGIMarshalToPyFunc item_to_py_marshaller;
+            PyGIArgCache *item_arg_cache;
+
+            py_obj = PyList_New (array_->len);
+            if (py_obj == NULL)
+                goto err;
+
+
+            item_arg_cache = seq_cache->item_cache;
+            item_to_py_marshaller = item_arg_cache->to_py_marshaller;
+
+            item_size = g_array_get_element_size (array_);
+
+            for (i = 0; i < array_->len; i++) {
+                GIArgument item_arg;
+                PyObject *py_item;
+
+                if (seq_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
+                    item_arg.v_pointer = g_ptr_array_index ( ( GPtrArray *)array_, i);
+                } else if (item_arg_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
+                    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *) item_arg_cache;
+                    gboolean is_gvariant = iface_cache->g_type == G_TYPE_VARIANT;
+
+                    // FIXME: This probably doesn't work with boxed types or gvalues. See fx. _pygi_marshal_from_py_array()
+                    switch (g_base_info_get_type (iface_cache->interface_info)) {
+                        case GI_INFO_TYPE_STRUCT:
+                            if (is_gvariant) {
+                              g_assert (item_size == sizeof (gpointer));
+                              if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+                                item_arg.v_pointer = g_variant_ref_sink (g_array_index (array_, gpointer, i));
+                              else
+                                item_arg.v_pointer = g_array_index (array_, gpointer, i);
+                            } else if (arg_cache->transfer == GI_TRANSFER_EVERYTHING) {
+                                gpointer *_struct = g_malloc (item_size);
+                                memcpy (_struct, array_->data + i * item_size,
+                                        item_size);
+                                item_arg.v_pointer = _struct;
+                            } else
+                                item_arg.v_pointer = array_->data + i * item_size;
+                            break;
+                        default:
+                            item_arg.v_pointer = g_array_index (array_, gpointer, i);
+                            break;
+                    }
+                } else {
+                    memcpy (&item_arg, array_->data + i * item_size, item_size);
+                }
+
+                py_item = item_to_py_marshaller ( state,
+                                                callable_cache,
+                                                item_arg_cache,
+                                                &item_arg);
+
+                if (py_item == NULL) {
+                    Py_CLEAR (py_obj);
+
+                    if (seq_cache->array_type == GI_ARRAY_TYPE_C)
+                        g_array_unref (array_);
+
+                    goto err;
+                }
+                PyList_SET_ITEM (py_obj, i, py_item);
+                processed_items++;
+            }
+        }
+    }
+
+    if (seq_cache->array_type == GI_ARRAY_TYPE_C)
+        g_array_free (array_, FALSE);
+
+    return py_obj;
+
+err:
+    if (seq_cache->array_type == GI_ARRAY_TYPE_C) {
+        g_array_free (array_, arg_cache->transfer == GI_TRANSFER_EVERYTHING);
+    } else {
+        /* clean up unprocessed items */
+        if (seq_cache->item_cache->to_py_cleanup != NULL) {
+            int j;
+            PyGIMarshalCleanupFunc cleanup_func = seq_cache->item_cache->to_py_cleanup;
+            for (j = processed_items; j < array_->len; j++) {
+                cleanup_func (state,
+                              seq_cache->item_cache,
+                              g_array_index (array_, gpointer, j),
+                              FALSE);
+            }
+        }
+
+        if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+            g_array_free (array_, TRUE);
+    }
+
+    return NULL;
+}
+
+PyObject *
+_pygi_marshal_to_py_glist (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    GList *list_;
+    gsize length;
+    gsize i;
+
+    PyGIMarshalToPyFunc item_to_py_marshaller;
+    PyGIArgCache *item_arg_cache;
+    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+
+    PyObject *py_obj = NULL;
+
+    list_ = arg->v_pointer;
+    length = g_list_length (list_);
+
+    py_obj = PyList_New (length);
+    if (py_obj == NULL)
+        return NULL;
+
+    item_arg_cache = seq_cache->item_cache;
+    item_to_py_marshaller = item_arg_cache->to_py_marshaller;
+
+    for (i = 0; list_ != NULL; list_ = g_list_next (list_), i++) {
+        GIArgument item_arg;
+        PyObject *py_item;
+
+        item_arg.v_pointer = list_->data;
+        _pygi_hash_pointer_to_arg (&item_arg, item_arg_cache->type_tag);
+        py_item = item_to_py_marshaller (state,
+                                         callable_cache,
+                                         item_arg_cache,
+                                         &item_arg);
+
+        if (py_item == NULL) {
+            Py_CLEAR (py_obj);
+            _PyGI_ERROR_PREFIX ("Item %zu: ", i);
+            return NULL;
+        }
+
+        PyList_SET_ITEM (py_obj, i, py_item);
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_gslist (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    GSList *list_;
+    gsize length;
+    gsize i;
+
+    PyGIMarshalToPyFunc item_to_py_marshaller;
+    PyGIArgCache *item_arg_cache;
+    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+
+    PyObject *py_obj = NULL;
+
+    list_ = arg->v_pointer;
+    length = g_slist_length (list_);
+
+    py_obj = PyList_New (length);
+    if (py_obj == NULL)
+        return NULL;
+
+    item_arg_cache = seq_cache->item_cache;
+    item_to_py_marshaller = item_arg_cache->to_py_marshaller;
+
+    for (i = 0; list_ != NULL; list_ = g_slist_next (list_), i++) {
+        GIArgument item_arg;
+        PyObject *py_item;
+
+        item_arg.v_pointer = list_->data;
+        _pygi_hash_pointer_to_arg (&item_arg, item_arg_cache->type_tag);
+        py_item = item_to_py_marshaller (state,
+                                        callable_cache,
+                                        item_arg_cache,
+                                        &item_arg);
+
+        if (py_item == NULL) {
+            Py_CLEAR (py_obj);
+            _PyGI_ERROR_PREFIX ("Item %zu: ", i);
+            return NULL;
+        }
+
+        PyList_SET_ITEM (py_obj, i, py_item);
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_ghash (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    GHashTable *hash_;
+    GHashTableIter hash_table_iter;
+
+    PyGIMarshalToPyFunc key_to_py_marshaller;
+    PyGIMarshalToPyFunc value_to_py_marshaller;
+
+    PyGIArgCache *key_arg_cache;
+    PyGIArgCache *value_arg_cache;
+    PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
+
+    GIArgument key_arg;
+    GIArgument value_arg;
+
+    PyObject *py_obj = NULL;
+
+    hash_ = arg->v_pointer;
+
+    if (hash_ == NULL) {
+        py_obj = Py_None;
+        Py_INCREF (py_obj);
+        return py_obj;
+    }
+
+    py_obj = PyDict_New ();
+    if (py_obj == NULL)
+        return NULL;
+
+    key_arg_cache = hash_cache->key_cache;
+    key_to_py_marshaller = key_arg_cache->to_py_marshaller;
+
+    value_arg_cache = hash_cache->value_cache;
+    value_to_py_marshaller = value_arg_cache->to_py_marshaller;
+
+    g_hash_table_iter_init (&hash_table_iter, hash_);
+    while (g_hash_table_iter_next (&hash_table_iter,
+                                   &key_arg.v_pointer,
+                                   &value_arg.v_pointer)) {
+        PyObject *py_key;
+        PyObject *py_value;
+        int retval;
+
+
+        _pygi_hash_pointer_to_arg (&key_arg, hash_cache->key_cache->type_tag);
+        py_key = key_to_py_marshaller ( state,
+                                      callable_cache,
+                                      key_arg_cache,
+                                     &key_arg);
+
+        if (py_key == NULL) {
+            Py_CLEAR (py_obj);
+            return NULL;
+        }
+
+        _pygi_hash_pointer_to_arg (&value_arg, hash_cache->value_cache->type_tag);
+        py_value = value_to_py_marshaller ( state,
+                                          callable_cache,
+                                          value_arg_cache,
+                                         &value_arg);
+
+        if (py_value == NULL) {
+            Py_CLEAR (py_obj);
+            Py_DECREF(py_key);
+            return NULL;
+        }
+
+        retval = PyDict_SetItem (py_obj, py_key, py_value);
+
+        Py_DECREF (py_key);
+        Py_DECREF (py_value);
+
+        if (retval < 0) {
+            Py_CLEAR (py_obj);
+            return NULL;
+        }
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_gerror (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    GError *error = arg->v_pointer;
+    PyObject *py_obj = NULL;
+
+    py_obj = pyglib_error_marshal(&error);
+
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING && error != NULL) {
+        g_error_free (error);
+    }
+
+    if (py_obj != NULL) {
+        return py_obj;
+    } else {
+        Py_RETURN_NONE;
+    }
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_callback (PyGIInvokeState   *state,
+                                        PyGICallableCache *callable_cache,
+                                        PyGIArgCache      *arg_cache,
+                                        GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling a callback to PyObject is not supported");
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_enum (PyGIInvokeState   *state,
+                                    PyGICallableCache *callable_cache,
+                                    PyGIArgCache      *arg_cache,
+                                    GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+    GIBaseInfo *interface;
+    long c_long;
+
+    interface = g_type_info_get_interface (arg_cache->type_info);
+    g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_ENUM);
+
+    if (!gi_argument_to_c_long(arg, &c_long,
+                               g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
+        return NULL;
+    }
+
+    if (iface_cache->g_type == G_TYPE_NONE) {
+        py_obj = PyObject_CallFunction (iface_cache->py_type, "l", c_long);
+    } else {
+        py_obj = pyg_enum_from_gtype (iface_cache->g_type, c_long);
+    }
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_flags (PyGIInvokeState   *state,
+                                     PyGICallableCache *callable_cache,
+                                     PyGIArgCache      *arg_cache,
+                                     GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+    GIBaseInfo *interface;
+    long c_long;
+
+    interface = g_type_info_get_interface (arg_cache->type_info);
+    g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_FLAGS);
+
+    if (!gi_argument_to_c_long(arg, &c_long,
+                               g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
+        return NULL;
+    }
+
+    if (iface_cache->g_type == G_TYPE_NONE) {
+        /* An enum with a GType of None is an enum without GType */
+
+        PyObject *py_type = _pygi_type_import_by_gi_info (iface_cache->interface_info);
+        PyObject *py_args = NULL;
+
+        if (!py_type)
+            return NULL;
+
+        py_args = PyTuple_New (1);
+        if (PyTuple_SetItem (py_args, 0, PyLong_FromLong (c_long)) != 0) {
+            Py_DECREF (py_args);
+            Py_DECREF (py_type);
+            return NULL;
+        }
+
+        py_obj = PyObject_CallFunction (py_type, "l", c_long);
+
+        Py_DECREF (py_args);
+        Py_DECREF (py_type);
+    } else {
+        py_obj = pyg_flags_from_gtype (iface_cache->g_type, c_long);
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_struct (PyGIInvokeState   *state,
+                                      PyGICallableCache *callable_cache,
+                                      PyGIArgCache      *arg_cache,
+                                      GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+    GType type = iface_cache->g_type;
+
+    if (arg->v_pointer == NULL) {
+        py_obj = Py_None;
+        Py_INCREF (py_obj);
+        return py_obj;
+    }
+
+    if (g_type_is_a (type, G_TYPE_VALUE)) {
+        py_obj = pyg_value_as_pyobject (arg->v_pointer, FALSE);
+    } else if (iface_cache->is_foreign) {
+        py_obj = pygi_struct_foreign_convert_from_g_argument (iface_cache->interface_info,
+                                                              arg->v_pointer);
+    } else if (g_type_is_a (type, G_TYPE_BOXED)) {
+        py_obj = _pygi_boxed_new ( (PyTypeObject *)iface_cache->py_type, arg->v_pointer, 
+                                  arg_cache->transfer == GI_TRANSFER_EVERYTHING);
+    } else if (g_type_is_a (type, G_TYPE_POINTER)) {
+        if (iface_cache->py_type == NULL ||
+                !PyType_IsSubtype ( (PyTypeObject *)iface_cache->py_type, &PyGIStruct_Type)) {
+            g_warn_if_fail(arg_cache->transfer == GI_TRANSFER_NOTHING);
+            py_obj = pyg_pointer_new (type, arg->v_pointer);
+        } else {
+            py_obj = _pygi_struct_new ( (PyTypeObject *)iface_cache->py_type, arg->v_pointer, 
+                                       arg_cache->transfer == GI_TRANSFER_EVERYTHING);
+        }
+    } else if (g_type_is_a (type, G_TYPE_VARIANT)) {
+         g_variant_ref_sink (arg->v_pointer);
+         py_obj = _pygi_struct_new ( (PyTypeObject *)iface_cache->py_type, arg->v_pointer, 
+                                    FALSE);
+    } else if (type == G_TYPE_NONE && iface_cache->is_foreign) {
+        py_obj = pygi_struct_foreign_convert_from_g_argument (iface_cache->interface_info, arg->v_pointer);
+    } else if (type == G_TYPE_NONE) {
+        py_obj = _pygi_struct_new ( (PyTypeObject *) iface_cache->py_type, arg->v_pointer, 
+                                   arg_cache->transfer == GI_TRANSFER_EVERYTHING);
+    } else {
+        PyErr_Format (PyExc_NotImplementedError,
+                      "structure type '%s' is not supported yet",
+                      g_type_name (type));
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_interface (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling for this type is not implemented yet");
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_boxed (PyGIInvokeState   *state,
+                                     PyGICallableCache *callable_cache,
+                                     PyGIArgCache      *arg_cache,
+                                     GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling for this type is not implemented yet");
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_object (PyGIInvokeState   *state,
+                                      PyGICallableCache *callable_cache,
+                                      PyGIArgCache      *arg_cache,
+                                      GIArgument        *arg)
+{
+    PyObject *py_obj;
+
+    if (arg->v_pointer == NULL) {
+        py_obj = Py_None;
+        Py_INCREF (py_obj);
+        return py_obj;
+    }
+
+    if (G_IS_PARAM_SPEC(arg->v_pointer))
+    {
+       py_obj = pyg_param_spec_new (arg->v_pointer);
+       if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+                       g_param_spec_unref (arg->v_pointer);
+    }
+    else
+    {
+       py_obj = pygobject_new (arg->v_pointer);
+       if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+               g_object_unref (arg->v_pointer);
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_union  (PyGIInvokeState   *state,
+                                      PyGICallableCache *callable_cache,
+                                      PyGIArgCache      *arg_cache,
+                                      GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling for this type is not implemented yet");
+    return py_obj;
+}
diff --git a/gi/pygi-marshal-to-py.h b/gi/pygi-marshal-to-py.h
new file mode 100644 (file)
index 0000000..a07a13e
--- /dev/null
@@ -0,0 +1,144 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGI_MARSHAL_TO_PY_H__
+#define __PYGI_MARSHAL_TO_PY_H__
+
+PyObject *_pygi_marshal_to_py_void      (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_boolean   (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_int8      (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_uint8     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_int16     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_uint16    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_int32     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_uint32    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_int64     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_uint64    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_float     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_double    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_unichar   (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_gtype     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_utf8      (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_filename  (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_array     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_glist     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_gslist    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_ghash     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_gerror    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_callback(PyGIInvokeState   *state,
+                                                 PyGICallableCache *callable_cache,
+                                                 PyGIArgCache      *arg_cache,
+                                                 GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_enum   (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_flags  (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_struct (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_interface(PyGIInvokeState   *state,
+                                                  PyGICallableCache *callable_cache,
+                                                  PyGIArgCache      *arg_cache,
+                                                  GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_boxed  (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_object (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_union  (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+
+G_END_DECLS
+
+#endif /* __PYGI_MARSHAL_TO_PY_H__ */
index efe62c8..29ec131 100644 (file)
 #include "pygi-type.h"
 #include "pygi-foreign.h"
 #include "pygi-closure.h"
+#include "pygi-ccallback.h"
 #include "pygi-callbacks.h"
-#include "pygi-invoke.h"
 #include "pygi-property.h"
 #include "pygi-signal-closure.h"
+#include "pygi-invoke.h"
+#include "pygi-cache.h"
 
 G_BEGIN_DECLS
 #if PY_VERSION_HEX >= 0x03000000
index 2f8970d..7c83eef 100644 (file)
@@ -121,16 +121,36 @@ pygi_get_property_value_real (PyGObject *instance,
             arg.v_boolean = g_value_get_boolean (&value);
             break;
         case GI_TYPE_TAG_INT8:
+            arg.v_int8 = g_value_get_schar (&value);
+            break;
         case GI_TYPE_TAG_INT16:
         case GI_TYPE_TAG_INT32:
+            if (G_VALUE_HOLDS_LONG (&value))
+                arg.v_long = g_value_get_long (&value);
+            else
+                arg.v_int = g_value_get_int (&value);
+            break;
         case GI_TYPE_TAG_INT64:
-            arg.v_int = g_value_get_int (&value);
+            if (G_VALUE_HOLDS_LONG (&value))
+                arg.v_long = g_value_get_long (&value);
+            else
+                arg.v_int64 = g_value_get_int64 (&value);
             break;
         case GI_TYPE_TAG_UINT8:
+            arg.v_uint8 = g_value_get_uchar (&value);
+            break;
         case GI_TYPE_TAG_UINT16:
         case GI_TYPE_TAG_UINT32:
+            if (G_VALUE_HOLDS_ULONG (&value))
+                arg.v_ulong = g_value_get_ulong (&value);
+            else
+                arg.v_uint = g_value_get_uint (&value);
+            break;
         case GI_TYPE_TAG_UINT64:
-            arg.v_uint = g_value_get_uint (&value);
+            if (G_VALUE_HOLDS_ULONG (&value))
+                arg.v_ulong = g_value_get_ulong (&value);
+            else
+                arg.v_uint64 = g_value_get_uint64 (&value);
             break;
         case GI_TYPE_TAG_FLOAT:
             arg.v_float = g_value_get_float (&value);
@@ -191,8 +211,28 @@ pygi_get_property_value_real (PyGObject *instance,
             arg.v_pointer = g_value_get_boxed (&value);
             break;
         case GI_TYPE_TAG_GLIST:
+        case GI_TYPE_TAG_GSLIST:
             arg.v_pointer = g_value_get_pointer (&value);
             break;
+        case GI_TYPE_TAG_ARRAY:
+        {
+            gchar** strings;
+            GArray *arg_items;
+            int i;
+
+            strings = g_value_get_boxed (&value);
+            if (strings == NULL)
+                arg.v_pointer = NULL;
+            else {
+                arg_items = g_array_sized_new (TRUE, TRUE, sizeof (GIArgument), g_strv_length (strings));
+                g_array_set_size (arg_items, g_strv_length (strings));
+                for (i = 0; strings[i] != NULL; ++i) {
+                    g_array_index (arg_items, GIArgument, i).v_string = strings[i];
+                }
+                arg.v_pointer = arg_items;
+            }
+            break;
+        }
         default:
             PyErr_Format (PyExc_NotImplementedError,
                           "Retrieving properties of type %s is not implemented",
@@ -248,6 +288,9 @@ pygi_set_property_value_real (PyGObject *instance,
     transfer = g_property_info_get_ownership_transfer (property_info);
     arg = _pygi_argument_from_object (py_value, type_info, transfer);
 
+    if (PyErr_Occurred())
+        goto out;
+
     g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
 
     // FIXME: Lots of types still unhandled
@@ -296,16 +339,36 @@ pygi_set_property_value_real (PyGObject *instance,
             g_value_set_boolean (&value, arg.v_boolean);
             break;
         case GI_TYPE_TAG_INT8:
+            g_value_set_schar (&value, arg.v_int8);
+            break;
         case GI_TYPE_TAG_INT16:
         case GI_TYPE_TAG_INT32:
+            if (G_VALUE_HOLDS_LONG (&value))
+                g_value_set_long (&value, arg.v_long);
+            else
+                g_value_set_int (&value, arg.v_int);
+            break;
         case GI_TYPE_TAG_INT64:
-            g_value_set_int (&value, arg.v_int);
+            if (G_VALUE_HOLDS_LONG (&value))
+                g_value_set_long (&value, arg.v_long);
+            else
+                g_value_set_int64 (&value, arg.v_int64);
             break;
         case GI_TYPE_TAG_UINT8:
+            g_value_set_uchar (&value, arg.v_uint8);
+            break;
         case GI_TYPE_TAG_UINT16:
         case GI_TYPE_TAG_UINT32:
+            if (G_VALUE_HOLDS_ULONG (&value))
+                g_value_set_ulong (&value, arg.v_ulong);
+            else
+                g_value_set_uint (&value, arg.v_uint);
+            break;
         case GI_TYPE_TAG_UINT64:
-            g_value_set_uint (&value, arg.v_uint);
+            if (G_VALUE_HOLDS_ULONG (&value))
+                g_value_set_ulong (&value, arg.v_ulong);
+            else
+                g_value_set_uint64 (&value, arg.v_uint64);
             break;
         case GI_TYPE_TAG_FLOAT:
             g_value_set_float (&value, arg.v_float);
@@ -326,6 +389,23 @@ pygi_set_property_value_real (PyGObject *instance,
         case GI_TYPE_TAG_GLIST:
             g_value_set_pointer (&value, arg.v_pointer);
             break;
+        case GI_TYPE_TAG_ARRAY:
+        {
+            GArray *arg_items = (GArray*) arg.v_pointer;
+            gchar** strings;
+            int i;
+
+            if (arg_items == NULL)
+                goto out;
+
+            strings = g_new0 (char*, arg_items->len);
+            for (i = 0; i < arg_items->len; ++i) {
+                strings[i] = g_array_index (arg_items, GIArgument, i).v_string;
+            }
+            g_array_free (arg_items, TRUE);
+            g_value_set_boxed (&value, strings);
+            break;
+        }
         default:
             PyErr_Format (PyExc_NotImplementedError,
                           "Setting properties of type %s is not implemented",
index 1482529..83f9a41 100644 (file)
@@ -145,13 +145,25 @@ pygi_signal_closure_marshal(GClosure *closure,
             GITransfer transfer;
             GIArgument arg = { 0, };
             PyObject *item = NULL;
+            gboolean free_array = FALSE;
 
             g_callable_info_load_arg(signal_info, i - 1, &arg_info);
             g_arg_info_load_type(&arg_info, &type_info);
             transfer = g_arg_info_get_ownership_transfer(&arg_info);
 
             arg = _pygi_argument_from_g_value(&param_values[i], &type_info);
-            item = _pygi_argument_to_object(&arg, &type_info, transfer);
+            
+            if (g_type_info_get_tag (&type_info) == GI_TYPE_TAG_ARRAY) {
+                arg.v_pointer = _pygi_argument_to_array (&arg, NULL, NULL,
+                                                         &type_info, &free_array);
+            }
+            
+            item = _pygi_argument_to_object (&arg, &type_info, transfer);
+            
+            if (free_array) {
+                g_array_free (arg.v_pointer, FALSE);
+            }
+            
 
             if (item == NULL) {
                 goto out;
index c2e1f4d..eace77c 100644 (file)
@@ -74,6 +74,13 @@ _struct_new (PyTypeObject *type,
     }
 
     size = g_struct_info_get_size ( (GIStructInfo *) info);
+    if (size == 0) {
+        PyErr_Format (PyExc_TypeError,
+            "cannot allocate disguised struct %s.%s; consider adding a constructor to the library or to the overrides",
+            g_base_info_get_namespace (info),
+            g_base_info_get_name (info));
+        goto out;
+    }
     pointer = g_try_malloc0 (size);
     if (pointer == NULL) {
         PyErr_NoMemory();
index 1c3bf5e..121eae5 100644 (file)
--- a/gi/pygi.h
+++ b/gi/pygi.h
@@ -29,9 +29,8 @@
 #define NO_IMPORT_PYGOBJECT
 #include <pygobject.h>
 
-#if ENABLE_INTROSPECTION
-
 #include <girepository.h>
+#include "pygi-cache.h"
 
 typedef struct {
     PyObject_HEAD
@@ -42,6 +41,7 @@ typedef struct {
     PyObject_HEAD
     GIBaseInfo *info;
     PyObject *inst_weakreflist;
+    PyGICallableCache *cache;
 } PyGIBaseInfo;
 
 typedef struct {
@@ -55,12 +55,22 @@ typedef struct {
     gsize size;
 } PyGIBoxed;
 
-typedef PyObject * (*PyGIArgOverrideToGIArgumentFunc) (PyObject       *value,
-                                                      GITypeInfo     *type_info,
-                                                      GITransfer      transfer,
-                                                      GIArgument      *arg);
-typedef PyObject * (*PyGIArgOverrideFromGIArgumentFunc) (GITypeInfo *type_info,
-                                                         gpointer    data);
+typedef struct {
+    PyObject_HEAD
+    GCallback callback;
+    GIFunctionInfo *info;
+    gpointer user_data;
+    GIScopeType scope;
+    GDestroyNotify destroy_notify_func;
+    PyGICallableCache *cache;
+} PyGICCallback;
+
+typedef PyObject * (*PyGIArgOverrideToGIArgumentFunc) (PyObject        *value,
+                                                       GIInterfaceInfo *interface_info,
+                                                       GITransfer       transfer,
+                                                       GIArgument      *arg);
+typedef PyObject * (*PyGIArgOverrideFromGIArgumentFunc) (GIInterfaceInfo *interface_info,
+                                                         gpointer         data);
 typedef PyObject * (*PyGIArgOverrideReleaseFunc) (GITypeInfo *type_info,
                                                   gpointer  struct_);
 
@@ -88,20 +98,14 @@ static struct PyGI_API *PyGI_API = NULL;
 static int
 _pygi_import (void)
 {
-    PyObject *modules_dict;
-
     if (PyGI_API != NULL) {
         return 1;
     }
-
-    modules_dict = PyImport_GetModuleDict(); /* borrowed reference -- don't unref */
-    if (PyMapping_HasKeyString(modules_dict, "gi")) {
 #if PY_VERSION_HEX >= 0x03000000
-        PyGI_API = (struct PyGI_API*) PyCapsule_Import("gi._API", FALSE);
+    PyGI_API = (struct PyGI_API*) PyCapsule_Import("gi._API", FALSE);
 #else
-        PyGI_API = (struct PyGI_API*) PyCObject_Import("gi", "_API");
+    PyGI_API = (struct PyGI_API*) PyCObject_Import("gi", "_API");
 #endif
-    }
     if (PyGI_API == NULL) {
         return -1;
     }
@@ -170,39 +174,4 @@ pygi_register_foreign_struct (const char* namespace_,
     Py_RETURN_NONE;
 }
 
-#else /* ENABLE_INTROSPECTION */
-
-static inline PyObject *
-pygi_type_import_by_g_type (GType g_type)
-{
-    return NULL;
-}
-
-static inline PyObject *
-pygi_get_property_value (PyGObject *instance,
-                         const gchar *attr_name)
-{
-    return NULL;
-}
-
-static inline gint
-pygi_set_property_value (PyGObject *instance,
-                         const gchar *attr_name,
-                         PyObject *value)
-{
-    return -1;
-}
-
-static inline GClosure *
-pygi_signal_closure_new (PyGObject *instance,
-                         const gchar *sig_name,
-                         PyObject *callback,
-                         PyObject *extra_args,
-                         PyObject *swap_data)
-{
-    return NULL;
-}
-
-#endif /* ENABLE_INTROSPECTION */
-
 #endif /* __PYGI_H__ */
index 00b8b6f..113c229 100644 (file)
@@ -45,12 +45,12 @@ _pygobject_import (void)
         return 1;
     }
 
-    from_list = Py_BuildValue ("(ss)", "GObject", "GTypeWrapper");
+    from_list = Py_BuildValue ("(ss)", "GObject", "GType");
     if (from_list == NULL) {
         return -1;
     }
 
-    module = PyImport_ImportModuleEx ("gobject", NULL, NULL, from_list);
+    module = PyImport_ImportModuleEx ("gi._gobject", NULL, NULL, from_list);
 
     Py_DECREF (from_list);
 
diff --git a/gi/pygtkcompat.py b/gi/pygtkcompat.py
new file mode 100644 (file)
index 0000000..2c81d3f
--- /dev/null
@@ -0,0 +1,501 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# vim: tabstop=4 shiftwidth=4 expandtab
+#
+# Copyright (C) 2011-2012 Johan Dahlin <johan@gnome.org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+# USA
+
+"""
+PyGTK compatibility layer.
+
+This modules goes a little bit longer to maintain PyGTK compatibility than
+the normal overrides system.
+
+It is recommended to not depend on this layer, but only use it as an
+intermediate step when porting your application to PyGI.
+
+Compatibility might never be 100%, but the aim is to make it possible to run
+a well behaved PyGTK application mostly unmodified on top of PyGI.
+
+"""
+
+import sys
+import warnings
+
+try:
+    # Python 3
+    from collections import UserList
+    from imp import reload
+    UserList  # pyflakes
+except ImportError:
+    # Python 2 ships that in a different module
+    from UserList import UserList
+    UserList  # pyflakes
+
+import gi
+from gi.repository import GObject
+
+
+def _install_enums(module, dest=None, strip=''):
+    if dest is None:
+        dest = module
+    modname = dest.__name__.rsplit('.', 1)[1].upper()
+    for attr in dir(module):
+        try:
+            obj = getattr(module, attr, None)
+        except:
+            continue
+        try:
+            if issubclass(obj, GObject.GEnum):
+                for value, enum in obj.__enum_values__.items():
+                    name = enum.value_name
+                    name = name.replace(modname + '_', '')
+                    if strip and name.startswith(strip):
+                        name = name[len(strip):]
+                    setattr(dest, name, enum)
+        except TypeError:
+            continue
+        try:
+            if issubclass(obj, GObject.GFlags):
+                for value, flag in obj.__flags_values__.items():
+                    name = flag.value_names[-1].replace(modname + '_', '')
+                    setattr(dest, name, flag)
+        except TypeError:
+            continue
+
+
+def enable():
+    # gobject
+    from gi.repository import GLib
+    sys.modules['glib'] = GLib
+
+    # gobject
+    from gi.repository import GObject
+    sys.modules['gobject'] = GObject
+    from gi._gobject import propertyhelper
+    sys.modules['gobject.propertyhelper'] = propertyhelper
+
+    # gio
+    from gi.repository import Gio
+    sys.modules['gio'] = Gio
+
+_unset = object()
+
+
+def enable_gtk(version='2.0'):
+    # set the default encoding like PyGTK
+    reload(sys)
+    if sys.version_info < (3, 0):
+        sys.setdefaultencoding('utf-8')
+
+    # atk
+    gi.require_version('Atk', '1.0')
+    from gi.repository import Atk
+    sys.modules['atk'] = Atk
+    _install_enums(Atk)
+
+    # pango
+    gi.require_version('Pango', '1.0')
+    from gi.repository import Pango
+    sys.modules['pango'] = Pango
+    _install_enums(Pango)
+
+    # pangocairo
+    gi.require_version('PangoCairo', '1.0')
+    from gi.repository import PangoCairo
+    sys.modules['pangocairo'] = PangoCairo
+
+    # gdk
+    gi.require_version('Gdk', version)
+    gi.require_version('GdkPixbuf', '2.0')
+    from gi.repository import Gdk
+    from gi.repository import GdkPixbuf
+    sys.modules['gtk.gdk'] = Gdk
+    _install_enums(Gdk)
+    _install_enums(GdkPixbuf, dest=Gdk)
+    Gdk._2BUTTON_PRESS = 5
+    Gdk.BUTTON_PRESS = 4
+
+    Gdk.screen_get_default = Gdk.Screen.get_default
+    Gdk.Pixbuf = GdkPixbuf.Pixbuf
+    Gdk.PixbufLoader = GdkPixbuf.PixbufLoader.new_with_type
+    Gdk.pixbuf_new_from_data = GdkPixbuf.Pixbuf.new_from_data
+    Gdk.pixbuf_new_from_file = GdkPixbuf.Pixbuf.new_from_file
+    Gdk.pixbuf_new_from_file_at_scale = GdkPixbuf.Pixbuf.new_from_file_at_scale
+    Gdk.pixbuf_new_from_file_at_size = GdkPixbuf.Pixbuf.new_from_file_at_size
+    Gdk.pixbuf_new_from_inline = GdkPixbuf.Pixbuf.new_from_inline
+    Gdk.pixbuf_new_from_stream = GdkPixbuf.Pixbuf.new_from_stream
+    Gdk.pixbuf_new_from_stream_at_scale = GdkPixbuf.Pixbuf.new_from_stream_at_scale
+    Gdk.pixbuf_new_from_xpm_data = GdkPixbuf.Pixbuf.new_from_xpm_data
+    Gdk.pixbuf_get_file_info = GdkPixbuf.Pixbuf.get_file_info
+
+    orig_get_formats = GdkPixbuf.Pixbuf.get_formats
+
+    def get_formats():
+        formats = orig_get_formats()
+        result = []
+
+        def make_dict(format_):
+            result = {}
+            result['description'] = format_.get_description()
+            result['name'] = format_.get_name()
+            result['mime_types'] = format_.get_mime_types()
+            result['extensions'] = format_.get_extensions()
+            return result
+
+        for format_ in formats:
+            result.append(make_dict(format_))
+        return result
+
+    Gdk.pixbuf_get_formats = get_formats
+
+    orig_get_frame_extents = Gdk.Window.get_frame_extents
+
+    def get_frame_extents(window):
+        try:
+            try:
+                rect = Gdk.Rectangle(0, 0, 0, 0)
+            except TypeError:
+                rect = Gdk.Rectangle()
+            orig_get_frame_extents(window, rect)
+        except TypeError:
+            rect = orig_get_frame_extents(window)
+        return rect
+    Gdk.Window.get_frame_extents = get_frame_extents
+
+    orig_get_origin = Gdk.Window.get_origin
+
+    def get_origin(self):
+        return orig_get_origin(self)[1:]
+    Gdk.Window.get_origin = get_origin
+
+    Gdk.screen_width = Gdk.Screen.width
+    Gdk.screen_height = Gdk.Screen.height
+
+    # gtk
+    gi.require_version('Gtk', version)
+    from gi.repository import Gtk
+    sys.modules['gtk'] = Gtk
+    Gtk.gdk = Gdk
+
+    Gtk.pygtk_version = (2, 99, 0)
+
+    Gtk.gtk_version = (Gtk.MAJOR_VERSION,
+                       Gtk.MINOR_VERSION,
+                       Gtk.MICRO_VERSION)
+    _install_enums(Gtk)
+
+    # Action
+
+    def set_tool_item_type(menuaction, gtype):
+        warnings.warn('set_tool_item_type() is not supported',
+                      DeprecationWarning, stacklevel=2)
+    Gtk.Action.set_tool_item_type = classmethod(set_tool_item_type)
+
+    # Alignment
+
+    orig_Alignment = Gtk.Alignment
+
+    class Alignment(orig_Alignment):
+        def __init__(self, xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0):
+            orig_Alignment.__init__(self)
+            self.props.xalign = xalign
+            self.props.yalign = yalign
+            self.props.xscale = xscale
+            self.props.yscale = yscale
+
+    Gtk.Alignment = Alignment
+
+    # Box
+
+    orig_pack_end = Gtk.Box.pack_end
+
+    def pack_end(self, child, expand=True, fill=True, padding=0):
+        orig_pack_end(self, child, expand, fill, padding)
+    Gtk.Box.pack_end = pack_end
+
+    orig_pack_start = Gtk.Box.pack_start
+
+    def pack_start(self, child, expand=True, fill=True, padding=0):
+        orig_pack_start(self, child, expand, fill, padding)
+    Gtk.Box.pack_start = pack_start
+
+    # TreeViewColumn
+
+    orig_tree_view_column_pack_end = Gtk.TreeViewColumn.pack_end
+
+    def tree_view_column_pack_end(self, cell, expand=True):
+        orig_tree_view_column_pack_end(self, cell, expand)
+    Gtk.TreeViewColumn.pack_end = tree_view_column_pack_end
+
+    orig_tree_view_column_pack_start = Gtk.TreeViewColumn.pack_start
+
+    def tree_view_column_pack_start(self, cell, expand=True):
+        orig_tree_view_column_pack_start(self, cell, expand)
+    Gtk.TreeViewColumn.pack_start = tree_view_column_pack_start
+
+    # CellLayout
+
+    orig_cell_pack_end = Gtk.CellLayout.pack_end
+
+    def cell_pack_end(self, cell, expand=True):
+        orig_cell_pack_end(self, cell, expand)
+    Gtk.CellLayout.pack_end = cell_pack_end
+
+    orig_cell_pack_start = Gtk.CellLayout.pack_start
+
+    def cell_pack_start(self, cell, expand=True):
+        orig_cell_pack_start(self, cell, expand)
+    Gtk.CellLayout.pack_start = cell_pack_start
+
+    orig_set_cell_data_func = Gtk.CellLayout.set_cell_data_func
+
+    def set_cell_data_func(self, cell, func, user_data=_unset):
+        def callback(*args):
+            if args[-1] == _unset:
+                args = args[:-1]
+            return func(*args)
+        orig_set_cell_data_func(self, cell, callback, user_data)
+    Gtk.CellLayout.set_cell_data_func = set_cell_data_func
+
+    # CellRenderer
+
+    class GenericCellRenderer(Gtk.CellRenderer):
+        pass
+    Gtk.GenericCellRenderer = GenericCellRenderer
+
+    # ComboBox
+
+    orig_combo_row_separator_func = Gtk.ComboBox.set_row_separator_func
+
+    def combo_row_separator_func(self, func, user_data=_unset):
+        def callback(*args):
+            if args[-1] == _unset:
+                args = args[:-1]
+            return func(*args)
+        orig_combo_row_separator_func(self, callback, user_data)
+    Gtk.ComboBox.set_row_separator_func = combo_row_separator_func
+
+    # ComboBoxEntry
+
+    class ComboBoxEntry(Gtk.ComboBox):
+        def __init__(self, **kwds):
+            Gtk.ComboBox.__init__(self, has_entry=True, **kwds)
+
+        def set_text_column(self, text_column):
+            self.set_entry_text_column(text_column)
+
+        def get_text_column(self):
+            return self.get_entry_text_column()
+    Gtk.ComboBoxEntry = ComboBoxEntry
+
+    def combo_box_entry_new():
+        return Gtk.ComboBoxEntry()
+    Gtk.combo_box_entry_new = combo_box_entry_new
+
+    def combo_box_entry_new_with_model(model):
+        return Gtk.ComboBoxEntry(model=model)
+    Gtk.combo_box_entry_new_with_model = combo_box_entry_new_with_model
+
+    # Container
+
+    def install_child_property(container, flag, pspec):
+        warnings.warn('install_child_property() is not supported',
+                      DeprecationWarning, stacklevel=2)
+    Gtk.Container.install_child_property = classmethod(install_child_property)
+
+    def new_text():
+        combo = Gtk.ComboBox()
+        model = Gtk.ListStore(str)
+        combo.set_model(model)
+        combo.set_entry_text_column(0)
+        return combo
+    Gtk.combo_box_new_text = new_text
+
+    def append_text(self, text):
+        model = self.get_model()
+        model.append([text])
+    Gtk.ComboBox.append_text = append_text
+    Gtk.expander_new_with_mnemonic = Gtk.Expander.new_with_mnemonic
+    Gtk.icon_theme_get_default = Gtk.IconTheme.get_default
+    Gtk.image_new_from_pixbuf = Gtk.Image.new_from_pixbuf
+    Gtk.image_new_from_stock = Gtk.Image.new_from_stock
+    Gtk.image_new_from_animation = Gtk.Image.new_from_animation
+    Gtk.image_new_from_icon_set = Gtk.Image.new_from_icon_set
+    Gtk.image_new_from_file = Gtk.Image.new_from_file
+    Gtk.settings_get_default = Gtk.Settings.get_default
+    Gtk.window_set_default_icon = Gtk.Window.set_default_icon
+    Gtk.clipboard_get = Gtk.Clipboard.get
+
+    #AccelGroup
+    Gtk.AccelGroup.connect_group = Gtk.AccelGroup.connect
+
+    #StatusIcon
+    Gtk.status_icon_position_menu = Gtk.StatusIcon.position_menu
+    Gtk.StatusIcon.set_tooltip = Gtk.StatusIcon.set_tooltip_text
+
+    # Scale
+
+    orig_HScale = Gtk.HScale
+    orig_VScale = Gtk.VScale
+
+    class HScale(orig_HScale):
+        def __init__(self, adjustment=None):
+            orig_HScale.__init__(self, adjustment=adjustment)
+    Gtk.HScale = HScale
+
+    class VScale(orig_VScale):
+        def __init__(self, adjustment=None):
+            orig_VScale.__init__(self, adjustment=adjustment)
+    Gtk.VScale = VScale
+
+    Gtk.stock_add = lambda items: None
+
+    # Widget
+
+    Gtk.widget_get_default_direction = Gtk.Widget.get_default_direction
+    orig_size_request = Gtk.Widget.size_request
+
+    def size_request(widget):
+        class SizeRequest(UserList):
+            def __init__(self, req):
+                self.height = req.height
+                self.width = req.width
+                UserList.__init__(self, [self.width, self.height])
+        return SizeRequest(orig_size_request(widget))
+    Gtk.Widget.size_request = size_request
+    Gtk.Widget.hide_all = Gtk.Widget.hide
+
+    class BaseGetter(object):
+        def __init__(self, context):
+            self.context = context
+
+        def __getitem__(self, state):
+            color = self.context.get_background_color(state)
+            return Gdk.Color(red=int(color.red * 65535),
+                             green=int(color.green * 65535),
+                             blue=int(color.blue * 65535))
+
+    class Styles(object):
+        def __init__(self, widget):
+            context = widget.get_style_context()
+            self.base = BaseGetter(context)
+            self.black = Gdk.Color(red=0, green=0, blue=0)
+
+    class StyleDescriptor(object):
+        def __get__(self, instance, class_):
+            return Styles(instance)
+    Gtk.Widget.style = StyleDescriptor()
+
+    # gtk.unixprint
+
+    class UnixPrint(object):
+        pass
+    unixprint = UnixPrint()
+    sys.modules['gtkunixprint'] = unixprint
+
+    # gtk.keysyms
+
+    class Keysyms(object):
+        pass
+    keysyms = Keysyms()
+    sys.modules['gtk.keysyms'] = keysyms
+    Gtk.keysyms = keysyms
+    for name in dir(Gdk):
+        if name.startswith('KEY_'):
+            target = name[4:]
+            if target[0] in '0123456789':
+                target = '_' + target
+            value = getattr(Gdk, name)
+            setattr(keysyms, target, value)
+
+
+def enable_vte():
+    gi.require_version('Vte', '0.0')
+    from gi.repository import Vte
+    sys.modules['vte'] = Vte
+
+
+def enable_poppler():
+    gi.require_version('Poppler', '0.18')
+    from gi.repository import Poppler
+    sys.modules['poppler'] = Poppler
+    Poppler.pypoppler_version = (1, 0, 0)
+
+
+def enable_webkit(version='1.0'):
+    gi.require_version('WebKit', version)
+    from gi.repository import WebKit
+    sys.modules['webkit'] = WebKit
+    WebKit.WebView.get_web_inspector = WebKit.WebView.get_inspector
+
+
+def enable_gudev():
+    gi.require_version('GUdev', '1.0')
+    from gi.repository import GUdev
+    sys.modules['gudev'] = GUdev
+
+
+def enable_gst():
+    gi.require_version('Gst', '0.10')
+    from gi.repository import Gst
+    sys.modules['gst'] = Gst
+    _install_enums(Gst)
+    Gst.registry_get_default = Gst.Registry.get_default
+    Gst.element_register = Gst.Element.register
+    Gst.element_factory_make = Gst.ElementFactory.make
+    Gst.caps_new_any = Gst.Caps.new_any
+    Gst.get_pygst_version = lambda: (0, 10, 19)
+    Gst.get_gst_version = lambda: (0, 10, 40)
+
+    from gi.repository import GstInterfaces
+    sys.modules['gst.interfaces'] = GstInterfaces
+    _install_enums(GstInterfaces)
+
+    from gi.repository import GstAudio
+    sys.modules['gst.audio'] = GstAudio
+    _install_enums(GstAudio)
+
+    from gi.repository import GstVideo
+    sys.modules['gst.video'] = GstVideo
+    _install_enums(GstVideo)
+
+    from gi.repository import GstBase
+    sys.modules['gst.base'] = GstBase
+    _install_enums(GstBase)
+
+    Gst.BaseTransform = GstBase.BaseTransform
+    Gst.BaseSink = GstBase.BaseSink
+
+    from gi.repository import GstController
+    sys.modules['gst.controller'] = GstController
+    _install_enums(GstController, dest=Gst)
+
+    from gi.repository import GstPbutils
+    sys.modules['gst.pbutils'] = GstPbutils
+    _install_enums(GstPbutils)
+
+
+def enable_goocanvas():
+    gi.require_version('GooCanvas', '2.0')
+    from gi.repository import GooCanvas
+    sys.modules['goocanvas'] = GooCanvas
+    _install_enums(GooCanvas, strip='GOO_CANVAS_')
+    GooCanvas.ItemSimple = GooCanvas.CanvasItemSimple
+    GooCanvas.Item = GooCanvas.CanvasItem
+    GooCanvas.Image = GooCanvas.CanvasImage
+    GooCanvas.Group = GooCanvas.CanvasGroup
+    GooCanvas.Rect = GooCanvas.CanvasRect
index ece9c4f..1177ad5 100644 (file)
@@ -1,10 +1,16 @@
-PLATFORM_VERSION = 2.0
+pygirepositorydir = $(pyexecdir)/gi/repository
 
-pkgpyexecdir = $(pyexecdir)/gi
-
-pygirepositorydir = $(pkgpyexecdir)/repository
 pygirepository_PYTHON = \
        __init__.py
 
 
--include $(top_srcdir)/git.mk
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygirepository_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+all-local: build_pylinks
+check-local: build_pylinks
index 7da2e99..b6f258b 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -48,14 +65,19 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -77,6 +99,13 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
 am__installdirs = "$(DESTDIR)$(pygirepositorydir)"
 py_compile = $(top_srcdir)/py-compile
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -90,6 +119,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
@@ -110,14 +141,13 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GIOUNIX_CFLAGS = @GIOUNIX_CFLAGS@
-GIOUNIX_LIBS = @GIOUNIX_LIBS@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
 GI_DATADIR = @GI_DATADIR@
 GI_LIBS = @GI_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
 GLIB_MKENUMS = @GLIB_MKENUMS@
@@ -170,6 +200,8 @@ PYTHON = @PYTHON@
 PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
@@ -180,7 +212,6 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-XSLTPROC = @XSLTPROC@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -222,13 +253,12 @@ mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
-pkgpyexecdir = $(pyexecdir)/gi
+pkgpyexecdir = @pkgpyexecdir@
 pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
-pygobject_CODEGEN_DEFINES = @pygobject_CODEGEN_DEFINES@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
@@ -238,8 +268,7 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-PLATFORM_VERSION = 2.0
-pygirepositorydir = $(pkgpyexecdir)/repository
+pygirepositorydir = $(pyexecdir)/gi/repository
 pygirepository_PYTHON = \
        __init__.py
 
@@ -284,8 +313,11 @@ clean-libtool:
        -rm -rf .libs _libs
 install-pygirepositoryPYTHON: $(pygirepository_PYTHON)
        @$(NORMAL_INSTALL)
-       test -z "$(pygirepositorydir)" || $(MKDIR_P) "$(DESTDIR)$(pygirepositorydir)"
        @list='$(pygirepository_PYTHON)'; dlist=; list2=; test -n "$(pygirepositorydir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pygirepositorydir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pygirepositorydir)" || exit 1; \
+       fi; \
        for p in $$list; do \
          if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
          if test -f $$b$$p; then \
@@ -301,9 +333,10 @@ install-pygirepositoryPYTHON: $(pygirepository_PYTHON)
        done || exit $$?; \
        if test -n "$$dlist"; then \
          if test -z "$(DESTDIR)"; then \
-           PYTHON=$(PYTHON) $(py_compile) --basedir "$(pygirepositorydir)" $$dlist; \
+           $(am__py_compile) --basedir "$(pygirepositorydir)" $$dlist; \
          else \
-           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(pygirepositorydir)" $$dlist; \
+           $(am__py_compile) --destdir "$(DESTDIR)" \
+                             --basedir "$(pygirepositorydir)" $$dlist; \
          fi; \
        else :; fi
 
@@ -312,14 +345,14 @@ uninstall-pygirepositoryPYTHON:
        @list='$(pygirepository_PYTHON)'; test -n "$(pygirepositorydir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        test -n "$$files" || exit 0; \
+       dir='$(DESTDIR)$(pygirepositorydir)'; \
        filesc=`echo "$$files" | sed 's|$$|c|'`; \
        fileso=`echo "$$files" | sed 's|$$|o|'`; \
-       echo " ( cd '$(DESTDIR)$(pygirepositorydir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(pygirepositorydir)" && rm -f $$files || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pygirepositorydir)' && rm -f" $$filesc ")"; \
-       cd "$(DESTDIR)$(pygirepositorydir)" && rm -f $$filesc || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pygirepositorydir)' && rm -f" $$fileso ")"; \
-       cd "$(DESTDIR)$(pygirepositorydir)" && rm -f $$fileso
+       st=0; \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
+         $(am__uninstall_files_from_dir) || st=$$?; \
+       done; \
+       exit $$st
 tags: TAGS
 TAGS:
 
@@ -358,8 +391,9 @@ distdir: $(DISTFILES)
          fi; \
        done
 check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) check-local
 check: check-am
-all-am: Makefile
+all-am: Makefile all-local
 installdirs:
        for dir in "$(DESTDIR)$(pygirepositorydir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
@@ -374,10 +408,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
@@ -455,15 +494,15 @@ ps-am:
 
 uninstall-am: uninstall-pygirepositoryPYTHON
 
-.MAKE: install-am install-strip
+.MAKE: check-am install-am install-strip
 
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       distclean distclean-generic distclean-libtool distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-pdf \
-       install-pdf-am install-ps install-ps-am \
+.PHONY: all all-am all-local check check-am check-local clean \
+       clean-generic clean-libtool distclean distclean-generic \
+       distclean-libtool distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
        install-pygirepositoryPYTHON install-strip installcheck \
        installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-generic \
@@ -471,7 +510,16 @@ uninstall-am: uninstall-pygirepositoryPYTHON
        uninstall-pygirepositoryPYTHON
 
 
--include $(top_srcdir)/git.mk
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygirepository_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+all-local: build_pylinks
+check-local: build_pylinks
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 210fdc1..3b94294 100644 (file)
 from __future__ import absolute_import
 
 import sys
-import gobject
+from . import _gobject
 
 from ._gi import \
     InterfaceInfo, \
     ObjectInfo, \
     StructInfo, \
     VFuncInfo, \
-    set_object_has_new_constructor, \
     register_interface_info, \
     hook_up_vfunc_implementation
 
+
+StructInfo  # pyflakes
+
 if sys.version_info > (3, 0):
     def callable(obj):
         return hasattr(obj, '__call__')
 
+
 def Function(info):
 
-    def function(*args):
-        return info.invoke(*args)
+    def function(*args, **kwargs):
+        return info.invoke(*args, **kwargs)
     function.__info__ = info
     function.__name__ = info.get_name()
     function.__module__ = info.get_namespace()
@@ -49,23 +52,28 @@ def Function(info):
     return function
 
 
-def NativeVFunc(info, cls):
+class NativeVFunc(object):
 
-    def native_vfunc(*args):
-        return info.invoke(*args, **dict(gtype=cls.__gtype__))
-    native_vfunc.__info__ = info
-    native_vfunc.__name__ = info.get_name()
-    native_vfunc.__module__ = info.get_namespace()
+    def __init__(self, info):
+        self._info = info
+
+    def __get__(self, instance, klass):
+        def native_vfunc(*args, **kwargs):
+            return self._info.invoke(klass.__gtype__, *args, **kwargs)
+        native_vfunc.__info__ = self._info
+        native_vfunc.__name__ = self._info.get_name()
+        native_vfunc.__module__ = self._info.get_namespace()
+
+        return native_vfunc
 
-    return native_vfunc
 
 def Constructor(info):
 
-    def constructor(cls, *args):
+    def constructor(cls, *args, **kwargs):
         cls_name = info.get_container().get_name()
         if cls.__name__ != cls_name:
             raise TypeError('%s constructor cannot be used to create instances of a subclass' % cls_name)
-        return info.invoke(cls, *args)
+        return info.invoke(cls, *args, **kwargs)
 
     constructor.__info__ = info
     constructor.__name__ = info.get_name()
@@ -113,10 +121,10 @@ class MetaClassHelper(object):
 
             # If a method name starts with "do_" assume it is a vfunc, and search
             # in the base classes for a method with the same name to override.
-            # Recursion is not necessary here because getattr() searches all
-            # super class attributes as well.
+            # Recursion is necessary as overriden methods in most immediate parent
+            # classes may shadow vfuncs from classes higher in the hierarchy.
             vfunc_info = None
-            for base in cls.__bases__:
+            for base in cls.__mro__:
                 method = getattr(base, vfunc_name, None)
                 if method is not None and hasattr(method, '__info__') and \
                         isinstance(method.__info__, VFuncInfo):
@@ -140,15 +148,15 @@ class MetaClassHelper(object):
                 if ambiguous_base is not None:
                     base_info = vfunc_info.get_container()
                     raise TypeError('Method %s() on class %s.%s is ambiguous '
-                            'with methods in base classes %s.%s and %s.%s' %
-                            (vfunc_name,
-                             cls.__info__.get_namespace(),
-                             cls.__info__.get_name(),
-                             base_info.get_namespace(),
-                             base_info.get_name(),
-                             ambiguous_base.__info__.get_namespace(),
-                             ambiguous_base.__info__.get_name()))
-
+                                    'with methods in base classes %s.%s and %s.%s' %
+                                    (vfunc_name,
+                                     cls.__info__.get_namespace(),
+                                     cls.__info__.get_name(),
+                                     base_info.get_namespace(),
+                                     base_info.get_name(),
+                                     ambiguous_base.__info__.get_namespace(),
+                                     ambiguous_base.__info__.get_name()
+                                    ))
                 hook_up_vfunc_implementation(vfunc_info, cls.__gtype__,
                                              py_vfunc)
 
@@ -163,17 +171,18 @@ class MetaClassHelper(object):
 
         for vfunc_info in class_info.get_vfuncs():
             name = 'do_%s' % vfunc_info.get_name()
-            value = NativeVFunc(vfunc_info, cls)
+            value = NativeVFunc(vfunc_info)
             setattr(cls, name, value)
 
+
 def find_vfunc_info_in_interface(bases, vfunc_name):
     for base in bases:
         # All wrapped interfaces inherit from GInterface.
         # This can be seen in IntrospectionModule.__getattr__() in module.py.
         # We do not need to search regular classes here, only wrapped interfaces.
         # We also skip GInterface, because it is not wrapped and has no __info__ attr.
-        if base is gobject.GInterface or\
-                not issubclass(base, gobject.GInterface) or\
+        if base is _gobject.GInterface or\
+                not issubclass(base, _gobject.GInterface) or\
                 not isinstance(base.__info__, InterfaceInfo):
             continue
 
@@ -187,6 +196,7 @@ def find_vfunc_info_in_interface(bases, vfunc_name):
 
     return None
 
+
 def find_vfunc_conflict_in_bases(vfunc, bases):
     for klass in bases:
         if not hasattr(klass, '__info__') or \
@@ -203,7 +213,8 @@ def find_vfunc_conflict_in_bases(vfunc, bases):
             return aklass
     return None
 
-class GObjectMeta(gobject.GObjectMeta, MetaClassHelper):
+
+class GObjectMeta(_gobject.GObjectMeta, MetaClassHelper):
 
     def __init__(cls, name, bases, dict_):
         super(GObjectMeta, cls).__init__(name, bases, dict_)
@@ -225,22 +236,12 @@ class GObjectMeta(gobject.GObjectMeta, MetaClassHelper):
             if isinstance(cls.__info__, ObjectInfo):
                 cls._setup_fields()
                 cls._setup_constructors()
-                set_object_has_new_constructor(cls.__info__.get_g_type())
             elif isinstance(cls.__info__, InterfaceInfo):
                 register_interface_info(cls.__info__.get_g_type())
 
     def mro(cls):
         return mro(cls)
 
-    def _must_register_type(cls, namespace):
-        ## don't register the class if already registered
-        if '__gtype__' in namespace:
-            return False
-
-        # Do not register a new GType for the overrides, as this would sort of
-        # defeat the purpose of overrides...
-        return not cls.__module__.startswith('gi.overrides.')
-
 
 def mro(C):
     """Compute the class precedence list (mro) according to C3
@@ -259,8 +260,8 @@ def mro(C):
         for subclass_bases in bases_of_subclasses:
             candidate = subclass_bases[0]
             not_head = [s for s in bases_of_subclasses if candidate in s[1:]]
-            if not_head and gobject.GInterface not in candidate.__bases__:
-                candidate = None # conflict, reject candidate
+            if not_head and _gobject.GInterface not in candidate.__bases__:
+                candidate = None  # conflict, reject candidate
             else:
                 break
 
@@ -270,7 +271,7 @@ def mro(C):
 
         bases.append(candidate)
 
-        for subclass_bases in bases_of_subclasses[:]: # remove candidate
+        for subclass_bases in bases_of_subclasses[:]:  # remove candidate
             if subclass_bases and subclass_bases[0] == candidate:
                 del subclass_bases[0]
                 if not subclass_bases:
@@ -286,7 +287,7 @@ class StructMeta(type, MetaClassHelper):
 
         # Avoid touching anything else than the base class.
         g_type = cls.__info__.get_g_type()
-        if g_type != gobject.TYPE_INVALID and g_type.pytype is not None:
+        if g_type != _gobject.TYPE_INVALID and g_type.pytype is not None:
             return
 
         cls._setup_fields()
diff --git a/gio/Makefile.am b/gio/Makefile.am
deleted file mode 100644 (file)
index 6b3eb57..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-AUTOMAKE_OPTIONS = 1.7
-
-PLATFORM_VERSION = 2.0
-
-INCLUDES =                             \
-       -I$(top_srcdir)/glib            \
-       -I$(top_srcdir)/gobject         \
-       $(PYTHON_INCLUDES)              \
-       $(PYGOBJECT_CFLAGS)             \
-       $(GIO_CFLAGS)
-
-# defs files
-defsdir = $(pkgdatadir)/$(PLATFORM_VERSION)/defs
-defs_DATA =
-
-# python
-pyexec_LTLIBRARIES =
-
-# gio extension modules
-pkgpyexecdir = $(pyexecdir)/gtk-2.0/gio
-pkgpyexec_LTLIBRARIES =
-
-# gio python scripts
-pygiodir = $(pkgpyexecdir)
-pygio_PYTHON =         __init__.py
-
-# linker flags
-common_ldflags = -module -avoid-version
-if PLATFORM_WIN32
-common_ldflags += -no-undefined
-endif
-
-CLEANFILES =
-EXTRA_DIST =
-
-# gio module
-GIO_OVERRIDES =                        \
-       gio.override                    \
-       gappinfo.override               \
-       gapplaunchcontext.override      \
-       gbufferedinputstream.override   \
-       gcancellable.override           \
-       gdatainputstream.override       \
-       gdrive.override                 \
-       gfile.override                  \
-       gfileattribute.override         \
-       gfileenumerator.override        \
-       gfileinfo.override              \
-       gfileinputstream.override       \
-       gfileiostream.override          \
-       gfileoutputstream.override      \
-       gicon.override                  \
-       giostream.override              \
-       ginputstream.override           \
-       gmemoryinputstream.override     \
-       gmemoryoutputstream.override    \
-       gmount.override                 \
-       goutputstream.override          \
-       gresolver.override              \
-       gsocket.override                \
-       gvolume.override                \
-       gvolumemonitor.override
-
-GIO_DEFS = gio.defs gio-types.defs $(GIO_OVERRIDES)
-CLEANFILES += gio.c
-EXTRA_DIST += $(GIO_DEFS) $(GIO_OVERRIDES)
-gio.c: $(GIO_DEFS) $(GIO_OVERRIDES)
-_gio_la_CFLAGS = $(GIO_CFLAGS)
-_gio_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_gio
-_gio_la_LIBADD = $(GIO_LIBS) $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
-_gio_la_SOURCES = \
-       giomodule.c \
-       pygio-utils.c \
-       pygio-utils.h
-nodist__gio_la_SOURCES = gio.c
-if BUILD_GIO
-pkgpyexec_LTLIBRARIES += _gio.la
-defs_DATA += $(GIO_DEFS)
-endif
-
-# giounix module
-GIOUNIX_DEFS = unix.defs unix-types.defs unix.override
-CLEANFILES += unix.c
-EXTRA_DIST += $(GIOUNIX_DEFS) unix.override
-unix.c: $(GIOUNIX_DEFS) unix.override
-unix_la_CFLAGS = $(GIOUNIX_CFLAGS)
-unix_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initunix
-unix_la_LIBADD = $(GIOUNIX_LIBS)
-unix_la_SOURCES = unixmodule.c
-nodist_unix_la_SOURCES = unix.c
-if BUILD_GIOUNIX
-pkgpyexec_LTLIBRARIES += unix.la
-defs_DATA += $(GIOUNIX_DEFS)
-endif
-
-
-# code generator
-.defs.c:
-       (cd $(srcdir)\
-        && $(PYTHON) $(top_srcdir)/codegen/codegen.py \
-           --py_ssize_t-clean \
-           --register gio-types.defs \
-           --register unix-types.defs \
-           --override $*.override \
-           --prefix py$(*F) $*.defs) > $(*D)/gen-$(*F).c \
-       && cp $(*D)/gen-$(*F).c $(*D)/$(*F).c \
-       && rm -f $(*D)/gen-$(*F).c
-
-
-if BUILD_GIO
-all: $(pkgpyexec_LTLIBRARIES:.la=.so)
-check-local: $(pkgpyexec_LTLIBRARIES:.la=.so)
-clean-local:
-       rm -f $(pkgpyexec_LTLIBRARIES:.la=.so)
-.la.so:
-       $(LN_S) .libs/$@ $@ || true
-endif
diff --git a/gio/Makefile.in b/gio/Makefile.in
deleted file mode 100644 (file)
index 041c085..0000000
+++ /dev/null
@@ -1,848 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@PLATFORM_WIN32_TRUE@am__append_1 = -no-undefined
-@BUILD_GIO_TRUE@am__append_2 = _gio.la
-@BUILD_GIO_TRUE@am__append_3 = $(GIO_DEFS)
-@BUILD_GIOUNIX_TRUE@am__append_4 = unix.la
-@BUILD_GIOUNIX_TRUE@am__append_5 = $(GIOUNIX_DEFS)
-subdir = gio
-DIST_COMMON = $(pygio_PYTHON) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
-       $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
-       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-       $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pyexecdir)" \
-       "$(DESTDIR)$(pygiodir)" "$(DESTDIR)$(defsdir)"
-LTLIBRARIES = $(pkgpyexec_LTLIBRARIES) $(pyexec_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-_gio_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
-am__gio_la_OBJECTS = _gio_la-giomodule.lo _gio_la-pygio-utils.lo
-nodist__gio_la_OBJECTS = _gio_la-gio.lo
-_gio_la_OBJECTS = $(am__gio_la_OBJECTS) $(nodist__gio_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-_gio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(_gio_la_CFLAGS) \
-       $(CFLAGS) $(_gio_la_LDFLAGS) $(LDFLAGS) -o $@
-@BUILD_GIO_TRUE@am__gio_la_rpath = -rpath $(pkgpyexecdir)
-unix_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am_unix_la_OBJECTS = unix_la-unixmodule.lo
-nodist_unix_la_OBJECTS = unix_la-unix.lo
-unix_la_OBJECTS = $(am_unix_la_OBJECTS) $(nodist_unix_la_OBJECTS)
-unix_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(unix_la_CFLAGS) \
-       $(CFLAGS) $(unix_la_LDFLAGS) $(LDFLAGS) -o $@
-@BUILD_GIOUNIX_TRUE@am_unix_la_rpath = -rpath $(pkgpyexecdir)
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-       $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(_gio_la_SOURCES) $(nodist__gio_la_SOURCES) \
-       $(unix_la_SOURCES) $(nodist_unix_la_SOURCES)
-DIST_SOURCES = $(_gio_la_SOURCES) $(unix_la_SOURCES)
-py_compile = $(top_srcdir)/py-compile
-DATA = $(defs_DATA)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DATADIR = @DATADIR@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FFI_CFLAGS = @FFI_CFLAGS@
-FFI_LIBS = @FFI_LIBS@
-FGREP = @FGREP@
-GIOUNIX_CFLAGS = @GIOUNIX_CFLAGS@
-GIOUNIX_LIBS = @GIOUNIX_LIBS@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GI_CFLAGS = @GI_CFLAGS@
-GI_DATADIR = @GI_DATADIR@
-GI_LIBS = @GI_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GOBJECT_QUERY = @GOBJECT_QUERY@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBFFI_PC = @LIBFFI_PC@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PLATFORM = @PLATFORM@
-PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
-PYCAIRO_LIBS = @PYCAIRO_LIBS@
-PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
-PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
-PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
-PYTHON = @PYTHON@
-PYTHON_BASENAME = @PYTHON_BASENAME@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-THREADING_CFLAGS = @THREADING_CFLAGS@
-VERSION = @VERSION@
-XSLTPROC = @XSLTPROC@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-
-# gio extension modules
-pkgpyexecdir = $(pyexecdir)/gtk-2.0/gio
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pygobject_CODEGEN_DEFINES = @pygobject_CODEGEN_DEFINES@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = 1.7
-PLATFORM_VERSION = 2.0
-INCLUDES = \
-       -I$(top_srcdir)/glib            \
-       -I$(top_srcdir)/gobject         \
-       $(PYTHON_INCLUDES)              \
-       $(PYGOBJECT_CFLAGS)             \
-       $(GIO_CFLAGS)
-
-
-# defs files
-defsdir = $(pkgdatadir)/$(PLATFORM_VERSION)/defs
-defs_DATA = $(am__append_3) $(am__append_5)
-
-# python
-pyexec_LTLIBRARIES = 
-pkgpyexec_LTLIBRARIES = $(am__append_2) $(am__append_4)
-
-# gio python scripts
-pygiodir = $(pkgpyexecdir)
-pygio_PYTHON = __init__.py
-
-# linker flags
-common_ldflags = -module -avoid-version $(am__append_1)
-CLEANFILES = gio.c unix.c
-EXTRA_DIST = $(GIO_DEFS) $(GIO_OVERRIDES) $(GIOUNIX_DEFS) \
-       unix.override
-
-# gio module
-GIO_OVERRIDES = \
-       gio.override                    \
-       gappinfo.override               \
-       gapplaunchcontext.override      \
-       gbufferedinputstream.override   \
-       gcancellable.override           \
-       gdatainputstream.override       \
-       gdrive.override                 \
-       gfile.override                  \
-       gfileattribute.override         \
-       gfileenumerator.override        \
-       gfileinfo.override              \
-       gfileinputstream.override       \
-       gfileiostream.override          \
-       gfileoutputstream.override      \
-       gicon.override                  \
-       giostream.override              \
-       ginputstream.override           \
-       gmemoryinputstream.override     \
-       gmemoryoutputstream.override    \
-       gmount.override                 \
-       goutputstream.override          \
-       gresolver.override              \
-       gsocket.override                \
-       gvolume.override                \
-       gvolumemonitor.override
-
-GIO_DEFS = gio.defs gio-types.defs $(GIO_OVERRIDES)
-_gio_la_CFLAGS = $(GIO_CFLAGS)
-_gio_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_gio
-_gio_la_LIBADD = $(GIO_LIBS) $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
-_gio_la_SOURCES = \
-       giomodule.c \
-       pygio-utils.c \
-       pygio-utils.h
-
-nodist__gio_la_SOURCES = gio.c
-
-# giounix module
-GIOUNIX_DEFS = unix.defs unix-types.defs unix.override
-unix_la_CFLAGS = $(GIOUNIX_CFLAGS)
-unix_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initunix
-unix_la_LIBADD = $(GIOUNIX_LIBS)
-unix_la_SOURCES = unixmodule.c
-nodist_unix_la_SOURCES = unix.c
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .defs .la .lo .o .obj .so
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-               && { if test -f $@; then exit 0; else break; fi; }; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gio/Makefile'; \
-       $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --foreign gio/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pkgpyexecLTLIBRARIES: $(pkgpyexec_LTLIBRARIES)
-       @$(NORMAL_INSTALL)
-       test -z "$(pkgpyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgpyexecdir)"
-       @list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \
-       list2=; for p in $$list; do \
-         if test -f $$p; then \
-           list2="$$list2 $$p"; \
-         else :; fi; \
-       done; \
-       test -z "$$list2" || { \
-         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgpyexecdir)'"; \
-         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgpyexecdir)"; \
-       }
-
-uninstall-pkgpyexecLTLIBRARIES:
-       @$(NORMAL_UNINSTALL)
-       @list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \
-       for p in $$list; do \
-         $(am__strip_dir) \
-         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgpyexecdir)/$$f'"; \
-         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgpyexecdir)/$$f"; \
-       done
-
-clean-pkgpyexecLTLIBRARIES:
-       -test -z "$(pkgpyexec_LTLIBRARIES)" || rm -f $(pkgpyexec_LTLIBRARIES)
-       @list='$(pkgpyexec_LTLIBRARIES)'; for p in $$list; do \
-         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-         test "$$dir" != "$$p" || dir=.; \
-         echo "rm -f \"$${dir}/so_locations\""; \
-         rm -f "$${dir}/so_locations"; \
-       done
-install-pyexecLTLIBRARIES: $(pyexec_LTLIBRARIES)
-       @$(NORMAL_INSTALL)
-       test -z "$(pyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pyexecdir)"
-       @list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \
-       list2=; for p in $$list; do \
-         if test -f $$p; then \
-           list2="$$list2 $$p"; \
-         else :; fi; \
-       done; \
-       test -z "$$list2" || { \
-         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pyexecdir)'"; \
-         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pyexecdir)"; \
-       }
-
-uninstall-pyexecLTLIBRARIES:
-       @$(NORMAL_UNINSTALL)
-       @list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \
-       for p in $$list; do \
-         $(am__strip_dir) \
-         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pyexecdir)/$$f'"; \
-         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pyexecdir)/$$f"; \
-       done
-
-clean-pyexecLTLIBRARIES:
-       -test -z "$(pyexec_LTLIBRARIES)" || rm -f $(pyexec_LTLIBRARIES)
-       @list='$(pyexec_LTLIBRARIES)'; for p in $$list; do \
-         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-         test "$$dir" != "$$p" || dir=.; \
-         echo "rm -f \"$${dir}/so_locations\""; \
-         rm -f "$${dir}/so_locations"; \
-       done
-_gio.la: $(_gio_la_OBJECTS) $(_gio_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(_gio_la_LINK) $(am__gio_la_rpath) $(_gio_la_OBJECTS) $(_gio_la_LIBADD) $(LIBS)
-unix.la: $(unix_la_OBJECTS) $(unix_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(unix_la_LINK) $(am_unix_la_rpath) $(unix_la_OBJECTS) $(unix_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-       -rm -f *.$(OBJEXT)
-
-distclean-compile:
-       -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gio_la-gio.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gio_la-giomodule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gio_la-pygio-utils.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix_la-unix.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix_la-unixmodule.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
-
-_gio_la-giomodule.lo: giomodule.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gio_la_CFLAGS) $(CFLAGS) -MT _gio_la-giomodule.lo -MD -MP -MF $(DEPDIR)/_gio_la-giomodule.Tpo -c -o _gio_la-giomodule.lo `test -f 'giomodule.c' || echo '$(srcdir)/'`giomodule.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gio_la-giomodule.Tpo $(DEPDIR)/_gio_la-giomodule.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='giomodule.c' object='_gio_la-giomodule.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gio_la_CFLAGS) $(CFLAGS) -c -o _gio_la-giomodule.lo `test -f 'giomodule.c' || echo '$(srcdir)/'`giomodule.c
-
-_gio_la-pygio-utils.lo: pygio-utils.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gio_la_CFLAGS) $(CFLAGS) -MT _gio_la-pygio-utils.lo -MD -MP -MF $(DEPDIR)/_gio_la-pygio-utils.Tpo -c -o _gio_la-pygio-utils.lo `test -f 'pygio-utils.c' || echo '$(srcdir)/'`pygio-utils.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gio_la-pygio-utils.Tpo $(DEPDIR)/_gio_la-pygio-utils.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pygio-utils.c' object='_gio_la-pygio-utils.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gio_la_CFLAGS) $(CFLAGS) -c -o _gio_la-pygio-utils.lo `test -f 'pygio-utils.c' || echo '$(srcdir)/'`pygio-utils.c
-
-_gio_la-gio.lo: gio.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gio_la_CFLAGS) $(CFLAGS) -MT _gio_la-gio.lo -MD -MP -MF $(DEPDIR)/_gio_la-gio.Tpo -c -o _gio_la-gio.lo `test -f 'gio.c' || echo '$(srcdir)/'`gio.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gio_la-gio.Tpo $(DEPDIR)/_gio_la-gio.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='gio.c' object='_gio_la-gio.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gio_la_CFLAGS) $(CFLAGS) -c -o _gio_la-gio.lo `test -f 'gio.c' || echo '$(srcdir)/'`gio.c
-
-unix_la-unixmodule.lo: unixmodule.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unix_la_CFLAGS) $(CFLAGS) -MT unix_la-unixmodule.lo -MD -MP -MF $(DEPDIR)/unix_la-unixmodule.Tpo -c -o unix_la-unixmodule.lo `test -f 'unixmodule.c' || echo '$(srcdir)/'`unixmodule.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unix_la-unixmodule.Tpo $(DEPDIR)/unix_la-unixmodule.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='unixmodule.c' object='unix_la-unixmodule.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unix_la_CFLAGS) $(CFLAGS) -c -o unix_la-unixmodule.lo `test -f 'unixmodule.c' || echo '$(srcdir)/'`unixmodule.c
-
-unix_la-unix.lo: unix.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unix_la_CFLAGS) $(CFLAGS) -MT unix_la-unix.lo -MD -MP -MF $(DEPDIR)/unix_la-unix.Tpo -c -o unix_la-unix.lo `test -f 'unix.c' || echo '$(srcdir)/'`unix.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unix_la-unix.Tpo $(DEPDIR)/unix_la-unix.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='unix.c' object='unix_la-unix.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unix_la_CFLAGS) $(CFLAGS) -c -o unix_la-unix.lo `test -f 'unix.c' || echo '$(srcdir)/'`unix.c
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-install-pygioPYTHON: $(pygio_PYTHON)
-       @$(NORMAL_INSTALL)
-       test -z "$(pygiodir)" || $(MKDIR_P) "$(DESTDIR)$(pygiodir)"
-       @list='$(pygio_PYTHON)'; dlist=; list2=; test -n "$(pygiodir)" || list=; \
-       for p in $$list; do \
-         if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
-         if test -f $$b$$p; then \
-           $(am__strip_dir) \
-           dlist="$$dlist $$f"; \
-           list2="$$list2 $$b$$p"; \
-         else :; fi; \
-       done; \
-       for file in $$list2; do echo $$file; done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pygiodir)'"; \
-         $(INSTALL_DATA) $$files "$(DESTDIR)$(pygiodir)" || exit $$?; \
-       done || exit $$?; \
-       if test -n "$$dlist"; then \
-         if test -z "$(DESTDIR)"; then \
-           PYTHON=$(PYTHON) $(py_compile) --basedir "$(pygiodir)" $$dlist; \
-         else \
-           PYTHON=$(PYTHON) $(py_compile) --destdir "$(DESTDIR)" --basedir "$(pygiodir)" $$dlist; \
-         fi; \
-       else :; fi
-
-uninstall-pygioPYTHON:
-       @$(NORMAL_UNINSTALL)
-       @list='$(pygio_PYTHON)'; test -n "$(pygiodir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$files" || exit 0; \
-       filesc=`echo "$$files" | sed 's|$$|c|'`; \
-       fileso=`echo "$$files" | sed 's|$$|o|'`; \
-       echo " ( cd '$(DESTDIR)$(pygiodir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(pygiodir)" && rm -f $$files || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pygiodir)' && rm -f" $$filesc ")"; \
-       cd "$(DESTDIR)$(pygiodir)" && rm -f $$filesc || exit $$?; \
-       echo " ( cd '$(DESTDIR)$(pygiodir)' && rm -f" $$fileso ")"; \
-       cd "$(DESTDIR)$(pygiodir)" && rm -f $$fileso
-install-defsDATA: $(defs_DATA)
-       @$(NORMAL_INSTALL)
-       test -z "$(defsdir)" || $(MKDIR_P) "$(DESTDIR)$(defsdir)"
-       @list='$(defs_DATA)'; test -n "$(defsdir)" || list=; \
-       for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         echo "$$d$$p"; \
-       done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defsdir)'"; \
-         $(INSTALL_DATA) $$files "$(DESTDIR)$(defsdir)" || exit $$?; \
-       done
-
-uninstall-defsDATA:
-       @$(NORMAL_UNINSTALL)
-       @list='$(defs_DATA)'; test -n "$(defsdir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$files" || exit 0; \
-       echo " ( cd '$(DESTDIR)$(defsdir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(defsdir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       set x; \
-       here=`pwd`; \
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       shift; \
-       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-         test -n "$$unique" || unique=$$empty_fix; \
-         if test $$# -gt 0; then \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             "$$@" $$unique; \
-         else \
-           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-             $$unique; \
-         fi; \
-       fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       test -z "$(CTAGS_ARGS)$$unique" \
-         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$unique
-
-GTAGS:
-       here=`$(am__cd) $(top_builddir) && pwd` \
-         && $(am__cd) $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       list='$(DISTFILES)'; \
-         dist_files=`for file in $$list; do echo $$file; done | \
-         sed -e "s|^$$srcdirstrip/||;t" \
-             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-       case $$dist_files in \
-         */*) $(MKDIR_P) `echo "$$dist_files" | \
-                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-                          sort -u` ;; \
-       esac; \
-       for file in $$dist_files; do \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-           if test -d "$(distdir)/$$file"; then \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-@BUILD_GIO_FALSE@check-local:
-check-am: all-am
-       $(MAKE) $(AM_MAKEFLAGS) check-local
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(DATA)
-installdirs:
-       for dir in "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pygiodir)" "$(DESTDIR)$(defsdir)"; do \
-         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-       done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-@BUILD_GIO_FALSE@clean-local:
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-local \
-       clean-pkgpyexecLTLIBRARIES clean-pyexecLTLIBRARIES \
-       mostlyclean-am
-
-distclean: distclean-am
-       -rm -rf ./$(DEPDIR)
-       -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-defsDATA install-pygioPYTHON
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-pkgpyexecLTLIBRARIES \
-       install-pyexecLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-       -rm -rf ./$(DEPDIR)
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-       mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-defsDATA uninstall-pkgpyexecLTLIBRARIES \
-       uninstall-pyexecLTLIBRARIES uninstall-pygioPYTHON
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
-       clean-generic clean-libtool clean-local \
-       clean-pkgpyexecLTLIBRARIES clean-pyexecLTLIBRARIES ctags \
-       distclean distclean-compile distclean-generic \
-       distclean-libtool distclean-tags distdir dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-defsDATA install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-pdf \
-       install-pdf-am install-pkgpyexecLTLIBRARIES install-ps \
-       install-ps-am install-pyexecLTLIBRARIES install-pygioPYTHON \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-       pdf pdf-am ps ps-am tags uninstall uninstall-am \
-       uninstall-defsDATA uninstall-pkgpyexecLTLIBRARIES \
-       uninstall-pyexecLTLIBRARIES uninstall-pygioPYTHON
-
-gio.c: $(GIO_DEFS) $(GIO_OVERRIDES)
-unix.c: $(GIOUNIX_DEFS) unix.override
-
-# code generator
-.defs.c:
-       (cd $(srcdir)\
-        && $(PYTHON) $(top_srcdir)/codegen/codegen.py \
-           --py_ssize_t-clean \
-           --register gio-types.defs \
-           --register unix-types.defs \
-           --override $*.override \
-           --prefix py$(*F) $*.defs) > $(*D)/gen-$(*F).c \
-       && cp $(*D)/gen-$(*F).c $(*D)/$(*F).c \
-       && rm -f $(*D)/gen-$(*F).c
-
-@BUILD_GIO_TRUE@all: $(pkgpyexec_LTLIBRARIES:.la=.so)
-@BUILD_GIO_TRUE@check-local: $(pkgpyexec_LTLIBRARIES:.la=.so)
-@BUILD_GIO_TRUE@clean-local:
-@BUILD_GIO_TRUE@       rm -f $(pkgpyexec_LTLIBRARIES:.la=.so)
-@BUILD_GIO_TRUE@.la.so:
-@BUILD_GIO_TRUE@       $(LN_S) .libs/$@ $@ || true
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/gio/__init__.py b/gio/__init__.py
deleted file mode 100644 (file)
index c4b02bb..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- Mode: Python -*-
-# pygobject - Python bindings for the GObject library
-# Copyright (C) 2008  Johan Dahlin
-#
-#   gio/__init__.py: initialisation file for gio module
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-from gobject import GObjectMeta
-from _gio import *
-from _gio import \
-     _app_info_init, _install_app_info_meta, \
-     _file_init, _install_file_meta
-try:
-    import unix
-    unix # pyflakes
-except ImportError:
-    unix = None
-del _gio
-
-class GFileMeta(GObjectMeta):
-    __call__ = _file_init
-_install_file_meta(GFileMeta)
-
-class GAppInfoMeta(GObjectMeta):
-    __call__ = _app_info_init
-_install_app_info_meta(GAppInfoMeta)
diff --git a/gio/gappinfo.override b/gio/gappinfo.override
deleted file mode 100644 (file)
index 7f09ce8..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- * Copyright (C) 2008  Gian Mario Tagliaretti
- *
- *   gappinfo.override: module overrides for GInputStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-define _install_app_info_meta
-static PyObject *
-_wrap__install_app_info_meta(PyObject *self, PyObject *args)
-{
-    PyObject *metaclass;
-
-    if (!PyArg_ParseTuple(args, "O", &metaclass))
-       return NULL;
-
-    Py_INCREF(metaclass);
-    PyGAppInfo_Type.ob_type = (PyTypeObject*)metaclass;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-%%
-define _app_info_init kwargs
-static PyObject *
-_wrap__app_info_init(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "commandline", "application_name",
-                             "flags", NULL };
-    char *commandline, *application_name = NULL;
-    PyObject *py_flags = NULL;
-    GAppInfo *ret;
-    GError *error = NULL;
-    GAppInfoCreateFlags flags = G_APP_INFO_CREATE_NONE;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "s|zO:gio.AppInfo",
-                                    kwlist,
-                                    &commandline, &application_name,
-                                    &py_flags))
-        return NULL;
-    if (py_flags && pyg_flags_get_value(G_TYPE_APP_INFO_CREATE_FLAGS,
-                                       py_flags, (gpointer)&flags))
-        return NULL;
-
-    ret = g_app_info_create_from_commandline(commandline,
-                                            application_name, flags, &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    /* pygobject_new handles NULL checking */
-    return pygobject_new((GObject *)ret);
-}
-%%
-override g_app_info_launch_uris kwargs
-static PyObject *
-_wrap_g_app_info_launch_uris(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "files", "launch_context", NULL };
-
-    GList *file_list = NULL;
-    PyGObject *pycontext = NULL;
-    GAppLaunchContext *ctx;
-    PyObject *pyfile_list = Py_None;
-    int ret;
-    GError *error = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "|OO:gio.AppInfo.launch_uris",
-                                    kwlist,
-                                    &pyfile_list, &pycontext))
-        return NULL;
-
-    if (!pygio_check_launch_context(pycontext, &ctx))
-       return NULL;
-
-    if (pyfile_list == Py_None)
-        file_list = NULL;
-
-    else if (PySequence_Check (pyfile_list))
-        file_list = pygio_pylist_to_uri_glist(pyfile_list);
-
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "file_list should be a list of strings or None");
-        return NULL;
-    }
-
-    ret = g_app_info_launch_uris(G_APP_INFO(self->obj),
-                                 file_list, ctx, &error);
-
-    /* in python 3 the C strings are not internal to the Unicode string object
-     * so we now strdup when adding element to the list and must free them here
-     */
-    g_list_foreach (file_list,
-                   (GFunc) g_free, NULL);
-    g_list_free(file_list);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    return PyBool_FromLong(ret);
-}
-%%
-override g_app_info_launch kwargs
-static PyObject *
-_wrap_g_app_info_launch(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "files", "launch_context", NULL };
-
-    GList *file_list = NULL;
-    PyGObject *pycontext = NULL;
-    GAppLaunchContext *ctx;
-    PyObject *pyfile_list = Py_None;
-    int ret;
-    GError *error = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "|OO:gio.AppInfo.launch",
-                                    kwlist,
-                                    &pyfile_list, &pycontext))
-        return NULL;
-
-    if (!pygio_check_launch_context(pycontext, &ctx))
-       return NULL;
-
-    if (pyfile_list == Py_None)
-        file_list = NULL;
-
-    else if (PySequence_Check (pyfile_list))
-        file_list = pygio_pylist_to_gfile_glist(pyfile_list);
-
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "file_list should be a list of strings or None");
-        return NULL;
-    }
-
-    ret = g_app_info_launch(G_APP_INFO(self->obj),
-                            file_list, ctx, &error);
-
-    g_list_free(file_list);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    return PyBool_FromLong(ret);
-}
-%%
-override-slot GAppInfo.tp_richcompare
-static PyObject *
-_wrap_g_app_info_tp_richcompare(PyGObject *self, PyGObject *other, int op)
-{
-    PyObject *result;
-
-    if (PyObject_TypeCheck(self, &PyGAppInfo_Type)
-        && PyObject_TypeCheck(other, &PyGAppInfo_Type)) {
-        GAppInfo *info1 = G_APP_INFO(self->obj);
-        GAppInfo *info2 = G_APP_INFO(other->obj);
-
-        switch (op) {
-        case Py_EQ:
-            result = (g_app_info_equal(info1, info2)
-                      ? Py_True : Py_False);
-            break;
-        case Py_NE:
-            result = (!g_app_info_equal(info1, info2)
-                      ? Py_True : Py_False);
-            break;
-        default:
-            result = Py_NotImplemented;
-        }
-    }
-    else
-        result = Py_NotImplemented;
-
-    Py_INCREF(result);
-    return result;
-}
-%%
-override-slot GAppInfo.tp_repr
-static PyObject *
-_wrap_g_app_info_tp_repr(PyGObject *self)
-{
-    const char *name = g_app_info_get_name(G_APP_INFO(self->obj));
-    gchar *representation;
-    PyObject *result;
-
-    representation = g_strdup_printf("<%s at %p: %s>",
-                                    self->ob_type->tp_name, self,
-                                    name ? name : "UNKNOWN NAME");
-
-    result = PyString_FromString(representation);
-    g_free(representation);
-    return result;
-}
diff --git a/gio/gapplaunchcontext.override b/gio/gapplaunchcontext.override
deleted file mode 100644 (file)
index a10f959..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008 Gian Mario Tagliaretti
- *
- *   gapplaunchcontext.override: module overrides for GAppLaunchContext
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-%%
-override g_app_launch_context_get_display kwargs
-static PyObject *
-_wrap_g_app_launch_context_get_display(PyGObject *self,
-                                       PyObject *args,
-                                       PyObject *kwargs)
-{
-    static char *kwlist[] = { "info", "files", NULL };
-
-    GList *file_list = NULL;
-    PyGObject *py_info;
-    PyObject *pyfile_list;
-    gchar *ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                           "O!O:gio.AppLaunchContext.get_display",
-                           kwlist,
-                           &PyGAppInfo_Type, &py_info, &pyfile_list))
-        return NULL;
-
-    if (!PySequence_Check (pyfile_list)) {
-        PyErr_Format (PyExc_TypeError,
-                      "argument must be a list or tuple of GFile objects");
-        return NULL;
-    }
-
-    file_list = pygio_pylist_to_gfile_glist(pyfile_list);
-
-    ret = g_app_launch_context_get_display(G_APP_LAUNCH_CONTEXT(self->obj),
-                                           G_APP_INFO(py_info->obj), file_list);
-    g_list_free(file_list);
-
-    if (ret)
-        return PyString_FromString(ret);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-%%
-override g_app_launch_context_get_startup_notify_id kwargs
-static PyObject *
-_wrap_g_app_launch_context_get_startup_notify_id(PyGObject *self,
-                                                 PyObject *args,
-                                                 PyObject *kwargs)
-{
-    static char *kwlist[] = { "info", "files", NULL };
-
-    GList       *file_list = NULL;
-    PyGObject   *py_info;
-    PyObject    *pyfile_list;
-    gchar       *ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                           "O!O:gio.AppLaunchContext.get_startup_notify_id",
-                           kwlist,
-                           &PyGAppInfo_Type, &py_info, &pyfile_list))
-        return NULL;
-
-    if (!PySequence_Check (pyfile_list)) {
-        PyErr_Format (PyExc_TypeError,
-                      "argument must be a list or tuple of GFile objects");
-        return NULL;
-    }
-
-    file_list = pygio_pylist_to_gfile_glist(pyfile_list);
-
-    ret = g_app_launch_context_get_startup_notify_id(
-                                        G_APP_LAUNCH_CONTEXT(self->obj),
-                                        G_APP_INFO(py_info->obj), file_list);
-    g_list_free(file_list);
-
-    if (ret)
-        return PyString_FromString(ret);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
diff --git a/gio/gbufferedinputstream.override b/gio/gbufferedinputstream.override
deleted file mode 100644 (file)
index 047a663..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2009  Gian Mario Tagliaretti
- *
- *   gbufferedinputstream.override: module overrides for GBufferedInputStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-override g_buffered_input_stream_fill_async kwargs
-static PyObject *
-_wrap_g_buffered_input_stream_fill_async(PyGObject *self,
-                                         PyObject *args,
-                                         PyObject *kwargs)
-{
-    static char *kwlist[] = { "count", "callback", "io_priority",
-                              "cancellable", "user_data", NULL };
-    long count = -1;
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "lO|iOO:gio.BufferedInputStream.fill_async",
-                                    kwlist,
-                                    &count,
-                                    &notify->callback,
-                                    &io_priority,
-                                    &pycancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_buffered_input_stream_fill_async(G_BUFFERED_INPUT_STREAM(self->obj),
-                            count,
-                            io_priority,
-                            cancellable,
-                            (GAsyncReadyCallback) async_result_callback_marshal,
-                            notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
diff --git a/gio/gcancellable.override b/gio/gcancellable.override
deleted file mode 100644 (file)
index 1eefb3b..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2009  Gian Mario Tagliaretti
- *
- *   gcancellable.override: module overrides for GCancellable
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-%%
-override g_cancellable_make_pollfd noargs
-static PyObject *
-_wrap_g_cancellable_make_pollfd (PyGObject *self)
-{
-    GPollFD pollfd;
-    gboolean ret;
-    PyGPollFD *pypollfd;
-
-    ret = g_cancellable_make_pollfd(G_CANCELLABLE(self->obj), &pollfd);
-  
-    pypollfd = PyObject_NEW(PyGPollFD, &PyGPollFD_Type);
-    pypollfd->fd_obj = NULL;
-    pypollfd->pollfd = pollfd;
-    return (PyObject *) pypollfd;
-}
diff --git a/gio/gdatainputstream.override b/gio/gdatainputstream.override
deleted file mode 100644 (file)
index 92b0f99..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- * Copyright (C) 2009  Paul Pogonyshev
- *
- *   gdatainputstream.override: module overrides for GDataInputStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-%%
-override g_data_input_stream_read_line kwargs
-static PyObject *
-_wrap_g_data_input_stream_read_line(PyGObject *self,
-                                   PyObject *args,
-                                   PyObject *kwargs)
-{
-    static char *kwlist[] = { "cancellable", NULL };
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    char *line;
-    gsize length;
-    PyObject *py_line;
-    GError *error = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "|O:gio.DataInputStream.read_line",
-                                     kwlist, &pycancellable))
-        return NULL;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-       return NULL;
-
-    line = g_data_input_stream_read_line(G_DATA_INPUT_STREAM(self->obj),
-                                        &length, cancellable, &error);
-    if (pyg_error_check(&error))
-        return NULL;
-
-    py_line = PyString_FromStringAndSize(line, length);
-    g_free(line);
-    return py_line;
-}
-
-%%
-override g_data_input_stream_read_line_async kwargs
-static PyObject *
-_wrap_g_data_input_stream_read_line_async(PyGObject *self,
-                                         PyObject *args,
-                                         PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "io_priority",
-                              "cancellable", "user_data", NULL };
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|iOO:gio.DataInputStream.read_line_async",
-                                     kwlist,
-                                     &notify->callback,
-                                     &io_priority,
-                                     &pycancellable,
-                                     &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_data_input_stream_read_line_async(G_DATA_INPUT_STREAM(self->obj),
-                                        io_priority,
-                                        cancellable,
-                                        (GAsyncReadyCallback) async_result_callback_marshal,
-                                        notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-
-%%
-override g_data_input_stream_read_line_finish kwargs
-static PyObject *
-_wrap_g_data_input_stream_read_line_finish(PyGObject *self,
-                                           PyObject *args,
-                                           PyObject *kwargs)
-{
-    static char *kwlist[] = { "result", NULL };
-    PyGObject *result;
-    GError *error = NULL;
-    gchar *line;
-    gsize length;
-    PyObject *py_line;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!:gio.DataInputStream.read_line_finish",
-                                     kwlist, &PyGAsyncResult_Type, &result))
-        return NULL;
-
-    line = g_data_input_stream_read_line_finish(G_DATA_INPUT_STREAM(self->obj),
-                                                G_ASYNC_RESULT(result->obj),
-                                                &length,
-                                                &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    py_line = PyString_FromStringAndSize(line, length);
-    g_free(line);
-    return py_line;
-}
-
-%%
-override g_data_input_stream_read_until kwargs
-static PyObject *
-_wrap_g_data_input_stream_read_until(PyGObject *self,
-                                    PyObject *args,
-                                    PyObject *kwargs)
-{
-    static char *kwlist[] = { "stop_chars", "cancellable", NULL };
-    const char *stop_chars;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    char *line;
-    gsize length;
-    PyObject *py_line;
-    GError *error = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "s|O:gio.DataInputStream.read_line",
-                                     kwlist, &stop_chars, &pycancellable))
-        return NULL;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-       return NULL;
-
-    line = g_data_input_stream_read_until(G_DATA_INPUT_STREAM(self->obj),
-                                         stop_chars, &length, cancellable, &error);
-    if (pyg_error_check(&error))
-        return NULL;
-
-    py_line = PyString_FromStringAndSize(line, length);
-    g_free(line);
-    return py_line;
-}
-
-%%
-override g_data_input_stream_read_until_async kwargs
-static PyObject *
-_wrap_g_data_input_stream_read_until_async(PyGObject *self,
-                                           PyObject *args,
-                                           PyObject *kwargs)
-{
-    static char *kwlist[] = { "stop_chars", "callback", "io_priority",
-                              "cancellable", "user_data", NULL };
-    const char *stop_chars;
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "sO|iOO:gio.DataInputStream.read_until_async",
-                                     kwlist,
-                                     &stop_chars,
-                                     &notify->callback,
-                                     &io_priority,
-                                     &pycancellable,
-                                     &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_data_input_stream_read_until_async(G_DATA_INPUT_STREAM(self->obj),
-                                         stop_chars,
-                                         io_priority,
-                                         cancellable,
-                                         (GAsyncReadyCallback) async_result_callback_marshal,
-                                         notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-
-%%
-override g_data_input_stream_read_until_finish kwargs
-static PyObject *
-_wrap_g_data_input_stream_read_until_finish(PyGObject *self,
-                                           PyObject *args,
-                                           PyObject *kwargs)
-{
-    static char *kwlist[] = { "result", NULL };
-    PyGObject *result;
-    GError *error = NULL;
-    gchar *line;
-    gsize length;
-    PyObject *py_line;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!:gio.DataInputStream.read_until_finish",
-                                     kwlist, &PyGAsyncResult_Type, &result))
-        return NULL;
-
-    line = g_data_input_stream_read_until_finish(G_DATA_INPUT_STREAM(self->obj),
-                                                 G_ASYNC_RESULT(result->obj),
-                                                 &length,
-                                                 &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    py_line = PyString_FromStringAndSize(line, length);
-    g_free(line);
-    return py_line;
-}
diff --git a/gio/gdrive.override b/gio/gdrive.override
deleted file mode 100644 (file)
index 7961856..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- * Copyright (C) 2009  Gian Mario Tagliaretti
- *
- *   gdrive.override: module overrides for GDrive and related types
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-%%
-override g_drive_get_volumes noargs
-static PyObject *
-_wrap_g_drive_get_volumes (PyGObject *self)
-{
-  GList *list, *l;
-  PyObject *ret;
-
-  pyg_begin_allow_threads;
-
-  list = g_drive_get_volumes (G_DRIVE (self->obj));
-
-  pyg_end_allow_threads;
-
-  ret = PyList_New(0);
-  for (l = list; l; l = l->next) {
-    GVolume *volume = l->data;
-    PyObject *item = pygobject_new((GObject *)volume);
-    PyList_Append(ret, item);
-    Py_DECREF(item);
-    g_object_unref(volume);
-  }
-  g_list_free(list);
-
-  return ret;
-}
-%%
-override g_drive_eject kwargs
-static PyObject *
-_wrap_g_drive_eject(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOO:gio.Drive.eject",
-                                    kwlist,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-    
-    if (PyErr_Warn(PyExc_DeprecationWarning,
-                   "gio.Drive.ejectis deprecated, \
-                   use gtk.Drive.eject_with_operation instead") < 0)
-        return NULL;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                       py_flags, (gpointer) &flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_drive_eject(G_DRIVE(self->obj),
-                 flags,
-                 cancellable,
-                 (GAsyncReadyCallback) async_result_callback_marshal,
-                 notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_drive_poll_for_media kwargs
-static PyObject *
-_wrap_g_drive_poll_for_media(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OO:gio.Drive.eject",
-                                    kwlist,
-                                    &notify->callback,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    pyg_begin_allow_threads;
-
-    g_drive_poll_for_media(G_DRIVE(self->obj),
-                          cancellable,
-                          (GAsyncReadyCallback) async_result_callback_marshal,
-                          notify);
-    
-    pyg_end_allow_threads;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override-slot GDrive.tp_repr
-static PyObject *
-_wrap_g_drive_tp_repr(PyGObject *self)
-{
-    char *name = g_drive_get_name(G_DRIVE(self->obj));
-    gchar *representation;
-    PyObject *result;
-
-    if (name) {
-       representation = g_strdup_printf("<%s at %p: %s>", self->ob_type->tp_name, self, name);
-       g_free(name);
-    }
-    else
-       representation = g_strdup_printf("<%s at %p: UNKNOWN NAME>", self->ob_type->tp_name, self);
-
-    result = PyString_FromString(representation);
-    g_free(representation);
-    return result;
-}
-%%
-override g_drive_enumerate_identifiers noargs
-static PyObject *
-_wrap_g_drive_enumerate_identifiers (PyGObject *self)
-{
-    char **ids;
-    PyObject *ret;
-  
-    pyg_begin_allow_threads;
-  
-    ids = g_drive_enumerate_identifiers(G_DRIVE (self->obj));
-  
-    pyg_end_allow_threads;
-  
-    if (ids && ids[0] != NULL) {
-       ret = strv_to_pylist(ids);
-       g_strfreev (ids);
-    } else {
-       ret = Py_None;
-       Py_INCREF(ret);
-    }
-    return ret;
-}
-%%
-override g_drive_eject_with_operation kwargs
-static PyObject *
-_wrap_g_drive_eject_with_operation(PyGObject *self,
-                                   PyObject *args,
-                                   PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "mount_operation",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOOO:gio.Drive.eject_with_operation",
-                                     kwlist,
-                                     &notify->callback,
-                                     &py_flags,
-                                     &mount_operation,
-                                     &py_cancellable,
-                                     &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                        py_flags, (gpointer) &flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_drive_eject_with_operation(G_DRIVE(self->obj),
-                          flags,
-                          G_MOUNT_OPERATION(mount_operation->obj),
-                          cancellable,
-                          (GAsyncReadyCallback) async_result_callback_marshal,
-                          notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_drive_start kwargs
-static PyObject *
-_wrap_g_drive_start(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "mount_operation",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    GDriveStartFlags flags = G_DRIVE_START_NONE;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOOO:gio.Drive.start",
-                                     kwlist,
-                                     &notify->callback,
-                                     &py_flags,
-                                     &mount_operation,
-                                     &py_cancellable,
-                                     &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_DRIVE_START_FLAGS,
-                                        py_flags, (gpointer) &flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_drive_start(G_DRIVE(self->obj), 
-                  flags,
-                  G_MOUNT_OPERATION(mount_operation->obj),
-                  cancellable,
-                  (GAsyncReadyCallback) async_result_callback_marshal,
-                  notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_drive_stop kwargs
-static PyObject *
-_wrap_g_drive_stop(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "mount_operation",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOOO:gio.Drive.stop",
-                                     kwlist,
-                                     &notify->callback,
-                                     &py_flags,
-                                     &mount_operation,
-                                     &py_cancellable,
-                                     &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                        py_flags, (gpointer) &flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_drive_stop(G_DRIVE(self->obj), 
-                 flags,
-                 G_MOUNT_OPERATION(mount_operation->obj),
-                 cancellable,
-                 (GAsyncReadyCallback) async_result_callback_marshal,
-                 notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
diff --git a/gio/gfile.override b/gio/gfile.override
deleted file mode 100644 (file)
index 1301963..0000000
+++ /dev/null
@@ -1,2215 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- *
- *   gfile.override: module overrides for GInputStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-headers
-
-static void
-file_progress_callback_marshal(goffset current_num_bytes,
-                              goffset total_num_bytes,
-                              PyGIONotify *notify)
-{
-    PyObject *ret;
-    PyGILState_STATE state;
-
-    state = pyg_gil_state_ensure();
-
-    if (notify->data)
-       ret = PyObject_CallFunction(notify->callback, "(KKO)",
-                                   current_num_bytes,
-                                   total_num_bytes,
-                                   notify->data);
-    else
-       ret = PyObject_CallFunction(notify->callback, "(KK)",
-                                   current_num_bytes,
-                                   total_num_bytes);
-
-    if (ret == NULL)
-      {
-       PyErr_Print();
-       PyErr_Clear();
-      }
-
-    Py_XDECREF(ret);
-    pyg_gil_state_release(state);
-}
-%%
-define _install_file_meta
-static PyObject *
-_wrap__install_file_meta(PyObject *self, PyObject *args)
-{
-    PyObject *metaclass;
-
-    if (!PyArg_ParseTuple(args, "O", &metaclass))
-       return NULL;
-
-    Py_INCREF(metaclass);
-    PyGFile_Type.ob_type = (PyTypeObject*)metaclass;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-%%
-define _file_init kwargs
-static PyObject*
-_wrap__file_init(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    GFile *file;
-    Py_ssize_t n_args, n_kwargs;
-    char *arg;
-    PyObject *py_ret;
-
-    n_args = PyTuple_Size(args);
-    n_kwargs = kwargs != NULL ? PyDict_Size(kwargs) : 0;
-
-    if (n_args == 1 && n_kwargs == 0) {
-       if (!PyArg_ParseTuple(args, "s:gio.File.__init__", &arg))
-           return NULL;
-       file = g_file_new_for_commandline_arg(arg);
-    } else if (n_args == 0 && n_kwargs == 1) {
-       if (PyDict_GetItemString(kwargs, "path")) {
-           char *kwlist[] = { "path", NULL };
-           if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                            "s:gio.File.__init__", kwlist, &arg))
-               return NULL;
-           file = g_file_new_for_path(arg);
-       } else if (PyDict_GetItemString(kwargs, "uri")) {
-           char *kwlist[] = { "uri", NULL };
-           if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                            "s:gio.File.__init__", kwlist, &arg))
-               return NULL;
-           file = g_file_new_for_uri(arg);
-       } else {
-           PyErr_Format(PyExc_TypeError,
-                        "gio.File() got an unexpected keyword argument '%s'",
-                        "unknown");
-           return NULL;
-       }
-    } else {
-       PyErr_Format(PyExc_TypeError,
-                    "gio.File() takes exactly 1 argument (%zd given)",
-                    n_args + n_kwargs);
-       return NULL;
-    }
-
-    if (!file) {
-        PyErr_SetString(PyExc_RuntimeError,
-                       "could not create GFile object");
-        return NULL;
-    }
-
-    py_ret = pygobject_new((GObject *)file);
-    g_object_unref(file);
-
-    return py_ret;
-}
-%%
-override g_file_read_async kwargs
-static PyObject *
-_wrap_g_file_read_async(PyGObject *self,
-                       PyObject *args,
-                       PyObject *kwargs)
-{
-  static char *kwlist[] = { "callback", "io_priority",
-                           "cancellable", "user_data", NULL };
-  int io_priority = G_PRIORITY_DEFAULT;
-  PyGObject *pycancellable = NULL;
-  GCancellable *cancellable;
-  PyGIONotify *notify;
-
-  notify = pygio_notify_new();
-
-  if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                   "O|iOO:File.read_async",
-                                   kwlist,
-                                   &notify->callback,
-                                   &io_priority,
-                                   &pycancellable,
-                                   &notify->data))
-      goto error;
-
-  if (!pygio_notify_callback_is_valid(notify))
-      goto error;
-
-  if (!pygio_check_cancellable(pycancellable, &cancellable))
-      goto error;
-
-  pygio_notify_reference_callback(notify);
-
-  g_file_read_async(G_FILE(self->obj),
-                    io_priority,
-                    cancellable,
-                    (GAsyncReadyCallback)async_result_callback_marshal,
-                    notify);
-
-  Py_INCREF(Py_None);
-  return Py_None;
-
- error:
-  pygio_notify_free(notify);
-  return NULL;
-}
-%%
-override g_file_load_contents kwargs
-static PyObject *
-_wrap_g_file_load_contents(PyGObject *self,
-                           PyObject *args,
-                           PyObject *kwargs)
-{
-    static char *kwlist[] = { "cancellable", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    gchar *contents, *etag_out;
-    gsize length;
-    GError *error = NULL;
-    gboolean ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "|O:File.load_contents",
-                                      kwlist,
-                                      &pycancellable))
-        return NULL;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-       return NULL;
-
-    pyg_begin_allow_threads;
-
-    ret = g_file_load_contents(G_FILE(self->obj), cancellable,
-                               &contents, &length, &etag_out, &error);
-
-    pyg_end_allow_threads;
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (ret) {
-        PyObject *pyret;
-
-        pyret = Py_BuildValue("(s#ks)", contents, length, length, etag_out);
-        g_free(contents);
-       g_free(etag_out);
-        return pyret;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-%%
-override g_file_load_contents_async kwargs
-static PyObject *
-_wrap_g_file_load_contents_async(PyGObject *self,
-                                 PyObject *args,
-                                 PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OO:File.load_contents_async",
-                                      kwlist,
-                                      &notify->callback,
-                                      &pycancellable,
-                                      &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_load_contents_async(G_FILE(self->obj),
-                              cancellable,
-                              (GAsyncReadyCallback)async_result_callback_marshal,
-                              notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_load_contents_finish kwargs
-static PyObject *
-_wrap_g_file_load_contents_finish(PyGObject *self,
-                           PyObject *args,
-                           PyObject *kwargs)
-{
-    static char *kwlist[] = { "res", NULL };
-    PyGObject *res;
-    gchar *contents, *etag_out;
-    gsize length;
-    GError *error = NULL;
-    gboolean ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!:File.load_contents_finish",
-                                      kwlist,
-                                      &PyGAsyncResult_Type,
-                                      &res))
-        return NULL;
-
-    ret = g_file_load_contents_finish(G_FILE(self->obj),
-                                      G_ASYNC_RESULT(res->obj), &contents,
-                                      &length, &etag_out, &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (ret) {
-        PyObject *pyret;
-
-        pyret = Py_BuildValue("(s#ks)", contents, length, length, etag_out);
-        g_free(contents);
-       g_free(etag_out);
-        return pyret;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-%%
-override g_file_enumerate_children_async kwargs
-static PyObject *
-_wrap_g_file_enumerate_children_async(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "attributes", "callback", "flags",
-                             "io_priority", "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    char *attributes;
-    PyObject *py_flags = NULL;
-    int io_priority = G_PRIORITY_DEFAULT;
-    GFileQueryInfoFlags flags = G_FILE_QUERY_INFO_NONE;
-    GCancellable *cancellable = NULL;
-    PyGObject *py_cancellable = NULL;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "sO|OiOO:gio.File.enumerate_children_async",
-                                    kwlist,
-                                    &attributes,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &io_priority,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_QUERY_INFO_FLAGS,
-                                       py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-       goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_enumerate_children_async(G_FILE(self->obj),
-                                   attributes,
-                                   flags,
-                                   io_priority,
-                                   (GCancellable *) cancellable,
-                                   (GAsyncReadyCallback)async_result_callback_marshal,
-                                   notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_mount_mountable kwargs
-static PyObject *
-_wrap_g_file_mount_mountable(PyGObject *self,
-                            PyObject *args,
-                            PyObject *kwargs)
-{
-    static char *kwlist[] = { "mount_operation", "callback", "flags",
-                             "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    PyGObject *py_cancellable = NULL;
-    GMountMountFlags flags = G_MOUNT_MOUNT_NONE;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!O|OOO:File.mount_mountable",
-                                    kwlist,
-                                    &PyGMountOperation_Type,
-                                    &mount_operation,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_MOUNT_FLAGS,
-                                       py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_mount_mountable(G_FILE(self->obj),
-                          flags,
-                          G_MOUNT_OPERATION(mount_operation->obj),
-                          cancellable,
-                          (GAsyncReadyCallback)async_result_callback_marshal,
-                          notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_unmount_mountable kwargs
-static PyObject *
-_wrap_g_file_unmount_mountable(PyGObject *self,
-                            PyObject *args,
-                            PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags",
-                             "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *py_cancellable = NULL;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOO:File.unmount_mountable",
-                                    kwlist,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                       py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_unmount_mountable(G_FILE(self->obj),
-                            flags,
-                            cancellable,
-                            (GAsyncReadyCallback)async_result_callback_marshal,
-                            notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_unmount_mountable_with_operation kwargs
-static PyObject *
-_wrap_g_file_unmount_mountable_with_operation(PyGObject *self,
-                                              PyObject *args,
-                                              PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "mount_operation",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    PyGObject *py_cancellable = NULL;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                "O|OOOO:File.unmount_mountable_with_operation",
-                                kwlist,
-                                &notify->callback,
-                                &py_flags,
-                               &mount_operation,
-                                &py_cancellable,
-                                &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_unmount_mountable_with_operation(G_FILE(self->obj),
-                             flags,
-                            G_MOUNT_OPERATION(mount_operation->obj),
-                             cancellable,
-                             (GAsyncReadyCallback)async_result_callback_marshal,
-                             notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_mount_enclosing_volume kwargs
-static PyObject *
-_wrap_g_file_mount_enclosing_volume(PyGObject *self,
-                                   PyObject *args,
-                                   PyObject *kwargs)
-{
-    static char *kwlist[] = { "mount_operation", "callback", "flags",
-                             "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    PyGObject *py_cancellable = NULL;
-    GMountMountFlags flags = G_MOUNT_MOUNT_NONE;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!O|OOO:File.mount_enclosing_volume",
-                                    kwlist,
-                                    &PyGMountOperation_Type,
-                                    &mount_operation,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_MOUNT_FLAGS,
-                                       py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_mount_enclosing_volume(G_FILE(self->obj),
-                                 flags,
-                                 G_MOUNT_OPERATION(mount_operation->obj),
-                                 cancellable,
-                                 (GAsyncReadyCallback)async_result_callback_marshal,
-                                 notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_copy kwargs
-static PyObject *
-_wrap_g_file_copy(PyGObject *self,
-                 PyObject *args,
-                 PyObject *kwargs)
-{
-    static char *kwlist[] = { "destination", "progress_callback",
-                             "flags", "cancellable", 
-                             "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *destination = NULL;
-    PyGObject *py_cancellable = NULL;
-    GFileCopyFlags flags = G_FILE_COPY_NONE;
-    GCancellable *cancellable;
-    int ret;
-    GError *error = NULL;
-    GFileProgressCallback callback = NULL;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!|OOOO:File.copy",
-                                    kwlist,
-                                    &PyGFile_Type,
-                                    &destination,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (pygio_notify_using_optional_callback(notify)) {
-        callback = (GFileProgressCallback)file_progress_callback_marshal;
-        if (!pygio_notify_callback_is_valid(notify))
-            goto error;
-    }
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_COPY_FLAGS,
-                                       py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    /* No need to reference callback here, because it will be used
-     * only while this function is in progress. */
-
-    pyg_begin_allow_threads;
-
-    ret = g_file_copy(G_FILE(self->obj),
-                     G_FILE(destination->obj),
-                     flags,
-                     cancellable,
-                     callback,
-                     notify,
-                     &error);
-
-    pyg_end_allow_threads;
-
-    if (pyg_error_check(&error))
-        goto error;
-
-    pygio_notify_free(notify);
-    return PyBool_FromLong(ret);
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_copy_async kwargs
-static PyObject *
-_wrap_g_file_copy_async(PyGObject *self,
-                       PyObject *args,
-                       PyObject *kwargs)
-{
-  static char *kwlist[] = { "destination", "callback", "progress_callback",
-                            "flags", "io_priority", "cancellable",
-                            "user_data", "progress_callback_data", NULL };
-  PyGIONotify *notify, *progress_notify;
-  PyObject *py_flags = NULL;
-  PyGObject *destination = NULL;
-  PyGObject *py_cancellable = NULL;
-  GFileCopyFlags flags = G_FILE_COPY_NONE;
-  int io_priority = G_PRIORITY_DEFAULT;
-  PyGObject *pycancellable = NULL;
-  GCancellable *cancellable;
-  GFileProgressCallback progress_callback = NULL;
-
-  /* After the creation, referencing/freeing will automatically be
-   * done on the master and the slave. */
-  notify = pygio_notify_new();
-  progress_notify = pygio_notify_new_slave(notify);
-
-  if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                   "O!O|OOiOOO:File.copy_async",
-                                   kwlist,
-                                   &PyGFile_Type,
-                                   &destination,
-                                   &notify->callback,
-                                   &progress_notify->callback,
-                                   &py_flags,
-                                   &io_priority,
-                                   &pycancellable,
-                                   &notify->data,
-                                   &progress_notify->data))
-      goto error;
-
-  if (!pygio_notify_callback_is_valid(notify))
-      goto error;
-
-  if (!pygio_check_cancellable(py_cancellable, &cancellable))
-      goto error;
-
-  if (pygio_notify_using_optional_callback(progress_notify)) {
-      progress_callback = (GFileProgressCallback) file_progress_callback_marshal;
-      if (!pygio_notify_callback_is_valid_full(progress_notify, "progress_callback"))
-          goto error;
-  }
-
-  if (!pygio_check_cancellable(pycancellable, &cancellable))
-      goto error;
-
-  pygio_notify_reference_callback(notify);
-
-  g_file_copy_async(G_FILE(self->obj),
-                    G_FILE(destination->obj),
-                    flags,
-                    io_priority,
-                    cancellable,
-                    progress_callback,
-                    progress_notify,
-                    (GAsyncReadyCallback)async_result_callback_marshal,
-                    notify);
-
-  Py_INCREF(Py_None);
-  return Py_None;
-
- error:
-  pygio_notify_free(notify);
-  return NULL;
-}
-%%
-override g_file_move kwargs
-static PyObject *
-_wrap_g_file_move(PyGObject *self,
-                 PyObject *args,
-                 PyObject *kwargs)
-{
-    static char *kwlist[] = { "destination", "progress_callback",
-                             "flags", "cancellable", 
-                             "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *destination = NULL;
-    PyGObject *py_cancellable = NULL;
-    GFileCopyFlags flags = G_FILE_COPY_NONE;
-    GCancellable *cancellable;
-    int ret;
-    GError *error = NULL;
-    GFileProgressCallback callback = NULL;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!|OOOO:File.move",
-                                    kwlist,
-                                    &PyGFile_Type,
-                                    &destination,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (pygio_notify_using_optional_callback(notify)) {
-        callback = (GFileProgressCallback)file_progress_callback_marshal;
-        if (!pygio_notify_callback_is_valid(notify))
-            goto error;
-    }
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_COPY_FLAGS,
-                                       py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    /* No need to reference callback here, because it will be used
-     * only while this function is in progress. */
-
-    pyg_begin_allow_threads;
-
-    ret = g_file_move(G_FILE(self->obj),
-                     G_FILE(destination->obj),
-                     flags,
-                     cancellable,
-                     callback,
-                     notify,
-                     &error);
-    
-    pyg_end_allow_threads;
-
-    if (pyg_error_check(&error))
-        goto error;
-
-    pygio_notify_free(notify);
-    return PyBool_FromLong(ret);
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_set_attribute kwargs
-static char**
-pyg_strv_from_pyobject(PyObject *value, const char *exc_msg)
-{
-    gchar** strv;
-    Py_ssize_t len, i;
-    PyObject* fast_seq;
-
-    fast_seq = PySequence_Fast(value, exc_msg);
-    if (fast_seq == NULL)
-       return NULL;
-
-    len = PySequence_Length(fast_seq);
-    if (len == -1)
-       return NULL;
-
-    strv = g_malloc(sizeof(char*) * (len + 1));
-    if (strv == NULL) {
-       PyErr_NoMemory();
-       goto failure;
-    }
-
-    for (i = 0; i < len + 1; i++)
-       strv[i] = NULL;
-
-    for (i = 0; i < len; i++) {
-       PyObject* item = PySequence_Fast_GET_ITEM(fast_seq, i);
-       const char *s;
-
-       if (!PyString_Check(item)) {
-           PyErr_SetString(PyExc_TypeError, exc_msg);
-           goto failure;
-       }
-
-       s = PyString_AsString(item);
-       if (s == NULL)
-           goto failure;
-               
-       strv[i] = g_strdup(s);
-       if (strv[i] == NULL) { 
-           PyErr_NoMemory();
-           goto failure;
-       }
-    }
-
-    return strv;
-
- failure:
-    g_strfreev(strv);
-    Py_XDECREF(fast_seq);
-    return NULL;
-}
-
-static PyObject *
-_wrap_g_file_set_attribute(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "attribute", "type", "value_p",
-                              "flags", "cancellable", NULL };
-    GFileQueryInfoFlags flags = G_FILE_QUERY_INFO_NONE;
-    int ret = 0;
-    GCancellable *cancellable = NULL;
-    GError *error = NULL;
-    char *attribute;
-    PyObject *py_type = NULL, *py_flags = NULL, *value;
-    PyGObject *pycancellable = NULL;
-    GFileAttributeType type;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"sOO|OO:gio.File.set_attribute",
-                                     kwlist, &attribute, &py_type, &value,
-                                     &py_flags, &pycancellable))
-        return NULL;
-
-    if (pyg_enum_get_value(G_TYPE_FILE_ATTRIBUTE_TYPE, py_type,
-                            (gpointer)&type))
-        return NULL;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_QUERY_INFO_FLAGS, py_flags,
-                                        (gpointer)&flags))
-        return NULL;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        return NULL;
-
-    switch (type) {
-    case G_FILE_ATTRIBUTE_TYPE_STRING:
-       {
-           char* s;
-           if (!PyString_Check(value)) {
-               PyErr_Format(PyExc_TypeError, 
-                            "set_attribute value must be a str when type is FILE_ATTRIBUTE_TYPE_STRING");
-               return NULL;
-           }
-
-           s = PyString_AsString(value);
-           if (s == NULL)
-               return NULL;
-
-           ret = g_file_set_attribute(G_FILE(self->obj), attribute, type,
-                                      s, flags, (GCancellable *) cancellable,
-                                      &error);
-       }
-       break;
-
-    case G_FILE_ATTRIBUTE_TYPE_BYTE_STRING:
-       {
-           char* s;
-           if (!PyString_Check(value)) {
-               PyErr_Format(PyExc_TypeError, 
-                            "set_attribute value must be a bytes instance when type is FILE_ATTRIBUTE_TYPE_BYTE_STRING");
-               return NULL;
-           }
-
-           s = PyString_AsString(value);
-           if (s == NULL)
-               return NULL;
-
-           ret = g_file_set_attribute(G_FILE(self->obj), attribute, type,
-                                      s, flags, (GCancellable *) cancellable,
-                                      &error);
-       }
-       break;
-
-    case G_FILE_ATTRIBUTE_TYPE_STRINGV:
-       {
-           gchar** strv;
-           
-           strv = pyg_strv_from_pyobject(value, "set_attribute value must be a list of strings when type is FILE_ATTRIBUTE_TYPE_STRINGV");
-           if (strv == NULL)
-               break;
-           ret = g_file_set_attribute(G_FILE(self->obj), attribute, type,
-                                      strv, flags, (GCancellable *) cancellable,
-                                      &error);
-           g_strfreev(strv);
-       }
-       break;
-
-    case G_FILE_ATTRIBUTE_TYPE_OBJECT:
-       {
-           GObject* obj;
-
-           if (!pygobject_check(value, &PyGObject_Type)) {
-               PyErr_Format(PyExc_TypeError, 
-                            "set_attribute value must be a GObject instance when type is FILE_ATTRIBUTE_TYPE_OBJECT");
-               return NULL;
-           }
-               
-           obj = pygobject_get(value);
-
-           ret = g_file_set_attribute(G_FILE(self->obj), attribute, type,
-                                      obj, flags, (GCancellable *) cancellable,
-                                      &error);
-       }
-       break;
-
-    case G_FILE_ATTRIBUTE_TYPE_BOOLEAN:
-       {
-           gboolean boolval;
-
-           boolval = PyObject_IsTrue(value);
-           if (boolval == -1 && PyErr_Occurred())
-               return NULL;
-
-           ret = g_file_set_attribute(G_FILE(self->obj), attribute, type,
-                                      &boolval, flags, (GCancellable *) cancellable,
-                                      &error);
-       }
-       break;
-
-    case G_FILE_ATTRIBUTE_TYPE_UINT32:
-       {
-           guint32 intval;
-
-           if (!PyInt_Check(value) && !PyLong_Check(value)) {
-               PyErr_Format(PyExc_TypeError, 
-                            "set_attribute value must be an int when type is FILE_ATTRIBUTE_TYPE_UINT32");
-               return NULL;
-           }
-               
-           intval = PyLong_AsUnsignedLong(value);
-           if (intval == -1 && PyErr_Occurred())
-               return NULL;
-
-           ret = g_file_set_attribute(G_FILE(self->obj), attribute, type,
-                                      &intval, flags, (GCancellable *) cancellable,
-                                      &error);
-       }
-       break;
-
-    case G_FILE_ATTRIBUTE_TYPE_INT32:
-       {
-           gint32 intval;
-
-           if (!PyInt_Check(value)) {
-               PyErr_Format(PyExc_TypeError, 
-                            "set_attribute value must be an int when type is FILE_ATTRIBUTE_TYPE_INT32");
-               return NULL;
-           }
-               
-           intval = PyInt_AsLong(value);
-           if (intval == -1 && PyErr_Occurred())
-               return NULL;
-
-           ret = g_file_set_attribute(G_FILE(self->obj), attribute, type,
-                                      &intval, flags, (GCancellable *) cancellable,
-                                      &error);
-       }
-       break;
-
-    case G_FILE_ATTRIBUTE_TYPE_UINT64:
-       {
-           guint64 intval;
-
-           if (!PyInt_Check(value) && !PyLong_Check(value)) {
-               PyErr_Format(PyExc_TypeError, 
-                            "set_attribute value must be a long int when type is FILE_ATTRIBUTE_TYPE_UINT64");
-               return NULL;
-           }
-               
-           intval = PyLong_AsLongLong(value);
-           if (intval == -1 && PyErr_Occurred())
-               return NULL;
-
-           ret = g_file_set_attribute(G_FILE(self->obj), attribute, type,
-                                      &intval, flags, (GCancellable *) cancellable,
-                                      &error);
-       }
-       break;
-
-    case G_FILE_ATTRIBUTE_TYPE_INT64:
-       {
-           gint64 intval;
-
-           if (!PyInt_Check(value) && !PyLong_Check(value)) {
-               PyErr_Format(PyExc_TypeError, 
-                            "set_attribute value must be a long int when type is FILE_ATTRIBUTE_TYPE_INT64");
-               return NULL;
-           }
-               
-           intval = PyLong_AsUnsignedLongLong(value);
-           if (intval == -1 && PyErr_Occurred())
-               return NULL;
-
-           ret = g_file_set_attribute(G_FILE(self->obj), attribute, type,
-                                      &intval, flags, (GCancellable *) cancellable,
-                                      &error);
-       }
-       break;
-
-    case G_FILE_ATTRIBUTE_TYPE_INVALID:
-
-    default:
-        PyErr_SetString(PyExc_TypeError, 
-                       "Unknown type specified in set_attribute\n");
-       return NULL;
-    }
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    return PyBool_FromLong(ret);
-}
-%%
-override g_file_query_settable_attributes kwargs
-static PyObject *
-_wrap_g_file_query_settable_attributes(PyGObject *self,
-                                       PyObject *args,
-                                       PyObject *kwargs)
-{
-    static char *kwlist[] = { "cancellable", NULL };
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable = NULL;
-    GFileAttributeInfoList *ret;
-    GError *error = NULL;
-    gint i, n_infos;
-    GFileAttributeInfo *infos;
-    PyObject *py_ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "|O:gio.File.query_settable_attributes",
-                                     kwlist, &pycancellable))
-        return NULL;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        return NULL;
-
-    ret = g_file_query_settable_attributes(G_FILE(self->obj),
-                                           (GCancellable *) cancellable,
-                                           &error);
-    if (pyg_error_check(&error))
-        return NULL;
-
-    n_infos = ret->n_infos;
-    infos = ret->infos;
-
-    if (n_infos > 0) {
-        py_ret = PyList_New(n_infos);
-        for (i = 0; i < n_infos; i++) {
-            PyList_SetItem(py_ret, i, pyg_file_attribute_info_new(&infos[i]));
-        }
-        g_file_attribute_info_list_unref(ret);
-        return py_ret;
-
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-%%
-override g_file_query_writable_namespaces kwargs
-static PyObject *
-_wrap_g_file_query_writable_namespaces(PyGObject *self,
-                                       PyObject *args,
-                                       PyObject *kwargs)
-{
-    static char *kwlist[] = { "cancellable", NULL };
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable = NULL;
-    GFileAttributeInfoList *ret;
-    GError *error = NULL;
-    gint i, n_infos;
-    GFileAttributeInfo *infos;
-    PyObject *py_ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "|O:gio.File.query_writable_namespaces",
-                                     kwlist, &pycancellable))
-        return NULL;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        return NULL;
-
-    ret = g_file_query_writable_namespaces(G_FILE(self->obj),
-                                           (GCancellable *) cancellable,
-                                           &error);
-    if (pyg_error_check(&error))
-        return NULL;
-
-    n_infos = ret->n_infos;
-    infos = ret->infos;
-
-    if (n_infos > 0) {
-        py_ret = PyList_New(n_infos);
-        for (i = 0; i < n_infos; i++) {
-            PyList_SetItem(py_ret, i, pyg_file_attribute_info_new(&infos[i]));
-        }
-        g_file_attribute_info_list_unref(ret);
-        return py_ret;
-
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-%%
-override g_file_append_to_async kwargs
-static PyObject *
-_wrap_g_file_append_to_async(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "io_priority",
-                              "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    GFileCreateFlags flags = G_FILE_CREATE_NONE;
-    PyObject *py_flags = NULL;
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OiOO:File.append_to_async",
-                                      kwlist,
-                                      &notify->callback,
-                                      &py_flags, &io_priority,
-                                      &pycancellable,
-                                      &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_CREATE_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_append_to_async(G_FILE(self->obj), flags, io_priority, cancellable,
-                           (GAsyncReadyCallback)async_result_callback_marshal,
-                           notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_create_async kwargs
-static PyObject *
-_wrap_g_file_create_async(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "io_priority",
-                              "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    GFileCreateFlags flags = G_FILE_CREATE_NONE;
-    PyObject *py_flags = NULL;
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OiOO:File.create_async",
-                                      kwlist,
-                                      &notify->callback,
-                                      &py_flags, &io_priority,
-                                      &pycancellable,
-                                      &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_CREATE_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_create_async(G_FILE(self->obj), flags, io_priority, cancellable,
-                        (GAsyncReadyCallback)async_result_callback_marshal,
-                        notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_create_readwrite_async kwargs
-static PyObject *
-_wrap_g_file_create_readwrite_async(PyGObject *self,
-                                   PyObject *args,
-                                   PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "io_priority",
-                              "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    GFileCreateFlags flags = G_FILE_CREATE_NONE;
-    PyObject *py_flags = NULL;
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OiOO:File.create_readwrite_async",
-                                      kwlist,
-                                      &notify->callback,
-                                      &py_flags, &io_priority,
-                                      &pycancellable,
-                                      &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_CREATE_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_create_readwrite_async(G_FILE(self->obj), flags, io_priority,
-                       cancellable,
-                        (GAsyncReadyCallback)async_result_callback_marshal,
-                        notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_open_readwrite_async kwargs
-static PyObject *
-_wrap_g_file_open_readwrite_async(PyGObject *self,
-                                  PyObject *args,
-                                  PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "io_priority",
-                              "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|iOO:File.open_readwrite_async",
-                                      kwlist,
-                                      &notify->callback,
-                                      &io_priority,
-                                      &pycancellable,
-                                      &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_open_readwrite_async(G_FILE(self->obj), io_priority, cancellable,
-                        (GAsyncReadyCallback)async_result_callback_marshal,
-                        notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_replace_readwrite_async kwargs
-static PyObject *
-_wrap_g_file_replace_readwrite_async(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "etag", "make_backup", "flags",
-                              "io_priority", "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    GFileCreateFlags flags = G_FILE_CREATE_NONE;
-    PyObject *py_flags = NULL;
-    int io_priority = G_PRIORITY_DEFAULT;
-    char *etag = NULL;
-    gboolean make_backup = TRUE;
-    PyObject *py_backup = Py_True;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|zOOiOO:File.replace_readwrite_async",
-                                      kwlist,
-                                      &notify->callback,
-                                      &etag, &py_backup,
-                                      &flags, &io_priority,
-                                      &pycancellable,
-                                      &notify->data))
-        goto error;
-
-    make_backup = PyObject_IsTrue(py_backup) ? TRUE : FALSE;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_CREATE_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_replace_readwrite_async(G_FILE(self->obj), etag, make_backup, flags,
-                         io_priority, cancellable,
-                         (GAsyncReadyCallback)async_result_callback_marshal,
-                         notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_replace_async kwargs
-static PyObject *
-_wrap_g_file_replace_async(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "etag", "make_backup", "flags",
-                              "io_priority", "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    GFileCreateFlags flags = G_FILE_CREATE_NONE;
-    PyObject *py_flags = NULL;
-    int io_priority = G_PRIORITY_DEFAULT;
-    char *etag = NULL;
-    gboolean make_backup = TRUE;
-    PyObject *py_backup = Py_True;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|zOOiOO:File.replace_async",
-                                      kwlist,
-                                      &notify->callback,
-                                      &etag, &py_backup,
-                                      &py_flags, &io_priority,
-                                      &pycancellable,
-                                      &notify->data))
-        goto error;
-
-    make_backup = PyObject_IsTrue(py_backup) ? TRUE : FALSE;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_CREATE_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_replace_async(G_FILE(self->obj), etag, make_backup, flags,
-                         io_priority, cancellable,
-                         (GAsyncReadyCallback)async_result_callback_marshal,
-                         notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_query_info_async kwargs
-static PyObject *
-_wrap_g_file_query_info_async(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "attributes", "callback", "flags",
-                              "io_priority", "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    GFileQueryInfoFlags flags = G_FILE_QUERY_INFO_NONE;
-    PyObject *py_flags = NULL;
-    int io_priority = G_PRIORITY_DEFAULT;
-    char *attributes;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "sO|OiOO:File.query_info_async",
-                                     kwlist,
-                                     &attributes,
-                                     &notify->callback,
-                                     &flags, &io_priority,
-                                     &pycancellable,
-                                     &notify->data)) {
-        /* To preserve compatibility with 2.16 we also allow swapped
-         * 'attributes' and 'callback'.  FIXME: Remove for 3.0. */
-        static char *old_kwlist[] = { "callback", "attributes", "flags",
-                                      "io_priority", "cancellable", "user_data", NULL };
-        PyObject *exc_type, *exc_value, *exc_traceback;
-
-        PyErr_Fetch(&exc_type, &exc_value, &exc_traceback);
-
-        if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                         "Os|OiOO:File.query_info_async",
-                                         old_kwlist,
-                                         &notify->callback,
-                                         &attributes,
-                                         &flags, &io_priority,
-                                         &pycancellable,
-                                         &notify->data)
-            || !pygio_notify_callback_is_valid(notify)) {
-            /* Report the error with new parameters. */
-            PyErr_Restore(exc_type, exc_value, exc_traceback);
-            goto error;
-        }
-
-        Py_XDECREF(exc_type);
-        Py_XDECREF(exc_value);
-        Py_XDECREF(exc_traceback);
-    }
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_CREATE_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_query_info_async(G_FILE(self->obj), attributes, flags,
-                         io_priority, cancellable,
-                         (GAsyncReadyCallback)async_result_callback_marshal,
-                         notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_replace_contents kwargs
-static PyObject *
-_wrap_g_file_replace_contents(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "contents", "etag", "make_backup",
-                              "flags", "cancellable", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    GFileCreateFlags flags = G_FILE_CREATE_NONE;
-    PyObject *py_flags = NULL;
-    gsize length;
-    gboolean make_backup = FALSE;
-    char *contents;
-    char *etag = NULL;
-    char *new_etag = NULL;
-    GError *error = NULL;
-    gboolean ret;
-    PyObject *py_ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "s#|zbOO:File.replace_contents",
-                                     kwlist,
-                                     &contents,
-                                     &length,
-                                     &etag,
-                                     &make_backup,
-                                     &flags,
-                                     &cancellable))
-    {
-        return NULL;
-    }
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_CREATE_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        return NULL;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        return NULL;
-
-    pyg_begin_allow_threads;
-
-    ret = g_file_replace_contents(G_FILE(self->obj), contents, length, etag,
-                                  make_backup, flags, &new_etag, cancellable,
-                                  &error);
-
-    pyg_end_allow_threads;
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (ret) {
-        py_ret = PyString_FromString(new_etag);
-    } else {
-        py_ret = Py_None;
-        Py_INCREF(py_ret);
-    }
-
-    g_free(new_etag);
-    return py_ret;
-}
-%%
-override g_file_replace_contents_finish kwargs
-static PyObject *
-_wrap_g_file_replace_contents_finish(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "result", NULL };
-    PyGObject *res;
-    gchar *etag_out = NULL;
-    GError *error = NULL;
-    gboolean ret;
-    PyObject *py_ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!:File.replace_contents_finish",
-                                      kwlist,
-                                      &PyGAsyncResult_Type,
-                                      &res))
-        return NULL;
-
-    ret = g_file_replace_contents_finish(G_FILE(self->obj),
-                                         G_ASYNC_RESULT(res->obj), &etag_out,
-                                         &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (ret) {
-        py_ret = PyString_FromString(etag_out);
-        return py_ret;
-    } else {
-        py_ret = Py_None;
-        Py_INCREF(py_ret);
-    }
-
-    g_free(etag_out);
-    return py_ret;
-}
-%%
-override g_file_replace_contents_async kwargs
-static PyObject *
-_wrap_g_file_replace_contents_async(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "contents", "callback", "etag", "make_backup",
-                              "flags", "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    PyGIONotify *notify;
-    GFileCreateFlags flags = G_FILE_CREATE_NONE;
-    PyObject *py_flags = NULL;
-    gsize length;
-    gboolean make_backup = FALSE;
-    char *contents;
-    char *etag = NULL;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "s#O|zbOOO:File.replace_contents_async",
-                                      kwlist,
-                                      &contents,
-                                      &length,
-                                      &notify->callback,
-                                      &etag,
-                                      &make_backup,
-                                      &py_flags,
-                                      &pycancellable,
-                                      &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_CREATE_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-    pygio_notify_copy_buffer(notify, contents, length);
-
-    g_file_replace_contents_async(G_FILE(self->obj),
-                                  notify->buffer,
-                                  notify->buffer_size,
-                                  etag,
-                                  make_backup,
-                                  flags,
-                                  cancellable,
-                                  (GAsyncReadyCallback)async_result_callback_marshal,
-                                  notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override-slot GFile.tp_richcompare
-static PyObject *
-_wrap_g_file_tp_richcompare(PyGObject *self, PyGObject *other, int op)
-{
-    PyObject *result;
-
-    if (PyObject_TypeCheck(self, &PyGFile_Type)
-        && PyObject_TypeCheck(other, &PyGFile_Type)) {
-        GFile *file1 = G_FILE(self->obj);
-        GFile *file2 = G_FILE(other->obj);
-
-        switch (op) {
-        case Py_EQ:
-            result = (g_file_equal(file1, file2)
-                      ? Py_True : Py_False);
-            break;
-        case Py_NE:
-            result = (!g_file_equal(file1, file2)
-                      ? Py_True : Py_False);
-            break;
-        default:
-            result = Py_NotImplemented;
-        }
-    }
-    else
-        result = Py_NotImplemented;
-
-    Py_INCREF(result);
-    return result;
-}
-%%
-override-slot GFile.tp_hash
-static long
-_wrap_g_file_tp_hash(PyGObject *self)
-{
-    return g_file_hash(G_FILE(self->obj));
-}
-%%
-override-slot GFile.tp_repr
-static PyObject *
-_wrap_g_file_tp_repr(PyGObject *self)
-{
-    char *uri = g_file_get_uri(G_FILE(self->obj));
-    gchar *representation;
-    PyObject *result;
-
-    if (uri) {
-       representation = g_strdup_printf("<%s at %p: %s>", self->ob_type->tp_name, self, uri);
-       g_free(uri);
-    }
-    else
-       representation = g_strdup_printf("<%s at %p: UNKNOWN URI>", self->ob_type->tp_name, self);
-
-    result = PyString_FromString(representation);
-    g_free(representation);
-    return result;
-}
-%%
-override g_file_eject_mountable kwargs
-static PyObject *
-_wrap_g_file_eject_mountable(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags",
-                              "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    GFileCreateFlags flags = G_FILE_CREATE_NONE;
-    PyObject *py_flags = NULL;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOO:File.eject_mountable",
-                                      kwlist,
-                                      &notify->callback,
-                                      &flags,
-                                      &pycancellable,
-                                      &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_FILE_CREATE_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_eject_mountable(G_FILE(self->obj), flags, cancellable,
-                           (GAsyncReadyCallback)async_result_callback_marshal,
-                           notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_eject_mountable_with_operation kwargs
-static PyObject *
-_wrap_g_file_eject_mountable_with_operation(PyGObject *self,
-                                           PyObject *args,
-                                           PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "mount_operation",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                "O|OOOO:File.eject_mountable_with_operation",
-                                kwlist,
-                                &notify->callback,
-                                &py_flags,
-                                &mount_operation,
-                                &py_cancellable,
-                                &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                        py_flags, (gpointer) &flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_eject_mountable_with_operation(G_FILE(self->obj), 
-                           flags,
-                           G_MOUNT_OPERATION(mount_operation->obj),
-                           cancellable,
-                           (GAsyncReadyCallback) async_result_callback_marshal,
-                           notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_find_enclosing_mount_async kwargs
-static PyObject *
-_wrap_g_file_find_enclosing_mount_async(PyGObject *self,
-                                  PyObject *args,
-                                  PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "io_priority",
-                             "cancellable", "user_data", NULL };
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    PyGIONotify *notify;
-  
-    notify = pygio_notify_new();
-  
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "O|iOO:File.enclosing_mount_async",
-                                    kwlist,
-                                    &notify->callback,
-                                    &io_priority,
-                                    &pycancellable,
-                                    &notify->data))
-       goto error;
-  
-    if (!pygio_notify_callback_is_valid(notify))
-       goto error;
-  
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-       goto error;
-  
-    pygio_notify_reference_callback(notify);
-  
-    g_file_find_enclosing_mount_async(G_FILE(self->obj),
-                           io_priority,
-                           cancellable,
-                           (GAsyncReadyCallback)async_result_callback_marshal,
-                           notify);
-  
-    Py_INCREF(Py_None);
-       return Py_None;
-  
-    error:
-       pygio_notify_free(notify);
-       return NULL;
-}
-%%
-override g_file_query_filesystem_info_async kwargs
-static PyObject *
-_wrap_g_file_query_filesystem_info_async(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "attributes", "callback",
-                             "io_priority", "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    char *attributes;
-    int io_priority = G_PRIORITY_DEFAULT;
-    GCancellable *cancellable = NULL;
-    PyGObject *py_cancellable = NULL;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "sO|iOO:gio.File.query_filesystem_info_async",
-                                    kwlist,
-                                    &attributes,
-                                    &notify->callback,
-                                    &io_priority,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-       goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_query_filesystem_info_async(G_FILE(self->obj),
-                                      attributes,
-                                      io_priority,
-                                      (GCancellable *) cancellable,
-                                      (GAsyncReadyCallback)async_result_callback_marshal,
-                                      notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_set_attributes_async kwargs
-static PyObject *
-_wrap_g_file_set_attributes_async(PyGObject *self,
-                                 PyObject *args,
-                                 PyObject *kwargs)
-{
-    static char *kwlist[] = { "info", "callback", "flags",
-                             "io_priority", "cancellable", "user_data", NULL };
-    PyGObject *info;
-    PyGIONotify *notify;
-    GFileQueryInfoFlags flags = G_FILE_QUERY_INFO_NONE;
-    int io_priority = G_PRIORITY_DEFAULT;
-    GCancellable *cancellable = NULL;
-    PyGObject *py_cancellable = NULL;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "O!O|OiOO:gio.File.set_attributes_async",
-                                    kwlist,
-                                    &PyGFileInfo_Type,
-                                    &info,
-                                    &notify->callback,
-                                    &flags,
-                                    &io_priority,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-       goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_set_attributes_async(G_FILE(self->obj),
-                           G_FILE_INFO(info->obj),
-                           flags,
-                           io_priority,
-                           (GCancellable *) cancellable,
-                           (GAsyncReadyCallback)async_result_callback_marshal,
-                           notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-
-%%
-override g_file_set_attributes_finish kwargs
-static PyObject *
-_wrap_g_file_set_attributes_finish(PyGObject *self,
-                                  PyObject *args,
-                                  PyObject *kwargs)
-{
-    static char *kwlist[] = { "result", NULL };
-    PyGObject *res;
-    GFileInfo *info = NULL;
-    GError *error = NULL;
-    gboolean ret;
-    PyObject *py_ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!:File.set_attributes_finish",
-                                      kwlist,
-                                      &PyGAsyncResult_Type,
-                                      &res))
-        return NULL;
-
-    ret = g_file_set_attributes_finish(G_FILE(self->obj),
-                                       G_ASYNC_RESULT(res->obj), &info,
-                                       &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (ret) {
-        py_ret = pygobject_new((GObject *)info);
-    } else {
-        py_ret = Py_None;
-        Py_INCREF(py_ret);
-    }
-
-    return py_ret;
-}
-%%
-override g_file_set_display_name_async kwargs
-static PyObject *
-_wrap_g_file_set_display_name_async(PyGObject *self,
-                                   PyObject *args,
-                                   PyObject *kwargs)
-{
-    static char *kwlist[] = { "display_name", "callback",
-                             "io_priority", "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    char *display_name;
-    int io_priority = G_PRIORITY_DEFAULT;
-    GCancellable *cancellable = NULL;
-    PyGObject *py_cancellable = NULL;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "sO|iOO:gio.File.set_display_name_async",
-                                    kwlist,
-                                    &display_name,
-                                    &notify->callback,
-                                    &io_priority,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-       goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_set_display_name_async(G_FILE(self->obj),
-                           display_name,
-                           io_priority,
-                           (GCancellable *) cancellable,
-                           (GAsyncReadyCallback)async_result_callback_marshal,
-                           notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_poll_mountable kwargs
-static PyObject *
-_wrap_g_file_poll_mountable(PyGObject *self,
-                                  PyObject *args,
-                                  PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OO:File.poll_mountable",
-                                      kwlist,
-                                      &notify->callback,
-                                      &pycancellable,
-                                      &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_poll_mountable(G_FILE(self->obj), cancellable,
-                        (GAsyncReadyCallback)async_result_callback_marshal,
-                        notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_start_mountable kwargs
-static PyObject *
-_wrap_g_file_start_mountable(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "start_operation",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    GDriveStartFlags flags = G_DRIVE_START_NONE;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOOO:File.start_mountable",
-                                     kwlist,
-                                     &notify->callback,
-                                     &py_flags,
-                                     &mount_operation,
-                                     &py_cancellable,
-                                     &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_DRIVE_START_FLAGS,
-                                        py_flags, (gpointer) &flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_start_mountable(G_FILE(self->obj), 
-                 flags,
-                 G_MOUNT_OPERATION(mount_operation->obj),
-                 cancellable,
-                 (GAsyncReadyCallback) async_result_callback_marshal,
-                 notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_stop_mountable kwargs
-static PyObject *
-_wrap_g_file_stop_mountable(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "mount_operation",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOOO:gio.File.stop_mountable",
-                                     kwlist,
-                                     &notify->callback,
-                                     &py_flags,
-                                     &mount_operation,
-                                     &py_cancellable,
-                                     &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                        py_flags, (gpointer) &flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_stop_mountable(G_FILE(self->obj), 
-                 flags,
-                 G_MOUNT_OPERATION(mount_operation->obj),
-                 cancellable,
-                 (GAsyncReadyCallback) async_result_callback_marshal,
-                 notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-
-/* GFile.load_partial_contents_async: No ArgType for GFileReadMoreCallback */
-/* GFile.load_partial_contents_finish: No ArgType for char** */
diff --git a/gio/gfileattribute.override b/gio/gfileattribute.override
deleted file mode 100644 (file)
index e51ec63..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Gian Mario Tagliaretti
- *
- *   gfileattribute.override: module overrides for GFileAttribute*
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-headers
-
-extern PyTypeObject PyGFileAttributeInfo_Type;
-
-typedef struct {
-    PyObject_HEAD
-    const GFileAttributeInfo *info;
-} PyGFileAttributeInfo;
-
-static PyObject *
-pygio_file_attribute_info_tp_new(PyTypeObject *type)
-{
-    PyGFileAttributeInfo *self;
-    GFileAttributeInfo *info = NULL;
-
-    self = (PyGFileAttributeInfo *) PyObject_NEW(PyGFileAttributeInfo,
-                                              &PyGFileAttributeInfo_Type);
-    self->info = info;
-    return (PyObject *) self;
-}
-
-static PyMethodDef pyg_file_attribute_info_methods[] = {
-    { NULL,  0, 0 }
-};
-
-static PyObject *
-pyg_file_attribute_info__get_name(PyObject *self, void *closure)
-{
-    const gchar *ret;
-
-    ret = ((PyGFileAttributeInfo*)self)->info->name;
-    if (ret)
-        return PyString_FromString(ret);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-pyg_file_attribute_info__get_type(PyObject *self, void *closure)
-{
-    gint ret;
-
-    ret = ((PyGFileAttributeInfo*)self)->info->type;
-    return pyg_enum_from_gtype(G_TYPE_FILE_ATTRIBUTE_TYPE, ret);
-}
-
-static PyObject *
-pyg_file_attribute_info__get_flags(PyObject *self, void *closure)
-{
-    guint ret;
-
-    ret = ((PyGFileAttributeInfo*)self)->info->flags;
-    return pyg_flags_from_gtype(G_TYPE_FILE_ATTRIBUTE_INFO_FLAGS, ret);
-}
-
-static const PyGetSetDef pyg_file_attribute_info_getsets[] = {
-    { "name", (getter)pyg_file_attribute_info__get_name, (setter)0 },
-    { "type", (getter)pyg_file_attribute_info__get_type, (setter)0 },
-    { "flags", (getter)pyg_file_attribute_info__get_flags, (setter)0 },
-    { NULL, (getter)0, (setter)0 },
-};
-
-PyTypeObject PyGFileAttributeInfo_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0,                                  /* ob_size */
-    "gio.FileAttributeInfo",            /* tp_name */
-    sizeof(PyGFileAttributeInfo),      /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)0,                      /* tp_dealloc */
-    (printfunc)0,                       /* tp_print */
-    (getattrfunc)0,                     /* tp_getattr */
-    (setattrfunc)0,                     /* tp_setattr */
-    (cmpfunc)0,                         /* tp_compare */
-    (reprfunc)0,                        /* tp_repr */
-    0,                                  /* tp_as_number */
-    0,                                  /* tp_as_sequence */
-    0,                                  /* tp_as_mapping */
-    (hashfunc)0,                        /* tp_hash */
-    (ternaryfunc)0,                     /* tp_call */
-    (reprfunc)0,                        /* tp_str */
-    (getattrofunc)0,                    /* tp_getattro */
-    (setattrofunc)0,                    /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                 /* tp_flags */
-    "Holds information about an attribute", /* Documentation string */
-    (traverseproc)0,                    /* tp_traverse */
-    (inquiry)0,                         /* tp_clear */
-    (richcmpfunc)0,                     /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    (getiterfunc)0,                     /* tp_iter */
-    (iternextfunc)0,                    /* tp_iternext */
-    (struct PyMethodDef*)pyg_file_attribute_info_methods,    /* tp_methods */
-    0,                                  /* tp_members */
-    (struct PyGetSetDef*)pyg_file_attribute_info_getsets,    /* tp_getset */
-    (PyTypeObject *)0,                  /* tp_base */
-    (PyObject *)0,                      /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    (initproc)0,                        /* tp_init */
-    0,                                  /* tp_alloc */
-    (newfunc)pygio_file_attribute_info_tp_new,   /* tp_new */
-    0,                                  /* tp_free */
-    (inquiry)0,                         /* tp_is_gc */
-    (PyObject *)0,                      /* tp_bases */
-};
-
-PyObject*
-pyg_file_attribute_info_new(const GFileAttributeInfo *info)
-{
-    PyGFileAttributeInfo *self;
-
-    self = (PyGFileAttributeInfo *)PyObject_NEW(PyGFileAttributeInfo,
-                                             &PyGFileAttributeInfo_Type);
-    if (G_UNLIKELY(self == NULL))
-        return NULL;
-    if (info)
-        self->info = info;
-    return (PyObject *)self;
-}
-
-%%
-init
-if (PyType_Ready(&PyGFileAttributeInfo_Type) < 0) {
-    g_return_if_reached();
-}
-if (PyDict_SetItemString(d, "FileAttributeInfo",
-                         (PyObject *)&PyGFileAttributeInfo_Type) < 0) {
-    g_return_if_reached();
-}
diff --git a/gio/gfileenumerator.override b/gio/gfileenumerator.override
deleted file mode 100644 (file)
index db29550..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- *
- *   gfileenumerator.override: module overrides for GFileEnumerator
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-override-slot GFileEnumerator.tp_iter
-static PyObject*
-_wrap_g_file_enumerator_tp_iter(PyGObject *self)
-{
-    Py_INCREF (self);
-    return (PyObject *) self;
-}
-%%
-override-slot GFileEnumerator.tp_iternext
-static PyObject*
-_wrap_g_file_enumerator_tp_iternext(PyGObject *iter)
-{
-    GFileInfo *file_info;
-    GError *error = NULL;
-
-    if (!iter->obj) {
-       PyErr_SetNone(PyExc_StopIteration);
-       return NULL;
-    }
-
-    file_info = g_file_enumerator_next_file(G_FILE_ENUMERATOR(iter->obj),
-                                           NULL,
-                                           &error);
-    if (pyg_error_check(&error)) {
-        return NULL;
-    }
-    
-    if (!file_info) {
-       PyErr_SetNone(PyExc_StopIteration);
-       return NULL;
-    }
-
-    return pygobject_new((GObject*)file_info);
-}
-%%
-override g_file_enumerator_next_files_async kwargs
-static PyObject *
-_wrap_g_file_enumerator_next_files_async(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "num_files", "callback",
-                             "io_priority", "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    int num_files;
-    int io_priority = G_PRIORITY_DEFAULT;
-    GCancellable *cancellable = NULL;
-    PyGObject *py_cancellable = NULL;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "iO|iOO:gio.FileEnumerator.enumerate_next_files_async",
-                                    kwlist,
-                                    &num_files,
-                                    &notify->callback,
-                                    &io_priority,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-       goto error;
-
-    pygio_notify_reference_callback(notify);  
-    
-    g_file_enumerator_next_files_async(G_FILE_ENUMERATOR(self->obj),
-                                      num_files,
-                                      io_priority,
-                                      (GCancellable *) cancellable,
-                                      (GAsyncReadyCallback)async_result_callback_marshal,
-                                      notify);
-    
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_file_enumerator_next_files_finish kwargs
-static PyObject *
-_wrap_g_file_enumerator_next_files_finish(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "result", NULL };
-    PyGObject *result;
-    GList *next_files, *l;
-    GError *error = NULL;
-    PyObject *ret;
-    
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "O!:gio.FileEnumerator.next_files_finish",
-                                    kwlist,
-                                    &PyGAsyncResult_Type, &result))
-        return NULL;
-    
-    next_files = g_file_enumerator_next_files_finish(G_FILE_ENUMERATOR(self->obj),
-                                                    G_ASYNC_RESULT(result->obj),
-                                                    &error);
-    if (pyg_error_check(&error))
-        return NULL;
-
-    ret = PyList_New(0);
-    for (l = next_files; l; l = l->next) {
-       GFileInfo *file_info = l->data;
-       PyObject *item = pygobject_new((GObject *)file_info);
-       PyList_Append(ret, item);
-       Py_DECREF(item);
-       g_object_unref(file_info);
-    }
-    g_list_free(next_files);
-
-    return ret;
-}
-%%
-override g_file_enumerator_close_async kwargs
-static PyObject *
-_wrap_g_file_enumerator_close_async(PyGObject *self,
-                                    PyObject *args,
-                                    PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "io_priority", "cancellable",
-                              "user_data", NULL };
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|iOO:gio.FileEnumerator.close_async",
-                                     kwlist,
-                                     &notify->callback,
-                                     &io_priority,
-                                     &pycancellable,
-                                     &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_enumerator_close_async(G_FILE_ENUMERATOR(self->obj),
-                           io_priority,
-                            cancellable,
-                            (GAsyncReadyCallback)async_result_callback_marshal,
-                            notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
diff --git a/gio/gfileinfo.override b/gio/gfileinfo.override
deleted file mode 100644 (file)
index 730e91b..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- *               2009  Gian Mario Tagliaretti
- *
- *   gfileinfo.override: module overrides for GFileInfo
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-%%
-headers
-
-#ifndef G_TYPE_FILE_ATTRIBUTE_MATCHER
-#define G_TYPE_FILE_ATTRIBUTE_MATCHER (_g_file_attribute_matcher_get_type ())
-
-static GType _g_file_attribute_matcher_get_type (void)
-{
-  static GType our_type = 0;
-  
-  if (our_type == 0)
-    our_type = g_boxed_type_register_static ("GFileAttributeMatcher",
-                                (GBoxedCopyFunc)g_file_attribute_matcher_ref,
-                                (GBoxedFreeFunc)g_file_attribute_matcher_unref);
-
-  return our_type;
-}
-#endif
-
-%%
-override g_file_info_list_attributes kwargs
-static PyObject *
-_wrap_g_file_info_list_attributes(PyGObject *self, 
-                                  PyObject  *args, 
-                                 PyObject  *kwargs)
-{
-    char *kwlist[] = { "name_space", NULL};
-    gchar *name_space = NULL;
-    gchar **names;
-    gchar **n;
-    PyObject *ret;
-    
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "|z:gio.FileInfo.list_attributes",
-                                    kwlist, &name_space))
-       return NULL;
-
-    names = g_file_info_list_attributes(G_FILE_INFO(self->obj),
-                                       name_space);
-
-    ret = PyList_New(0);
-    n = names;
-    while (n && *n) {
-        PyObject *item = PyString_FromString(n[0]);
-        PyList_Append(ret, item);
-        Py_DECREF(item);
-
-        n++;
-    }
-    
-    g_strfreev(names);
-    return ret;
-}
-%%
-override g_file_info_get_modification_time noargs
-static PyObject *
-_wrap_g_file_info_get_modification_time(PyGObject *self, PyObject *unused)
-{
-    GTimeVal timeval;
-
-    g_file_info_get_modification_time(G_FILE_INFO(self->obj), &timeval);
-    return pyglib_float_from_timeval(timeval);
-}
-%%
-override g_file_info_set_modification_time kwargs
-static PyObject *
-_wrap_g_file_info_set_modification_time(PyGObject *self, 
-                                        PyObject  *args, 
-                                        PyObject  *kwargs)
-{
-    char *kwlist[] = { "mtime", NULL};
-    double py_mtime = 0.0;
-    GTimeVal ttime, *mtime;
-    
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "d:gio.FileInfo.set_modification_time",
-                                     kwlist, &py_mtime))
-        return NULL;
-
-    if (py_mtime > 0.0) {
-       ttime.tv_sec = (glong) py_mtime;
-       ttime.tv_usec = (glong)((py_mtime - ttime.tv_sec) * G_USEC_PER_SEC);
-        mtime = &ttime;
-    } else if (py_mtime == 0.0) {
-       mtime = NULL;
-    } else {
-        PyErr_SetString(PyExc_ValueError, "mtime must be >= 0.0");
-        return NULL;
-    }
-    
-    g_file_info_set_modification_time(G_FILE_INFO(self->obj), mtime);
-    
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/* GFileInfo.get_attribute_data: No ArgType for GFileAttributeType* */
-/* GFileInfo.set_attribute: No ArgType for gpointer */
diff --git a/gio/gfileinputstream.override b/gio/gfileinputstream.override
deleted file mode 100644 (file)
index 5190a13..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2009  Gian Mario Tagliaretti
- *
- *   gfileinputstream.override: module overrides for GFileInputStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-%%
-override g_file_input_stream_query_info_async kwargs
-static PyObject *
-_wrap_g_file_input_stream_query_info_async(PyGObject *self,
-                                           PyObject *args,
-                                           PyObject *kwargs)
-{
-    static char *kwlist[] = { "attributes", "callback",
-                              "io_priority", "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    int io_priority = G_PRIORITY_DEFAULT;
-    char *attributes;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                "sO|iOO:gio.FileInputStream.query_info_async",
-                                kwlist,
-                                &attributes,
-                                &notify->callback,
-                                &io_priority,
-                                &pycancellable,
-                                &notify->data))
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_input_stream_query_info_async(G_FILE_INPUT_STREAM(self->obj),
-                         attributes, io_priority, cancellable,
-                         (GAsyncReadyCallback)async_result_callback_marshal,
-                         notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
diff --git a/gio/gfileiostream.override b/gio/gfileiostream.override
deleted file mode 100644 (file)
index 7be6124..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2009  Gian Mario Tagliaretti
- *
- *   gfileiostream.override: module overrides for GFileIOStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-%%
-override g_file_io_stream_query_info_async kwargs
-static PyObject *
-_wrap_g_file_io_stream_query_info_async(PyGObject *self,
-                                           PyObject *args,
-                                           PyObject *kwargs)
-{
-    static char *kwlist[] = { "attributes", "callback",
-                              "io_priority", "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    int io_priority = G_PRIORITY_DEFAULT;
-    char *attributes;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                "sO|iOO:gio.FileIOStream.query_info_async",
-                                kwlist,
-                                &attributes,
-                                &notify->callback,
-                                &io_priority,
-                                &pycancellable,
-                                &notify->data))
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_io_stream_query_info_async(G_FILE_IO_STREAM(self->obj),
-                         attributes, io_priority, cancellable,
-                         (GAsyncReadyCallback)async_result_callback_marshal,
-                         notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
diff --git a/gio/gfileoutputstream.override b/gio/gfileoutputstream.override
deleted file mode 100644 (file)
index c5c184d..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2009  Gian Mario Tagliaretti
- *
- *   gfileoutputstream.override: module overrides for GFileOuputStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-%%
-override g_file_output_stream_query_info_async kwargs
-static PyObject *
-_wrap_g_file_output_stream_query_info_async(PyGObject *self,
-                                           PyObject *args,
-                                           PyObject *kwargs)
-{
-    static char *kwlist[] = { "attributes", "callback",
-                              "io_priority", "cancellable", "user_data", NULL };
-    GCancellable *cancellable;
-    PyGObject *pycancellable = NULL;
-    int io_priority = G_PRIORITY_DEFAULT;
-    char *attributes;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                "sO|iOO:gio.FileOutputStream.query_info_async",
-                                kwlist,
-                                &attributes,
-                                &notify->callback,
-                                &io_priority,
-                                &pycancellable,
-                                &notify->data))
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_file_output_stream_query_info_async(G_FILE_OUTPUT_STREAM(self->obj),
-                         attributes, io_priority, cancellable,
-                         (GAsyncReadyCallback)async_result_callback_marshal,
-                         notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
diff --git a/gio/gicon.override b/gio/gicon.override
deleted file mode 100644 (file)
index c429556..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 2008  Johan Dahlin
- *
- *   gicon.override: module overrides for GIcon and related types
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-ignore-glob
-  g_icon_hash
-  g_themed_icon_new_from_names
-  g_themed_icon_new_with_default_fallbacks
-%%
-override-slot GIcon.tp_richcompare
-static PyObject *
-_wrap_g_icon_tp_richcompare(PyGObject *self, PyGObject *other, int op)
-{
-    PyObject *result;
-
-    if (PyObject_TypeCheck(self, &PyGIcon_Type)
-        && PyObject_TypeCheck(other, &PyGIcon_Type)) {
-        GIcon *icon1 = G_ICON(self->obj);
-        GIcon *icon2 = G_ICON(other->obj);
-
-        switch (op) {
-        case Py_EQ:
-            result = (g_icon_equal(icon1, icon2)
-                      ? Py_True : Py_False);
-            break;
-        case Py_NE:
-            result = (!g_icon_equal(icon1, icon2)
-                      ? Py_True : Py_False);
-            break;
-        default:
-            result = Py_NotImplemented;
-        }
-    }
-    else
-        result = Py_NotImplemented;
-
-    Py_INCREF(result);
-    return result;
-}
-%%
-override-slot GIcon.tp_hash
-static long
-_wrap_g_icon_tp_hash(PyGObject *self)
-{
-    return g_icon_hash(G_ICON(self->obj));
-}
-%%
-override g_loadable_icon_load kwargs
-static PyObject *
-_wrap_g_loadable_icon_load(PyGObject *self,
-                           PyObject *args,
-                           PyObject *kwargs)
-{
-    static char *kwlist[] = { "size", "cancellable", NULL };
-    int size = 0;
-    char *type = NULL;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    GError *error = NULL;
-    GInputStream *stream;
-    PyObject *result;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "|iO:gio.LoadableIcon.load",
-                                    kwlist,
-                                    &size, &pycancellable))
-        return NULL;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-       return NULL;
-
-    stream = g_loadable_icon_load(G_LOADABLE_ICON(self->obj), size, &type,
-                                 cancellable, &error);
-    if (pyg_error_check(&error))
-        return NULL;
-
-    result = Py_BuildValue("Ns", pygobject_new((GObject *) stream), type);
-    g_free(type);
-    return result;
-}
-%%
-override g_loadable_icon_load_async kwargs
-static PyObject *
-_wrap_g_loadable_icon_load_async(PyGObject *self,
-                                PyObject *args,
-                                PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "size", "cancellable", "user_data", NULL };
-    int size = 0;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|iOO:gio.LoadableIcon.load_async",
-                                    kwlist,
-                                    &notify->callback, &size, &pycancellable, &notify->data))
-       goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-       goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_loadable_icon_load_async(G_LOADABLE_ICON(self->obj),
-                              size,
-                              cancellable,
-                              (GAsyncReadyCallback) async_result_callback_marshal,
-                              notify);
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_loadable_icon_load_finish kwargs
-static PyObject *
-_wrap_g_loadable_icon_load_finish(PyGObject *self,
-                                 PyObject *args,
-                                 PyObject *kwargs)
-{
-    static char *kwlist[] = { "res", NULL };
-    PyGObject *res;
-    char *type = NULL;
-    GError *error = NULL;
-    GInputStream *stream;
-    PyObject *result;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!:gio.LoadableIcon.load_finish",
-                                    kwlist,
-                                    &PyGAsyncResult_Type, &res))
-        return NULL;
-
-    stream = g_loadable_icon_load_finish(G_LOADABLE_ICON(self->obj),
-                                        G_ASYNC_RESULT(res->obj), &type, &error);
-    if (pyg_error_check(&error))
-        return NULL;
-
-    result = Py_BuildValue("Ns", pygobject_new((GObject *) stream), type);
-    g_free(type);
-    return result;
-}
-%%
-override-slot GFileIcon.tp_repr
-static PyObject *
-_wrap_g_file_icon_tp_repr(PyGObject *self)
-{
-    GFile *file = g_file_icon_get_file(G_FILE_ICON(self->obj));
-    char *uri = (file ? g_file_get_uri(file) : NULL);
-    gchar *representation;
-    PyObject *result;
-
-    if (uri) {
-       representation = g_strdup_printf("<%s at %p: %s>", self->ob_type->tp_name, self, uri);
-       g_free(uri);
-    }
-    else
-       representation = g_strdup_printf("<%s at %p: UNKNOWN URI>", self->ob_type->tp_name, self);
-
-    result = PyString_FromString(representation);
-    g_free(representation);
-    return result;
-}
-%%
-new-constructor G_TYPE_THEMED_ICON
-%%
-override g_themed_icon_new kwargs
-static int
-_wrap_g_themed_icon_new(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "name", "use_default_fallbacks", NULL };
-    PyObject *name;
-    gboolean use_default_fallbacks = FALSE;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|i:gio.ThemedIcon.__init__",
-                                    kwlist, &name, &use_default_fallbacks))
-       return -1;
-
-    if (PyString_Check(name)) {
-       pygobject_construct(self,
-                           "name", PyString_AsString(name),
-                           "use-default-fallbacks", use_default_fallbacks, NULL);
-       return 0;
-    }
-    else if (PySequence_Check(name)) {
-       PyObject *tuple = PySequence_Tuple(name);
-
-       if (tuple) {
-           int k;
-           int length = PyTuple_Size(tuple);
-           char **names = g_new(char *, length + 1);
-
-           for (k = 0; k < length; k++) {
-               PyObject *str = PyTuple_GetItem(tuple, k);
-               if (str && PyString_Check(str))
-                   names[k] = PyString_AsString(str);
-               else {
-                   Py_DECREF(tuple);
-                   g_free(names);
-                   goto error;
-               }
-           }
-
-           names[length] = NULL;
-           pygobject_construct(self,
-                               "names", names,
-                               "use-default-fallbacks", use_default_fallbacks, NULL);
-           Py_DECREF(tuple);
-           g_free(names);
-           return 0;
-       }
-    }
-
- error:
-    if (!PyErr_Occurred()) {
-       PyErr_SetString(PyExc_TypeError,
-                       "argument 1 of gio.ThemedIcon.__init__ "
-                       "must be either a string or a sequence of strings");
-    }
-    return -1;
-}
-%%
-override g_themed_icon_get_names noargs
-static PyObject *
-_wrap_g_themed_icon_get_names(PyGObject *self)
-{
-    const char * const *names;
-    PyObject *ret;
-
-    names = g_themed_icon_get_names(G_THEMED_ICON(self->obj));
-
-    ret = PyList_New(0);
-    while (names && *names) {
-        PyObject *item = PyString_FromString(names[0]);
-        PyList_Append(ret, item);
-        Py_DECREF(item);
-
-        names++;
-    }
-
-    return ret;
-}
-%%
-override-slot GThemedIcon.tp_repr
-static PyObject *
-_wrap_g_themed_icon_tp_repr(PyGObject *self)
-{
-    const char * const *names = g_themed_icon_get_names(G_THEMED_ICON(self->obj));
-    GString *representation = g_string_new(NULL);
-    PyObject *result;
-
-    g_string_append_printf(representation, "<%s at %p: ", self->ob_type->tp_name, self);
-
-    if (names) {
-       gboolean first_name = TRUE;
-       while (*names) {
-           if (!first_name)
-               g_string_append(representation, ", ");
-           else
-               first_name = FALSE;
-
-           g_string_append(representation, *names++);
-       }
-    }
-
-    g_string_append(representation, ">");
-    result = PyString_FromString(representation->str);
-    g_string_free(representation, TRUE);
-    return result;
-}
-%%
-override g_emblemed_icon_get_emblems noargs
-static PyObject *
-_wrap_g_emblemed_icon_get_emblems(PyGObject *self)
-{
-    GList *list;
-    PyObject *ret;
-
-    list = g_emblemed_icon_get_emblems(G_EMBLEMED_ICON(self->obj));
-    
-    PYLIST_FROMGLIST(ret, list, pygobject_new(list_item), NULL, NULL);
-
-    return ret;
-}
diff --git a/gio/ginputstream.override b/gio/ginputstream.override
deleted file mode 100644 (file)
index 260b2fc..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- *
- *   ginputstream.override: module overrides for GInputStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-headers
-#define BUFSIZE 8192
-
-%%
-override g_input_stream_read kwargs
-static PyObject *
-_wrap_g_input_stream_read(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "count", "cancellable", NULL };
-    PyGObject *pycancellable = NULL;
-    PyObject *v;
-    GCancellable *cancellable;
-    long count = -1;
-    GError *error = NULL;
-    size_t bytesread, buffersize, chunksize;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "|lO:InputStream.read",
-                                     kwlist, &count,
-                                     &pycancellable))
-        return NULL;
-
-    buffersize = (count < 0 ? BUFSIZE : count);
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        return NULL;
-
-    v = PyString_FromStringAndSize((char *)NULL, buffersize);
-    if (v == NULL)
-        return NULL;
-
-    bytesread = 0;
-    for (;;)
-        {
-            pyg_begin_allow_threads;
-            errno = 0;
-            chunksize = g_input_stream_read(G_INPUT_STREAM(self->obj),
-                                            PyString_AS_STRING((PyStringObject *)v) + bytesread,
-                                            buffersize - bytesread, cancellable,
-                                            &error);
-            pyg_end_allow_threads;
-
-            if (pyg_error_check(&error)) {
-               Py_DECREF(v);
-               return NULL;
-           }
-           if (chunksize == 0) {
-               /* End of file. */
-                break;
-           }
-
-            bytesread += chunksize;
-            if (bytesread < buffersize) {
-               /* g_input_stream_read() decided to not read full buffer.  We
-                * then return early too, even if 'count' is less than 0.
-                */
-                break;
-           }
-
-            if (count < 0) {
-               buffersize += BUFSIZE;
-               if (_PyString_Resize(&v, buffersize) < 0)
-                   return NULL;
-           }
-            else {
-                /* Got what was requested. */
-                break;
-           }
-        }
-
-    if (bytesread != buffersize)
-        _PyString_Resize(&v, bytesread);
-
-    return v;
-}
-%%
-override g_input_stream_read_all kwargs
-static PyObject *
-_wrap_g_input_stream_read_all(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "count", "cancellable", NULL };
-    PyGObject *pycancellable = NULL;
-    PyObject *v;
-    GCancellable *cancellable;
-    long count = -1;
-    GError *error = NULL;
-    size_t bytesread, buffersize, chunksize;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "|lO:InputStream.read",
-                                     kwlist, &count,
-                                     &pycancellable))
-        return NULL;
-
-    buffersize = (count < 0 ? BUFSIZE : count);
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        return NULL;
-
-    v = PyString_FromStringAndSize((char *)NULL, buffersize);
-    if (v == NULL)
-        return NULL;
-
-    bytesread = 0;
-    for (;;)
-        {
-            pyg_begin_allow_threads;
-            errno = 0;
-            g_input_stream_read_all(G_INPUT_STREAM(self->obj),
-                                   PyString_AS_STRING((PyStringObject *)v) + bytesread,
-                                   buffersize - bytesread,
-                                   &chunksize,
-                                   cancellable, &error);
-            pyg_end_allow_threads;
-
-            if (pyg_error_check(&error)) {
-               Py_DECREF(v);
-               return NULL;
-           }
-
-            bytesread += chunksize;
-            if (bytesread < buffersize || chunksize == 0) {
-               /* End of file. */
-                break;
-           }
-
-            if (count < 0) {
-               buffersize += BUFSIZE;
-               if (_PyString_Resize(&v, buffersize) < 0)
-                   return NULL;
-           }
-            else {
-                /* Got what was requested. */
-                break;
-           }
-        }
-
-    if (bytesread != buffersize)
-        _PyString_Resize(&v, bytesread);
-
-    return v;
-}
-%%
-override g_input_stream_read_async kwargs
-static PyObject *
-_wrap_g_input_stream_read_async(PyGObject *self,
-                                PyObject *args,
-                                PyObject *kwargs)
-{
-    static char *kwlist[] = { "count", "callback", "io_priority",
-                              "cancellable", "user_data", NULL };
-    long count = -1;
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "lO|iOO:InputStream.read_async",
-                                     kwlist,
-                                     &count,
-                                     &notify->callback,
-                                     &io_priority,
-                                     &pycancellable,
-                                     &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    if (!pygio_notify_allocate_buffer(notify, count))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-    pygio_notify_attach_to_result(notify);
-
-    g_input_stream_read_async(G_INPUT_STREAM(self->obj),
-                              notify->buffer,
-                              notify->buffer_size,
-                              io_priority,
-                              cancellable,
-                              (GAsyncReadyCallback) async_result_callback_marshal,
-                              notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_input_stream_read_finish kwargs
-static PyObject *
-_wrap_g_input_stream_read_finish(PyGObject *self,
-                                 PyObject *args,
-                                 PyObject *kwargs)
-{
-    static char *kwlist[] = { "result", NULL };
-    PyGObject *result;
-    GError *error = NULL;
-    Py_ssize_t bytesread;
-    PyGIONotify *notify;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!:gio.InputStream.read_finish",
-                                     kwlist, &PyGAsyncResult_Type, &result))
-        return NULL;
-
-    bytesread = g_input_stream_read_finish(G_INPUT_STREAM(self->obj),
-                                           G_ASYNC_RESULT(result->obj), &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (bytesread == 0)
-        return PyString_FromString("");
-
-    notify = pygio_notify_get_attached(result);
-    return PyString_FromStringAndSize(notify->buffer, bytesread);
-}
-%%
-override g_input_stream_close_async kwargs
-static PyObject *
-_wrap_g_input_stream_close_async(PyGObject *self,
-                                 PyObject *args,
-                                 PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "io_priority", "cancellable",
-                              "user_data", NULL };
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|iOO:InputStream.close_async",
-                                     kwlist,
-                                     &notify->callback,
-                                     &io_priority,
-                                     &pycancellable,
-                                     &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_input_stream_close_async(G_INPUT_STREAM(self->obj),
-                               io_priority,
-                               cancellable,
-                               (GAsyncReadyCallback)async_result_callback_marshal,
-                               notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_input_stream_skip_async kwargs
-static PyObject *
-_wrap_g_input_stream_skip_async(PyGObject *self,
-                                PyObject *args,
-                                PyObject *kwargs)
-{
-    static char *kwlist[] = { "count", "callback", "io_priority",
-                              "cancellable", "user_data", NULL };
-    long count = -1;
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "lO|iOO:InputStream.skip_async",
-                                     kwlist,
-                                     &count,
-                                     &notify->callback,
-                                     &io_priority,
-                                     &pycancellable,
-                                     &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-    
-
-    g_input_stream_skip_async(G_INPUT_STREAM(self->obj),
-                              count,
-                              io_priority,
-                              cancellable,
-                              (GAsyncReadyCallback) async_result_callback_marshal,
-                              notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
diff --git a/gio/gio-types.defs b/gio/gio-types.defs
deleted file mode 100644 (file)
index 331e0bc..0000000
+++ /dev/null
@@ -1,807 +0,0 @@
-;; -*- scheme -*-
-
-; interface definitions ...
-
-(define-interface AppInfo
-  (in-module "gio")
-  (c-name "GAppInfo")
-  (gtype-id "G_TYPE_APP_INFO")
-)
-
-(define-interface AsyncInitable
-  (in-module "gio")
-  (c-name "GAsyncInitable")
-  (gtype-id "G_TYPE_ASYNC_INITABLE")
-)
-
-(define-interface AsyncResult
-  (in-module "gio")
-  (c-name "GAsyncResult")
-  (gtype-id "G_TYPE_ASYNC_RESULT")
-)
-
-(define-interface Drive
-  (in-module "gio")
-  (c-name "GDrive")
-  (gtype-id "G_TYPE_DRIVE")
-)
-
-(define-interface File
-  (docstring
-"File(arg, path=None, uri=None) -> gio.File subclass\n"
-"\n"
-"If arg is specified; creates a GFile with the given argument from the\n"
-"command line.  The value of arg can be either a URI, an absolute path\n"
-"or a relative path resolved relative to the current working directory.\n"
-"If path is specified, create a file from an absolute or relative path.\n"
-"If uri is specified, create a file from a URI.\n\n"
-"This operation never fails, but the returned object might not \n"
-"support any I/O operation if arg points to a malformed path.")
-  (in-module "gio")
-  (c-name "GFile")
-  (gtype-id "G_TYPE_FILE")
-)
-
-(define-interface Icon
-  (in-module "gio")
-  (c-name "GIcon")
-  (gtype-id "G_TYPE_ICON")
-)
-
-(define-interface Initable
-  (in-module "gio")
-  (c-name "GInitable")
-  (gtype-id "G_TYPE_INITABLE")
-)
-
-(define-interface LoadableIcon
-  (in-module "gio")
-  (c-name "GLoadableIcon")
-  (gtype-id "G_TYPE_LOADABLE_ICON")
-)
-
-(define-interface Mount
-  (in-module "gio")
-  (c-name "GMount")
-  (gtype-id "G_TYPE_MOUNT")
-)
-
-(define-interface Seekable
-  (in-module "gio")
-  (c-name "GSeekable")
-  (gtype-id "G_TYPE_SEEKABLE")
-)
-
-(define-interface SocketConnectable
-  (in-module "gio")
-  (c-name "GSocketConnectable")
-  (gtype-id "G_TYPE_SOCKET_CONNECTABLE")
-)
-
-(define-interface Volume
-  (in-module "gio")
-  (c-name "GVolume")
-  (gtype-id "G_TYPE_VOLUME")
-)
-
-; boxed definitions ...
-
-(define-boxed FileAttributeMatcher
-  (in-module "gio")
-  (c-name "GFileAttributeMatcher")
-  (gtype-id "G_TYPE_FILE_ATTRIBUTE_MATCHER")
-)
-
-(define-boxed SrvTarget
-  (in-module "gio")
-  (c-name "GSrvTarget")
-  (gtype-id "G_TYPE_SRV_TARGET")
-)
-
-; object definitions ...
-
-(define-object AppLaunchContext
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GAppLaunchContext")
-  (gtype-id "G_TYPE_APP_LAUNCH_CONTEXT")
-)
-
-(define-object Cancellable
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GCancellable")
-  (gtype-id "G_TYPE_CANCELLABLE")
-)
-
-(define-object Emblem
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GEmblem")
-  (gtype-id "G_TYPE_EMBLEM")
-)
-
-(define-object EmblemedIcon
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GEmblemedIcon")
-  (gtype-id "G_TYPE_EMBLEMED_ICON")
-)
-
-(define-object FileEnumerator
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GFileEnumerator")
-  (gtype-id "G_TYPE_FILE_ENUMERATOR")
-)
-
-(define-object FileInfo
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GFileInfo")
-  (gtype-id "G_TYPE_FILE_INFO")
-)
-
-(define-object FileMonitor
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GFileMonitor")
-  (gtype-id "G_TYPE_FILE_MONITOR")
-)
-
-(define-object InputStream
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GInputStream")
-  (gtype-id "G_TYPE_INPUT_STREAM")
-)
-
-(define-object FileInputStream
-  (in-module "gio")
-  (parent "GInputStream")
-  (c-name "GFileInputStream")
-  (gtype-id "G_TYPE_FILE_INPUT_STREAM")
-)
-
-(define-object FileIOStream
-  (in-module "gio")
-  (parent "GIOStream")
-  (c-name "GFileIOStream")
-  (gtype-id "G_TYPE_FILE_IO_STREAM")
-)
-
-(define-object FilterInputStream
-  (in-module "gio")
-  (parent "GInputStream")
-  (c-name "GFilterInputStream")
-  (gtype-id "G_TYPE_FILTER_INPUT_STREAM")
-)
-
-(define-object BufferedInputStream
-  (in-module "gio")
-  (parent "GFilterInputStream")
-  (c-name "GBufferedInputStream")
-  (gtype-id "G_TYPE_BUFFERED_INPUT_STREAM")
-)
-
-(define-object DataInputStream
-  (in-module "gio")
-  (parent "GFilterInputStream")
-  (c-name "GDataInputStream")
-  (gtype-id "G_TYPE_DATA_INPUT_STREAM")
-)
-
-(define-object MemoryInputStream
-  (in-module "gio")
-  (parent "GInputStream")
-  (c-name "GMemoryInputStream")
-  (gtype-id "G_TYPE_MEMORY_INPUT_STREAM")
-)
-
-(define-object MountOperation
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GMountOperation")
-  (gtype-id "G_TYPE_MOUNT_OPERATION")
-)
-
-(define-object InetAddress
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GInetAddress")
-  (gtype-id "G_TYPE_INET_ADDRESS")
-)
-
-(define-object InetSocketAddress
-  (in-module "gio")
-  (parent "GSocketAddress")
-  (c-name "GInetSocketAddress")
-  (gtype-id "G_TYPE_INET_SOCKET_ADDRESS")
-)
-
-(define-object NetworkAddress
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GNetworkAddress")
-  (gtype-id "G_TYPE_NETWORK_ADDRESS")
-)
-
-(define-object NetworkService
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GNetworkService")
-  (gtype-id "G_TYPE_NETWORK_SERVICE")
-)
-
-(define-object Resolver
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GResolver")
-  (gtype-id "G_TYPE_RESOLVER")
-)
-
-(define-object Socket
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GSocket")
-  (gtype-id "G_TYPE_SOCKET")
-)
-
-(define-object SocketAddress
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GSocketAddress")
-  (gtype-id "G_TYPE_SOCKET_ADDRESS")
-)
-
-(define-object SocketAddressEnumerator
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GSocketAddressEnumerator")
-  (gtype-id "G_TYPE_SOCKET_ADDRESS_ENUMERATOR")
-)
-
-(define-object SocketClient
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GSocketClient")
-  (gtype-id "G_TYPE_SOCKET_CLIENT")
-)
-
-(define-object SocketConnection
-  (in-module "gio")
-  (parent "GIOStream")
-  (c-name "GSocketConnection")
-  (gtype-id "G_TYPE_SOCKET_CONNECTION")
-)
-
-(define-object SocketControlMessage
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GSocketControlMessage")
-  (gtype-id "G_TYPE_SOCKET_CONTROL_MESSAGE")
-)
-
-(define-object SocketListener
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GSocketListener")
-  (gtype-id "G_TYPE_SOCKET_LISTENER")
-)
-
-(define-object SocketService
-  (in-module "gio")
-  (parent "GSocketListener")
-  (c-name "GSocketService")
-  (gtype-id "G_TYPE_SOCKET_SERVICE")
-)
-
-(define-object TcpConnection
-  (in-module "gio")
-  (parent "GSocketConnection")
-  (c-name "GTcpConnection")
-  (gtype-id "G_TYPE_TCP_CONNECTION")
-)
-
-(define-object ThreadedSocketService
-  (in-module "gio")
-  (parent "GSocketService")
-  (c-name "GThreadedSocketService")
-  (gtype-id "G_TYPE_THREADED_SOCKET_SERVICE")
-)
-
-(define-object IOStream
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GIOStream")
-  (gtype-id "G_TYPE_IO_STREAM")
-)
-
-(define-object OutputStream
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GOutputStream")
-  (gtype-id "G_TYPE_OUTPUT_STREAM")
-)
-
-(define-object MemoryOutputStream
-  (in-module "gio")
-  (parent "GOutputStream")
-  (c-name "GMemoryOutputStream")
-  (gtype-id "G_TYPE_MEMORY_OUTPUT_STREAM")
-)
-
-(define-object FilterOutputStream
-  (in-module "gio")
-  (parent "GOutputStream")
-  (c-name "GFilterOutputStream")
-  (gtype-id "G_TYPE_FILTER_OUTPUT_STREAM")
-)
-
-(define-object BufferedOutputStream
-  (in-module "gio")
-  (parent "GFilterOutputStream")
-  (c-name "GBufferedOutputStream")
-  (gtype-id "G_TYPE_BUFFERED_OUTPUT_STREAM")
-)
-
-(define-object DataOutputStream
-  (in-module "gio")
-  (parent "GFilterOutputStream")
-  (c-name "GDataOutputStream")
-  (gtype-id "G_TYPE_DATA_OUTPUT_STREAM")
-)
-
-(define-object FileOutputStream
-  (in-module "gio")
-  (parent "GOutputStream")
-  (c-name "GFileOutputStream")
-  (gtype-id "G_TYPE_FILE_OUTPUT_STREAM")
-)
-
-(define-object SimpleAsyncResult
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GSimpleAsyncResult")
-  (gtype-id "G_TYPE_SIMPLE_ASYNC_RESULT")
-)
-
-(define-object Vfs
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GVfs")
-  (gtype-id "G_TYPE_VFS")
-)
-
-(define-object VolumeMonitor
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GVolumeMonitor")
-  (gtype-id "G_TYPE_VOLUME_MONITOR")
-)
-
-(define-object NativeVolumeMonitor
-  (in-module "gio")
-  (parent "GVolumeMonitor")
-  (c-name "GNativeVolumeMonitor")
-  (gtype-id "G_TYPE_NATIVE_VOLUME_MONITOR")
-)
-
-(define-object FileIcon
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GFileIcon")
-  (gtype-id "G_TYPE_FILE_ICON")
-  (implements "GIcon")
-  (implements "GLoadableIcon")
-)
-
-(define-object ThemedIcon
-  (in-module "gio")
-  (parent "GObject")
-  (c-name "GThemedIcon")
-  (gtype-id "G_TYPE_THEMED_ICON")
-  (implements "GIcon")
-)
-
-
-
-;; Enumerations and flags ...
-
-(define-flags AppInfoCreateFlags
-  (in-module "gio")
-  (c-name "GAppInfoCreateFlags")
-  (gtype-id "G_TYPE_APP_INFO_CREATE_FLAGS")
-  (values
-    '("none" "G_APP_INFO_CREATE_NONE")
-    '("needs-terminal" "G_APP_INFO_CREATE_NEEDS_TERMINAL")
-    '("supports-uris" "G_APP_INFO_CREATE_SUPPORTS_URIS")
-  )
-)
-
-(define-flags ConverterFlags
-  (in-module "gio")
-  (c-name "GConverterFlags")
-  (gtype-id "G_TYPE_CONVERTER_FLAGS")
-  (values
-    '("no-flags" "G_CONVERTER_NO_FLAGS")
-    '("input-at-end" "G_CONVERTER_INPUT_AT_END")
-    '("flush" "G_CONVERTER_FLUSH")
-  )
-)
-
-(define-enum ConverterResult
-  (in-module "gio")
-  (c-name "GConverterResult")
-  (gtype-id "G_TYPE_CONVERTER_RESULT")
-  (values
-    '("error" "G_CONVERTER_ERROR")
-    '("converted" "G_CONVERTER_CONVERTED")
-    '("finished" "G_CONVERTER_FINISHED")
-    '("flushed" "G_CONVERTER_FLUSHED")
-  )
-)
-
-(define-enum DataStreamByteOrder
-  (in-module "gio")
-  (c-name "GDataStreamByteOrder")
-  (gtype-id "G_TYPE_DATA_STREAM_BYTE_ORDER")
-  (values
-    '("big-endian" "G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN")
-    '("little-endian" "G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN")
-    '("host-endian" "G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN")
-  )
-)
-
-(define-enum DataStreamNewlineType
-  (in-module "gio")
-  (c-name "GDataStreamNewlineType")
-  (gtype-id "G_TYPE_DATA_STREAM_NEWLINE_TYPE")
-  (values
-    '("lf" "G_DATA_STREAM_NEWLINE_TYPE_LF")
-    '("cr" "G_DATA_STREAM_NEWLINE_TYPE_CR")
-    '("cr-lf" "G_DATA_STREAM_NEWLINE_TYPE_CR_LF")
-    '("any" "G_DATA_STREAM_NEWLINE_TYPE_ANY")
-  )
-)
-
-(define-enum FileAttributeType
-  (in-module "gio")
-  (c-name "GFileAttributeType")
-  (gtype-id "G_TYPE_FILE_ATTRIBUTE_TYPE")
-  (values
-    '("invalid" "G_FILE_ATTRIBUTE_TYPE_INVALID")
-    '("string" "G_FILE_ATTRIBUTE_TYPE_STRING")
-    '("byte-string" "G_FILE_ATTRIBUTE_TYPE_BYTE_STRING")
-    '("boolean" "G_FILE_ATTRIBUTE_TYPE_BOOLEAN")
-    '("uint32" "G_FILE_ATTRIBUTE_TYPE_UINT32")
-    '("int32" "G_FILE_ATTRIBUTE_TYPE_INT32")
-    '("uint64" "G_FILE_ATTRIBUTE_TYPE_UINT64")
-    '("int64" "G_FILE_ATTRIBUTE_TYPE_INT64")
-    '("object" "G_FILE_ATTRIBUTE_TYPE_OBJECT")
-    '("stringv" "G_FILE_ATTRIBUTE_TYPE_STRINGV")
-  )
-)
-
-(define-flags FileAttributeInfoFlags
-  (in-module "gio")
-  (c-name "GFileAttributeInfoFlags")
-  (gtype-id "G_TYPE_FILE_ATTRIBUTE_INFO_FLAGS")
-  (values
-    '("none" "G_FILE_ATTRIBUTE_INFO_NONE")
-    '("copy-with-file" "G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE")
-    '("copy-when-moved" "G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED")
-  )
-)
-
-(define-enum FileAttributeStatus
-  (in-module "gio")
-  (c-name "GFileAttributeStatus")
-  (gtype-id "G_TYPE_FILE_ATTRIBUTE_STATUS")
-  (values
-    '("unset" "G_FILE_ATTRIBUTE_STATUS_UNSET")
-    '("set" "G_FILE_ATTRIBUTE_STATUS_SET")
-    '("error-setting" "G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING")
-  )
-)
-
-(define-flags FileQueryInfoFlags
-  (in-module "gio")
-  (c-name "GFileQueryInfoFlags")
-  (gtype-id "G_TYPE_FILE_QUERY_INFO_FLAGS")
-  (values
-    '("none" "G_FILE_QUERY_INFO_NONE")
-    '("nofollow-symlinks" "G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS")
-  )
-)
-
-(define-flags FileCreateFlags
-  (in-module "gio")
-  (c-name "GFileCreateFlags")
-  (gtype-id "G_TYPE_FILE_CREATE_FLAGS")
-  (values
-    '("none" "G_FILE_CREATE_NONE")
-    '("private" "G_FILE_CREATE_PRIVATE")
-    '("replace-destination" "G_FILE_CREATE_REPLACE_DESTINATION")
-  )
-)
-
-(define-enum MountMountFlags
-  (in-module "gio")
-  (c-name "GMountMountFlags")
-  (gtype-id "G_TYPE_MOUNT_MOUNT_FLAGS")
-  (values
-    '("none" "G_MOUNT_MOUNT_NONE")
-  )
-)
-
-(define-flags MountUnmountFlags
-  (in-module "gio")
-  (c-name "GMountUnmountFlags")
-  (gtype-id "G_TYPE_MOUNT_UNMOUNT_FLAGS")
-  (values
-    '("none" "G_MOUNT_UNMOUNT_NONE")
-    '("force" "G_MOUNT_UNMOUNT_FORCE")
-  )
-)
-
-(define-enum DriveStartFlags
-  (in-module "gio")
-  (c-name "GDriveStartFlags")
-  (gtype-id "G_TYPE_DRIVE_START_FLAGS")
-  (values
-    '("none" "G_DRIVE_START_NONE")
-  )
-)
-
-(define-enum DriveStartStopType
-  (in-module "gio")
-  (c-name "GDriveStartStopType")
-  (gtype-id "G_TYPE_DRIVE_START_STOP_TYPE")
-  (values
-    '("unknown" "G_DRIVE_START_STOP_TYPE_UNKNOWN")
-    '("shutdown" "G_DRIVE_START_STOP_TYPE_SHUTDOWN")
-    '("network" "G_DRIVE_START_STOP_TYPE_NETWORK")
-    '("multidisk" "G_DRIVE_START_STOP_TYPE_MULTIDISK")
-    '("password" "G_DRIVE_START_STOP_TYPE_PASSWORD")
-  )
-)
-
-(define-flags FileCopyFlags
-  (in-module "gio")
-  (c-name "GFileCopyFlags")
-  (gtype-id "G_TYPE_FILE_COPY_FLAGS")
-  (values
-    '("none" "G_FILE_COPY_NONE")
-    '("overwrite" "G_FILE_COPY_OVERWRITE")
-    '("backup" "G_FILE_COPY_BACKUP")
-    '("nofollow-symlinks" "G_FILE_COPY_NOFOLLOW_SYMLINKS")
-    '("all-metadata" "G_FILE_COPY_ALL_METADATA")
-    '("no-fallback-for-move" "G_FILE_COPY_NO_FALLBACK_FOR_MOVE")
-    '("target-default-perms" "G_FILE_COPY_TARGET_DEFAULT_PERMS")
-  )
-)
-
-(define-flags FileMonitorFlags
-  (in-module "gio")
-  (c-name "GFileMonitorFlags")
-  (gtype-id "G_TYPE_FILE_MONITOR_FLAGS")
-  (values
-    '("none" "G_FILE_MONITOR_NONE")
-    '("watch-mounts" "G_FILE_MONITOR_WATCH_MOUNTS")
-  )
-)
-
-(define-enum FileType
-  (in-module "gio")
-  (c-name "GFileType")
-  (gtype-id "G_TYPE_FILE_TYPE")
-  (values
-    '("unknown" "G_FILE_TYPE_UNKNOWN")
-    '("regular" "G_FILE_TYPE_REGULAR")
-    '("directory" "G_FILE_TYPE_DIRECTORY")
-    '("symbolic-link" "G_FILE_TYPE_SYMBOLIC_LINK")
-    '("special" "G_FILE_TYPE_SPECIAL")
-    '("shortcut" "G_FILE_TYPE_SHORTCUT")
-    '("mountable" "G_FILE_TYPE_MOUNTABLE")
-  )
-)
-
-(define-enum FilesystemPreviewType
-  (in-module "gio")
-  (c-name "GFilesystemPreviewType")
-  (gtype-id "G_TYPE_FILESYSTEM_PREVIEW_TYPE")
-  (values
-    '("if-always" "G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS")
-    '("if-local" "G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL")
-    '("never" "G_FILESYSTEM_PREVIEW_TYPE_NEVER")
-  )
-)
-
-(define-enum FileMonitorEvent
-  (in-module "gio")
-  (c-name "GFileMonitorEvent")
-  (gtype-id "G_TYPE_FILE_MONITOR_EVENT")
-  (values
-    '("changed" "G_FILE_MONITOR_EVENT_CHANGED")
-    '("changes-done-hint" "G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT")
-    '("deleted" "G_FILE_MONITOR_EVENT_DELETED")
-    '("created" "G_FILE_MONITOR_EVENT_CREATED")
-    '("attribute-changed" "G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED")
-    '("pre-unmount" "G_FILE_MONITOR_EVENT_PRE_UNMOUNT")
-    '("unmounted" "G_FILE_MONITOR_EVENT_UNMOUNTED")
-  )
-)
-
-(define-enum ErrorEnum
-  (in-module "gio")
-  (c-name "GIOErrorEnum")
-  (gtype-id "G_TYPE_IO_ERROR_ENUM")
-  (values
-    '("failed" "G_IO_ERROR_FAILED")
-    '("not-found" "G_IO_ERROR_NOT_FOUND")
-    '("exists" "G_IO_ERROR_EXISTS")
-    '("is-directory" "G_IO_ERROR_IS_DIRECTORY")
-    '("not-directory" "G_IO_ERROR_NOT_DIRECTORY")
-    '("not-empty" "G_IO_ERROR_NOT_EMPTY")
-    '("not-regular-file" "G_IO_ERROR_NOT_REGULAR_FILE")
-    '("not-symbolic-link" "G_IO_ERROR_NOT_SYMBOLIC_LINK")
-    '("not-mountable-file" "G_IO_ERROR_NOT_MOUNTABLE_FILE")
-    '("filename-too-long" "G_IO_ERROR_FILENAME_TOO_LONG")
-    '("invalid-filename" "G_IO_ERROR_INVALID_FILENAME")
-    '("too-many-links" "G_IO_ERROR_TOO_MANY_LINKS")
-    '("no-space" "G_IO_ERROR_NO_SPACE")
-    '("invalid-argument" "G_IO_ERROR_INVALID_ARGUMENT")
-    '("permission-denied" "G_IO_ERROR_PERMISSION_DENIED")
-    '("not-supported" "G_IO_ERROR_NOT_SUPPORTED")
-    '("not-mounted" "G_IO_ERROR_NOT_MOUNTED")
-    '("already-mounted" "G_IO_ERROR_ALREADY_MOUNTED")
-    '("closed" "G_IO_ERROR_CLOSED")
-    '("cancelled" "G_IO_ERROR_CANCELLED")
-    '("pending" "G_IO_ERROR_PENDING")
-    '("read-only" "G_IO_ERROR_READ_ONLY")
-    '("cant-create-backup" "G_IO_ERROR_CANT_CREATE_BACKUP")
-    '("wrong-etag" "G_IO_ERROR_WRONG_ETAG")
-    '("timed-out" "G_IO_ERROR_TIMED_OUT")
-    '("would-recurse" "G_IO_ERROR_WOULD_RECURSE")
-    '("busy" "G_IO_ERROR_BUSY")
-    '("would-block" "G_IO_ERROR_WOULD_BLOCK")
-    '("host-not-found" "G_IO_ERROR_HOST_NOT_FOUND")
-    '("would-merge" "G_IO_ERROR_WOULD_MERGE")
-    '("failed-handled" "G_IO_ERROR_FAILED_HANDLED")
-    '("too-many-open-files" "G_IO_ERROR_TOO_MANY_OPEN_FILES")
-    '("not-initialized" "G_IO_ERROR_NOT_INITIALIZED")
-    '("address-in-use" "G_IO_ERROR_ADDRESS_IN_USE")
-    '("partial-input" "G_IO_ERROR_PARTIAL_INPUT")
-    '("invalid-data" "G_IO_ERROR_INVALID_DATA")
-  )
-)
-
-(define-flags AskPasswordFlags
-  (in-module "gio")
-  (c-name "GAskPasswordFlags")
-  (gtype-id "G_TYPE_ASK_PASSWORD_FLAGS")
-  (values
-    '("need-password" "G_ASK_PASSWORD_NEED_PASSWORD")
-    '("need-username" "G_ASK_PASSWORD_NEED_USERNAME")
-    '("need-domain" "G_ASK_PASSWORD_NEED_DOMAIN")
-    '("saving-supported" "G_ASK_PASSWORD_SAVING_SUPPORTED")
-    '("anonymous-supported" "G_ASK_PASSWORD_ANONYMOUS_SUPPORTED")
-  )
-)
-
-(define-enum PasswordSave
-  (in-module "gio")
-  (c-name "GPasswordSave")
-  (gtype-id "G_TYPE_PASSWORD_SAVE")
-  (values
-    '("never" "G_PASSWORD_SAVE_NEVER")
-    '("for-session" "G_PASSWORD_SAVE_FOR_SESSION")
-    '("permanently" "G_PASSWORD_SAVE_PERMANENTLY")
-  )
-)
-
-(define-enum MountOperationResult
-  (in-module "gio")
-  (c-name "GMountOperationResult")
-  (gtype-id "G_TYPE_MOUNT_OPERATION_RESULT")
-  (values
-    '("handled" "G_MOUNT_OPERATION_HANDLED")
-    '("aborted" "G_MOUNT_OPERATION_ABORTED")
-    '("unhandled" "G_MOUNT_OPERATION_UNHANDLED")
-  )
-)
-
-(define-flags OutputStreamSpliceFlags
-  (in-module "gio")
-  (c-name "GOutputStreamSpliceFlags")
-  (gtype-id "G_TYPE_OUTPUT_STREAM_SPLICE_FLAGS")
-  (values
-    '("none" "G_OUTPUT_STREAM_SPLICE_NONE")
-    '("close-source" "G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE")
-    '("close-target" "G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET")
-  )
-)
-
-(define-enum EmblemOrigin
-  (in-module "gio")
-  (c-name "GEmblemOrigin")
-  (gtype-id "G_TYPE_EMBLEM_ORIGIN")
-  (values
-    '("unknown" "G_EMBLEM_ORIGIN_UNKNOWN")
-    '("device" "G_EMBLEM_ORIGIN_DEVICE")
-    '("livemetadata" "G_EMBLEM_ORIGIN_LIVEMETADATA")
-    '("tag" "G_EMBLEM_ORIGIN_TAG")
-  )
-)
-
-(define-enum ResolverError
-  (in-module "gio")
-  (c-name "GResolverError")
-  (gtype-id "G_TYPE_RESOLVER_ERROR")
-  (values
-    '("not-found" "G_RESOLVER_ERROR_NOT_FOUND")
-    '("temporary-failure" "G_RESOLVER_ERROR_TEMPORARY_FAILURE")
-    '("internal" "G_RESOLVER_ERROR_INTERNAL")
-  )
-)
-
-(define-enum SocketFamily
-  (in-module "gio")
-  (c-name "GSocketFamily")
-  (gtype-id "G_TYPE_SOCKET_FAMILY")
-  (values
-    '("invalid" "G_SOCKET_FAMILY_INVALID")
-    '("unix" "G_SOCKET_FAMILY_UNIX")
-    '("ipv4" "G_SOCKET_FAMILY_IPV4")
-    '("ipv6" "G_SOCKET_FAMILY_IPV6")
-  )
-)
-
-(define-enum SocketType
-  (in-module "gio")
-  (c-name "GSocketType")
-  (gtype-id "G_TYPE_SOCKET_TYPE")
-  (values
-    '("invalid" "G_SOCKET_TYPE_INVALID")
-    '("stream" "G_SOCKET_TYPE_STREAM")
-    '("datagram" "G_SOCKET_TYPE_DATAGRAM")
-    '("seqpacket" "G_SOCKET_TYPE_SEQPACKET")
-  )
-)
-
-(define-enum SocketMsgFlags
-  (in-module "gio")
-  (c-name "GSocketMsgFlags")
-  (gtype-id "G_TYPE_SOCKET_MSG_FLAGS")
-  (values
-    '("none" "G_SOCKET_MSG_NONE")
-    '("oob" "G_SOCKET_MSG_OOB")
-    '("peek" "G_SOCKET_MSG_PEEK")
-    '("dontroute" "G_SOCKET_MSG_DONTROUTE")
-  )
-)
-
-(define-enum SocketProtocol
-  (in-module "gio")
-  (c-name "GSocketProtocol")
-  (gtype-id "G_TYPE_SOCKET_PROTOCOL")
-  (values
-    '("unknown" "G_SOCKET_PROTOCOL_UNKNOWN")
-    '("default" "G_SOCKET_PROTOCOL_DEFAULT")
-    '("tcp" "G_SOCKET_PROTOCOL_TCP")
-    '("udp" "G_SOCKET_PROTOCOL_UDP")
-    '("sctp" "G_SOCKET_PROTOCOL_SCTP")
-  )
-)
-
-(define-enum ZlibCompressorFormat
-  (in-module "gio")
-  (c-name "GZlibCompressorFormat")
-  (gtype-id "G_TYPE_ZLIB_COMPRESSOR_FORMAT")
-  (values
-    '("zlib" "G_ZLIB_COMPRESSOR_FORMAT_ZLIB")
-    '("gzip" "G_ZLIB_COMPRESSOR_FORMAT_GZIP")
-    '("raw" "G_ZLIB_COMPRESSOR_FORMAT_RAW")
-  )
-)
diff --git a/gio/gio.defs b/gio/gio.defs
deleted file mode 100644 (file)
index f5a28b6..0000000
+++ /dev/null
@@ -1,7465 +0,0 @@
-;; -*- scheme -*-
-
-(include "gio-types.defs")
-
-;; From gappinfo.h
-
-(define-function app_info_get_type
-  (c-name "g_app_info_get_type")
-  (return-type "GType")
-)
-
-(define-function app_launch_context_get_type
-  (c-name "g_app_launch_context_get_type")
-  (return-type "GType")
-)
-
-(define-function app_info_create_from_commandline
-  (c-name "g_app_info_create_from_commandline")
-  (is-constructor-of "GAppInfo")
-  (return-type "GAppInfo*")
-  (parameters
-    '("const-char*" "commandline")
-    '("const-char*" "application_name" (null-ok) (default "NULL"))
-    '("GAppInfoCreateFlags" "flags" (default "G_APP_INFO_CREATE_NONE"))
-    '("GError**" "error")
-  )
-)
-
-(define-method dup
-  (of-object "GAppInfo")
-  (c-name "g_app_info_dup")
-  (return-type "GAppInfo*")
-  (caller-owns-return #t)
-)
-
-(define-method equal
-  (of-object "GAppInfo")
-  (c-name "g_app_info_equal")
-  (return-type "gboolean")
-  (parameters
-    '("GAppInfo*" "appinfo2")
-  )
-)
-
-(define-method get_id
-  (of-object "GAppInfo")
-  (c-name "g_app_info_get_id")
-  (return-type "const-char*")
-)
-
-(define-method get_name
-  (of-object "GAppInfo")
-  (c-name "g_app_info_get_name")
-  (return-type "const-char*")
-)
-
-(define-method get_description
-  (of-object "GAppInfo")
-  (c-name "g_app_info_get_description")
-  (return-type "const-char*")
-)
-
-(define-method get_executable
-  (of-object "GAppInfo")
-  (c-name "g_app_info_get_executable")
-  (return-type "const-char*")
-)
-
-(define-method get_icon
-  (of-object "GAppInfo")
-  (c-name "g_app_info_get_icon")
-  (return-type "GIcon*")
-)
-
-;;
-;; wrapped in gappinfo.override
-;;
-(define-method launch
-  (docstring
-  "launch (files=None, launch_context=None) -> gboolean\n"
-  "\n"
-  "Launches the application. Passes files to the launched application\n"
-  "as arguments, using the optional launch_context to get information\n"
-  "about the details of the launcher (like what screen it is on).\n"
-  "On error, error will be set accordingly.\n\n"
-  "Note that even if the launch is successful the application launched\n"
-  "can fail to start if it runs into problems during startup.\n"
-  "There is no way to detect this.\n\n"
-  "Some URIs can be changed when passed through a gio.File\n"
-  "(for instance unsupported uris with strange formats like mailto:),\n"
-  "so if you have a textual uri you want to pass in as argument,\n"
-  "consider using gio.AppInfo.launch_uris() instead."
-  )
-  (of-object "GAppInfo")
-  (c-name "g_app_info_launch")
-  (return-type "gboolean")
-  (parameters
-    '("GList*" "files")
-    '("GAppLaunchContext*" "launch_context")
-    '("GError**" "error")
-  )
-)
-
-(define-method supports_uris
-  (of-object "GAppInfo")
-  (c-name "g_app_info_supports_uris")
-  (return-type "gboolean")
-)
-
-(define-method supports_files
-  (of-object "GAppInfo")
-  (c-name "g_app_info_supports_files")
-  (return-type "gboolean")
-)
-
-;;
-;; wrapped in gappinfo.override
-;;
-(define-method launch_uris
-  (docstring
-  "launch_uris (files=None, launch_context=None) -> gboolean\n"
-  "\n"
-  "Launches the application. Passes files to the launched application\n"
-  "as arguments, using the optional launch_context to get information\n"
-  "about the details of the launcher (like what screen it is on).\n"
-  "On error, error will be set accordingly.\n\n"
-  "Note that even if the launch is successful the application launched\n"
-  "can fail to start if it runs into problems during startup.\n"
-  "There is no way to detect this.\n\n"
-  )
-  (of-object "GAppInfo")
-  (c-name "g_app_info_launch_uris")
-  (return-type "gboolean")
-  (parameters
-    '("GList*" "uris")
-    '("GAppLaunchContext*" "launch_context")
-    '("GError**" "error")
-  )
-)
-
-(define-method should_show
-  (of-object "GAppInfo")
-  (c-name "g_app_info_should_show")
-  (return-type "gboolean")
-)
-
-(define-method set_as_default_for_type
-  (of-object "GAppInfo")
-  (c-name "g_app_info_set_as_default_for_type")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "content_type")
-    '("GError**" "error")
-  )
-)
-
-(define-method set_as_default_for_extension
-  (of-object "GAppInfo")
-  (c-name "g_app_info_set_as_default_for_extension")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "extension")
-    '("GError**" "error")
-  )
-)
-
-(define-method add_supports_type
-  (of-object "GAppInfo")
-  (c-name "g_app_info_add_supports_type")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "content_type")
-    '("GError**" "error")
-  )
-)
-
-(define-method can_remove_supports_type
-  (of-object "GAppInfo")
-  (c-name "g_app_info_can_remove_supports_type")
-  (return-type "gboolean")
-)
-
-(define-method remove_supports_type
-  (of-object "GAppInfo")
-  (c-name "g_app_info_remove_supports_type")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "content_type")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gio.override
-;;
-(define-function app_info_get_all
-  (c-name "g_app_info_get_all")
-  (return-type "GList*")
-)
-
-;;
-;; wrapped in gio.override
-;;
-(define-function app_info_get_all_for_type
-  (c-name "g_app_info_get_all_for_type")
-  (return-type "GList*")
-  (parameters
-    '("const-char*" "content_type")
-  )
-)
-
-(define-function app_info_get_default_for_type
-  (c-name "g_app_info_get_default_for_type")
-  (return-type "GAppInfo*")
-  (parameters
-    '("const-char*" "content_type")
-    '("gboolean" "must_support_uris")
-  )
-)
-
-(define-function app_info_get_default_for_uri_scheme
-  (c-name "g_app_info_get_default_for_uri_scheme")
-  (return-type "GAppInfo*")
-  (parameters
-    '("const-char*" "uri_scheme")
-  )
-)
-
-(define-function app_launch_context_new
-  (c-name "g_app_launch_context_new")
-  (is-constructor-of "GAppLaunchContext")
-  (return-type "GAppLaunchContext*")
-)
-
-;;
-;; wrapped in gapplaunchcontext.override
-;;
-(define-method get_display
-  (of-object "GAppLaunchContext")
-  (c-name "g_app_launch_context_get_display")
-  (return-type "char*")
-  (parameters
-    '("GAppInfo*" "info")
-    '("GList*" "files")
-  )
-)
-
-;;
-;; wrapped in gapplaunchcontext.override
-;;
-(define-method get_startup_notify_id
-  (of-object "GAppLaunchContext")
-  (c-name "g_app_launch_context_get_startup_notify_id")
-  (return-type "char*")
-  (parameters
-    '("GAppInfo*" "info")
-    '("GList*" "files")
-  )
-)
-
-(define-method launch_failed
-  (of-object "GAppLaunchContext")
-  (c-name "g_app_launch_context_launch_failed")
-  (return-type "none")
-  (parameters
-    '("const-char*" "startup_notify_id")
-  )
-)
-
-(define-function app_info_reset_type_associations
-  (c-name "g_app_info_reset_type_associations")
-  (return-type "none")
-  (parameters
-    '("const-char*" "content_type")
-  )
-)
-
-(define-method can_delete
-  (of-object "GAppInfo")
-  (c-name "g_app_info_can_delete")
-  (return-type "gboolean")
-)
-
-(define-method delete
-  (of-object "GAppInfo")
-  (c-name "g_app_info_delete")
-  (return-type "gboolean")
-)
-
-(define-method get_commandline
-  (of-object "GAppInfo")
-  (c-name "g_app_info_get_commandline")
-  (return-type "const-char*")
-)
-
-
-
-;; From gasyncinitable.h
-
-(define-function async_initable_get_type
-  (c-name "g_async_initable_get_type")
-  (return-type "GType")
-)
-
-(define-method init_async
-  (of-object "GAsyncInitable")
-  (c-name "g_async_initable_init_async")
-  (return-type "none")
-  (parameters
-    '("int" "io_priority")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method init_finish
-  (of-object "GAsyncInitable")
-  (c-name "g_async_initable_init_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-(define-function async_initable_new_async
-  (c-name "g_async_initable_new_async")
-  (return-type "none")
-  (parameters
-    '("GType" "object_type")
-    '("int" "io_priority")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-    '("const-gchar*" "first_property_name")
-  )
-  (varargs #t)
-)
-
-(define-function async_initable_newv_async
-  (c-name "g_async_initable_newv_async")
-  (return-type "none")
-  (parameters
-    '("GType" "object_type")
-    '("guint" "n_parameters")
-    '("GParameter*" "parameters")
-    '("int" "io_priority")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-function async_initable_new_valist_async
-  (c-name "g_async_initable_new_valist_async")
-  (return-type "none")
-  (parameters
-    '("GType" "object_type")
-    '("const-gchar*" "first_property_name")
-    '("va_list" "var_args")
-    '("int" "io_priority")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method new_finish
-  (of-object "GAsyncInitable")
-  (c-name "g_async_initable_new_finish")
-  (return-type "GObject*")
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gasyncresult.h
-
-(define-function async_result_get_type
-  (c-name "g_async_result_get_type")
-  (return-type "GType")
-)
-
-(define-method get_user_data
-  (of-object "GAsyncResult")
-  (c-name "g_async_result_get_user_data")
-  (return-type "gpointer")
-)
-
-(define-method get_source_object
-  (of-object "GAsyncResult")
-  (c-name "g_async_result_get_source_object")
-  (return-type "GObject*")
-)
-
-
-
-;; From gbufferedinputstream.h
-
-(define-function buffered_input_stream_get_type
-  (c-name "g_buffered_input_stream_get_type")
-  (return-type "GType")
-)
-
-(define-function buffered_input_stream_new
-  (c-name "g_buffered_input_stream_new")
-  (is-constructor-of "GBufferedInputStream")
-  (return-type "GInputStream*")
-  (properties
-    '("base_stream")
-  )
-)
-
-(define-function buffered_input_stream_new_sized
-  (c-name "g_buffered_input_stream_new_sized")
-  (return-type "GInputStream*")
-  (parameters
-    '("GInputStream*" "base_stream")
-    '("gsize" "size")
-  )
-)
-
-(define-method get_buffer_size
-  (of-object "GBufferedInputStream")
-  (c-name "g_buffered_input_stream_get_buffer_size")
-  (return-type "gsize")
-)
-
-(define-method set_buffer_size
-  (of-object "GBufferedInputStream")
-  (c-name "g_buffered_input_stream_set_buffer_size")
-  (return-type "none")
-  (parameters
-    '("gsize" "size")
-  )
-)
-
-(define-method get_available
-  (of-object "GBufferedInputStream")
-  (c-name "g_buffered_input_stream_get_available")
-  (return-type "gsize")
-)
-
-(define-method peek
-  (of-object "GBufferedInputStream")
-  (c-name "g_buffered_input_stream_peek")
-  (return-type "gsize")
-  (parameters
-    '("void*" "buffer")
-    '("gsize" "offset")
-    '("gsize" "count")
-  )
-)
-
-(define-method peek_buffer
-  (of-object "GBufferedInputStream")
-  (c-name "g_buffered_input_stream_peek_buffer")
-  (return-type "const-void*")
-  (parameters
-    '("gsize*" "count")
-  )
-)
-
-(define-method fill
-  (of-object "GBufferedInputStream")
-  (c-name "g_buffered_input_stream_fill")
-  (return-type "gssize")
-  (unblock-threads #t)
-  (parameters
-    '("gssize" "count")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method fill_async
-  (of-object "GBufferedInputStream")
-  (c-name "g_buffered_input_stream_fill_async")
-  (return-type "none")
-  (parameters
-    '("gssize" "count")
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method fill_finish
-  (of-object "GBufferedInputStream")
-  (c-name "g_buffered_input_stream_fill_finish")
-  (return-type "gssize")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method read_byte
-  (of-object "GBufferedInputStream")
-  (c-name "g_buffered_input_stream_read_byte")
-  (return-type "int")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gbufferedoutputstream.h
-
-(define-function buffered_output_stream_get_type
-  (c-name "g_buffered_output_stream_get_type")
-  (return-type "GType")
-)
-
-(define-function buffered_output_stream_new
-  (c-name "g_buffered_output_stream_new")
-  (is-constructor-of "GBufferedOutputStream")
-  (return-type "GOutputStream*")
-  (properties
-    '("base_stream")
-  )
-)
-
-(define-function buffered_output_stream_new_sized
-  (c-name "g_buffered_output_stream_new_sized")
-  (return-type "GOutputStream*")
-  (parameters
-    '("GOutputStream*" "base_stream")
-    '("guint" "size")
-  )
-)
-
-(define-method get_buffer_size
-  (of-object "GBufferedOutputStream")
-  (c-name "g_buffered_output_stream_get_buffer_size")
-  (return-type "gsize")
-)
-
-(define-method set_buffer_size
-  (of-object "GBufferedOutputStream")
-  (c-name "g_buffered_output_stream_set_buffer_size")
-  (return-type "none")
-  (parameters
-    '("gsize" "size")
-  )
-)
-
-(define-method get_auto_grow
-  (of-object "GBufferedOutputStream")
-  (c-name "g_buffered_output_stream_get_auto_grow")
-  (return-type "gboolean")
-)
-
-(define-method set_auto_grow
-  (of-object "GBufferedOutputStream")
-  (c-name "g_buffered_output_stream_set_auto_grow")
-  (return-type "none")
-  (parameters
-    '("gboolean" "auto_grow")
-  )
-)
-
-
-
-;; From gcancellable.h
-
-(define-function cancellable_get_type
-  (c-name "g_cancellable_get_type")
-  (return-type "GType")
-)
-
-(define-function cancellable_new
-  (c-name "g_cancellable_new")
-  (is-constructor-of "GCancellable")
-  (return-type "GCancellable*")
-)
-
-(define-method is_cancelled
-  (of-object "GCancellable")
-  (c-name "g_cancellable_is_cancelled")
-  (return-type "gboolean")
-)
-
-(define-method set_error_if_cancelled
-  (of-object "GCancellable")
-  (c-name "g_cancellable_set_error_if_cancelled")
-  (return-type "gboolean")
-  (parameters
-    '("GError**" "error")
-  )
-)
-
-(define-method get_fd
-  (of-object "GCancellable")
-  (c-name "g_cancellable_get_fd")
-  (return-type "int")
-)
-
-(define-method make_pollfd
-  (of-object "GCancellable")
-  (c-name "g_cancellable_make_pollfd")
-  (return-type "none")
-  (parameters
-    '("GPollFD*" "pollfd")
-  )
-)
-
-(define-function cancellable_get_current
-  (c-name "g_cancellable_get_current")
-  (return-type "GCancellable*")
-)
-
-(define-method push_current
-  (of-object "GCancellable")
-  (c-name "g_cancellable_push_current")
-  (return-type "none")
-)
-
-(define-method pop_current
-  (of-object "GCancellable")
-  (c-name "g_cancellable_pop_current")
-  (return-type "none")
-)
-
-(define-method reset
-  (of-object "GCancellable")
-  (c-name "g_cancellable_reset")
-  (return-type "none")
-)
-
-(define-method cancel
-  (of-object "GCancellable")
-  (c-name "g_cancellable_cancel")
-  (return-type "none")
-)
-
-(define-method connect
-  (of-object "GCancellable")
-  (c-name "g_cancellable_connect")
-  (return-type "gulong")
-  (parameters
-    '("GCallback" "callback")
-    '("gpointer" "data")
-    '("GDestroyNotify" "data_destroy_func")
-  )
-)
-
-(define-method disconnect
-  (of-object "GCancellable")
-  (c-name "g_cancellable_disconnect")
-  (return-type "none")
-  (parameters
-    '("gulong" "handler_id")
-  )
-)
-
-(define-method release_fd
-  (of-object "GCancellable")
-  (c-name "g_cancellable_release_fd")
-  (return-type "none")
-)
-
-
-
-;; From gcontenttype.h
-
-(define-function content_type_equals
-  (c-name "g_content_type_equals")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "type1")
-    '("const-char*" "type2")
-  )
-)
-
-(define-function content_type_is_a
-  (c-name "g_content_type_is_a")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "type")
-    '("const-char*" "supertype")
-  )
-)
-
-(define-function content_type_is_unknown
-  (c-name "g_content_type_is_unknown")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "type")
-  )
-)
-
-(define-function content_type_get_description
-  (c-name "g_content_type_get_description")
-  (return-type "char*")
-  (parameters
-    '("const-char*" "type")
-  )
-)
-
-(define-function content_type_get_mime_type
-  (c-name "g_content_type_get_mime_type")
-  (return-type "char*")
-  (parameters
-    '("const-char*" "type")
-  )
-)
-
-(define-function content_type_get_icon
-  (c-name "g_content_type_get_icon")
-  (return-type "GIcon*")
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "type")
-  )
-)
-
-(define-function content_type_can_be_executable
-  (c-name "g_content_type_can_be_executable")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "type")
-  )
-)
-
-(define-function content_type_from_mime_type
-  (c-name "g_content_type_from_mime_type")
-  (return-type "char*")
-  (parameters
-    '("const-char*" "mime_type")
-  )
-)
-
-;;
-;; wrapped in gio.override
-;;
-(define-function content_type_guess
-  (docstring
-"content_type_guess([filename, data, want_uncertain]) -> mime type\n"
-"\n"
-"Guesses the content type based on the parameters passed.\n"
-"Either filename or data must be specified\n"
-"Returns a string containing the mime type.\n"
-"If want_uncertain is set to True, return a tuple with the mime type and \n"
-"True/False if the type guess was uncertain or not.")
-  (c-name "g_content_type_guess")
-  (return-type "char*")
-  (parameters
-    '("const-char*" "filename")
-    '("const-guchar*" "data")
-    '("gsize" "data_size")
-    '("gboolean*" "result_uncertain")
-  )
-)
-
-(define-function content_type_guess_for_tree
-  (c-name "g_content_type_guess_for_tree")
-  (return-type "char**")
-  (parameters
-    '("GFile*" "root")
-  )
-)
-
-;;
-;; wrapped in gio.override
-;;
-(define-function content_types_get_registered
-  (c-name "g_content_types_get_registered")
-  (return-type "GList*")
-)
-
-
-
-;; From gdatainputstream.h
-
-(define-function data_input_stream_get_type
-  (c-name "g_data_input_stream_get_type")
-  (return-type "GType")
-)
-
-(define-function data_input_stream_new
-  (c-name "g_data_input_stream_new")
-  (is-constructor-of "GDataInputStream")
-  (return-type "GDataInputStream*")
-  (properties
-    '("base_stream")
-  )
-)
-
-(define-method set_byte_order
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_set_byte_order")
-  (return-type "none")
-  (parameters
-    '("GDataStreamByteOrder" "order")
-  )
-)
-
-(define-method get_byte_order
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_get_byte_order")
-  (return-type "GDataStreamByteOrder")
-)
-
-(define-method set_newline_type
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_set_newline_type")
-  (return-type "none")
-  (parameters
-    '("GDataStreamNewlineType" "type")
-  )
-)
-
-(define-method get_newline_type
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_get_newline_type")
-  (return-type "GDataStreamNewlineType")
-)
-
-(define-method read_byte
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_read_byte")
-  (return-type "guchar")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method read_int16
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_read_int16")
-  (return-type "gint16")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method read_uint16
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_read_uint16")
-  (return-type "guint16")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method read_int32
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_read_int32")
-  (return-type "gint32")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method read_uint32
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_read_uint32")
-  (return-type "guint32")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method read_int64
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_read_int64")
-  (return-type "gint64")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method read_uint64
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_read_uint64")
-  (return-type "guint64")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gdatainputstream.override
-;;
-(define-method read_line
-  (of-object "GDataInputStream")
-  (docstring
-   "S.read_line([cancellable]) -> str\n"
-   "Read a line from the stream. Return value includes ending newline\n"
-   "character.")
-  (c-name "g_data_input_stream_read_line")
-  (return-type "char*")
-  (parameters
-    '("gsize*" "length")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gdatainputstream.override
-;;
-(define-method read_until
-  (of-object "GDataInputStream")
-  (docstring
-   "S.read_until(stop_chars, [cancellable]) -> str\n"
-   "Read characters from the string, stopping at the end or upon reading\n"
-   "any character in stop_chars. Return value does not include the stopping\n"
-   "character.")
-  (c-name "g_data_input_stream_read_until")
-  (return-type "char*")
-  (parameters
-    '("const-gchar*" "stop_chars")
-    '("gsize*" "length")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method read_until_async
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_read_until_async")
-  (return-type "none")
-  (parameters
-    '("const-gchar*" "stop_chars")
-    '("gint" "io_priority")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method read_until_finish
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_read_until_finish")
-  (return-type "char*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("gsize*" "length")
-    '("GError**" "error")
-  )
-)
-
-(define-method read_line_async
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_read_line_async")
-  (return-type "none")
-  (parameters
-    '("gint" "io_priority")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method read_line_finish
-  (of-object "GDataInputStream")
-  (c-name "g_data_input_stream_read_line_finish")
-  (return-type "char*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("gsize*" "length")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gdataoutputstream.h
-
-(define-function data_output_stream_get_type
-  (c-name "g_data_output_stream_get_type")
-  (return-type "GType")
-)
-
-(define-function data_output_stream_new
-  (c-name "g_data_output_stream_new")
-  (is-constructor-of "GDataOutputStream")
-  (return-type "GDataOutputStream*")
-  (properties
-    '("base_stream")
-  )
-)
-
-(define-method set_byte_order
-  (of-object "GDataOutputStream")
-  (c-name "g_data_output_stream_set_byte_order")
-  (return-type "none")
-  (parameters
-    '("GDataStreamByteOrder" "order")
-  )
-)
-
-(define-method get_byte_order
-  (of-object "GDataOutputStream")
-  (c-name "g_data_output_stream_get_byte_order")
-  (return-type "GDataStreamByteOrder")
-)
-
-(define-method put_byte
-  (of-object "GDataOutputStream")
-  (c-name "g_data_output_stream_put_byte")
-  (return-type "gboolean")
-  (parameters
-    '("guchar" "data")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method put_int16
-  (of-object "GDataOutputStream")
-  (c-name "g_data_output_stream_put_int16")
-  (return-type "gboolean")
-  (parameters
-    '("gint16" "data")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method put_uint16
-  (of-object "GDataOutputStream")
-  (c-name "g_data_output_stream_put_uint16")
-  (return-type "gboolean")
-  (parameters
-    '("guint16" "data")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method put_int32
-  (of-object "GDataOutputStream")
-  (c-name "g_data_output_stream_put_int32")
-  (return-type "gboolean")
-  (parameters
-    '("gint32" "data")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method put_uint32
-  (of-object "GDataOutputStream")
-  (c-name "g_data_output_stream_put_uint32")
-  (return-type "gboolean")
-  (parameters
-    '("guint32" "data")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method put_int64
-  (of-object "GDataOutputStream")
-  (c-name "g_data_output_stream_put_int64")
-  (return-type "gboolean")
-  (parameters
-    '("gint64" "data")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method put_uint64
-  (of-object "GDataOutputStream")
-  (c-name "g_data_output_stream_put_uint64")
-  (return-type "gboolean")
-  (parameters
-    '("guint64" "data")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method put_string
-  (of-object "GDataOutputStream")
-  (c-name "g_data_output_stream_put_string")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "str")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-
-
-
-
-
-;; From gdrive.h
-
-(define-function drive_get_type
-  (c-name "g_drive_get_type")
-  (return-type "GType")
-)
-
-(define-method get_name
-  (of-object "GDrive")
-  (c-name "g_drive_get_name")
-  (return-type "char*")
-)
-
-(define-method get_icon
-  (of-object "GDrive")
-  (c-name "g_drive_get_icon")
-  (return-type "GIcon*")
-  (caller-owns-return #t)
-)
-
-(define-method has_volumes
-  (of-object "GDrive")
-  (c-name "g_drive_has_volumes")
-  (return-type "gboolean")
-)
-
-;;
-;; wrapped in gdrive.override
-;;
-(define-method get_volumes
-  (of-object "GDrive")
-  (c-name "g_drive_get_volumes")
-  (return-type "GList*")
-)
-
-(define-method is_media_removable
-  (of-object "GDrive")
-  (c-name "g_drive_is_media_removable")
-  (return-type "gboolean")
-)
-
-(define-method has_media
-  (of-object "GDrive")
-  (c-name "g_drive_has_media")
-  (return-type "gboolean")
-)
-
-(define-method is_media_check_automatic
-  (of-object "GDrive")
-  (c-name "g_drive_is_media_check_automatic")
-  (return-type "gboolean")
-)
-
-(define-method can_poll_for_media
-  (of-object "GDrive")
-  (c-name "g_drive_can_poll_for_media")
-  (return-type "gboolean")
-)
-
-(define-method can_eject
-  (of-object "GDrive")
-  (c-name "g_drive_can_eject")
-  (return-type "gboolean")
-)
-
-;;
-;; wrapped in gdrive.override
-;;
-(define-method eject
-  (of-object "GDrive")
-  (c-name "g_drive_eject")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags" (default "G_MOUNT_UNMOUNT_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method eject_finish
-  (of-object "GDrive")
-  (c-name "g_drive_eject_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gdrive.override
-;;
-(define-method poll_for_media
-  (of-object "GDrive")
-  (c-name "g_drive_poll_for_media")
-  (return-type "none")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method poll_for_media_finish
-  (of-object "GDrive")
-  (c-name "g_drive_poll_for_media_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method get_identifier
-  (of-object "GDrive")
-  (c-name "g_drive_get_identifier")
-  (return-type "char*")
-  (parameters
-    '("const-char*" "kind")
-  )
-)
-
-;;
-;; wrapped in gdrive.override
-;;
-(define-method enumerate_identifiers
-  (of-object "GDrive")
-  (c-name "g_drive_enumerate_identifiers")
-  (return-type "char**")
-)
-
-(define-method can_start
-  (of-object "GDrive")
-  (c-name "g_drive_can_start")
-  (return-type "gboolean")
-)
-
-(define-method can_start_degraded
-  (of-object "GDrive")
-  (c-name "g_drive_can_start_degraded")
-  (return-type "gboolean")
-)
-
-(define-method can_stop
-  (of-object "GDrive")
-  (c-name "g_drive_can_stop")
-  (return-type "gboolean")
-)
-
-(define-method eject_with_operation
-  (of-object "GDrive")
-  (c-name "g_drive_eject_with_operation")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags")
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method eject_with_operation_finish
-  (of-object "GDrive")
-  (c-name "g_drive_eject_with_operation_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method get_start_stop_type
-  (of-object "GDrive")
-  (c-name "g_drive_get_start_stop_type")
-  (return-type "GDriveStartStopType")
-)
-
-(define-method start
-  (of-object "GDrive")
-  (c-name "g_drive_start")
-  (return-type "none")
-  (parameters
-    '("GDriveStartFlags" "flags")
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method start_finish
-  (of-object "GDrive")
-  (c-name "g_drive_start_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method stop
-  (of-object "GDrive")
-  (c-name "g_drive_stop")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags")
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method stop_finish
-  (of-object "GDrive")
-  (c-name "g_drive_stop_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gemblemedicon.h
-
-(define-function emblemed_icon_get_type
-  (c-name "g_emblemed_icon_get_type")
-  (return-type "GType")
-)
-
-(define-function emblemed_icon_new
-  (c-name "g_emblemed_icon_new")
-  (is-constructor-of "GEmblemedIcon")
-  (return-type "GIcon*")
-  (parameters
-    '("GIcon*" "icon")
-    '("GEmblem*" "emblem")
-  )
-)
-
-(define-method get_icon
-  (of-object "GEmblemedIcon")
-  (c-name "g_emblemed_icon_get_icon")
-  (return-type "GIcon*")
-)
-
-(define-method get_emblems
-  (of-object "GEmblemedIcon")
-  (c-name "g_emblemed_icon_get_emblems")
-  (return-type "GList*")
-)
-
-(define-method add_emblem
-  (of-object "GEmblemedIcon")
-  (c-name "g_emblemed_icon_add_emblem")
-  (return-type "none")
-  (parameters
-    '("GEmblem*" "emblem")
-  )
-)
-
-
-
-;; From gemblem.h
-
-(define-function emblem_get_type
-  (c-name "g_emblem_get_type")
-  (return-type "GType")
-)
-
-(define-function emblem_new
-  (c-name "g_emblem_new")
-  (is-constructor-of "GEmblem")
-  (return-type "GEmblem*")
-  (properties
-    '("icon")
-    '("origin" (optional))
-  )
-)
-
-(define-function emblem_new_with_origin
-  (c-name "g_emblem_new_with_origin")
-  (return-type "GEmblem*")
-  (parameters
-    '("GIcon*" "icon")
-    '("GEmblemOrigin" "origin")
-  )
-)
-
-(define-method get_icon
-  (of-object "GEmblem")
-  (c-name "g_emblem_get_icon")
-  (return-type "GIcon*")
-)
-
-(define-method get_origin
-  (of-object "GEmblem")
-  (c-name "g_emblem_get_origin")
-  (return-type "GEmblemOrigin")
-)
-
-
-
-;; From gfileattribute.h
-
-(define-function file_attribute_info_list_new
-  (c-name "g_file_attribute_info_list_new")
-  (is-constructor-of "GFileAttributeInfoList")
-  (return-type "GFileAttributeInfoList*")
-)
-
-(define-method ref
-  (of-object "GFileAttributeInfoList")
-  (c-name "g_file_attribute_info_list_ref")
-  (return-type "GFileAttributeInfoList*")
-)
-
-(define-method unref
-  (of-object "GFileAttributeInfoList")
-  (c-name "g_file_attribute_info_list_unref")
-  (return-type "none")
-)
-
-(define-method dup
-  (of-object "GFileAttributeInfoList")
-  (c-name "g_file_attribute_info_list_dup")
-  (return-type "GFileAttributeInfoList*")
-)
-
-(define-method lookup
-  (of-object "GFileAttributeInfoList")
-  (c-name "g_file_attribute_info_list_lookup")
-  (return-type "const-GFileAttributeInfo*")
-  (parameters
-    '("const-char*" "name")
-  )
-)
-
-(define-method add
-  (of-object "GFileAttributeInfoList")
-  (c-name "g_file_attribute_info_list_add")
-  (return-type "none")
-  (parameters
-    '("const-char*" "name")
-    '("GFileAttributeType" "type")
-    '("GFileAttributeInfoFlags" "flags" (default "G_FILE_ATTRIBUTE_INFO_NONE"))
-  )
-)
-
-
-
-;; From gfileenumerator.h
-
-(define-function file_enumerator_get_type
-  (c-name "g_file_enumerator_get_type")
-  (return-type "GType")
-)
-
-(define-method next_file
-  (of-object "GFileEnumerator")
-  (c-name "g_file_enumerator_next_file")
-  (return-type "GFileInfo*")
-  (caller-owns-return #t)
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method close
-  (of-object "GFileEnumerator")
-  (c-name "g_file_enumerator_close")
-  (return-type "gboolean")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfileenumerator.override
-;;
-(define-method next_files_async
-  (docstring
-"FE.next_files_async(num_files, callback, [io_priority, cancellable,\n"
-"                    user_data])\n"
-"Request information for a number of files from the enumerator\n"
-"asynchronously. When all i/o for the operation is finished the callback\n"
-"will be called with the requested information.\n"
-"\n"
-"The callback can be called with less than num_files files in case of error\n"
-"or at the end of the enumerator. In case of a partial error the callback\n"
-"will be called with any succeeding items and no error, and on the next\n"
-"request the error will be reported. If a request is cancelled the callback\n"
-"will be called with gio.ERROR_CANCELLED.\n"
-"\n"
-"During an async request no other sync and async calls are allowed, and will\n"
-"result in gio.ERROR_PENDING errors.\n"
-"\n"
-"Any outstanding i/o request with higher priority (lower numerical value)\n"
-"will be executed before an outstanding request with lower priority.\n"
-"Default priority is gobject.PRIORITY_DEFAULT.")
-
-  (of-object "GFileEnumerator")
-  (c-name "g_file_enumerator_next_files_async")
-  (return-type "none")
-  (parameters
-    '("int" "num_files")
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-;;
-;; wrapped in gfileenumerator.override
-;;
-(define-method next_files_finish
-  (docstring
-"FE.next_files_finish(result) -> a list of gio.FileInfos\n"
-"Finishes the asynchronous operation started with\n"
-"gio.FileEnumerator.next_files_async().")
-  (of-object "GFileEnumerator")
-  (c-name "g_file_enumerator_next_files_finish")
-  (return-type "GList*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfileenumerator.override
-;;
-(define-method close_async
-  (of-object "GFileEnumerator")
-  (c-name "g_file_enumerator_close_async")
-  (return-type "none")
-  (parameters
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method close_finish
-  (of-object "GFileEnumerator")
-  (c-name "g_file_enumerator_close_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method is_closed
-  (of-object "GFileEnumerator")
-  (c-name "g_file_enumerator_is_closed")
-  (return-type "gboolean")
-)
-
-(define-method has_pending
-  (of-object "GFileEnumerator")
-  (c-name "g_file_enumerator_has_pending")
-  (return-type "gboolean")
-)
-
-(define-method set_pending
-  (of-object "GFileEnumerator")
-  (c-name "g_file_enumerator_set_pending")
-  (return-type "none")
-  (parameters
-    '("gboolean" "pending")
-  )
-)
-
-(define-method get_container
-  (of-object "GFileEnumerator")
-  (c-name "g_file_enumerator_get_container")
-  (return-type "GFile*")
-)
-
-
-
-;; From gfile.h
-
-(define-function file_get_type
-  (c-name "g_file_get_type")
-  (return-type "GType")
-)
-
-(define-function file_new_for_path
-  (c-name "g_file_new_for_path")
-  (is-constructor-of "GFile")
-  (return-type "GFile*")
-  (parameters
-    '("const-char*" "path")
-  )
-)
-
-(define-function file_new_for_uri
-  (c-name "g_file_new_for_uri")
-  (is-constructor-of "GFile")
-  (return-type "GFile*")
-  (parameters
-    '("const-char*" "uri")
-  )
-)
-
-(define-function file_new_for_commandline_arg
-  (is-constructor-of "GFile")
-  (c-name "g_file_new_for_commandline_arg")
-  (return-type "GFile*")
-  (parameters
-    '("const-char*" "arg")
-  )
-)
-
-(define-function file_parse_name
-  (c-name "g_file_parse_name")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "parse_name")
-  )
-)
-
-(define-method dup
-  (of-object "GFile")
-  (c-name "g_file_dup")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-)
-
-(define-function file_hash
-  (c-name "g_file_hash")
-  (return-type "guint")
-  (parameters
-    '("gconstpointer" "file")
-  )
-)
-
-(define-method equal
-  (of-object "GFile")
-  (c-name "g_file_equal")
-  (return-type "gboolean")
-  (parameters
-    '("GFile*" "file2")
-  )
-)
-
-(define-method get_basename
-  (of-object "GFile")
-  (c-name "g_file_get_basename")
-  (return-type "char*")
-)
-
-(define-method get_path
-  (of-object "GFile")
-  (c-name "g_file_get_path")
-  (return-type "char*")
-)
-
-(define-method get_uri
-  (of-object "GFile")
-  (c-name "g_file_get_uri")
-  (return-type "char*")
-)
-
-(define-method get_parse_name
-  (of-object "GFile")
-  (c-name "g_file_get_parse_name")
-  (return-type "char*")
-)
-
-(define-method get_parent
-  (of-object "GFile")
-  (c-name "g_file_get_parent")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-)
-
-(define-method get_child
-  (of-object "GFile")
-  (c-name "g_file_get_child")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "name")
-  )
-)
-
-(define-method get_child_for_display_name
-  (of-object "GFile")
-  (c-name "g_file_get_child_for_display_name")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "display_name")
-    '("GError**" "error")
-  )
-)
-
-(define-method has_prefix
-  (of-object "GFile")
-  (c-name "g_file_has_prefix")
-  (return-type "gboolean")
-  (parameters
-    '("GFile*" "descendant")
-  )
-)
-
-(define-method get_relative_path
-  (of-object "GFile")
-  (c-name "g_file_get_relative_path")
-  (return-type "char*")
-  (parameters
-    '("GFile*" "descendant")
-  )
-)
-
-(define-method resolve_relative_path
-  (of-object "GFile")
-  (c-name "g_file_resolve_relative_path")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "relative_path")
-  )
-)
-
-(define-method is_native
-  (of-object "GFile")
-  (c-name "g_file_is_native")
-  (return-type "gboolean")
-)
-
-(define-method has_uri_scheme
-  (of-object "GFile")
-  (c-name "g_file_has_uri_scheme")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "uri_scheme")
-  )
-)
-
-(define-method get_uri_scheme
-  (of-object "GFile")
-  (c-name "g_file_get_uri_scheme")
-  (return-type "char*")
-)
-
-(define-method read
-  (of-object "GFile")
-  (docstring
-  "F.read([cancellable]) -> input stream\n"
-  "Opens a file for reading. The result is a GFileInputStream that\n"
-  "can be used to read the contents of the file.\n"
-  "\n"
-  "If cancellable is specified, then the operation can be cancelled\n"
-  "by triggering the cancellable object from another thread. If the\n"
-  "operation was cancelled, the error gio.IO_ERROR_CANCELLED will\n"
-  "be returned. If the file does not exist, the gio.IO_ERROR_NOT_FOUND\n"
-  "error will be returned. If the file is a directory, the\n"
-  "gio.IO_ERROR_IS_DIRECTORY error will be returned. Other errors\n"
-  "are possible too, and depend on what kind of filesystem the file is on."
-  )
-  (c-name "g_file_read")
-  (return-type "GFileInputStream*")
-  (unblock-threads #t)
-  (caller-owns-return #t)
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method read_async
-  (of-object "GFile")
-  (docstring
-  "F.read_async(callback [,io_priority [,cancellable [,user_data]]])\n"
-  "-> start read\n"
-  "\n"
-  "For more details, see gio.File.read() which is the synchronous\n"
-  "version of this call. Asynchronously opens file for reading.\n"
-  "When the operation is finished, callback will be called.\n"
-  "You can then call g_file_read_finish() to get the result of the\n"
-  "operation.\n"
-  )
-  (c-name "g_file_read_async")
-  (return-type "none")
-  (parameters
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method read_finish
-  (of-object "GFile")
-  (c-name "g_file_read_finish")
-  (return-type "GFileInputStream*")
-  (caller-owns-return #t)
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-(define-method append_to
-  (of-object "GFile")
-  (c-name "g_file_append_to")
-  (return-type "GFileOutputStream*")
-  (unblock-threads #t)
-  (caller-owns-return #t)
-  (parameters
-    '("GFileCreateFlags" "flags" (default "G_FILE_CREATE_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method create
-  (of-object "GFile")
-  (c-name "g_file_create")
-  (return-type "GFileOutputStream*")
-  (unblock-threads #t)
-  (caller-owns-return #t)
-  (parameters
-    '("GFileCreateFlags" "flags" (default "G_FILE_CREATE_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method replace
-  (of-object "GFile")
-  (c-name "g_file_replace")
-  (return-type "GFileOutputStream*")
-  (unblock-threads #t)
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "etag")
-    '("gboolean" "make_backup")
-    '("GFileCreateFlags" "flags" (default "G_FILE_CREATE_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method append_to_async
-  (docstring
-  "F.append_to_async(callback [flags, [,io_priority [,cancellable\n"
-  "                  [,user_data]]]]) -> open for append\n"
-  "\n"
-  "Asynchronously opens file for appending.\n"
-  "For more details, see gio.File.append_to() which is the synchronous\n"
-  "version of this call. When the operation is finished, callback will\n"
-  "be called. You can then call F.append_to_finish() to get the result\n"
-  "of the operation."
-  )
-  (of-object "GFile")
-  (c-name "g_file_append_to_async")
-  (return-type "none")
-  (parameters
-    '("GFileCreateFlags" "flags" (default "G_FILE_CREATE_NONE"))
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method append_to_finish
-  (of-object "GFile")
-  (c-name "g_file_append_to_finish")
-  (return-type "GFileOutputStream*")
-  (caller-owns-return #t)
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method create_async
-  (docstring
-  "F.create_async(callback [flags, [,io_priority [,cancellable\n"
-  "               [,user_data]]]]) -> file created\n"
-  "\n"
-  "Asynchronously creates a new file and returns an output stream for\n"
-  "writing to it. The file must not already exist.\n"
-  "For more details, see F.create() which is the synchronous\n"
-  "version of this call.\n"
-  "When the operation is finished, callback will be called. You can\n"
-  "then call F.create_finish() to get the result of the operation."
-  )
-  (of-object "GFile")
-  (c-name "g_file_create_async")
-  (return-type "none")
-  (parameters
-    '("GFileCreateFlags" "flags" (default "G_FILE_CREATE_NONE"))
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method create_finish
-  (of-object "GFile")
-  (c-name "g_file_create_finish")
-  (return-type "GFileOutputStream*")
-  (caller-owns-return #t)
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method replace_async
-  (docstring
-  "F.replace_async(callback [etag, [make_backup, [flags, [io_priority,\n"
-  "                [cancellable, [user_data]]]]]]) -> file replace\n"
-  "\n"
-  "Asynchronously overwrites the file, replacing the contents, possibly\n"
-  "creating a backup copy of the file first.\n"
-  "For more details, see F.replace() which is the synchronous\n"
-  "version of this call.\n"
-  "When the operation is finished, callback will be called. You can\n"
-  "then call F.replace_finish() to get the result of the operation."
-  )
-  (of-object "GFile")
-  (c-name "g_file_replace_async")
-  (return-type "none")
-  (parameters
-    '("const-char*" "etag")
-    '("gboolean" "make_backup")
-    '("GFileCreateFlags" "flags" (default "G_FILE_CREATE_NONE"))
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method replace_finish
-  (of-object "GFile")
-  (c-name "g_file_replace_finish")
-  (return-type "GFileOutputStream*")
-  (caller-owns-return #t)
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-(define-method query_exists
-  (of-object "GFile")
-  (c-name "g_file_query_exists")
-  (return-type "gboolean")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-  )
-)
-
-(define-method query_file_type
-  (of-object "GFile")
-  (c-name "g_file_query_file_type")
-  (return-type "GFileType")
-  (parameters
-    '("GFileQueryInfoFlags" "flags")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-  )
-)
-
-(define-method query_info
-  (of-object "GFile")
-  (c-name "g_file_query_info")
-  (return-type "GFileInfo*")
-  (unblock-threads #t)
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "attributes")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method query_info_async
-  (docstring
-  "F.query_info_async(attributes, callback, [flags, [io_priority,\n"
-  "                   [cancellable, [user_data]]]]) -> query attributes\n"
-  "\n"
-  "Asynchronously gets the requested information about specified file.\n"
-  "The result is a GFileInfo object that contains key-value attributes\n"
-  "(such as type or size for the file).\n"
-  "For more details, see F.query_info() which is the synchronous\n"
-  "version of this call. \n"
-  "When the operation is finished, callback will be called. You can\n"
-  "then call F.query_info_finish() to get the result of the operation.\n"
-  )
-  (of-object "GFile")
-  (c-name "g_file_query_info_async")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attributes")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method query_info_finish
-  (of-object "GFile")
-  (c-name "g_file_query_info_finish")
-  (return-type "GFileInfo*")
-  (caller-owns-return #t)
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-(define-method query_filesystem_info
-  (of-object "GFile")
-  (c-name "g_file_query_filesystem_info")
-  (return-type "GFileInfo*")
-  (unblock-threads #t)
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "attributes")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method query_filesystem_info_async
-  (of-object "GFile")
-  (c-name "g_file_query_filesystem_info_async")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attributes")
-    '("int" "io_priority")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method query_filesystem_info_finish
-  (of-object "GFile")
-  (c-name "g_file_query_filesystem_info_finish")
-  (return-type "GFileInfo*")
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-(define-method find_enclosing_mount
-  (of-object "GFile")
-  (c-name "g_file_find_enclosing_mount")
-  (return-type "GMount*")
-  (unblock-threads #t)
-  (caller-owns-return #t)
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method find_enclosing_mount_async
-  (of-object "GFile")
-  (c-name "g_file_find_enclosing_mount_async")
-  (return-type "none")
-  (parameters
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method find_enclosing_mount_finish
-  (of-object "GFile")
-  (c-name "g_file_find_enclosing_mount_finish")
-  (return-type "GMount*")
-  (caller-owns-return #t)
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-(define-method enumerate_children
-  (docstring
-"F.enumerate_children(attributes, [flags, cancellable]) -> enumerator\n"
-"Gets the requested information about the files in a directory.\n"
-"The result is a gio.FileEnumerator object that will give out gio.FileInfo\n"
-"objects for all the files in the directory.\n"
-"The attribute value is a string that specifies the file attributes that\n"
-"should be gathered. It is not an error if it's not possible to read a \n"
-"particular requested attribute from a file - it just won't be set.\n"
-"attribute should be a comma-separated list of attribute or attribute\n"
-"wildcards. The wildcard \"*\" means all attributes, and a wildcard like\n"
-"\"standard::*\" means all attributes in the standard namespace.\n"
-"An example attribute query be \"standard::*,owner::user\". The standard\n"
-"attributes are available as defines, like gio.FILE_ATTRIBUTE_STANDARD_NAME.\n"
-"\n"
-"If cancellable is not None, then the operation can be cancelled by\n"
-"triggering the cancellable object from another thread. If the operation was\n"
-"cancelled, the error gio.ERROR_CANCELLED will be returned.\n"
-"\n"
-"If the file does not exist, the gio.ERROR_NOT_FOUND error will be returned.\n"
-"If the file is not a directory, the gio.FILE_ERROR_NOTDIR error will\n"
-"be returned. Other errors are possible too.")
-  (of-object "GFile")
-  (c-name "g_file_enumerate_children")
-  (return-type "GFileEnumerator*")
-  (unblock-threads #t)
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "attributes")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method enumerate_children_async
-  (docstring
-"F.enumerate_children_async(attributes, callback,\n"
-"                           [flags, io_priority, cancellable, user_data])\n"
-"Asynchronously gets the requested information about the files in a\n"
-"directory. The result is a GFileEnumerator object that will give out\n"
-"GFileInfo objects for all the files in the directory.\n"
-"\n"
-"For more details, see gio.File.enumerate_children() which is the synchronous\n"
-"version of this call.\n"
-"\n"
-"When the operation is finished, callback will be called. You can then call\n"
-"gio.File.enumerate_children_finish() to get the result of the operation.")
-  (of-object "GFile")
-  (c-name "g_file_enumerate_children_async")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attributes")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method enumerate_children_finish
-  (of-object "GFile")
-  (c-name "g_file_enumerate_children_finish")
-  (return-type "GFileEnumerator*")
-  (caller-owns-return #t)
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-(define-method set_display_name
-  (of-object "GFile")
-  (c-name "g_file_set_display_name")
-  (return-type "GFile*")
-  (unblock-threads #t)
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "display_name")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method set_display_name_async
-  (of-object "GFile")
-  (c-name "g_file_set_display_name_async")
-  (return-type "none")
-  (parameters
-    '("const-char*" "display_name")
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method set_display_name_finish
-  (of-object "GFile")
-  (c-name "g_file_set_display_name_finish")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-(define-method delete
-  (of-object "GFile")
-  (c-name "g_file_delete")
-  (return-type "gboolean")
-  (unblock-threads #t)
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method trash
-  (of-object "GFile")
-  (c-name "g_file_trash")
-  (return-type "gboolean")
-  (unblock-threads #t)
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method copy
-  (docstring
-"F.copy(destination, [callback, flags, cancellable, user_data])\n"
-"Copies the file source to the location specified by destination.\n"
-"Can not handle recursive copies of directories.\n"
-"\n"
-"If the flag gio.FILE_COPY_OVERWRITE is specified an already existing\n"
-"destination file is overwritten.\n"
-"\n"
-"If the flag gio.FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlink\n"
-"will be copied as symlinks, otherwise the target of the source symlink\n"
-"will be copied.\n"
-"\n"
-"If cancellable is not None, then the operation can be cancelled b\n"
-"triggering the cancellable object from another thread.\n"
-"If the operation was cancelled, the error gio.ERROR_CANCELLED\n"
-"will be returned.\n"
-"\n"
-"If progress_callback is not None, then the operation can be monitored\n"
-"by setting this to a callable. if specified progress_callback_data will\n"
-"be passed to this function. It is guaranteed that this callback\n"
-"will be called after all data has been transferred with the total number\n"
-"of bytes copied during the operation.\n"
-"\n"
-"If the source file does not exist then the gio.ERROR_NOT_FOUND\n"
-"error is returned, independent on the status of the destination.\n"
-"\n"
-"If gio.FILE_COPY_OVERWRITE is not specified and the target exists\n"
-"then the error gio.ERROR_EXISTS is returned.\n"
-"\n"
-"If trying to overwrite a file over a directory the gio.ERROR_IS_DIRECTORY\n"
-"error is returned. If trying to overwrite a directory with a directory\n"
-"the gio.ERROR_WOULD_MERGE error is returned.\n"
-"\n"
-"If the source is a directory and the target does not exist\n"
-"or gio.FILE_COPY_OVERWRITE is specified and the target is a file\n"
-"then the gio.ERROR_WOULD_RECURSE error is returned.\n"
-"\n"
-"If you are interested in copying the GFile object itself\n"
-"(not the on-disk file), see gio.File.dup().")
-  (of-object "GFile")
-  (c-name "g_file_copy")
-  (unblock-threads #t)
-  (return-type "gboolean")
-  (parameters
-    '("GFile*" "destination")
-    '("GFileCopyFlags" "flags" (default "G_FILE_COPY_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GFileProgressCallback" "progress_callback")
-    '("gpointer" "progress_callback_data")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method copy_async
-  (of-object "GFile")
-  (docstring
-  "F.copy_async(destination, callback, [flags, io_priority, user_data, cancellable, progress_callback])\n"
-  "-> start copy\n"
-  "\n"
-  "For more details, see gio.File.copy() which is the synchronous\n"
-  "version of this call. Asynchronously copies file.\n"
-  "When the operation is finished, callback will be called.\n"
-  "You can then call g_file_copy_finish() to get the result of the\n"
-  "operation.\n"
-  )
-  (c-name "g_file_copy_async")
-  (return-type "none")
-  (parameters
-    '("GFile*" "destination")
-    '("GFileCopyFlags" "flags" (default "G_FILE_COPY_NONE"))
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GFileProgressCallback" "progress_callback")
-    '("gpointer" "progress_callback_data")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method copy_finish
-  (of-object "GFile")
-  (c-name "g_file_copy_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method move
-  (docstring
-"F.move(destination, [callback, flags, cancellable, user_data])\n"
-"Tries to move the file or directory source to the location\n"
-"specified by destination. If native move operations are\n"
-"supported then this is used, otherwise a copy + delete fallback\n"
-"is used. The native implementation may support moving directories\n"
-"(for instance on moves inside the same filesystem), but the \n"
-"fallback code does not.\n"
-"\n"
-"If the flag gio.FILE_COPY_OVERWRITE is specified an already existing\n"
-"destination file is overwritten.\n"
-"\n"
-"If the flag gio.FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlink\n"
-"will be copied as symlinks, otherwise the target of the source symlink\n"
-"will be copied.\n"
-"\n"
-"If cancellable is not None, then the operation can be cancelled b\n"
-"triggering the cancellable object from another thread.\n"
-"If the operation was cancelled, the error gio.ERROR_CANCELLED\n"
-"will be returned.\n"
-"\n"
-"If progress_callback is not None, then the operation can be monitored\n"
-"by setting this to a callable. if specified progress_callback_data will\n"
-"be passed to this function. It is guaranteed that this callback\n"
-"will be called after all data has been transferred with the total number\n"
-"of bytes copied during the operation.\n"
-"\n"
-"If the source file does not exist then the gio.ERROR_NOT_FOUND\n"
-"error is returned, independent on the status of the destination.\n"
-"\n"
-"If gio.FILE_COPY_OVERWRITE is not specified and the target exists\n"
-"then the error gio.ERROR_EXISTS is returned.\n"
-"\n"
-"If trying to overwrite a file over a directory the gio.ERROR_IS_DIRECTORY\n"
-"error is returned. If trying to overwrite a directory with a directory\n"
-"the gio.ERROR_WOULD_MERGE error is returned.\n"
-"\n"
-"If the source is a directory and the target does not exist\n"
-"or gio.FILE_COPY_OVERWRITE is specified and the target is a file\n"
-"then the gio.ERROR_WOULD_RECURSE error is returned.")
-  (of-object "GFile")
-  (c-name "g_file_move")
-  (return-type "gboolean")
-  (parameters
-    '("GFile*" "destination")
-    '("GFileCopyFlags" "flags" (default "G_FILE_COPY_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GFileProgressCallback" "progress_callback")
-    '("gpointer" "progress_callback_data")
-    '("GError**" "error")
-  )
-)
-
-(define-method make_directory
-  (of-object "GFile")
-  (c-name "g_file_make_directory")
-  (return-type "gboolean")
-  (unblock-threads #t)
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method make_directory_with_parents
-  (of-object "GFile")
-  (c-name "g_file_make_directory_with_parents")
-  (return-type "gboolean")
-  (unblock-threads #t)
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method make_symbolic_link
-  (of-object "GFile")
-  (c-name "g_file_make_symbolic_link")
-  (return-type "gboolean")
-  (unblock-threads #t)
-  (parameters
-    '("const-char*" "symlink_value")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method query_settable_attributes
-  (docstring
-  "F.query_settable_attributes([cancellable]) -> list\n\n"
-  "Obtain the list of settable attributes for the file.\n"
-  "Returns the type and full attribute name of all the attributes that\n"
-  "can be set on this file. This doesn't mean setting it will always\n"
-  "succeed though, you might get an access failure, or some specific\n"
-  "file may not support a specific attribute.\n\n"
-  "If cancellable is not None, then the operation can be cancelled by\n"
-  "triggering the cancellable object from another thread. If the operation\n"
-  "was cancelled, the error gio.IO_ERROR_CANCELLED will be returned."
-  )
-  (of-object "GFile")
-  (c-name "g_file_query_settable_attributes")
-  (return-type "GFileAttributeInfoList*")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method query_writable_namespaces
-  (docstring
-  "F.query_writable_namespaces([cancellable]) -> list\n\n"
-  "Obtain the list of attribute namespaces where new attributes can\n"
-  "be created by a user. An example of this is extended attributes\n"
-  "(in the "xattr" namespace).\n"
-  "If cancellable is not None, then the operation can be cancelled\n"
-  "by triggering the cancellable object from another thread. If the\n"
-  "operation was cancelled, the error gio.IO_ERROR_CANCELLED\n"
-  "will be returned."
-  )
-  (of-object "GFile")
-  (c-name "g_file_query_writable_namespaces")
-  (return-type "GFileAttributeInfoList*")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method set_attribute
-  (docstring
-  "F.set_attribute(attribute, type, value_p [,flags [,cancellable ]])->bool\n"
-  "\n"
-  "Sets an attribute in the file with attribute name attribute to value_p.\n"
-  "If cancellable is not None, then the operation can be cancelled by\n"
-  "triggering the cancellable object from another thread. If the operation\n"
-  "was cancelled, the error gio.IO_ERROR_CANCELLED will be returned."
-  )
-  (of-object "GFile")
-  (c-name "g_file_set_attribute")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-    '("GFileAttributeType" "type")
-    '("gpointer" "value_p")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method set_attributes_from_info
-  (of-object "GFile")
-  (c-name "g_file_set_attributes_from_info")
-  (return-type "gboolean")
-  (parameters
-    '("GFileInfo*" "info")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method set_attributes_async
-  (of-object "GFile")
-  (c-name "g_file_set_attributes_async")
-  (return-type "none")
-  (parameters
-    '("GFileInfo*" "info")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method set_attributes_finish
-  (of-object "GFile")
-  (c-name "g_file_set_attributes_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GFileInfo**" "info")
-    '("GError**" "error")
-  )
-)
-
-(define-method set_attribute_string
-  (of-object "GFile")
-  (c-name "g_file_set_attribute_string")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-    '("const-char*" "value")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method set_attribute_byte_string
-  (of-object "GFile")
-  (c-name "g_file_set_attribute_byte_string")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-    '("const-char*" "value")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method set_attribute_uint32
-  (of-object "GFile")
-  (c-name "g_file_set_attribute_uint32")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-    '("guint32" "value")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method set_attribute_int32
-  (of-object "GFile")
-  (c-name "g_file_set_attribute_int32")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-    '("gint32" "value")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method set_attribute_uint64
-  (of-object "GFile")
-  (c-name "g_file_set_attribute_uint64")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-    '("guint64" "value")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method set_attribute_int64
-  (of-object "GFile")
-  (c-name "g_file_set_attribute_int64")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-    '("gint64" "value")
-    '("GFileQueryInfoFlags" "flags" (default "G_FILE_QUERY_INFO_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method mount_enclosing_volume
-  (docstring
-"F.mount_enclosing_volume(mount_operation, callback, [cancellable,\n"
-"                         user_data])\n"
-"Starts a mount_operation, mounting the volume that contains\n"
-"the file location.\n"
-"\n"
-"When this operation has completed, callback will be called with\n"
-"user_user data, and the operation can be finalized with\n"
-"gio.File.mount_enclosing_volume_finish().\n"
-"\n"
-"If cancellable is not None, then the operation can be cancelled\n"
-"by triggering the cancellable object from another thread.\n"
-"If the operation was cancelled, the error gio.ERROR_CANCELLED\n"
-"will be returned.")
-  (of-object "GFile")
-  (c-name "g_file_mount_enclosing_volume")
-  (return-type "none")
-  (parameters
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method mount_enclosing_volume_finish
-  (of-object "GFile")
-  (c-name "g_file_mount_enclosing_volume_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method mount_mountable
-  (docstring
-"F.mount_mountable(mount_operation, callback, [flags, cancellable,\n"
-"                  user_data])\n"
-"Mounts a file of type gio.FILE_TYPE_MOUNTABLE. Using mount_operation,\n"
-"you can request callbacks when, for instance, passwords are needed\n"
-"during authentication.\n"
-"\n"
-"If cancellable is not None, then the operation can be cancelled by\n"
-" triggering the cancellable object from another thread. If the\n"
-"operation was cancelled, the error gio.ERROR_CANCELLED will be returned.\n"
-"\n"
-"When the operation is finished, callback will be called. You can then\n"
-"call g_file_mount_mountable_finish() to get the result of the operation.\n")
-  (of-object "GFile")
-  (c-name "g_file_mount_mountable")
-  (return-type "none")
-  (parameters
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method mount_mountable_finish
-  (of-object "GFile")
-  (c-name "g_file_mount_mountable_finish")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method unmount_mountable
-  (docstring
-"F.unmount_mountable(callback, [flags, cancellable, user_data])\n"
-"Unmounts a file of type gio.FILE_TYPE_MOUNTABLE.\n"
-"\n"
-"If cancellable is not None, then the operation can be cancelled by\n"
-"triggering the cancellable object from another thread. If the\n"
-"operation was cancelled, the error gio.ERROR_CANCELLED will be returned.\n"
-"\n"
-"When the operation is finished, callback will be called. You can\n"
-"then call gio.File.unmount_mountable_finish() to get the\n"
-"result of the operation.\n")
-  (of-object "GFile")
-  (c-name "g_file_unmount_mountable")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags" (default "G_MOUNT_UNMOUNT_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method unmount_mountable_finish
-  (of-object "GFile")
-  (c-name "g_file_unmount_mountable_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method eject_mountable
-  (of-object "GFile")
-  (c-name "g_file_eject_mountable")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags" (default "G_MOUNT_UNMOUNT_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method eject_mountable_finish
-  (of-object "GFile")
-  (c-name "g_file_eject_mountable_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-
-(define-method copy_attributes
-  (of-object "GFile")
-  (c-name "g_file_copy_attributes")
-  (return-type "gboolean")
-  (parameters
-    '("GFile*" "destination")
-    '("GFileCopyFlags" "flags" (default "G_FILE_COPY_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method monitor_directory
-  (of-object "GFile")
-  (c-name "g_file_monitor_directory")
-  (return-type "GFileMonitor*")
-  (caller-owns-return #t)
-  (parameters
-    '("GFileMonitorFlags" "flags" (default "G_FILE_MONITOR_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method monitor_file
-  (of-object "GFile")
-  (c-name "g_file_monitor_file")
-  (return-type "GFileMonitor*")
-  (caller-owns-return #t)
-  (parameters
-    '("GFileMonitorFlags" "flags" (default "G_FILE_MONITOR_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method monitor
-  (of-object "GFile")
-  (c-name "g_file_monitor")
-  (return-type "GFileMonitor*")
-  (parameters
-    '("GFileMonitorFlags" "flags" (default "G_FILE_MONITOR_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method query_default_handler
-  (of-object "GFile")
-  (c-name "g_file_query_default_handler")
-  (return-type "GAppInfo*")
-  (caller-owns-return #t)
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method load_contents
-  (docstring
-  "F.load_contents([cancellable]) -> contents, length, etag_out\n\n"
-  "Loads the content of the file into memory, returning the size of the\n"
-  "data. The data is always zero terminated, but this is not included\n"
-  "in the resultant length.\n"
-  "If cancellable is not None, then the operation can be cancelled by\n"
-  "triggering the cancellable object from another thread. If the operation\n"
-  "was cancelled, the error gio.IO_ERROR_CANCELLED will be returned.\n"
-  )
-  (of-object "GFile")
-  (c-name "g_file_load_contents")
-  (return-type "gboolean")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("char**" "contents")
-    '("gsize*" "length")
-    '("char**" "etag_out")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method load_contents_async
-  (docstring
-  "F.load_contents_async(callback, [cancellable, [user_data]])->start loading\n\n"
-  "Starts an asynchronous load of the file's contents.\n\n"
-  "For more details, see F.load_contents() which is the synchronous\n"
-  "version of this call.\n\n"
-  "When the load operation has completed, callback will be called with\n"
-  "user data. To finish the operation, call F.load_contents_finish() with\n"
-  "the parameter 'res' returned by the callback.\n\n"
-  "If cancellable is not None, then the operation can be cancelled by\n"
-  "triggering the cancellable object from another thread. If the operation\n"
-  "was cancelled, the error gio.IO_ERROR_CANCELLED will be returned.\n"
-  )
-  (of-object "GFile")
-  (c-name "g_file_load_contents_async")
-  (return-type "none")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method load_contents_finish
-  (docstring
-  "F.load_contents_finish(res) -> contents, length, etag_out\n\n"
-  "Finishes an asynchronous load of the file's contents. The contents are\n"
-  "placed in contents, and length is set to the size of the contents\n"
-  "string. If etag_out is present, it will be set to the new entity\n"
-  "tag for the file.\n"
-  )
-  (of-object "GFile")
-  (c-name "g_file_load_contents_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "res")
-    '("char**" "contents")
-    '("gsize*" "length")
-    '("char**" "etag_out")
-    '("GError**" "error")
-  )
-)
-
-(define-method load_partial_contents_async
-  (of-object "GFile")
-  (c-name "g_file_load_partial_contents_async")
-  (return-type "none")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GFileReadMoreCallback" "read_more_callback")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method load_partial_contents_finish
-  (of-object "GFile")
-  (c-name "g_file_load_partial_contents_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "res")
-    '("char**" "contents")
-    '("gsize*" "length")
-    '("char**" "etag_out")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method replace_contents
-  (docstring
-  "F.replace_contents(contents, [etag, [make_backup, [flags, [cancellable]]]])\n"
-  "-> etag_out\n"
-  "\n"
-  "Replaces the content of the file, returning the new etag value for the\n"
-  "file. If an etag is specified, any existing file must have that etag, or\n"
-  "the error gio.IO_ERROR_WRONG_ETAG will be returned.\n"
-  "If make_backup is True, this method will attempt to make a backup of the\n"
-  "file. If cancellable is not None, then the operation can be cancelled by\n"
-  "triggering the cancellable object from another thread. If the operation\n"
-  "was cancelled, the error gio.IO_ERROR_CANCELLED will be returned.\n"
-  )
-  (of-object "GFile")
-  (c-name "g_file_replace_contents")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "contents")
-    '("gsize" "length")
-    '("const-char*" "etag")
-    '("gboolean" "make_backup")
-    '("GFileCreateFlags" "flags" (default "G_FILE_CREATE_NONE"))
-    '("char**" "new_etag")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method replace_contents_async
-  (docstring
-  "F.replace_contents_async(contents, callback, [etag, [make_backup, [flags,\n"
-  "                         [cancellable]]]]) -> etag_out\n"
-  "\n"
-  "Starts an asynchronous replacement of the file with the given contents.\n"
-  "For more details, see F.replace_contents() which is the synchronous\n"
-  "version of this call.\n\n"
-  "When the load operation has completed, callback will be called with\n"
-  "user data. To finish the operation, call F.replace_contents_finish() with\n"
-  "the parameter 'res' returned by the callback.\n\n"
-  "If cancellable is not None, then the operation can be cancelled by\n"
-  "triggering the cancellable object from another thread. If the operation\n"
-  "was cancelled, the error gio.IO_ERROR_CANCELLED will be returned.\n"
-  )
-  (of-object "GFile")
-  (c-name "g_file_replace_contents_async")
-  (return-type "none")
-  (parameters
-    '("const-char*" "contents")
-    '("gsize" "length")
-    '("const-char*" "etag")
-    '("gboolean" "make_backup")
-    '("GFileCreateFlags" "flags" (default "G_FILE_CREATE_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-;;
-;; wrapped in gfile.override
-;;
-(define-method replace_contents_finish
-  (docstring
-  "F.replace_contents_finish(res) -> etag_out\n\n"
-  "Finishes an asynchronous replacement of the file's contents.\n"
-  "The new entity tag for the file is returned.\n"
-  )
-  (of-object "GFile")
-  (c-name "g_file_replace_contents_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "res")
-    '("char**" "new_etag")
-    '("GError**" "error")
-  )
-)
-
-(define-method create_readwrite
-  (of-object "GFile")
-  (c-name "g_file_create_readwrite")
-  (return-type "GFileIOStream*")
-  (parameters
-    '("GFileCreateFlags" "flags")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method create_readwrite_async
-  (of-object "GFile")
-  (c-name "g_file_create_readwrite_async")
-  (return-type "none")
-  (parameters
-    '("GFileCreateFlags" "flags")
-    '("int" "io_priority")
-    '("GCancellable*" "cancellable")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method create_readwrite_finish
-  (of-object "GFile")
-  (c-name "g_file_create_readwrite_finish")
-  (return-type "GFileIOStream*")
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-(define-method eject_mountable_with_operation
-  (of-object "GFile")
-  (c-name "g_file_eject_mountable_with_operation")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags")
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method eject_mountable_with_operation_finish
-  (of-object "GFile")
-  (c-name "g_file_eject_mountable_with_operation_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method open_readwrite
-  (of-object "GFile")
-  (c-name "g_file_open_readwrite")
-  (return-type "GFileIOStream*")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method open_readwrite_async
-  (of-object "GFile")
-  (c-name "g_file_open_readwrite_async")
-  (return-type "none")
-  (parameters
-    '("int" "io_priority")
-    '("GCancellable*" "cancellable")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method open_readwrite_finish
-  (of-object "GFile")
-  (c-name "g_file_open_readwrite_finish")
-  (return-type "GFileIOStream*")
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-(define-method poll_mountable
-  (of-object "GFile")
-  (c-name "g_file_poll_mountable")
-  (return-type "none")
-  (parameters
-    '("GCancellable*" "cancellable")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method poll_mountable_finish
-  (of-object "GFile")
-  (c-name "g_file_poll_mountable_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method replace_readwrite
-  (of-object "GFile")
-  (c-name "g_file_replace_readwrite")
-  (return-type "GFileIOStream*")
-  (parameters
-    '("const-char*" "etag")
-    '("gboolean" "make_backup")
-    '("GFileCreateFlags" "flags")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method replace_readwrite_async
-  (of-object "GFile")
-  (c-name "g_file_replace_readwrite_async")
-  (return-type "none")
-  (parameters
-    '("const-char*" "etag")
-    '("gboolean" "make_backup")
-    '("GFileCreateFlags" "flags")
-    '("int" "io_priority")
-    '("GCancellable*" "cancellable")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method replace_readwrite_finish
-  (of-object "GFile")
-  (c-name "g_file_replace_readwrite_finish")
-  (return-type "GFileIOStream*")
-  (parameters
-    '("GAsyncResult*" "res")
-    '("GError**" "error")
-  )
-)
-
-(define-method start_mountable
-  (of-object "GFile")
-  (c-name "g_file_start_mountable")
-  (return-type "none")
-  (parameters
-    '("GDriveStartFlags" "flags")
-    '("GMountOperation*" "start_operation")
-    '("GCancellable*" "cancellable")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method start_mountable_finish
-  (of-object "GFile")
-  (c-name "g_file_start_mountable_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method stop_mountable
-  (of-object "GFile")
-  (c-name "g_file_stop_mountable")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags")
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method stop_mountable_finish
-  (of-object "GFile")
-  (c-name "g_file_stop_mountable_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method supports_thread_contexts
-  (of-object "GFile")
-  (c-name "g_file_supports_thread_contexts")
-  (return-type "gboolean")
-)
-
-(define-method unmount_mountable_with_operation
-  (of-object "GFile")
-  (c-name "g_file_unmount_mountable_with_operation")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags")
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method unmount_mountable_with_operation_finish
-  (of-object "GFile")
-  (c-name "g_file_unmount_mountable_with_operation_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gfileicon.h
-
-(define-function file_icon_get_type
-  (c-name "g_file_icon_get_type")
-  (return-type "GType")
-)
-
-(define-function file_icon_new
-  (c-name "g_file_icon_new")
-  (is-constructor-of "GFileIcon")
-  (return-type "GIcon*")
-  ;; Note: starting with GLib 2.18 we could use (properties ...)
-  ;; instead, but I don't know if it is possible to branch on version
-  ;; in codegen.
-  (parameters
-    '("GFile*" "file")
-  )
-)
-
-(define-method get_file
-  (of-object "GFileIcon")
-  (c-name "g_file_icon_get_file")
-  (return-type "GFile*")
-)
-
-
-
-;; From gfileinfo.h
-
-(define-function file_info_get_type
-  (c-name "g_file_info_get_type")
-  (return-type "GType")
-)
-
-(define-function file_info_new
-  (c-name "g_file_info_new")
-  (is-constructor-of "GFileInfo")
-  (return-type "GFileInfo*")
-)
-
-(define-method dup
-  (of-object "GFileInfo")
-  (c-name "g_file_info_dup")
-  (return-type "GFileInfo*")
-  (caller-owns-return #t)
-)
-
-(define-method copy_into
-  (of-object "GFileInfo")
-  (c-name "g_file_info_copy_into")
-  (return-type "none")
-  (parameters
-    '("GFileInfo*" "dest_info")
-  )
-)
-
-(define-method has_attribute
-  (of-object "GFileInfo")
-  (c-name "g_file_info_has_attribute")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method has_namespace
-  (of-object "GFileInfo")
-  (c-name "g_file_info_has_namespace")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "name_space")
-  )
-)
-
-;;
-;; wrapped in  gfileinfo.override
-(define-method list_attributes
-  (docstring
-  "INFO.list_attributes(name_space) -> Attribute list\n\n"
-  "Lists the file info structure's attributes."
-  )
-  (of-object "GFileInfo")
-  (c-name "g_file_info_list_attributes")
-  (return-type "char**")
-  (parameters
-    '("const-char*" "name_space")
-  )
-)
-
-(define-method get_attribute_data
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_data")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-    '("GFileAttributeType*" "type")
-    '("gpointer*" "value_pp")
-    '("GFileAttributeStatus*" "status")
-  )
-)
-
-(define-method get_attribute_type
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_type")
-  (return-type "GFileAttributeType")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method remove_attribute
-  (of-object "GFileInfo")
-  (c-name "g_file_info_remove_attribute")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method get_attribute_status
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_status")
-  (return-type "GFileAttributeStatus")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method set_attribute_status
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_attribute_status")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-    '("GFileAttributeStatus" "status")
-  )
-)
-
-(define-method get_attribute_as_string
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_as_string")
-  (return-type "char*")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method get_attribute_string
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_string")
-  (return-type "const-char*")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method get_attribute_byte_string
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_byte_string")
-  (return-type "const-char*")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method get_attribute_boolean
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_boolean")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method get_attribute_uint32
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_uint32")
-  (return-type "guint32")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method get_attribute_int32
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_int32")
-  (return-type "gint32")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method get_attribute_uint64
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_uint64")
-  (return-type "guint64")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method get_attribute_int64
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_int64")
-  (return-type "gint64")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method get_attribute_object
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_object")
-  (return-type "GObject*")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method get_attribute_stringv
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_attribute_stringv")
-  (return-type "char**")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method set_attribute
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_attribute")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attribute")
-    '("GFileAttributeType" "type")
-    '("gpointer" "value_p")
-  )
-)
-
-(define-method set_attribute_string
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_attribute_string")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attribute")
-    '("const-char*" "attr_value")
-  )
-)
-
-(define-method set_attribute_byte_string
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_attribute_byte_string")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attribute")
-    '("const-char*" "attr_value")
-  )
-)
-
-(define-method set_attribute_boolean
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_attribute_boolean")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attribute")
-    '("gboolean" "attr_value")
-  )
-)
-
-(define-method set_attribute_uint32
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_attribute_uint32")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attribute")
-    '("guint32" "attr_value")
-  )
-)
-
-(define-method set_attribute_int32
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_attribute_int32")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attribute")
-    '("gint32" "attr_value")
-  )
-)
-
-(define-method set_attribute_uint64
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_attribute_uint64")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attribute")
-    '("guint64" "attr_value")
-  )
-)
-
-(define-method set_attribute_int64
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_attribute_int64")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attribute")
-    '("gint64" "attr_value")
-  )
-)
-
-(define-method set_attribute_object
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_attribute_object")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attribute")
-    '("GObject*" "attr_value")
-  )
-)
-
-(define-method clear_status
-  (of-object "GFileInfo")
-  (c-name "g_file_info_clear_status")
-  (return-type "none")
-)
-
-(define-method get_file_type
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_file_type")
-  (return-type "GFileType")
-)
-
-(define-method get_is_hidden
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_is_hidden")
-  (return-type "gboolean")
-)
-
-(define-method get_is_backup
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_is_backup")
-  (return-type "gboolean")
-)
-
-(define-method get_is_symlink
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_is_symlink")
-  (return-type "gboolean")
-)
-
-(define-method get_name
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_name")
-  (return-type "const-char*")
-)
-
-(define-method get_display_name
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_display_name")
-  (return-type "const-char*")
-)
-
-(define-method get_edit_name
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_edit_name")
-  (return-type "const-char*")
-)
-
-(define-method get_icon
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_icon")
-  (return-type "GIcon*")
-)
-
-(define-method get_content_type
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_content_type")
-  (return-type "const-char*")
-)
-
-(define-method get_size
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_size")
-  (return-type "goffset")
-)
-
-;;
-;; wrapped in gfileinfo.override
-;;
-(define-method get_modification_time
-  (docstring
-"INFO.get_modification_time() -> modification time\n"
-"Returns the modification time, in UNIX time format\n")
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_modification_time")
-  (return-type "none")
-  (parameters
-    '("GTimeVal*" "result")
-  )
-)
-
-(define-method get_symlink_target
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_symlink_target")
-  (return-type "const-char*")
-)
-
-(define-method get_etag
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_etag")
-  (return-type "const-char*")
-)
-
-(define-method get_sort_order
-  (of-object "GFileInfo")
-  (c-name "g_file_info_get_sort_order")
-  (return-type "gint32")
-)
-
-(define-method set_attribute_mask
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_attribute_mask")
-  (return-type "none")
-  (parameters
-    '("GFileAttributeMatcher*" "mask")
-  )
-)
-
-(define-method unset_attribute_mask
-  (of-object "GFileInfo")
-  (c-name "g_file_info_unset_attribute_mask")
-  (return-type "none")
-)
-
-(define-method set_file_type
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_file_type")
-  (return-type "none")
-  (parameters
-    '("GFileType" "type")
-  )
-)
-
-(define-method set_is_hidden
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_is_hidden")
-  (return-type "none")
-  (parameters
-    '("gboolean" "is_hidden")
-  )
-)
-
-(define-method set_is_symlink
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_is_symlink")
-  (return-type "none")
-  (parameters
-    '("gboolean" "is_symlink")
-  )
-)
-
-(define-method set_name
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_name")
-  (return-type "none")
-  (parameters
-    '("const-char*" "name")
-  )
-)
-
-(define-method set_display_name
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_display_name")
-  (return-type "none")
-  (parameters
-    '("const-char*" "display_name")
-  )
-)
-
-(define-method set_edit_name
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_edit_name")
-  (return-type "none")
-  (parameters
-    '("const-char*" "edit_name")
-  )
-)
-
-(define-method set_icon
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_icon")
-  (return-type "none")
-  (parameters
-    '("GIcon*" "icon")
-  )
-)
-
-(define-method set_content_type
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_content_type")
-  (return-type "none")
-  (parameters
-    '("const-char*" "content_type")
-  )
-)
-
-(define-method set_size
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_size")
-  (return-type "none")
-  (parameters
-    '("goffset" "size")
-  )
-)
-
-(define-method set_modification_time
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_modification_time")
-  (return-type "none")
-  (parameters
-    '("GTimeVal*" "mtime")
-  )
-)
-
-(define-method set_symlink_target
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_symlink_target")
-  (return-type "none")
-  (parameters
-    '("const-char*" "symlink_target")
-  )
-)
-
-(define-method set_sort_order
-  (of-object "GFileInfo")
-  (c-name "g_file_info_set_sort_order")
-  (return-type "none")
-  (parameters
-    '("gint32" "sort_order")
-  )
-)
-
-(define-function file_attribute_matcher_new
-  (c-name "g_file_attribute_matcher_new")
-  (is-constructor-of "GFileAttributeMatcher")
-  (return-type "GFileAttributeMatcher*")
-  (parameters
-    '("const-char*" "attributes")
-  )
-)
-
-(define-method ref
-  (of-object "GFileAttributeMatcher")
-  (c-name "g_file_attribute_matcher_ref")
-  (return-type "GFileAttributeMatcher*")
-)
-
-(define-method unref
-  (of-object "GFileAttributeMatcher")
-  (c-name "g_file_attribute_matcher_unref")
-  (return-type "none")
-)
-
-(define-method matches
-  (of-object "GFileAttributeMatcher")
-  (c-name "g_file_attribute_matcher_matches")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method matches_only
-  (of-object "GFileAttributeMatcher")
-  (c-name "g_file_attribute_matcher_matches_only")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "attribute")
-  )
-)
-
-(define-method enumerate_namespace
-  (of-object "GFileAttributeMatcher")
-  (c-name "g_file_attribute_matcher_enumerate_namespace")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "ns")
-  )
-)
-
-(define-method enumerate_next
-  (of-object "GFileAttributeMatcher")
-  (c-name "g_file_attribute_matcher_enumerate_next")
-  (return-type "const-char*")
-)
-
-
-
-;; From gfileinputstream.h
-
-(define-function file_input_stream_get_type
-  (c-name "g_file_input_stream_get_type")
-  (return-type "GType")
-)
-
-(define-method query_info
-  (of-object "GFileInputStream")
-  (c-name "g_file_input_stream_query_info")
-  (return-type "GFileInfo*")
-  (parameters
-    '("char*" "attributes")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method query_info_async
-  (of-object "GFileInputStream")
-  (c-name "g_file_input_stream_query_info_async")
-  (return-type "none")
-  (parameters
-    '("char*" "attributes")
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method query_info_finish
-  (of-object "GFileInputStream")
-  (c-name "g_file_input_stream_query_info_finish")
-  (return-type "GFileInfo*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gfileiostream.h
-
-(define-function file_io_stream_get_type
-  (c-name "g_file_io_stream_get_type")
-  (return-type "GType")
-)
-
-(define-method query_info
-  (of-object "GFileIOStream")
-  (c-name "g_file_io_stream_query_info")
-  (return-type "GFileInfo*")
-  (parameters
-    '("const-char*" "attributes")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method query_info_async
-  (of-object "GFileIOStream")
-  (c-name "g_file_io_stream_query_info_async")
-  (return-type "none")
-  (parameters
-    '("const-char*" "attributes")
-    '("int" "io_priority")
-    '("GCancellable*" "cancellable")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method query_info_finish
-  (of-object "GFileIOStream")
-  (c-name "g_file_io_stream_query_info_finish")
-  (return-type "GFileInfo*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method get_etag
-  (of-object "GFileIOStream")
-  (c-name "g_file_io_stream_get_etag")
-  (return-type "char*")
-)
-
-
-
-
-;; From gfilemonitor.h
-
-(define-function file_monitor_get_type
-  (c-name "g_file_monitor_get_type")
-  (return-type "GType")
-)
-
-(define-method cancel
-  (of-object "GFileMonitor")
-  (c-name "g_file_monitor_cancel")
-  (return-type "gboolean")
-)
-
-(define-method is_cancelled
-  (of-object "GFileMonitor")
-  (c-name "g_file_monitor_is_cancelled")
-  (return-type "gboolean")
-)
-
-(define-method set_rate_limit
-  (of-object "GFileMonitor")
-  (c-name "g_file_monitor_set_rate_limit")
-  (return-type "none")
-  (parameters
-    '("int" "limit_msecs")
-  )
-)
-
-(define-method emit_event
-  (of-object "GFileMonitor")
-  (c-name "g_file_monitor_emit_event")
-  (return-type "none")
-  (parameters
-    '("GFile*" "file")
-    '("GFile*" "other_file")
-    '("GFileMonitorEvent" "event_type")
-  )
-)
-
-
-
-;; From gfilenamecompleter.h
-
-(define-function filename_completer_get_type
-  (c-name "g_filename_completer_get_type")
-  (return-type "GType")
-)
-
-(define-function filename_completer_new
-  (c-name "g_filename_completer_new")
-  (is-constructor-of "GFilenameCompleter")
-  (return-type "GFilenameCompleter*")
-)
-
-(define-method get_completion_suffix
-  (of-object "GFilenameCompleter")
-  (c-name "g_filename_completer_get_completion_suffix")
-  (return-type "char*")
-  (parameters
-    '("const-char*" "initial_text")
-  )
-)
-
-(define-method get_completions
-  (of-object "GFilenameCompleter")
-  (c-name "g_filename_completer_get_completions")
-  (return-type "char**")
-  (parameters
-    '("const-char*" "initial_text")
-  )
-)
-
-(define-method set_dirs_only
-  (of-object "GFilenameCompleter")
-  (c-name "g_filename_completer_set_dirs_only")
-  (return-type "none")
-  (parameters
-    '("gboolean" "dirs_only")
-  )
-)
-
-
-
-;; From gfileoutputstream.h
-
-(define-function file_output_stream_get_type
-  (c-name "g_file_output_stream_get_type")
-  (return-type "GType")
-)
-
-(define-method query_info
-  (of-object "GFileOutputStream")
-  (c-name "g_file_output_stream_query_info")
-  (return-type "GFileInfo*")
-  (parameters
-    '("char*" "attributes")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method query_info_async
-  (of-object "GFileOutputStream")
-  (c-name "g_file_output_stream_query_info_async")
-  (return-type "none")
-  (parameters
-    '("char*" "attributes")
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method query_info_finish
-  (of-object "GFileOutputStream")
-  (c-name "g_file_output_stream_query_info_finish")
-  (return-type "GFileInfo*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method get_etag
-  (of-object "GFileOutputStream")
-  (c-name "g_file_output_stream_get_etag")
-  (return-type "char*")
-)
-
-
-;; From gfilterinputstream.h
-
-(define-function filter_input_stream_get_type
-  (c-name "g_filter_input_stream_get_type")
-  (return-type "GType")
-)
-
-(define-method get_base_stream
-  (of-object "GFilterInputStream")
-  (c-name "g_filter_input_stream_get_base_stream")
-  (return-type "GInputStream*")
-)
-
-(define-method get_close_base_stream
-  (of-object "GFilterInputStream")
-  (c-name "g_filter_input_stream_get_close_base_stream")
-  (return-type "gboolean")
-)
-
-(define-method set_close_base_stream
-  (of-object "GFilterInputStream")
-  (c-name "g_filter_input_stream_set_close_base_stream")
-  (return-type "none")
-  (parameters
-    '("gboolean" "close_base")
-  )
-)
-
-
-
-;; From gfilteroutputstream.h
-
-(define-function filter_output_stream_get_type
-  (c-name "g_filter_output_stream_get_type")
-  (return-type "GType")
-)
-
-(define-method get_base_stream
-  (of-object "GFilterOutputStream")
-  (c-name "g_filter_output_stream_get_base_stream")
-  (return-type "GOutputStream*")
-)
-
-(define-method get_close_base_stream
-  (of-object "GFilterOutputStream")
-  (c-name "g_filter_output_stream_get_close_base_stream")
-  (return-type "gboolean")
-)
-
-(define-method set_close_base_stream
-  (of-object "GFilterOutputStream")
-  (c-name "g_filter_output_stream_set_close_base_stream")
-  (return-type "none")
-  (parameters
-    '("gboolean" "close_base")
-  )
-)
-
-
-
-;; From gicon.h
-
-(define-function icon_get_type
-  (c-name "g_icon_get_type")
-  (return-type "GType")
-)
-
-(define-function icon_hash
-  (c-name "g_icon_hash")
-  (return-type "guint")
-  (parameters
-    '("gconstpointer" "icon")
-  )
-)
-
-(define-method equal
-  (of-object "GIcon")
-  (c-name "g_icon_equal")
-  (return-type "gboolean")
-  (parameters
-    '("GIcon*" "icon2")
-  )
-)
-
-(define-method to_string
-  (of-object "GIcon")
-  (c-name "g_icon_to_string")
-  (return-type "gchar*")
-)
-
-(define-function icon_new_for_string
-  (c-name "g_icon_new_for_string")
-  (return-type "GIcon*")
-  (parameters
-    '("const-gchar*" "str")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From ginetsocketaddress.h
-
-(define-function inet_socket_address_get_type
-  (c-name "g_inet_socket_address_get_type")
-  (return-type "GType")
-)
-
-(define-function inet_socket_address_new
-  (c-name "g_inet_socket_address_new")
-  (is-constructor-of "GInetSocketAddress")
-  (return-type "GSocketAddress*")
-  (parameters
-    '("GInetAddress*" "address")
-    '("guint16" "port")
-  )
-)
-
-(define-method get_address
-  (of-object "GInetSocketAddress")
-  (c-name "g_inet_socket_address_get_address")
-  (return-type "GInetAddress*")
-)
-
-(define-method get_port
-  (of-object "GInetSocketAddress")
-  (c-name "g_inet_socket_address_get_port")
-  (return-type "guint16")
-)
-
-
-
-;; From ginputstream.h
-
-(define-function input_stream_get_type
-  (c-name "g_input_stream_get_type")
-  (return-type "GType")
-)
-
-;;
-;; wrapped in ginputstream.override
-;;
-;; Note: the following two methods are renamed for consistency with
-;; Python file objects' read().  I.e. g_input_stream_read_all() is
-;; more like Python file.read(), so it is renamed read().  Since now
-;; there is a name clash, g_input_stream_read() is renamed
-;; read_part().
-(define-method read_part
-  (of-object "GInputStream")
-  (docstring
-   "STREAM.read_part([count, [cancellable]]) -> string\n"
-   "\n"
-   "Read 'count' bytes from the stream. If 'count' is not specified or is\n"
-   "omitted, read until the end of the stream. This method is allowed to\n"
-   "stop at any time after reading at least 1 byte from the stream. E.g.\n"
-   "when reading over a (relatively slow) HTTP connection, it will often\n"
-   "stop after receiving one packet. Therefore, to reliably read requested\n"
-   "number of bytes, you need to use a loop. See also gio.InputStream.read\n"
-   "for easier to use (though less efficient) method.\n"
-   "\n"
-   "Note: this method roughly corresponds to C GIO g_input_stream_read."
-  )
-  (c-name "g_input_stream_read")
-  (return-type "gssize")
-  (parameters
-    '("void*" "buffer")
-    '("gsize" "count")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in ginputstream.override
-;;
-;; See comments before the previous method definition.
-(define-method read
-  (of-object "GInputStream")
-  (docstring
-   "STREAM.read([count, [cancellable]]) -> string\n"
-   "\n"
-   "Read 'count' bytes from the stream. If 'count' is not specified or is\n"
-   "omitted, read until the end of the stream. This method will stop only\n"
-   "after reading requested number of bytes, reaching end of stream or\n"
-   "triggering an I/O error. See also gio.InputStream.read_part for more\n"
-   "efficient, but more cumbersome to use method.\n"
-   "\n"
-   "Note: this method roughly corresponds to C GIO g_input_stream_read_all.\n"
-   "It was renamed for consistency with Python standard file.read."
-  )
-  (c-name "g_input_stream_read_all")
-  (return-type "gboolean")
-  (parameters
-    '("void*" "buffer")
-    '("gsize" "count")
-    '("gsize*" "bytes_read")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method skip
-  (of-object "GInputStream")
-  (c-name "g_input_stream_skip")
-  (return-type "gssize")
-  (parameters
-    '("gsize" "count")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method close
-  (of-object "GInputStream")
-  (c-name "g_input_stream_close")
-  (return-type "gboolean")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in ginputstream.override
-;;
-(define-method read_async
-  (of-object "GInputStream")
-  (c-name "g_input_stream_read_async")
-  (return-type "none")
-  (parameters
-    '("void*" "buffer")
-    '("gsize" "count")
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-;;
-;; wrapped in ginputstream.override
-;;
-(define-method read_finish
-  (of-object "GInputStream")
-  (c-name "g_input_stream_read_finish")
-  (return-type "gssize")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method skip_async
-  (of-object "GInputStream")
-  (c-name "g_input_stream_skip_async")
-  (return-type "none")
-  (parameters
-    '("gsize" "count")
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method skip_finish
-  (of-object "GInputStream")
-  (c-name "g_input_stream_skip_finish")
-  (return-type "gssize")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in ginputstream.override
-;;
-(define-method close_async
-  (of-object "GInputStream")
-  (c-name "g_input_stream_close_async")
-  (return-type "none")
-  (parameters
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method close_finish
-  (of-object "GInputStream")
-  (c-name "g_input_stream_close_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method is_closed
-  (of-object "GInputStream")
-  (c-name "g_input_stream_is_closed")
-  (return-type "gboolean")
-)
-
-(define-method has_pending
-  (of-object "GInputStream")
-  (c-name "g_input_stream_has_pending")
-  (return-type "gboolean")
-)
-
-(define-method set_pending
-  (of-object "GInputStream")
-  (c-name "g_input_stream_set_pending")
-  (return-type "gboolean")
-  (parameters
-    '("GError**" "error")
-  )
-)
-
-(define-method clear_pending
-  (of-object "GInputStream")
-  (c-name "g_input_stream_clear_pending")
-  (return-type "none")
-)
-
-
-
-;; From gioalias.h
-
-
-
-;; From gioenumtypes.h
-
-(define-function app_info_create_flags_get_type
-  (c-name "g_app_info_create_flags_get_type")
-  (return-type "GType")
-)
-
-(define-function data_stream_byte_order_get_type
-  (c-name "g_data_stream_byte_order_get_type")
-  (return-type "GType")
-)
-
-(define-function data_stream_newline_type_get_type
-  (c-name "g_data_stream_newline_type_get_type")
-  (return-type "GType")
-)
-
-(define-function file_query_info_flags_get_type
-  (c-name "g_file_query_info_flags_get_type")
-  (return-type "GType")
-)
-
-(define-function file_create_flags_get_type
-  (c-name "g_file_create_flags_get_type")
-  (return-type "GType")
-)
-
-(define-function file_copy_flags_get_type
-  (c-name "g_file_copy_flags_get_type")
-  (return-type "GType")
-)
-
-(define-function file_monitor_flags_get_type
-  (c-name "g_file_monitor_flags_get_type")
-  (return-type "GType")
-)
-
-(define-function file_attribute_type_get_type
-  (c-name "g_file_attribute_type_get_type")
-  (return-type "GType")
-)
-
-(define-function file_attribute_info_flags_get_type
-  (c-name "g_file_attribute_info_flags_get_type")
-  (return-type "GType")
-)
-
-(define-function file_attribute_status_get_type
-  (c-name "g_file_attribute_status_get_type")
-  (return-type "GType")
-)
-
-(define-function file_type_get_type
-  (c-name "g_file_type_get_type")
-  (return-type "GType")
-)
-
-(define-function file_monitor_event_get_type
-  (c-name "g_file_monitor_event_get_type")
-  (return-type "GType")
-)
-
-(define-function io_error_enum_get_type
-  (c-name "g_io_error_enum_get_type")
-  (return-type "GType")
-)
-
-(define-function ask_password_flags_get_type
-  (c-name "g_ask_password_flags_get_type")
-  (return-type "GType")
-)
-
-(define-function password_save_get_type
-  (c-name "g_password_save_get_type")
-  (return-type "GType")
-)
-
-(define-function output_stream_splice_flags_get_type
-  (c-name "g_output_stream_splice_flags_get_type")
-  (return-type "GType")
-)
-
-
-
-;; From gioerror.h
-
-(define-function io_error_quark
-  (c-name "g_io_error_quark")
-  (return-type "GQuark")
-)
-
-(define-function io_error_from_errno
-  (c-name "g_io_error_from_errno")
-  (return-type "GIOErrorEnum")
-  (parameters
-    '("gint" "err_no")
-  )
-)
-
-
-
-;; From gio.h
-
-
-
-;; From gio-marshal.h
-
-
-
-;; From giomodule.h
-
-(define-function io_module_get_type
-  (c-name "g_io_module_get_type")
-  (return-type "GType")
-)
-
-(define-function io_module_new
-  (c-name "g_io_module_new")
-  (is-constructor-of "GIoModule")
-  (return-type "GIOModule*")
-  (parameters
-    '("const-gchar*" "filename")
-  )
-)
-
-(define-function io_modules_load_all_in_directory
-  (c-name "g_io_modules_load_all_in_directory")
-  (return-type "GList*")
-  (parameters
-    '("const-char*" "dirname")
-  )
-)
-
-(define-method load
-  (of-object "GIOModule")
-  (c-name "g_io_module_load")
-  (return-type "none")
-)
-
-(define-method unload
-  (of-object "GIOModule")
-  (c-name "g_io_module_unload")
-  (return-type "none")
-)
-
-
-
-;; From gioscheduler.h
-
-(define-function io_scheduler_push_job
-  (c-name "g_io_scheduler_push_job")
-  (return-type "none")
-  (parameters
-    '("GIOSchedulerJobFunc" "job_func")
-    '("gpointer" "user_data")
-    '("GDestroyNotify" "notify")
-    '("gint" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-  )
-)
-
-(define-function io_scheduler_cancel_all_jobs
-  (c-name "g_io_scheduler_cancel_all_jobs")
-  (return-type "none")
-)
-
-(define-method send_to_mainloop
-  (of-object "GIOSchedulerJob")
-  (c-name "g_io_scheduler_job_send_to_mainloop")
-  (return-type "gboolean")
-  (parameters
-    '("GSourceFunc" "func")
-    '("gpointer" "user_data")
-    '("GDestroyNotify" "notify")
-  )
-)
-
-(define-method send_to_mainloop_async
-  (of-object "GIOSchedulerJob")
-  (c-name "g_io_scheduler_job_send_to_mainloop_async")
-  (return-type "none")
-  (parameters
-    '("GSourceFunc" "func")
-    '("gpointer" "user_data")
-    '("GDestroyNotify" "notify")
-  )
-)
-
-
-
-;; From gloadableicon.h
-
-(define-function loadable_icon_get_type
-  (c-name "g_loadable_icon_get_type")
-  (return-type "GType")
-)
-
-;;
-;; wrapped in gicon.override
-;;
-(define-method load
-  (of-object "GLoadableIcon")
-  (docstring
-  "ICON.load([size, [cancellable]]) -> input stream, type\n"
-  "\n"
-  "Opens a stream of icon data for reading. The result is a tuple of\n"
-  "gio.InputStream and type (either a string or None). The stream can\n"
-  "be read to retrieve icon data.\n"
-  "\n"
-  ;; Note: this is just a guess, GIO docs say nothing at the moment.
-  "Optional size is a hint at desired icon size. Not all implementations\n"
-  "support it and the hint will be just ignored in such cases.\n"
-  "If cancellable is specified, then the operation can be cancelled\n"
-  "by triggering the cancellable object from another thread. See\n"
-  "gio.File.read for details."
-  )
-  (c-name "g_loadable_icon_load")
-  (return-type "GInputStream*")
-  (parameters
-    '("int" "size")
-    '("char**" "type")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gicon.override
-;;
-(define-method load_async
-  (of-object "GLoadableIcon")
-  (docstring
-  "ICON.load_async(callback, [size, [cancellable, [user_data]]])\n"
-  "-> start loading\n"
-  "\n"
-  "For more information, see gio.LoadableIcon.load() which is the\n"
-  "synchronous version of this call. Asynchronously opens icon data for\n"
-  "reading. When the operation is finished, callback will be called.\n"
-  "You can then call gio.LoadableIcon.load_finish() to get the result of\n"
-  "the operation.\n"
-  )
-  (c-name "g_loadable_icon_load_async")
-  (return-type "none")
-  (parameters
-    '("int" "size")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-;;
-;; wrapped in gicon.override
-;;
-(define-method load_finish
-  (docstring
-  "F.load_finish(res) -> start loading\n"
-  "\n"
-  "Finish asynchronous icon loading operation. Must be called from callback\n"
-  "as specified to gio.LoadableIcon.load_async. Returns a tuple of\n"
-  "gio.InputStream and type, just as gio.LoadableIcon.load."
-  )
-  (of-object "GLoadableIcon")
-  (c-name "g_loadable_icon_load_finish")
-  (return-type "GInputStream*")
-  (parameters
-    '("GAsyncResult*" "res")
-    '("char**" "type")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From ginetaddress.h
-
-(define-function inet_address_get_type
-  (c-name "g_inet_address_get_type")
-  (return-type "GType")
-)
-
-(define-function inet_address_new_from_string
-  (c-name "g_inet_address_new_from_string")
-  (return-type "GInetAddress*")
-  (parameters
-    '("const-gchar*" "string")
-  )
-)
-
-(define-function inet_address_new_from_bytes
-  (c-name "g_inet_address_new_from_bytes")
-  (return-type "GInetAddress*")
-  (parameters
-    '("const-guint8*" "bytes")
-    '("GSocketFamily" "family")
-  )
-)
-
-(define-function inet_address_new_loopback
-  (c-name "g_inet_address_new_loopback")
-  (return-type "GInetAddress*")
-  (parameters
-    '("GSocketFamily" "family")
-  )
-)
-
-(define-function inet_address_new_any
-  (c-name "g_inet_address_new_any")
-  (return-type "GInetAddress*")
-  (parameters
-    '("GSocketFamily" "family")
-  )
-)
-
-(define-method to_string
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_to_string")
-  (return-type "gchar*")
-)
-
-
-;; FIXME codegen barfs on this one
-;;
-;;(define-method to_bytes
-;;  (of-object "GInetAddress")
-;;  (c-name "g_inet_address_to_bytes")
-;;  (return-type "const-guint8*")
-;;)
-
-(define-method get_native_size
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_native_size")
-  (return-type "gsize")
-)
-
-(define-method get_family
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_family")
-  (return-type "GSocketFamily")
-)
-
-(define-method get_is_any
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_is_any")
-  (return-type "gboolean")
-)
-
-(define-method get_is_loopback
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_is_loopback")
-  (return-type "gboolean")
-)
-
-(define-method get_is_link_local
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_is_link_local")
-  (return-type "gboolean")
-)
-
-(define-method get_is_site_local
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_is_site_local")
-  (return-type "gboolean")
-)
-
-(define-method get_is_multicast
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_is_multicast")
-  (return-type "gboolean")
-)
-
-(define-method get_is_mc_global
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_is_mc_global")
-  (return-type "gboolean")
-)
-
-(define-method get_is_mc_link_local
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_is_mc_link_local")
-  (return-type "gboolean")
-)
-
-(define-method get_is_mc_node_local
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_is_mc_node_local")
-  (return-type "gboolean")
-)
-
-(define-method get_is_mc_org_local
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_is_mc_org_local")
-  (return-type "gboolean")
-)
-
-(define-method get_is_mc_site_local
-  (of-object "GInetAddress")
-  (c-name "g_inet_address_get_is_mc_site_local")
-  (return-type "gboolean")
-)
-
-
-
-;; From ginitable.h
-
-(define-function initable_get_type
-  (c-name "g_initable_get_type")
-  (return-type "GType")
-)
-
-(define-method init
-  (of-object "GInitable")
-  (c-name "g_initable_init")
-  (return-type "gboolean")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-function initable_new
-  (c-name "g_initable_new")
-  (return-type "gpointer")
-  (parameters
-    '("GType" "object_type")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-    '("const-gchar*" "first_property_name")
-  )
-  (varargs #t)
-)
-
-(define-function initable_newv
-  (c-name "g_initable_newv")
-  (return-type "gpointer")
-  (parameters
-    '("GType" "object_type")
-    '("guint" "n_parameters")
-    '("GParameter*" "parameters")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-function initable_new_valist
-  (c-name "g_initable_new_valist")
-  (return-type "GObject*")
-  (parameters
-    '("GType" "object_type")
-    '("const-gchar*" "first_property_name")
-    '("va_list" "var_args")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From giostream.h
-
-(define-function io_stream_get_type
-  (c-name "g_io_stream_get_type")
-  (return-type "GType")
-)
-
-(define-method get_input_stream
-  (of-object "GIOStream")
-  (c-name "g_io_stream_get_input_stream")
-  (return-type "GInputStream*")
-)
-
-(define-method get_output_stream
-  (of-object "GIOStream")
-  (c-name "g_io_stream_get_output_stream")
-  (return-type "GOutputStream*")
-)
-
-(define-method close
-  (of-object "GIOStream")
-  (c-name "g_io_stream_close")
-  (return-type "gboolean")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method close_async
-  (of-object "GIOStream")
-  (c-name "g_io_stream_close_async")
-  (return-type "none")
-  (parameters
-    '("int" "io_priority")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method close_finish
-  (of-object "GIOStream")
-  (c-name "g_io_stream_close_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method is_closed
-  (of-object "GIOStream")
-  (c-name "g_io_stream_is_closed")
-  (return-type "gboolean")
-)
-
-(define-method has_pending
-  (of-object "GIOStream")
-  (c-name "g_io_stream_has_pending")
-  (return-type "gboolean")
-)
-
-(define-method set_pending
-  (of-object "GIOStream")
-  (c-name "g_io_stream_set_pending")
-  (return-type "gboolean")
-  (parameters
-    '("GError**" "error")
-  )
-)
-
-(define-method clear_pending
-  (of-object "GIOStream")
-  (c-name "g_io_stream_clear_pending")
-  (return-type "none")
-)
-
-
-
-;; From glocaldirectorymonitor.h
-
-(define-function local_directory_monitor_get_type
-  (c-name "g_local_directory_monitor_get_type")
-  (return-type "GType")
-)
-
-
-
-;; From glocalfileenumerator.h
-
-
-
-;; From glocalfile.h
-
-
-
-;; From glocalfileinfo.h
-
-
-
-;; From glocalfileinputstream.h
-
-
-
-;; From glocalfilemonitor.h
-
-(define-function local_file_monitor_get_type
-  (c-name "g_local_file_monitor_get_type")
-  (return-type "GType")
-)
-
-
-
-;; From glocalfileoutputstream.h
-
-
-
-;; From glocalvfs.h
-
-
-
-;; From gmemoryinputstream.h
-
-(define-function memory_input_stream_get_type
-  (c-name "g_memory_input_stream_get_type")
-  (return-type "GType")
-)
-
-(define-function memory_input_stream_new
-  (c-name "g_memory_input_stream_new")
-  (is-constructor-of "GMemoryInputStream")
-  (return-type "GInputStream*")
-)
-
-(define-function memory_input_stream_new_from_data
-  (c-name "g_memory_input_stream_new_from_data")
-  (return-type "GInputStream*")
-  (parameters
-    '("const-void*" "data")
-    '("gssize" "len")
-    '("GDestroyNotify" "destroy")
-  )
-)
-
-;;
-;; wrapped in ginputstream.override
-;;
-(define-method add_data
-  (of-object "GMemoryInputStream")
-  (c-name "g_memory_input_stream_add_data")
-  (return-type "none")
-  (parameters
-    '("const-void*" "data")
-    '("gssize" "len")
-    '("GDestroyNotify" "destroy")
-  )
-)
-
-
-
-;; From gmemoryoutputstream.h
-
-(define-function memory_output_stream_get_type
-  (c-name "g_memory_output_stream_get_type")
-  (return-type "GType")
-)
-
-;;
-;; wrapped in goutputstream.override
-;;
-(define-function memory_output_stream_new
-  (c-name "g_memory_output_stream_new")
-  (is-constructor-of "GMemoryOutputStream")
-  (return-type "GOutputStream*")
-  (parameters
-    '("gpointer" "data")
-    '("gsize" "len")
-    '("GReallocFunc" "realloc_fn")
-    '("GDestroyNotify" "destroy")
-  )
-)
-
-;;
-;; wrapped in goutputstream.override
-;;
-;; Note: name clash with gobject.GObject.get_data; renamed.
-(define-method get_contents
-  (of-object "GMemoryOutputStream")
-  (c-name "g_memory_output_stream_get_data")
-  (return-type "gpointer")
-)
-
-(define-method get_size
-  (of-object "GMemoryOutputStream")
-  (c-name "g_memory_output_stream_get_size")
-  (return-type "gsize")
-)
-
-(define-method get_data_size
-  (of-object "GMemoryOutputStream")
-  (c-name "g_memory_output_stream_get_data_size")
-  (return-type "gsize")
-)
-
-
-
-;; From gmount.h
-
-(define-function mount_get_type
-  (c-name "g_mount_get_type")
-  (return-type "GType")
-)
-
-(define-method get_root
-  (of-object "GMount")
-  (c-name "g_mount_get_root")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-)
-
-(define-method get_name
-  (of-object "GMount")
-  (c-name "g_mount_get_name")
-  (return-type "char*")
-)
-
-(define-method get_icon
-  (of-object "GMount")
-  (c-name "g_mount_get_icon")
-  (return-type "GIcon*")
-  (caller-owns-return #t)
-)
-
-(define-method get_uuid
-  (of-object "GMount")
-  (c-name "g_mount_get_uuid")
-  (return-type "char*")
-)
-
-(define-method get_volume
-  (of-object "GMount")
-  (c-name "g_mount_get_volume")
-  (return-type "GVolume*")
-  (caller-owns-return #t)
-)
-
-(define-method get_drive
-  (of-object "GMount")
-  (c-name "g_mount_get_drive")
-  (return-type "GDrive*")
-  (caller-owns-return #t)
-)
-
-(define-method can_unmount
-  (of-object "GMount")
-  (c-name "g_mount_can_unmount")
-  (return-type "gboolean")
-)
-
-(define-method can_eject
-  (of-object "GMount")
-  (c-name "g_mount_can_eject")
-  (return-type "gboolean")
-)
-
-;;
-;; wrapped in gio.override
-;;
-(define-method unmount
-  (docstring
-"M.unmount(callback, [flags, cancellable, user_data])\n"
-"Unmounts a mount. This is an asynchronous operation, and is finished\n"
-"by calling gio.Mount.unmount_finish() with the mount and gio.AsyncResults\n"
-"data returned in the callback."
-)
-  (of-object "GMount")
-  (c-name "g_mount_unmount")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags" (default "G_MOUNT_UNMOUNT_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method unmount_finish
-  (of-object "GMount")
-  (c-name "g_mount_unmount_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gio.override
-;;
-(define-method eject
-  (docstring
-"F.eject(callback, [flags, cancellable, user_data])\n"
-"Ejects a volume.\n"
-"\n"
-"If cancellable is not None, then the operation can be cancelled by\n"
-"triggering the cancellable object from another thread. If the\n"
-"operation was cancelled, the error gio.ERROR_CANCELLED will be returned.\n"
-"\n"
-"When the operation is finished, callback will be called. You can\n"
-"then call gio.Volume.eject_finish() to get the result of the operation.\n")
-  (of-object "GMount")
-  (c-name "g_mount_eject")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags" (default "G_MOUNT_UNMOUNT_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method eject_finish
-  (of-object "GMount")
-  (c-name "g_mount_eject_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gio.override
-;;
-(define-method remount
-  (of-object "GMount")
-  (docstring
-   "M.remount(callback, [flags, [mount_operation, [cancellable, [user_data]]]])\n"
-   "Remounts a mount. This is an asynchronous operation, and is finished by\n"
-   "calling gio.Mount.remount_finish with the mount and gio.AsyncResults data\n"
-   "returned in the callback.")
-  (c-name "g_mount_remount")
-  (return-type "none")
-  (parameters
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method remount_finish
-  (of-object "GMount")
-  (c-name "g_mount_remount_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method guess_content_type
-  (of-object "GMount")
-  (c-name "g_mount_guess_content_type")
-  (return-type "none")
-  (parameters
-    '("gboolean" "force_rescan")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method guess_content_type_finish
-  (of-object "GMount")
-  (c-name "g_mount_guess_content_type_finish")
-  (return-type "gchar**")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method guess_content_type_sync
-  (of-object "GMount")
-  (c-name "g_mount_guess_content_type_sync")
-  (return-type "gchar**")
-  (parameters
-    '("gboolean" "force_rescan")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method is_shadowed
-  (of-object "GMount")
-  (c-name "g_mount_is_shadowed")
-  (return-type "gboolean")
-)
-
-(define-method shadow
-  (of-object "GMount")
-  (c-name "g_mount_shadow")
-  (return-type "none")
-)
-
-(define-method unshadow
-  (of-object "GMount")
-  (c-name "g_mount_unshadow")
-  (return-type "none")
-)
-
-(define-method unmount_with_operation
-  (of-object "GMount")
-  (c-name "g_mount_unmount_with_operation")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags")
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method unmount_with_operation_finish
-  (of-object "GMount")
-  (c-name "g_mount_unmount_with_operation_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method eject_with_operation
-  (of-object "GMount")
-  (c-name "g_mount_eject_with_operation")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags")
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method eject_with_operation_finish
-  (of-object "GMount")
-  (c-name "g_mount_eject_with_operation_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gmountoperation.h
-
-(define-function mount_operation_get_type
-  (c-name "g_mount_operation_get_type")
-  (return-type "GType")
-)
-
-(define-function mount_operation_new
-  (c-name "g_mount_operation_new")
-  (is-constructor-of "GMountOperation")
-  (return-type "GMountOperation*")
-)
-
-(define-method get_username
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_get_username")
-  (return-type "const-char*")
-)
-
-(define-method set_username
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_set_username")
-  (return-type "none")
-  (parameters
-    '("const-char*" "username")
-  )
-)
-
-(define-method get_password
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_get_password")
-  (return-type "const-char*")
-)
-
-(define-method set_password
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_set_password")
-  (return-type "none")
-  (parameters
-    '("const-char*" "password")
-  )
-)
-
-(define-method get_anonymous
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_get_anonymous")
-  (return-type "gboolean")
-)
-
-(define-method set_anonymous
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_set_anonymous")
-  (return-type "none")
-  (parameters
-    '("gboolean" "anonymous")
-  )
-)
-
-(define-method get_domain
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_get_domain")
-  (return-type "const-char*")
-)
-
-(define-method set_domain
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_set_domain")
-  (return-type "none")
-  (parameters
-    '("const-char*" "domain")
-  )
-)
-
-(define-method get_password_save
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_get_password_save")
-  (return-type "GPasswordSave")
-)
-
-(define-method set_password_save
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_set_password_save")
-  (return-type "none")
-  (parameters
-    '("GPasswordSave" "save")
-  )
-)
-
-(define-method get_choice
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_get_choice")
-  (return-type "int")
-)
-
-(define-method set_choice
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_set_choice")
-  (return-type "none")
-  (parameters
-    '("int" "choice")
-  )
-)
-
-(define-method reply
-  (of-object "GMountOperation")
-  (c-name "g_mount_operation_reply")
-  (return-type "none")
-  (parameters
-    '("GMountOperationResult" "result")
-  )
-)
-
-
-
-;; From gnativevolumemonitor.h
-
-(define-function native_volume_monitor_get_type
-  (c-name "g_native_volume_monitor_get_type")
-  (return-type "GType")
-)
-
-
-
-;; From gnetworkaddress.h
-
-(define-function network_address_get_type
-  (c-name "g_network_address_get_type")
-  (return-type "GType")
-)
-
-(define-function network_address_new
-  (c-name "g_network_address_new")
-  (is-constructor-of "GNetworkAddress")
-  (return-type "GSocketConnectable*")
-  (parameters
-    '("const-gchar*" "hostname")
-    '("guint16" "port")
-  )
-)
-
-(define-function network_address_parse
-  (c-name "g_network_address_parse")
-  (return-type "GSocketConnectable*")
-  (parameters
-    '("const-gchar*" "host_and_port")
-    '("guint16" "default_port")
-    '("GError**" "error")
-  )
-)
-
-(define-method get_hostname
-  (of-object "GNetworkAddress")
-  (c-name "g_network_address_get_hostname")
-  (return-type "const-gchar*")
-)
-
-(define-method get_port
-  (of-object "GNetworkAddress")
-  (c-name "g_network_address_get_port")
-  (return-type "guint16")
-)
-
-
-
-;; From gnetworkservice.h
-
-(define-function network_service_get_type
-  (c-name "g_network_service_get_type")
-  (return-type "GType")
-)
-
-(define-function network_service_new
-  (c-name "g_network_service_new")
-  (is-constructor-of "GNetworkService")
-  (return-type "GSocketConnectable*")
-  (parameters
-    '("const-gchar*" "service")
-    '("const-gchar*" "protocol")
-    '("const-gchar*" "domain")
-  )
-)
-
-(define-method get_service
-  (of-object "GNetworkService")
-  (c-name "g_network_service_get_service")
-  (return-type "const-gchar*")
-)
-
-(define-method get_protocol
-  (of-object "GNetworkService")
-  (c-name "g_network_service_get_protocol")
-  (return-type "const-gchar*")
-)
-
-(define-method get_domain
-  (of-object "GNetworkService")
-  (c-name "g_network_service_get_domain")
-  (return-type "const-gchar*")
-)
-
-
-
-;; From goutputstream.h
-
-(define-function output_stream_get_type
-  (c-name "g_output_stream_get_type")
-  (return-type "GType")
-)
-
-;;
-;; wrapped in goutputstream.override
-;;
-;; Note: the following two methods are renamed for consistency with
-;; Python file objects' write().  I.e. g_output_stream_write_all() is
-;; more like Python file.write(), so it is renamed write().  Since now
-;; there is a name clash, g_output_stream_write() is renamed
-;; write_part().
-(define-method write_part
-  (of-object "GOutputStream")
-  (docstring
-   "STREAM.write_part(buffer, [cancellable]) -> int\n"
-   "\n"
-   "Write the bytes in 'buffer' to the stream. Return the number of bytes\n"
-   "successfully written. This method is allowed to stop at any time after\n"
-   "writing at least 1 byte. Therefore, to reliably write the whole buffer,\n"
-   "you need to use a loop. See also gio.OutputStream.write for easier to\n"
-   "use (though less efficient) method.\n"
-   "\n"
-   "Note: this method roughly corresponds to C GIO g_output_stream_write."
-  )
-  (c-name "g_output_stream_write")
-  (return-type "gssize")
-  (parameters
-    '("const-void*" "buffer")
-    '("gsize" "count")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in goutputstream.override
-;;
-;; See comments before the previous method definition.
-(define-method write
-  (of-object "GOutputStream")
-   "STREAM.write(buffer, [cancellable]) -> int\n"
-   "\n"
-   "Write the bytes in 'buffer' to the stream. Return the number of bytes\n"
-   "successfully written. This method will stop only after writing the whole\n"
-   "buffer or triggering an I/O error. See also gio.OutputStream.write_part\n"
-   "for more efficient, but more cumbersome to use method.\n"
-   "\n"
-   "Note: this method roughly corresponds to C GIO g_output_stream_write_all.\n"
-   "It was renamed for consistency with Python standard file.write."
-  (c-name "g_output_stream_write_all")
-  (return-type "gboolean")
-  (parameters
-    '("const-void*" "buffer")
-    '("gsize" "count")
-    '("gsize*" "bytes_written")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method splice
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_splice")
-  (return-type "gssize")
-  (parameters
-    '("GInputStream*" "source")
-    '("GOutputStreamSpliceFlags" "flags" (default "G_OUTPUT_STREAM_SPLICE_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method flush
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_flush")
-  (return-type "gboolean")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method close
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_close")
-  (return-type "gboolean")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in goutputstream.override
-;;
-(define-method write_async
-  (of-object "GOutputStream")
-  (docstring
-"S.write_async(buffer, callback [,io_priority] [,cancellable] [,user_data])\n"
-"\n"
-"Request an asynchronous write of count bytes from buffer into the stream.\n"
-"When the operation is finished callback will be called. You can then call\n"
-"gio.OutputStream.write_finish() to get the result of the operation.\n"
-"On success, the number of bytes written will be passed to the callback.\n"
-"It is not an error if this is not the same as the requested size, as it can\n"
-"happen e.g. on a partial I/O error, but generally tries to write as many \n"
-"bytes as requested.\n"
-"For the synchronous, blocking version of this function, see\n"
-"gio.OutputStream.write().\n")
-  (c-name "g_output_stream_write_async")
-  (return-type "none")
-  (parameters
-    '("const-void*" "buffer")
-    '("gsize" "count")
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method write_finish
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_write_finish")
-  (return-type "gssize")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method splice_async
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_splice_async")
-  (return-type "none")
-  (parameters
-    '("GInputStream*" "source")
-    '("GOutputStreamSpliceFlags" "flags" (default "G_OUTPUT_STREAM_SPLICE_NONE"))
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method splice_finish
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_splice_finish")
-  (return-type "gssize")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method flush_async
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_flush_async")
-  (return-type "none")
-  (parameters
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method flush_finish
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_flush_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in goutputstream.override
-;;
-(define-method close_async
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_close_async")
-  (return-type "none")
-  (parameters
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method close_finish
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_close_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method is_closed
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_is_closed")
-  (return-type "gboolean")
-)
-
-(define-method has_pending
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_has_pending")
-  (return-type "gboolean")
-)
-
-(define-method set_pending
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_set_pending")
-  (return-type "gboolean")
-  (parameters
-    '("GError**" "error")
-  )
-)
-
-(define-method clear_pending
-  (of-object "GOutputStream")
-  (c-name "g_output_stream_clear_pending")
-  (return-type "none")
-)
-
-
-
-;; From gresolver.h
-
-(define-function resolver_get_type
-  (c-name "g_resolver_get_type")
-  (return-type "GType")
-)
-
-(define-function resolver_get_default
-  (c-name "g_resolver_get_default")
-  (return-type "GResolver*")
-)
-
-(define-method set_default
-  (of-object "GResolver")
-  (c-name "g_resolver_set_default")
-  (return-type "none")
-)
-
-(define-method lookup_by_name
-  (of-object "GResolver")
-  (c-name "g_resolver_lookup_by_name")
-  (return-type "GList*")
-  (parameters
-    '("const-gchar*" "hostname")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method lookup_by_name_async
-  (of-object "GResolver")
-  (c-name "g_resolver_lookup_by_name_async")
-  (return-type "none")
-  (parameters
-    '("const-gchar*" "hostname")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method lookup_by_name_finish
-  (of-object "GResolver")
-  (c-name "g_resolver_lookup_by_name_finish")
-  (return-type "GList*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-function resolver_free_addresses
-  (c-name "g_resolver_free_addresses")
-  (return-type "none")
-  (parameters
-    '("GList*" "addresses")
-  )
-)
-
-(define-method lookup_by_address
-  (of-object "GResolver")
-  (c-name "g_resolver_lookup_by_address")
-  (return-type "gchar*")
-  (parameters
-    '("GInetAddress*" "address")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method lookup_by_address_async
-  (of-object "GResolver")
-  (c-name "g_resolver_lookup_by_address_async")
-  (return-type "none")
-  (parameters
-    '("GInetAddress*" "address")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method lookup_by_address_finish
-  (of-object "GResolver")
-  (c-name "g_resolver_lookup_by_address_finish")
-  (return-type "gchar*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method lookup_service
-  (of-object "GResolver")
-  (c-name "g_resolver_lookup_service")
-  (return-type "GList*")
-  (parameters
-    '("const-gchar*" "service")
-    '("const-gchar*" "protocol")
-    '("const-gchar*" "domain")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method lookup_service_async
-  (of-object "GResolver")
-  (c-name "g_resolver_lookup_service_async")
-  (return-type "none")
-  (parameters
-    '("const-gchar*" "service")
-    '("const-gchar*" "protocol")
-    '("const-gchar*" "domain")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method lookup_service_finish
-  (of-object "GResolver")
-  (c-name "g_resolver_lookup_service_finish")
-  (return-type "GList*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-function resolver_free_targets
-  (c-name "g_resolver_free_targets")
-  (return-type "none")
-  (parameters
-    '("GList*" "targets")
-  )
-)
-
-(define-function resolver_error_quark
-  (c-name "g_resolver_error_quark")
-  (return-type "GQuark")
-)
-
-
-
-;; From gseekable.h
-
-(define-function seekable_get_type
-  (c-name "g_seekable_get_type")
-  (return-type "GType")
-)
-
-(define-method tell
-  (of-object "GSeekable")
-  (c-name "g_seekable_tell")
-  (return-type "goffset")
-)
-
-(define-method can_seek
-  (of-object "GSeekable")
-  (c-name "g_seekable_can_seek")
-  (return-type "gboolean")
-)
-
-(define-method seek
-  (of-object "GSeekable")
-  (c-name "g_seekable_seek")
-  (return-type "gboolean")
-  (parameters
-    '("goffset" "offset")
-    '("GSeekType" "type" (default "G_SEEK_SET"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method can_truncate
-  (of-object "GSeekable")
-  (c-name "g_seekable_can_truncate")
-  (return-type "gboolean")
-)
-
-(define-method truncate
-  (of-object "GSeekable")
-  (c-name "g_seekable_truncate")
-  (return-type "gboolean")
-  (parameters
-    '("goffset" "offset")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gsimpleasyncresult.h
-
-(define-function simple_async_result_get_type
-  (c-name "g_simple_async_result_get_type")
-  (return-type "GType")
-)
-
-(define-function simple_async_result_new
-  (c-name "g_simple_async_result_new")
-  (is-constructor-of "GSimpleAsyncResult")
-  (return-type "GSimpleAsyncResult*")
-  (parameters
-    '("GObject*" "source_object")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-    '("gpointer" "source_tag")
-  )
-)
-
-(define-function simple_async_result_new_error
-  (c-name "g_simple_async_result_new_error")
-  (return-type "GSimpleAsyncResult*")
-  (parameters
-    '("GObject*" "source_object")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-    '("GQuark" "domain")
-    '("gint" "code")
-    '("const-char*" "format")
-  )
-  (varargs #t)
-)
-
-(define-function simple_async_result_new_from_error
-  (c-name "g_simple_async_result_new_from_error")
-  (return-type "GSimpleAsyncResult*")
-  (parameters
-    '("GObject*" "source_object")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-    '("GError*" "error")
-  )
-)
-
-(define-method set_op_res_gpointer
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_set_op_res_gpointer")
-  (return-type "none")
-  (parameters
-    '("gpointer" "op_res")
-    '("GDestroyNotify" "destroy_op_res")
-  )
-)
-
-(define-method get_op_res_gpointer
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_get_op_res_gpointer")
-  (return-type "gpointer")
-)
-
-(define-method set_op_res_gssize
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_set_op_res_gssize")
-  (return-type "none")
-  (parameters
-    '("gssize" "op_res")
-  )
-)
-
-(define-method get_op_res_gssize
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_get_op_res_gssize")
-  (return-type "gssize")
-)
-
-(define-method set_op_res_gboolean
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_set_op_res_gboolean")
-  (return-type "none")
-  (parameters
-    '("gboolean" "op_res")
-  )
-)
-
-(define-method get_op_res_gboolean
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_get_op_res_gboolean")
-  (return-type "gboolean")
-)
-
-(define-method get_source_tag
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_get_source_tag")
-  (return-type "gpointer")
-)
-
-(define-method set_handle_cancellation
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_set_handle_cancellation")
-  (return-type "none")
-  (parameters
-    '("gboolean" "handle_cancellation")
-  )
-)
-
-(define-method complete
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_complete")
-  (return-type "none")
-)
-
-(define-method complete_in_idle
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_complete_in_idle")
-  (return-type "none")
-)
-
-(define-method run_in_thread
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_run_in_thread")
-  (return-type "none")
-  (parameters
-    '("GSimpleAsyncThreadFunc" "func")
-    '("int" "io_priority" (default "G_PRIORITY_DEFAULT"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-  )
-)
-
-(define-method set_from_error
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_set_from_error")
-  (return-type "none")
-  (parameters
-    '("GError*" "error")
-  )
-)
-
-(define-method propagate_error
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_propagate_error")
-  (return-type "gboolean")
-  (parameters
-    '("GError**" "dest")
-  )
-)
-
-(define-method set_error
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_set_error")
-  (return-type "none")
-  (parameters
-    '("GQuark" "domain")
-    '("gint" "code")
-    '("const-char*" "format")
-  )
-  (varargs #t)
-)
-
-(define-method set_error_va
-  (of-object "GSimpleAsyncResult")
-  (c-name "g_simple_async_result_set_error_va")
-  (return-type "none")
-  (parameters
-    '("GQuark" "domain")
-    '("gint" "code")
-    '("const-char*" "format")
-    '("va_list" "args")
-  )
-)
-
-(define-function simple_async_report_error_in_idle
-  (c-name "g_simple_async_report_error_in_idle")
-  (return-type "none")
-  (parameters
-    '("GObject*" "object")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-    '("GQuark" "domain")
-    '("gint" "code")
-    '("const-char*" "format")
-  )
-  (varargs #t)
-)
-
-(define-function simple_async_report_gerror_in_idle
-  (c-name "g_simple_async_report_gerror_in_idle")
-  (return-type "none")
-  (parameters
-    '("GObject*" "object")
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-    '("GError*" "error")
-  )
-)
-
-
-
-;; From gsocketaddressenumerator.h
-
-(define-function socket_address_enumerator_get_type
-  (c-name "g_socket_address_enumerator_get_type")
-  (return-type "GType")
-)
-
-(define-method next
-  (of-object "GSocketAddressEnumerator")
-  (c-name "g_socket_address_enumerator_next")
-  (return-type "GSocketAddress*")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method next_async
-  (of-object "GSocketAddressEnumerator")
-  (c-name "g_socket_address_enumerator_next_async")
-  (return-type "none")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method next_finish
-  (of-object "GSocketAddressEnumerator")
-  (c-name "g_socket_address_enumerator_next_finish")
-  (return-type "GSocketAddress*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gsocketaddress.h
-
-(define-function socket_address_get_type
-  (c-name "g_socket_address_get_type")
-  (return-type "GType")
-)
-
-(define-method get_family
-  (of-object "GSocketAddress")
-  (c-name "g_socket_address_get_family")
-  (return-type "GSocketFamily")
-)
-
-(define-function socket_address_new_from_native
-  (c-name "g_socket_address_new_from_native")
-  (return-type "GSocketAddress*")
-  (parameters
-    '("gpointer" "native")
-    '("gsize" "len")
-  )
-)
-
-(define-method to_native
-  (of-object "GSocketAddress")
-  (c-name "g_socket_address_to_native")
-  (return-type "gboolean")
-  (parameters
-    '("gpointer" "dest")
-    '("gsize" "destlen")
-    '("GError**" "error")
-  )
-)
-
-(define-method get_native_size
-  (of-object "GSocketAddress")
-  (c-name "g_socket_address_get_native_size")
-  (return-type "gssize")
-)
-
-
-
-;; From gsocketclient.h
-
-(define-function socket_client_get_type
-  (c-name "g_socket_client_get_type")
-  (return-type "GType")
-)
-
-(define-function socket_client_new
-  (c-name "g_socket_client_new")
-  (is-constructor-of "GSocketClient")
-  (return-type "GSocketClient*")
-)
-
-(define-method get_family
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_get_family")
-  (return-type "GSocketFamily")
-)
-
-(define-method set_family
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_set_family")
-  (return-type "none")
-  (parameters
-    '("GSocketFamily" "family")
-  )
-)
-
-(define-method get_socket_type
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_get_socket_type")
-  (return-type "GSocketType")
-)
-
-(define-method set_socket_type
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_set_socket_type")
-  (return-type "none")
-  (parameters
-    '("GSocketType" "type")
-  )
-)
-
-(define-method get_protocol
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_get_protocol")
-  (return-type "GSocketProtocol")
-)
-
-(define-method set_protocol
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_set_protocol")
-  (return-type "none")
-  (parameters
-    '("GSocketProtocol" "protocol")
-  )
-)
-
-(define-method get_local_address
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_get_local_address")
-  (return-type "GSocketAddress*")
-)
-
-(define-method set_local_address
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_set_local_address")
-  (return-type "none")
-  (parameters
-    '("GSocketAddress*" "address")
-  )
-)
-
-(define-method connect
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_connect")
-  (return-type "GSocketConnection*")
-  (parameters
-    '("GSocketConnectable*" "connectable")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method connect_to_host
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_connect_to_host")
-  (return-type "GSocketConnection*")
-  (parameters
-    '("const-gchar*" "host_and_port")
-    '("guint16" "default_port")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method connect_to_service
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_connect_to_service")
-  (return-type "GSocketConnection*")
-  (parameters
-    '("const-gchar*" "domain")
-    '("const-gchar*" "service")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method connect_async
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_connect_async")
-  (return-type "none")
-  (parameters
-    '("GSocketConnectable*" "connectable")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method connect_finish
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_connect_finish")
-  (return-type "GSocketConnection*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method connect_to_host_async
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_connect_to_host_async")
-  (return-type "none")
-  (parameters
-    '("const-gchar*" "host_and_port")
-    '("guint16" "default_port")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method connect_to_host_finish
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_connect_to_host_finish")
-  (return-type "GSocketConnection*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-(define-method connect_to_service_async
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_connect_to_service_async")
-  (return-type "none")
-  (parameters
-    '("const-gchar*" "domain")
-    '("const-gchar*" "service")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method connect_to_service_finish
-  (of-object "GSocketClient")
-  (c-name "g_socket_client_connect_to_service_finish")
-  (return-type "GSocketConnection*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gsocketconnectable.h
-
-(define-function socket_connectable_get_type
-  (c-name "g_socket_connectable_get_type")
-  (return-type "GType")
-)
-
-(define-method enumerate
-  (of-object "GSocketConnectable")
-  (c-name "g_socket_connectable_enumerate")
-  (return-type "GSocketAddressEnumerator*")
-)
-
-
-
-;; From gsocketconnection.h
-
-(define-function socket_connection_get_type
-  (c-name "g_socket_connection_get_type")
-  (return-type "GType")
-)
-
-(define-method get_socket
-  (of-object "GSocketConnection")
-  (c-name "g_socket_connection_get_socket")
-  (return-type "GSocket*")
-)
-
-(define-method get_local_address
-  (of-object "GSocketConnection")
-  (c-name "g_socket_connection_get_local_address")
-  (return-type "GSocketAddress*")
-  (parameters
-    '("GError**" "error")
-  )
-)
-
-(define-method get_remote_address
-  (of-object "GSocketConnection")
-  (c-name "g_socket_connection_get_remote_address")
-  (return-type "GSocketAddress*")
-  (parameters
-    '("GError**" "error")
-  )
-)
-
-(define-function socket_connection_factory_register_type
-  (c-name "g_socket_connection_factory_register_type")
-  (return-type "none")
-  (parameters
-    '("GType" "g_type")
-    '("GSocketFamily" "family")
-    '("GSocketType" "type")
-    '("gint" "protocol")
-  )
-)
-
-(define-function socket_connection_factory_lookup_type
-  (c-name "g_socket_connection_factory_lookup_type")
-  (return-type "GType")
-  (parameters
-    '("GSocketFamily" "family")
-    '("GSocketType" "type")
-    '("gint" "protocol_id")
-  )
-)
-
-(define-method connection_factory_create_connection
-  (of-object "GSocket")
-  (c-name "g_socket_connection_factory_create_connection")
-  (return-type "GSocketConnection*")
-)
-
-
-
-;; From gsocketcontrolmessage.h
-
-(define-function socket_control_message_get_type
-  (c-name "g_socket_control_message_get_type")
-  (return-type "GType")
-)
-
-(define-method get_size
-  (of-object "GSocketControlMessage")
-  (c-name "g_socket_control_message_get_size")
-  (return-type "gsize")
-)
-
-(define-method get_level
-  (of-object "GSocketControlMessage")
-  (c-name "g_socket_control_message_get_level")
-  (return-type "int")
-)
-
-(define-method get_msg_type
-  (of-object "GSocketControlMessage")
-  (c-name "g_socket_control_message_get_msg_type")
-  (return-type "int")
-)
-
-(define-method serialize
-  (of-object "GSocketControlMessage")
-  (c-name "g_socket_control_message_serialize")
-  (return-type "none")
-  (parameters
-    '("gpointer" "data")
-  )
-)
-
-(define-function socket_control_message_deserialize
-  (c-name "g_socket_control_message_deserialize")
-  (return-type "GSocketControlMessage*")
-  (parameters
-    '("int" "level")
-    '("int" "type")
-    '("gsize" "size")
-    '("gpointer" "data")
-  )
-)
-
-
-
-;; From gsocket.h
-
-(define-function socket_get_type
-  (c-name "g_socket_get_type")
-  (return-type "GType")
-)
-
-(define-function socket_new
-  (c-name "g_socket_new")
-  (is-constructor-of "GSocket")
-  (return-type "GSocket*")
-  (parameters
-    '("GSocketFamily" "family")
-    '("GSocketType" "type")
-    '("GSocketProtocol" "protocol")
-    '("GError**" "error")
-  )
-)
-
-(define-function socket_new_from_fd
-  (c-name "g_socket_new_from_fd")
-  (return-type "GSocket*")
-  (parameters
-    '("gint" "fd")
-    '("GError**" "error")
-  )
-)
-
-(define-method get_fd
-  (of-object "GSocket")
-  (c-name "g_socket_get_fd")
-  (return-type "int")
-)
-
-(define-method get_family
-  (of-object "GSocket")
-  (c-name "g_socket_get_family")
-  (return-type "GSocketFamily")
-)
-
-(define-method get_socket_type
-  (of-object "GSocket")
-  (c-name "g_socket_get_socket_type")
-  (return-type "GSocketType")
-)
-
-(define-method get_protocol
-  (of-object "GSocket")
-  (c-name "g_socket_get_protocol")
-  (return-type "GSocketProtocol")
-)
-
-(define-method get_local_address
-  (of-object "GSocket")
-  (c-name "g_socket_get_local_address")
-  (return-type "GSocketAddress*")
-  (parameters
-    '("GError**" "error")
-  )
-)
-
-(define-method get_remote_address
-  (of-object "GSocket")
-  (c-name "g_socket_get_remote_address")
-  (return-type "GSocketAddress*")
-  (parameters
-    '("GError**" "error")
-  )
-)
-
-(define-method set_blocking
-  (of-object "GSocket")
-  (c-name "g_socket_set_blocking")
-  (return-type "none")
-  (parameters
-    '("gboolean" "blocking")
-  )
-)
-
-(define-method get_blocking
-  (of-object "GSocket")
-  (c-name "g_socket_get_blocking")
-  (return-type "gboolean")
-)
-
-(define-method set_keepalive
-  (of-object "GSocket")
-  (c-name "g_socket_set_keepalive")
-  (return-type "none")
-  (parameters
-    '("gboolean" "keepalive")
-  )
-)
-
-(define-method get_keepalive
-  (of-object "GSocket")
-  (c-name "g_socket_get_keepalive")
-  (return-type "gboolean")
-)
-
-(define-method get_listen_backlog
-  (of-object "GSocket")
-  (c-name "g_socket_get_listen_backlog")
-  (return-type "gint")
-)
-
-(define-method set_listen_backlog
-  (of-object "GSocket")
-  (c-name "g_socket_set_listen_backlog")
-  (return-type "none")
-  (parameters
-    '("gint" "backlog")
-  )
-)
-
-(define-method is_connected
-  (of-object "GSocket")
-  (c-name "g_socket_is_connected")
-  (return-type "gboolean")
-)
-
-(define-method bind
-  (of-object "GSocket")
-  (c-name "g_socket_bind")
-  (return-type "gboolean")
-  (parameters
-    '("GSocketAddress*" "address")
-    '("gboolean" "allow_reuse")
-    '("GError**" "error")
-  )
-)
-
-(define-method connect
-  (of-object "GSocket")
-  (c-name "g_socket_connect")
-  (return-type "gboolean")
-  (parameters
-    '("GSocketAddress*" "address")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method check_connect_result
-  (of-object "GSocket")
-  (c-name "g_socket_check_connect_result")
-  (return-type "gboolean")
-  (parameters
-    '("GError**" "error")
-  )
-)
-
-(define-method condition_check
-  (of-object "GSocket")
-  (c-name "g_socket_condition_check")
-  (return-type "GIOCondition")
-  (parameters
-    '("GIOCondition" "condition")
-  )
-)
-
-(define-method condition_wait
-  (of-object "GSocket")
-  (c-name "g_socket_condition_wait")
-  (return-type "gboolean")
-  (parameters
-    '("GIOCondition" "condition")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method accept
-  (of-object "GSocket")
-  (c-name "g_socket_accept")
-  (return-type "GSocket*")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method listen
-  (of-object "GSocket")
-  (c-name "g_socket_listen")
-  (return-type "gboolean")
-  (parameters
-    '("GError**" "error")
-  )
-)
-
-(define-method receive
-  (of-object "GSocket")
-  (c-name "g_socket_receive")
-  (return-type "gssize")
-  (parameters
-    '("gchar*" "buffer")
-    '("gsize" "size")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method receive_from
-  (of-object "GSocket")
-  (c-name "g_socket_receive_from")
-  (return-type "gssize")
-  (parameters
-    '("GSocketAddress**" "address")
-    '("gchar*" "buffer")
-    '("gsize" "size")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method send
-  (of-object "GSocket")
-  (c-name "g_socket_send")
-  (return-type "gssize")
-  (parameters
-    '("const-gchar*" "buffer")
-    '("gsize" "size")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method send_to
-  (of-object "GSocket")
-  (c-name "g_socket_send_to")
-  (return-type "gssize")
-  (parameters
-    '("GSocketAddress*" "address")
-    '("const-gchar*" "buffer")
-    '("gsize" "size")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method receive_message
-  (of-object "GSocket")
-  (c-name "g_socket_receive_message")
-  (return-type "gssize")
-  (parameters
-    '("GSocketAddress**" "address")
-    '("GInputVector*" "vectors")
-    '("gint" "num_vectors")
-    '("GSocketControlMessage***" "messages")
-    '("gint*" "num_messages")
-    '("gint*" "flags")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method send_message
-  (of-object "GSocket")
-  (c-name "g_socket_send_message")
-  (return-type "gssize")
-  (parameters
-    '("GSocketAddress*" "address")
-    '("GOutputVector*" "vectors")
-    '("gint" "num_vectors")
-    '("GSocketControlMessage**" "messages")
-    '("gint" "num_messages")
-    '("gint" "flags")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method close
-  (of-object "GSocket")
-  (c-name "g_socket_close")
-  (return-type "gboolean")
-  (parameters
-    '("GError**" "error")
-  )
-)
-
-(define-method shutdown
-  (of-object "GSocket")
-  (c-name "g_socket_shutdown")
-  (return-type "gboolean")
-  (parameters
-    '("gboolean" "shutdown_read")
-    '("gboolean" "shutdown_write")
-    '("GError**" "error")
-  )
-)
-
-(define-method is_closed
-  (of-object "GSocket")
-  (c-name "g_socket_is_closed")
-  (return-type "gboolean")
-)
-
-(define-method create_source
-  (of-object "GSocket")
-  (c-name "g_socket_create_source")
-  (return-type "GSource*")
-  (parameters
-    '("GIOCondition" "condition")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-  )
-)
-
-(define-method speaks_ipv4
-  (of-object "GSocket")
-  (c-name "g_socket_speaks_ipv4")
-  (return-type "gboolean")
-)
-
-
-
-;; From gsocketlistener.h
-
-(define-function socket_listener_get_type
-  (c-name "g_socket_listener_get_type")
-  (return-type "GType")
-)
-
-(define-function socket_listener_new
-  (c-name "g_socket_listener_new")
-  (is-constructor-of "GSocketListener")
-  (return-type "GSocketListener*")
-)
-
-(define-method set_backlog
-  (of-object "GSocketListener")
-  (c-name "g_socket_listener_set_backlog")
-  (return-type "none")
-  (parameters
-    '("int" "listen_backlog")
-  )
-)
-
-(define-method add_socket
-  (of-object "GSocketListener")
-  (c-name "g_socket_listener_add_socket")
-  (return-type "gboolean")
-  (parameters
-    '("GSocket*" "socket")
-    '("GObject*" "source_object")
-    '("GError**" "error")
-  )
-)
-
-(define-method add_address
-  (of-object "GSocketListener")
-  (c-name "g_socket_listener_add_address")
-  (return-type "gboolean")
-  (parameters
-    '("GSocketAddress*" "address")
-    '("GSocketType" "type")
-    '("GSocketProtocol" "protocol")
-    '("GObject*" "source_object")
-    '("GSocketAddress**" "effective_address")
-    '("GError**" "error")
-  )
-)
-
-(define-method add_inet_port
-  (of-object "GSocketListener")
-  (c-name "g_socket_listener_add_inet_port")
-  (return-type "gboolean")
-  (parameters
-    '("guint16" "port")
-    '("GObject*" "source_object")
-    '("GError**" "error")
-  )
-)
-
-(define-method accept_socket
-  (of-object "GSocketListener")
-  (c-name "g_socket_listener_accept_socket")
-  (return-type "GSocket*")
-  (parameters
-    '("GObject**" "source_object")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method accept_socket_async
-  (of-object "GSocketListener")
-  (c-name "g_socket_listener_accept_socket_async")
-  (return-type "none")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method accept_socket_finish
-  (of-object "GSocketListener")
-  (c-name "g_socket_listener_accept_socket_finish")
-  (return-type "GSocket*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GObject**" "source_object")
-    '("GError**" "error")
-  )
-)
-
-(define-method accept
-  (of-object "GSocketListener")
-  (c-name "g_socket_listener_accept")
-  (return-type "GSocketConnection*")
-  (parameters
-    '("GObject**" "source_object")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GError**" "error")
-  )
-)
-
-(define-method accept_async
-  (of-object "GSocketListener")
-  (c-name "g_socket_listener_accept_async")
-  (return-type "none")
-  (parameters
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method accept_finish
-  (of-object "GSocketListener")
-  (c-name "g_socket_listener_accept_finish")
-  (return-type "GSocketConnection*")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GObject**" "source_object")
-    '("GError**" "error")
-  )
-)
-
-(define-method close
-  (of-object "GSocketListener")
-  (c-name "g_socket_listener_close")
-  (return-type "none")
-)
-
-
-
-;; From gsocketservice.h
-
-(define-function socket_service_get_type
-  (c-name "g_socket_service_get_type")
-  (return-type "GType")
-)
-
-(define-function socket_service_new
-  (c-name "g_socket_service_new")
-  (is-constructor-of "GSocketService")
-  (return-type "GSocketService*")
-)
-
-(define-method start
-  (of-object "GSocketService")
-  (c-name "g_socket_service_start")
-  (return-type "none")
-)
-
-(define-method stop
-  (of-object "GSocketService")
-  (c-name "g_socket_service_stop")
-  (return-type "none")
-)
-
-(define-method is_active
-  (of-object "GSocketService")
-  (c-name "g_socket_service_is_active")
-  (return-type "gboolean")
-)
-
-
-
-;; From gsrvtarget.h
-
-(define-function srv_target_get_type
-  (c-name "g_srv_target_get_type")
-  (return-type "GType")
-)
-
-(define-function srv_target_new
-  (c-name "g_srv_target_new")
-  (is-constructor-of "GSrvTarget")
-  (return-type "GSrvTarget*")
-  (parameters
-    '("const-gchar*" "hostname")
-    '("guint16" "port")
-    '("guint16" "priority")
-    '("guint16" "weight")
-  )
-)
-
-(define-method copy
-  (of-object "GSrvTarget")
-  (c-name "g_srv_target_copy")
-  (return-type "GSrvTarget*")
-)
-
-(define-method free
-  (of-object "GSrvTarget")
-  (c-name "g_srv_target_free")
-  (return-type "none")
-)
-
-(define-method get_hostname
-  (of-object "GSrvTarget")
-  (c-name "g_srv_target_get_hostname")
-  (return-type "const-gchar*")
-)
-
-(define-method get_port
-  (of-object "GSrvTarget")
-  (c-name "g_srv_target_get_port")
-  (return-type "guint16")
-)
-
-(define-method get_priority
-  (of-object "GSrvTarget")
-  (c-name "g_srv_target_get_priority")
-  (return-type "guint16")
-)
-
-(define-method get_weight
-  (of-object "GSrvTarget")
-  (c-name "g_srv_target_get_weight")
-  (return-type "guint16")
-)
-
-(define-function srv_target_list_sort
-  (c-name "g_srv_target_list_sort")
-  (return-type "GList*")
-  (parameters
-    '("GList*" "targets")
-  )
-)
-
-
-
-;; From gthemedicon.h
-
-(define-function themed_icon_get_type
-  (c-name "g_themed_icon_get_type")
-  (return-type "GType")
-)
-
-(define-function themed_icon_new
-  (c-name "g_themed_icon_new")
-  (is-constructor-of "GThemedIcon")
-  (return-type "GIcon*")
-  (properties
-    '("name" (argname "iconname"))
-  )
-)
-
-(define-function themed_icon_new_with_default_fallbacks
-  (c-name "g_themed_icon_new_with_default_fallbacks")
-  (return-type "GIcon*")
-  (parameters
-    '("const-char*" "iconname")
-  )
-)
-
-(define-function themed_icon_new_from_names
-  (c-name "g_themed_icon_new_from_names")
-  (return-type "GIcon*")
-  (parameters
-    '("char**" "iconnames")
-    '("int" "len")
-  )
-)
-
-(define-method prepend_name
-  (of-object "GThemedIcon")
-  (c-name "g_themed_icon_prepend_name")
-  (return-type "none")
-  (parameters
-    '("const-char*" "iconname")
-  )
-)
-
-;;
-;; wrapped in gicon.override
-;;
-(define-method get_names
-  (c-name "g_themed_icon_get_names")
-  (of-object "GThemedIcon")
-  (return-type "const-gchar*-const*")
-)
-
-(define-method append_name
-  (c-name "g_themed_icon_append_name")
-  (of-object "GThemedIcon")
-  (return-type "none")
-  (parameters
-    '("char*" "iconname")
-  )
-)
-
-
-
-;; From gthreadedsocketservice.h
-
-(define-function threaded_socket_service_get_type
-  (c-name "g_threaded_socket_service_get_type")
-  (return-type "GType")
-)
-
-(define-function threaded_socket_service_new
-  (c-name "g_threaded_socket_service_new")
-  (is-constructor-of "GThreadedSocketService")
-  (return-type "GSocketService*")
-  (parameters
-    '("int" "max_threads")
-  )
-)
-
-
-
-;; From gunixinputstream.h
-
-(define-function unix_input_stream_get_type
-  (c-name "g_unix_input_stream_get_type")
-  (return-type "GType")
-)
-
-(define-function unix_input_stream_new
-  (c-name "g_unix_input_stream_new")
-  (is-constructor-of "GUnixInputStream")
-  (return-type "GInputStream*")
-  (parameters
-    '("int" "fd")
-    '("gboolean" "close_fd_at_close")
-  )
-)
-
-
-
-;; From gvfs.h
-
-(define-function vfs_get_type
-  (c-name "g_vfs_get_type")
-  (return-type "GType")
-)
-
-(define-method is_active
-  (of-object "GVfs")
-  (c-name "g_vfs_is_active")
-  (return-type "gboolean")
-)
-
-(define-method get_file_for_path
-  (of-object "GVfs")
-  (c-name "g_vfs_get_file_for_path")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "path")
-  )
-)
-
-(define-method get_file_for_uri
-  (of-object "GVfs")
-  (c-name "g_vfs_get_file_for_uri")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "uri")
-  )
-)
-
-(define-method parse_name
-  (of-object "GVfs")
-  (c-name "g_vfs_parse_name")
-  (return-type "GFile*")
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "parse_name")
-  )
-)
-
-(define-function vfs_get_default
-  (c-name "g_vfs_get_default")
-  (return-type "GVfs*")
-)
-
-(define-function vfs_get_local
-  (c-name "g_vfs_get_local")
-  (return-type "GVfs*")
-)
-
-;;
-;; wrapped in gio.override
-;;
-(define-method get_supported_uri_schemes
-  (docstring
-"VFS.get_supported_uri_schemes() -> [uri, ..]\n"
-"Gets a list of URI schemes supported by vfs.")
-  (of-object "GVfs")
-  (c-name "g_vfs_get_supported_uri_schemes")
-  (return-type "const-char*-const*")
-)
-
-
-
-;; From gwin32appinfo.h
-
-(define-function win32_app_info_get_type
-  (c-name "g_win32_app_info_get_type")
-  (return-type "GType")
-)
-
-
-
-;; From gvolume.h
-
-(define-function volume_get_type
-  (c-name "g_volume_get_type")
-  (return-type "GType")
-)
-
-(define-method get_name
-  (of-object "GVolume")
-  (c-name "g_volume_get_name")
-  (return-type "char*")
-)
-
-(define-method get_icon
-  (of-object "GVolume")
-  (c-name "g_volume_get_icon")
-  (return-type "GIcon*")
-  (caller-owns-return #t)
-)
-
-(define-method get_uuid
-  (of-object "GVolume")
-  (c-name "g_volume_get_uuid")
-  (return-type "char*")
-)
-
-(define-method get_drive
-  (of-object "GVolume")
-  (c-name "g_volume_get_drive")
-  (return-type "GDrive*")
-  (caller-owns-return #t)
-)
-
-(define-method get_mount
-  (of-object "GVolume")
-  (c-name "g_volume_get_mount")
-  (return-type "GMount*")
-  (caller-owns-return #t)
-)
-
-(define-method can_mount
-  (of-object "GVolume")
-  (c-name "g_volume_can_mount")
-  (return-type "gboolean")
-)
-
-(define-method can_eject
-  (of-object "GVolume")
-  (c-name "g_volume_can_eject")
-  (return-type "gboolean")
-)
-
-(define-method should_automount
-  (of-object "GVolume")
-  (c-name "g_volume_should_automount")
-  (return-type "gboolean")
-)
-
-;;
-;; wrapped in gvolume.override
-;;
-(define-method mount
-  (of-object "GVolume")
-  (c-name "g_volume_mount")
-  (return-type "none")
-  (parameters
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method mount_finish
-  (of-object "GVolume")
-  (c-name "g_volume_mount_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-;;
-;; wrapped in gvolume.override
-;;
-(define-method eject
-  (of-object "GVolume")
-  (c-name "g_volume_eject")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags" (default "G_MOUNT_UNMOUNT_NONE"))
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method eject_finish
-  (of-object "GVolume")
-  (c-name "g_volume_eject_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-  (deprecated "use gio.Drive.eject_with_operation_finish instead.")
-)
-
-(define-method get_identifier
-  (of-object "GVolume")
-  (c-name "g_volume_get_identifier")
-  (return-type "char*")
-  (parameters
-    '("const-char*" "kind")
-  )
-)
-
-;;
-;; wrapped in gvolume.override
-;;
-(define-method enumerate_identifiers
-  (of-object "GVolume")
-  (c-name "g_volume_enumerate_identifiers")
-  (return-type "char**")
-)
-
-(define-method get_activation_root
-  (of-object "GVolume")
-  (c-name "g_volume_get_activation_root")
-  (return-type "GFile*")
-)
-
-(define-method eject_with_operation
-  (of-object "GVolume")
-  (c-name "g_volume_eject_with_operation")
-  (return-type "none")
-  (parameters
-    '("GMountUnmountFlags" "flags")
-    '("GMountOperation*" "mount_operation")
-    '("GCancellable*" "cancellable" (null-ok) (default "NULL"))
-    '("GAsyncReadyCallback" "callback")
-    '("gpointer" "user_data")
-  )
-)
-
-(define-method eject_with_operation_finish
-  (of-object "GVolume")
-  (c-name "g_volume_eject_with_operation_finish")
-  (return-type "gboolean")
-  (parameters
-    '("GAsyncResult*" "result")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gvolumemonitor.h
-
-(define-function volume_monitor_get_type
-  (c-name "g_volume_monitor_get_type")
-  (return-type "GType")
-)
-
-(define-function volume_monitor_get
-  (c-name "g_volume_monitor_get")
-  (return-type "GVolumeMonitor*")
-)
-
-;;
-;; wrapped in gvolumemonitor.override
-;;
-(define-method get_connected_drives
-  (of-object "GVolumeMonitor")
-  (c-name "g_volume_monitor_get_connected_drives")
-  (return-type "GList*")
-)
-
-;;
-;; wrapped in gvolumemonitor.override
-;;
-(define-method get_volumes
-  (of-object "GVolumeMonitor")
-  (c-name "g_volume_monitor_get_volumes")
-  (return-type "GList*")
-)
-
-;;
-;; wrapped in gvolumemonitor.override
-;;
-(define-method get_mounts
-  (of-object "GVolumeMonitor")
-  (c-name "g_volume_monitor_get_mounts")
-  (return-type "GList*")
-)
-
-(define-method get_volume_for_uuid
-  (of-object "GVolumeMonitor")
-  (c-name "g_volume_monitor_get_volume_for_uuid")
-  (return-type "GVolume*")
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "uuid")
-  )
-)
-
-(define-method get_mount_for_uuid
-  (of-object "GVolumeMonitor")
-  (c-name "g_volume_monitor_get_mount_for_uuid")
-  (return-type "GMount*")
-  (caller-owns-return #t)
-  (parameters
-    '("const-char*" "uuid")
-  )
-)
-
-(define-function volume_monitor_adopt_orphan_mount
-  (c-name "g_volume_monitor_adopt_orphan_mount")
-  (return-type "GVolume*")
-  (parameters
-    '("GMount*" "mount")
-  )
-)
-
diff --git a/gio/gio.override b/gio/gio.override
deleted file mode 100644 (file)
index 7fdcb1c..0000000
+++ /dev/null
@@ -1,409 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 2008  Johan Dahlin
- *
- *   gio.override: module wrapping the GIO library
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-modulename gio
-%%
-import gobject.GObject as PyGObject_Type
-import glib.PollFD as PyGPollFD_Type
-%%
-headers
-#define NO_IMPORT_PYGOBJECT
-#include <pygobject.h>
-#include <gio/gio.h>
-#include "pygio-utils.h"
-#include "pyglib.h"
-#include "pygsource.h"
-
-#define BUFSIZE 8192
-
-typedef struct _PyGIONotify PyGIONotify;
-
-struct _PyGIONotify {
-    gboolean  referenced;
-    PyObject *callback;
-    PyObject *data;
-    gboolean  attach_self;
-    gpointer  buffer;
-    gsize     buffer_size;
-
-    /* If a structure has any 'slaves', those will reference their
-     * callbacks and be freed together with the 'master'. */
-    PyGIONotify *slaves;
-};
-
-static GQuark
-pygio_notify_get_internal_quark(void)
-{
-    static GQuark quark = 0;
-    if (!quark)
-        quark = g_quark_from_string("pygio::notify");
-    return quark;
-}
-
-static PyGIONotify *
-pygio_notify_new(void)
-{
-    return g_slice_new0(PyGIONotify);
-}
-
-static PyGIONotify *
-pygio_notify_new_slave(PyGIONotify* master)
-{
-    PyGIONotify *slave = pygio_notify_new();
-
-    while (master->slaves)
-        master = master->slaves;
-    master->slaves = slave;
-
-    return slave;
-}
-
-static gboolean
-pygio_notify_using_optional_callback(PyGIONotify *notify)
-{
-    if (notify->callback)
-        return TRUE;
-    else {
-        notify->data = NULL;
-        return FALSE;
-    }
-}
-
-static gboolean
-pygio_notify_callback_is_valid_full(PyGIONotify *notify, const gchar *name)
-{
-    if (!notify->callback) {
-        PyErr_SetString(PyExc_RuntimeError, "internal error: callback is not set");
-        return FALSE;
-    }
-
-    if (!PyCallable_Check(notify->callback)) {
-        gchar *error_message = g_strdup_printf("%s argument not callable", name);
-
-       PyErr_SetString(PyExc_TypeError, error_message);
-        g_free(error_message);
-       return FALSE;
-    }
-
-    return TRUE;
-}
-
-static gboolean
-pygio_notify_callback_is_valid(PyGIONotify *notify)
-{
-    return pygio_notify_callback_is_valid_full(notify, "callback");
-}
-
-static void
-pygio_notify_reference_callback(PyGIONotify *notify)
-{
-    if (!notify->referenced) {
-        notify->referenced = TRUE;
-        Py_XINCREF(notify->callback);
-        Py_XINCREF(notify->data);
-
-        if (notify->slaves)
-            pygio_notify_reference_callback(notify->slaves);
-    }
-}
-
-static void
-pygio_notify_copy_buffer(PyGIONotify *notify, gpointer buffer, gsize buffer_size)
-{
-    if (buffer_size > 0) {
-       notify->buffer = g_slice_copy(buffer_size, buffer);
-       notify->buffer_size = buffer_size;
-    }
-}
-
-static gboolean
-pygio_notify_allocate_buffer(PyGIONotify *notify, gsize buffer_size)
-{
-    if (buffer_size > 0) {
-        notify->buffer = g_slice_alloc(buffer_size);
-        if (!notify->buffer) {
-            PyErr_Format(PyExc_MemoryError, "failed to allocate %" G_GSIZE_FORMAT " bytes", buffer_size);
-            return FALSE;
-        }
-
-        notify->buffer_size = buffer_size;
-    }
-
-    return TRUE;
-}
-
-static void
-pygio_notify_attach_to_result(PyGIONotify *notify)
-{
-    notify->attach_self = TRUE;
-}
-
-static PyGIONotify *
-pygio_notify_get_attached(PyGObject *result)
-{
-    return g_object_get_qdata(G_OBJECT(result->obj), pygio_notify_get_internal_quark());
-}
-
-static void
-pygio_notify_free(PyGIONotify *notify)
-{
-    if (notify) {
-        if (notify->slaves)
-            pygio_notify_free(notify->slaves);
-
-        if (notify->referenced) {
-            PyGILState_STATE state;
-
-            state = pyg_gil_state_ensure();
-            Py_XDECREF(notify->callback);
-            Py_XDECREF(notify->data);
-            pyg_gil_state_release(state);
-        }
-
-        if (notify->buffer)
-            g_slice_free1(notify->buffer_size, notify->buffer);
-
-        g_slice_free(PyGIONotify, notify);
-    }
-}
-
-static void
-async_result_callback_marshal(GObject *source_object,
-                             GAsyncResult *result,
-                             PyGIONotify *notify)
-{
-    PyObject *ret;
-    PyGILState_STATE state;
-
-    state = pyg_gil_state_ensure();
-
-    if (!notify->referenced)
-        g_warning("pygio_notify_reference_callback() hasn't been called before using the structure");
-
-    if (notify->attach_self) {
-        g_object_set_qdata_full(G_OBJECT(result), pygio_notify_get_internal_quark(),
-                                notify, (GDestroyNotify) pygio_notify_free);
-    }
-
-    if (notify->data)
-       ret = PyEval_CallFunction(notify->callback, "NNO",
-                                 pygobject_new(source_object),
-                                 pygobject_new((GObject *)result),
-                                 notify->data);
-    else
-       ret = PyObject_CallFunction(notify->callback, "NN",
-                                   pygobject_new(source_object),
-                                   pygobject_new((GObject *)result));
-
-    if (ret == NULL) {
-       PyErr_Print();
-       PyErr_Clear();
-    }
-
-    Py_XDECREF(ret);
-
-    /* Otherwise the structure is attached to 'result' and will be
-     * freed when that object dies. */
-    if (!notify->attach_self)
-        pygio_notify_free(notify);
-
-    pyg_gil_state_release(state);
-}
-%%
-include
-  gappinfo.override
-  gapplaunchcontext.override
-  gbufferedinputstream.override
-  gcancellable.override
-  gdatainputstream.override
-  gdrive.override
-  gfile.override
-  gfileattribute.override
-  gfileenumerator.override
-  gfileinfo.override
-  gfileinputstream.override
-  gfileiostream.override
-  gfileoutputstream.override
-  gicon.override
-  giostream.override
-  gmemoryinputstream.override
-  gmemoryoutputstream.override
-  gmount.override
-  ginputstream.override
-  goutputstream.override
-  gresolver.override
-  gsocket.override
-  gvolume.override
-  gvolumemonitor.override
-%%
-ignore-glob
-  *_get_type
-  *free
-  *_ref
-  *_unref
-  g_async_result_get_user_data
-  g_file_new_from_commandline_arg
-  g_file_new_from_path
-  g_file_new_from_uri
-  g_file_hash
-  g_io_error_quark
-  g_simple_async_result_new_error
-  g_simple_async_report_error_in_idle
-  g_simple_async_result_set_op_res_gpointer
-  g_simple_async_result_get_op_res_gpointer
-  g_simple_async_result_get_source_tag
-  g_simple_async_result_run_in_thread
-  g_simple_async_result_set_from_error
-  g_simple_async_result_set_error
-  g_simple_async_result_set_error_va
-  g_io_module*
-  g_io_scheduler_*
-%%
-override g_app_info_get_all noargs
-static PyObject *
-_wrap_g_app_info_get_all (PyGObject *self)
-{
-  GList *list, *l;
-  PyObject *ret;
-
-  list = g_app_info_get_all ();
-
-  ret = PyList_New(0);
-  for (l = list; l; l = l->next) {
-    GObject *obj = l->data;
-    PyObject *item = pygobject_new(obj);
-    PyList_Append(ret, item);
-    Py_DECREF(item);
-  }
-  g_list_free(list);
-
-  return ret;
-}
-%%
-override g_app_info_get_all_for_type args
-static PyObject *
-_wrap_g_app_info_get_all_for_type (PyGObject *self, PyObject *args)
-{
-  GList *list, *l;
-  PyObject *ret;
-  gchar *type;
-
-  if (!PyArg_ParseTuple (args, "s:app_info_get_all_for_type", &type))
-    return NULL;
-
-  list = g_app_info_get_all_for_type (type);
-
-  ret = PyList_New(0);
-  for (l = list; l; l = l->next) {
-    GObject *obj = l->data;
-    PyObject *item = pygobject_new(obj);
-    PyList_Append(ret, item);
-    Py_DECREF(item);
-  }
-  g_list_free(list);
-
-  return ret;
-}
-%%
-override g_content_type_guess kwargs
-static PyObject *
-_wrap_g_content_type_guess(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    char *kwlist[] = {"filename", "data", "want_uncertain", NULL};
-    char *filename = NULL, *data = NULL, *type;
-#ifdef PY_SSIZE_T_CLEAN
-    Py_ssize_t data_size = 0;
-#else
-    int data_size = 0;
-#endif
-
-    gboolean result_uncertain, want_uncertain = FALSE;
-    PyObject *ret;
-
-    if (!PyArg_ParseTupleAndKeywords (args, kwargs,
-                                     "|zz#i:g_content_type_guess",
-                                     kwlist,
-                                     &filename, &data, &data_size,
-                                     &want_uncertain))
-      return NULL;
-
-    if (!filename && !data) {
-      PyErr_SetString(PyExc_TypeError, "need at least one argument");
-      return NULL;
-    }
-
-    type = g_content_type_guess(filename, (guchar *) data,
-                               data_size, &result_uncertain);
-
-    if (want_uncertain) {
-       ret = Py_BuildValue("zN", type, PyBool_FromLong(result_uncertain));
-    
-    } else {
-        ret = PyString_FromString(type);
-    }
-
-    g_free(type);
-    return ret;
-}
-%%
-override g_vfs_get_supported_uri_schemes noargs
-static PyObject *
-_wrap_g_vfs_get_supported_uri_schemes(PyGObject *self)
-{
-    const char * const *names;
-    PyObject *ret;
-
-    names = g_vfs_get_supported_uri_schemes(G_VFS(self->obj));
-
-    ret = PyList_New(0);
-    while (names && *names) {
-        PyObject *item = PyString_FromString(names[0]);
-        PyList_Append(ret, item);
-        Py_DECREF(item);
-
-        names++;
-    }
-
-    return ret;
-}
-%%
-override g_content_types_get_registered noargs
-static PyObject *
-_wrap_g_content_types_get_registered(PyObject *self)
-{
-    GList *list, *l;
-    PyObject *ret;
-
-    list = g_content_types_get_registered();
-
-    ret = PyList_New(0);
-    for (l = list; l; l = l->next) {
-       char *content_type = l->data;
-       PyObject *string = PyString_FromString(content_type);
-       PyList_Append(ret, string);
-       Py_DECREF(string);
-       g_free(content_type);
-    }
-    g_list_free(list);
-
-    return ret;
-}
diff --git a/gio/giomodule.c b/gio/giomodule.c
deleted file mode 100644 (file)
index a9ddd38..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- *
- *   giomodule.c: module wrapping the GIO library
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-#ifdef HAVE_CONFIG_H
-#  include "config.h"
-#endif
-#include <Python.h>
-#include <pyglib.h>
-#include <pygobject.h>
-#include <pyglib-python-compat.h>
-
-#include <gio/gio.h>
-
-#define PYGIO_MAJOR_VERSION PYGOBJECT_MAJOR_VERSION
-#define PYGIO_MINOR_VERSION PYGOBJECT_MINOR_VERSION
-#define PYGIO_MICRO_VERSION PYGOBJECT_MICRO_VERSION
-
-/* include any extra headers needed here */
-
-void pygio_register_classes(PyObject *d);
-void pygio_add_constants(PyObject *module, const gchar *strip_prefix);
-
-extern PyMethodDef pygio_functions[];
-
-PYGLIB_INIT_FUNCTION(_gio, "gio._gio", pygio_functions)
-{
-    PyObject *d;
-    PyObject *tuple;
-    PyObject *e;
-
-    /* perform any initialisation required by the library here */
-
-    d = PyModule_GetDict(module);
-
-    g_type_init();
-    pyglib_init();
-
-    if (pygobject_init(2, 15, 2) == NULL)
-        return -1;
-
-    pygio_register_classes(d);
-    pygio_add_constants(module, "G_IO_");
-
-    PyModule_AddStringConstant(module, "ERROR", g_quark_to_string(G_IO_ERROR));
-    e = pyglib_register_exception_for_domain("gio.Error", G_IO_ERROR);
-    PyDict_SetItemString(d, "Error", e);
-    Py_DECREF(e);
-
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_TYPE",
-                              G_FILE_ATTRIBUTE_STANDARD_TYPE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_IS_HIDDEN",
-                              G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_IS_BACKUP",
-                              G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_IS_SYMLINK",
-                              G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL",
-                              G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_NAME",
-                              G_FILE_ATTRIBUTE_STANDARD_NAME);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME",
-                              G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_EDIT_NAME",
-                              G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_COPY_NAME",
-                              G_FILE_ATTRIBUTE_STANDARD_COPY_NAME);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_DESCRIPTION",
-                              G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_ICON",
-                              G_FILE_ATTRIBUTE_STANDARD_ICON);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE",
-                              G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE",
-                              G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_SIZE",
-                              G_FILE_ATTRIBUTE_STANDARD_SIZE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET",
-                              G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_TARGET_URI",
-                              G_FILE_ATTRIBUTE_STANDARD_TARGET_URI);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_STANDARD_SORT_ORDER",
-                              G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ETAG_VALUE",
-                              G_FILE_ATTRIBUTE_ETAG_VALUE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ID_FILE",
-                              G_FILE_ATTRIBUTE_ID_FILE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ID_FILESYSTEM",
-                              G_FILE_ATTRIBUTE_ID_FILESYSTEM);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_READ",
-                              G_FILE_ATTRIBUTE_ACCESS_CAN_READ);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_WRITE",
-                              G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE",
-                              G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_DELETE",
-                              G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_TRASH",
-                              G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_ACCESS_CAN_RENAME",
-                              G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT",
-                              G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT",
-                              G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT",
-                              G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE",
-                              G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI",
-                              G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_MODIFIED",
-                              G_FILE_ATTRIBUTE_TIME_MODIFIED);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_MODIFIED_USEC",
-                              G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_ACCESS",
-                              G_FILE_ATTRIBUTE_TIME_ACCESS);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_ACCESS_USEC",
-                              G_FILE_ATTRIBUTE_TIME_ACCESS_USEC);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_CHANGED",
-                              G_FILE_ATTRIBUTE_TIME_CHANGED);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_CHANGED_USEC",
-                              G_FILE_ATTRIBUTE_TIME_CHANGED_USEC);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_CREATED",
-                              G_FILE_ATTRIBUTE_TIME_CREATED);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TIME_CREATED_USEC",
-                              G_FILE_ATTRIBUTE_TIME_CREATED_USEC);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_DEVICE",
-                              G_FILE_ATTRIBUTE_UNIX_DEVICE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_INODE",
-                              G_FILE_ATTRIBUTE_UNIX_INODE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_MODE",
-                              G_FILE_ATTRIBUTE_UNIX_MODE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_NLINK",
-                              G_FILE_ATTRIBUTE_UNIX_NLINK);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_UID",
-                              G_FILE_ATTRIBUTE_UNIX_UID);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_GID",
-                              G_FILE_ATTRIBUTE_UNIX_GID);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_RDEV",
-                              G_FILE_ATTRIBUTE_UNIX_RDEV);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_BLOCK_SIZE",
-                              G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_BLOCKS",
-                              G_FILE_ATTRIBUTE_UNIX_BLOCKS);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT",
-                              G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_DOS_IS_ARCHIVE",
-                              G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_DOS_IS_SYSTEM",
-                              G_FILE_ATTRIBUTE_DOS_IS_SYSTEM);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_OWNER_USER",
-                              G_FILE_ATTRIBUTE_OWNER_USER);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_OWNER_USER_REAL",
-                              G_FILE_ATTRIBUTE_OWNER_USER_REAL);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_OWNER_GROUP",
-                              G_FILE_ATTRIBUTE_OWNER_GROUP);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_THUMBNAIL_PATH",
-                              G_FILE_ATTRIBUTE_THUMBNAIL_PATH);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_THUMBNAILING_FAILED",
-                              G_FILE_ATTRIBUTE_THUMBNAILING_FAILED);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_FILESYSTEM_SIZE",
-                              G_FILE_ATTRIBUTE_FILESYSTEM_SIZE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_FILESYSTEM_FREE",
-                              G_FILE_ATTRIBUTE_FILESYSTEM_FREE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_FILESYSTEM_TYPE",
-                              G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_FILESYSTEM_READONLY",
-                              G_FILE_ATTRIBUTE_FILESYSTEM_READONLY);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW",
-                              G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_GVFS_BACKEND",
-                              G_FILE_ATTRIBUTE_GVFS_BACKEND);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_SELINUX_CONTEXT",
-                              G_FILE_ATTRIBUTE_SELINUX_CONTEXT);
-    PyModule_AddStringConstant(module, "FILE_ATTRIBUTE_TRASH_ITEM_COUNT",
-                              G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT);
-
-    PyModule_AddStringConstant(module, "ERROR", g_quark_to_string(G_IO_ERROR));
-
-    /* pygio version */
-    tuple = Py_BuildValue ("(iii)",
-                          PYGIO_MAJOR_VERSION,
-                          PYGIO_MINOR_VERSION,
-                          PYGIO_MICRO_VERSION);
-    PyDict_SetItemString(d, "pygio_version", tuple);
-    Py_DECREF(tuple);
-
-    return 0;
-}
-
diff --git a/gio/giostream.override b/gio/giostream.override
deleted file mode 100644 (file)
index 29ec801..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2009  Gian Mario Tagliaretti
- *
- *   giostream.override: module overrides for GIOStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-%%
-override g_io_stream_close_async kwargs
-static PyObject *
-_wrap_g_io_stream_close_async(PyGObject *self,
-                              PyObject *args,
-                              PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "io_priority", "cancellable",
-                              "user_data", NULL };
-    int io_priority = G_PRIORITY_DEFAULT;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    PyGIONotify *notify;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|iOO:IOStream.close_async",
-                                     kwlist,
-                                     &notify->callback,
-                                     &io_priority,
-                                     &pycancellable,
-                                     &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_io_stream_close_async(G_IO_STREAM(self->obj),
-                            io_priority,
-                            cancellable,
-                            (GAsyncReadyCallback)async_result_callback_marshal,
-                            notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
diff --git a/gio/gmemoryinputstream.override b/gio/gmemoryinputstream.override
deleted file mode 100644 (file)
index 0495338..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- * Copyright (C) 2009  Gian Mario Tagliaretti
- *
- *   gmemoryinputstream.override: module overrides for GMemoryInputStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-override g_memory_input_stream_add_data kwargs
-static PyObject *
-_wrap_g_memory_input_stream_add_data(PyGObject *self,
-                                     PyObject *args,
-                                     PyObject *kwargs)
-{
-    static char *kwlist[] = { "data", NULL };
-    PyObject *data;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:gio.MemoryInputStream.add_data",
-                                     kwlist, &data))
-        return NULL;
-
-    if (data != Py_None) {
-        char *copy;
-        int length;
-
-        if (!PyString_Check(data)) {
-            PyErr_SetString(PyExc_TypeError, "data must be a string or None");
-            return NULL;
-        }
-
-        length = PyString_Size(data);
-        copy = g_malloc(length);
-        memcpy(copy, PyString_AsString(data), length);
-
-        g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(self->obj),
-                                       copy, length, (GDestroyNotify) g_free);
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-%%
-override g_memory_input_stream_new_from_data kwargs
-static PyObject *
-_wrap_g_memory_input_stream_new_from_data(PyGObject *self,
-                                          PyObject *args,
-                                          PyObject *kwargs)
-{
-    static char *kwlist[] = { "data", NULL };
-    PyObject *data;
-    GInputStream *stream = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O:gio.memory_input_stream_new_from_data",
-                                     kwlist, &data))
-        return NULL;
-
-    if (data != Py_None) {
-        char *copy;
-        int length;
-
-        if (!PyString_Check(data)) {
-            PyErr_SetString(PyExc_TypeError, "data must be a string or None");
-            return NULL;
-        }
-
-        length = PyString_Size(data);
-        copy = g_malloc(length);
-        memcpy(copy, PyString_AsString(data), length);
-
-        stream = g_memory_input_stream_new_from_data(copy, length,
-                                                      (GDestroyNotify) g_free);
-    }
-
-    return pygobject_new((GObject *)stream);
-}
diff --git a/gio/gmemoryoutputstream.override b/gio/gmemoryoutputstream.override
deleted file mode 100644 (file)
index 7614045..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- *
- *   gmemoryoutputstream.override: module overrides for GMemoryOutputStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-override g_memory_output_stream_new noargs
-static int
-_wrap_g_memory_output_stream_new(PyGObject *self)
-{
-    self->obj = (GObject *)g_memory_output_stream_new(NULL, 0, g_realloc, g_free);
-
-    if (!self->obj) {
-        PyErr_SetString(PyExc_RuntimeError, "could not create gio.MemoryOutputStream object");
-        return -1;
-    }
-
-    pygobject_register_wrapper((PyObject *)self);
-    return 0;
-}
-%%
-override g_memory_output_stream_get_data noargs
-static PyObject *
-_wrap_g_memory_output_stream_get_data(PyGObject *self)
-{
-    GMemoryOutputStream *stream = G_MEMORY_OUTPUT_STREAM(self->obj);
-    return PyString_FromStringAndSize(g_memory_output_stream_get_data(stream),
-                                     g_seekable_tell(G_SEEKABLE(stream)));
-}
diff --git a/gio/gmount.override b/gio/gmount.override
deleted file mode 100644 (file)
index 9fb0828..0000000
+++ /dev/null
@@ -1,454 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2009  Gian Mario Tagliaretti
- *
- *   gmount.override: module overrides for GMount
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-override g_mount_guess_content_type kwargs
-static PyObject *
-_wrap_g_mount_guess_content_type(PyGObject *self,
-                                 PyObject *args,
-                                 PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "force_rescan",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-    gboolean force_rescan;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "Oi|OO:Mount.guess_content_type",
-                                     kwlist,
-                                     &notify->callback,
-                                     &force_rescan,
-                                     &py_cancellable,
-                                     &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_mount_guess_content_type(G_MOUNT(self->obj),
-                            force_rescan,
-                            cancellable,
-                            (GAsyncReadyCallback)async_result_callback_marshal,
-                            notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
-    error:
-       pygio_notify_free(notify);
-       return NULL;
-}
-%%
-override g_mount_guess_content_type_finish kwargs
-static PyObject *
-_wrap_g_mount_guess_content_type_finish(PyGObject *self,
-                                        PyObject *args,
-                                        PyObject *kwargs)
-{
-    static char *kwlist[] = { "result", NULL };
-    PyGObject *result;
-    GError *error = NULL;
-    char **ret;
-    PyObject *py_ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!:Mount.guess_content_type_finish",
-                                      kwlist,
-                                      &PyGAsyncResult_Type,
-                                      &result))
-        return NULL;
-
-    ret = g_mount_guess_content_type_finish(G_MOUNT(self->obj),
-                                         G_ASYNC_RESULT(result->obj), &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (ret && ret[0] != NULL) {
-        py_ret = strv_to_pylist(ret);
-        g_strfreev (ret);
-    } else {
-        py_ret = Py_None;
-        Py_INCREF(py_ret);
-    }
-    return py_ret;
-}
-%%
-override g_mount_guess_content_type_sync kwargs
-static PyObject *
-_wrap_g_mount_guess_content_type_sync(PyGObject *self,
-                                      PyObject *args,
-                                      PyObject *kwargs)
-{
-    static char *kwlist[] = { "force_rescan", "cancellable", NULL };
-    gboolean force_rescan;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-    GError *error = NULL;
-    char **ret;
-    PyObject *py_ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "i|O:Mount.guess_content_type_sync",
-                                      kwlist,
-                                      &force_rescan,
-                                      &py_cancellable))
-        return NULL;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        return NULL;
-
-    ret = g_mount_guess_content_type_sync(G_MOUNT(self->obj), force_rescan,
-                                          cancellable, &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (ret && ret[0] != NULL) {
-        py_ret = strv_to_pylist(ret);
-        g_strfreev (ret);
-    } else {
-        py_ret = Py_None;
-        Py_INCREF(py_ret);
-    }
-    return py_ret;
-}
-%%
-override g_mount_remount kwargs
-static PyObject *
-_wrap_g_mount_remount(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "mount_operation",
-                             "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    PyObject *py_mount_operation = Py_None;
-    GMountOperation *mount_operation = NULL;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOOO:gio.Mount.remount",
-                                    kwlist,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &py_mount_operation,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_mount_operation != Py_None) {
-       if (!pygobject_check(py_mount_operation, &PyGMountOperation_Type)) {
-           PyErr_SetString(PyExc_TypeError,
-                           "mount_operation must be a gio.MountOperation or None");
-            goto error;
-       }
-
-       mount_operation = G_MOUNT_OPERATION(pygobject_get(py_mount_operation));
-    }
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                       py_flags, (gpointer) &flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    pyg_begin_allow_threads;
-
-    g_mount_remount(G_MOUNT(self->obj),
-                   flags,
-                   mount_operation,
-                   cancellable,
-                   (GAsyncReadyCallback) async_result_callback_marshal,
-                   notify);
-
-    pyg_end_allow_threads;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_mount_unmount kwargs
-static PyObject *
-_wrap_g_mount_unmount(PyGObject *self,
-                     PyObject *args,
-                     PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags",
-                             "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *py_cancellable = NULL;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOO:gio.Mount.unmount",
-                                    kwlist,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                       py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    pyg_begin_allow_threads;
-
-    g_mount_unmount(G_MOUNT(self->obj),
-                   flags,
-                   cancellable,
-                   (GAsyncReadyCallback)async_result_callback_marshal,
-                   notify);
-
-    pyg_end_allow_threads;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_mount_eject kwargs
-static PyObject *
-_wrap_g_mount_eject(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOO:gio.Mount.eject",
-                                    kwlist,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                       py_flags, (gpointer) &flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    pyg_begin_allow_threads;
-
-    g_mount_eject(G_MOUNT(self->obj),
-                 flags,
-                 cancellable,
-                 (GAsyncReadyCallback) async_result_callback_marshal,
-                 notify);
-
-    pyg_end_allow_threads;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override-slot GMount.tp_repr
-static PyObject *
-_wrap_g_mount_tp_repr(PyGObject *self)
-{
-    char *name = g_mount_get_name(G_MOUNT(self->obj));
-    char *uuid = g_mount_get_uuid(G_MOUNT(self->obj));
-    gchar *representation;
-    PyObject *result;
-
-    if (name) {
-       if (uuid) {
-           representation = g_strdup_printf("<%s at %p: %s (%s)>",
-                                            self->ob_type->tp_name, self, name, uuid);
-       }
-       else {
-           representation = g_strdup_printf("<%s at %p: %s>",
-                                            self->ob_type->tp_name, self, name);
-       }
-    }
-    else
-       representation = g_strdup_printf("<%s at %p: UNKNOWN NAME>", self->ob_type->tp_name, self);
-
-    g_free(name);
-    g_free(uuid);
-
-    result = PyString_FromString(representation);
-    g_free(representation);
-    return result;
-}
-%%
-override g_mount_unmount_with_operation kwargs
-static PyObject *
-_wrap_g_mount_unmount_with_operation(PyGObject *self,
-                                     PyObject *args,
-                                     PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "mount_operation",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    PyGObject *py_cancellable = NULL;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                "O|OOOO:gio.Mount.unmount_with_operation",
-                                kwlist,
-                                &notify->callback,
-                                &py_flags,
-                               &mount_operation,
-                                &py_cancellable,
-                                &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_mount_unmount_with_operation(G_MOUNT(self->obj),
-                             flags,
-                            G_MOUNT_OPERATION(mount_operation->obj),
-                             cancellable,
-                             (GAsyncReadyCallback)async_result_callback_marshal,
-                             notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_mount_eject_with_operation kwargs
-static PyObject *
-_wrap_g_mount_eject_with_operation(PyGObject *self,
-                                     PyObject *args,
-                                     PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "mount_operation",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    PyGObject *py_cancellable = NULL;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                "O|OOOO:gio.Mount.eject_with_operation",
-                                kwlist,
-                                &notify->callback,
-                                &py_flags,
-                                &mount_operation,
-                                &py_cancellable,
-                                &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_mount_eject_with_operation(G_MOUNT(self->obj),
-                            flags,
-                            G_MOUNT_OPERATION(mount_operation->obj),
-                            cancellable,
-                            (GAsyncReadyCallback)async_result_callback_marshal,
-                            notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
diff --git a/gio/goutputstream.override b/gio/goutputstream.override
deleted file mode 100644 (file)
index 337a84c..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- *
- *   goutputstream.override: module overrides for GOutputStream
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-override g_output_stream_write kwargs
-static PyObject *
-_wrap_g_output_stream_write(PyGObject *self,
-                           PyObject *args,
-                           PyObject *kwargs)
-{
-  static char *kwlist[] = { "buffer", "cancellable", NULL };
-  PyGObject *pycancellable = NULL;
-  gchar *buffer;
-  long count = 0; 
-  GCancellable *cancellable;
-  GError *error = NULL;
-  gssize written;
-  
-  if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                  "s#|O!:OutputStream.write",
-                                  kwlist, &buffer, &count,
-                                  &PyGCancellable_Type, &pycancellable))
-    return NULL;
-  
-  if (!pygio_check_cancellable(pycancellable, &cancellable))
-      return NULL;
-
-  pyg_begin_allow_threads;
-  written = g_output_stream_write(G_OUTPUT_STREAM(self->obj),
-                                 buffer, count, cancellable, &error);
-  pyg_end_allow_threads;
-
-  if (pyg_error_check(&error))
-    return NULL;
-      
-  return PyInt_FromLong(written);
-}
-%%
-override g_output_stream_write_all kwargs
-static PyObject *
-_wrap_g_output_stream_write_all(PyGObject *self,
-                               PyObject *args,
-                               PyObject *kwargs)
-{
-  static char *kwlist[] = { "buffer", "cancellable", NULL };
-  PyGObject *pycancellable = NULL;
-  gchar *buffer;
-  long count = 0; 
-  GCancellable *cancellable;
-  GError *error = NULL;
-  gsize written;
-
-  if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                  "s#|O!:OutputStream.write",
-                                  kwlist, &buffer, &count,
-                                  &PyGCancellable_Type, &pycancellable))
-    return NULL;
-
-  if (!pygio_check_cancellable(pycancellable, &cancellable))
-      return NULL;
-
-  pyg_begin_allow_threads;
-  g_output_stream_write_all(G_OUTPUT_STREAM(self->obj),
-                           buffer, count, &written, cancellable, &error);
-  pyg_end_allow_threads;
-
-  if (pyg_error_check(&error))
-    return NULL;
-      
-  return PyInt_FromLong(written);
-}
-%%
-override g_output_stream_write_async kwargs
-static PyObject *
-_wrap_g_output_stream_write_async(PyGObject *self,
-                                 PyObject *args,
-                                 PyObject *kwargs)
-{
-  static char *kwlist[] = { "buffer", "callback", "io_priority", "cancellable",
-                           "user_data", NULL };
-  gchar *buffer;
-  long count = -1;
-  int io_priority = G_PRIORITY_DEFAULT;
-  PyGObject *pycancellable = NULL;
-  GCancellable *cancellable;
-  PyGIONotify *notify;
-
-  notify = pygio_notify_new();
-
-  if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                  "s#O|iOO:OutputStream.write_async",
-                                  kwlist, &buffer,
-                                  &count,
-                                  &notify->callback,
-                                  &io_priority,
-                                  &pycancellable,
-                                  &notify->data))
-      goto error;
-
-  if (!pygio_notify_callback_is_valid(notify))
-      goto error;
-  
-  if (!pygio_check_cancellable(pycancellable, &cancellable))
-      goto error;
-
-  pygio_notify_reference_callback(notify);
-  pygio_notify_copy_buffer(notify, buffer, count);
-
-  g_output_stream_write_async(G_OUTPUT_STREAM(self->obj),
-                             notify->buffer,
-                             notify->buffer_size,
-                             io_priority,
-                             cancellable,
-                             (GAsyncReadyCallback)async_result_callback_marshal,
-                             notify);
-  
-  Py_INCREF(Py_None);
-  return Py_None;
-
- error:
-  pygio_notify_free(notify);
-  return NULL;
-}
-%%
-override g_output_stream_close_async kwargs
-static PyObject *
-_wrap_g_output_stream_close_async(PyGObject *self,
-                                 PyObject *args,
-                                 PyObject *kwargs)
-{
-  static char *kwlist[] = { "callback", "io_priority",
-                           "cancellable", "user_data", NULL };
-  int io_priority = G_PRIORITY_DEFAULT;
-  PyGObject *pycancellable = NULL;
-  GCancellable *cancellable;
-  PyGIONotify *notify;
-
-  notify = pygio_notify_new();
-
-  if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                  "O|iOO:OutputStream.close_async",
-                                  kwlist,
-                                  &notify->callback,
-                                  &io_priority,
-                                  &pycancellable,
-                                  &notify->data))
-      goto error;
-
-  if (!pygio_notify_callback_is_valid(notify))
-      goto error;
-
-  if (!pygio_check_cancellable(pycancellable, &cancellable))
-      goto error;
-
-  pygio_notify_reference_callback(notify);
-  
-  g_output_stream_close_async(G_OUTPUT_STREAM(self->obj),
-                             io_priority,
-                             cancellable,
-                             (GAsyncReadyCallback)async_result_callback_marshal,
-                             notify);
-  
-  Py_INCREF(Py_None);
-  return Py_None;
-
- error:
-  pygio_notify_free(notify);
-  return NULL;
-}
-%%
-override g_output_stream_flush_async kwargs
-static PyObject *
-_wrap_g_output_stream_flush_async(PyGObject *self,
-                                 PyObject *args,
-                                 PyObject *kwargs)
-{
-  static char *kwlist[] = { "callback", "io_priority",
-                           "cancellable", "user_data", NULL };
-  int io_priority = G_PRIORITY_DEFAULT;
-  PyGObject *pycancellable = NULL;
-  GCancellable *cancellable;
-  PyGIONotify *notify;
-
-  notify = pygio_notify_new();
-
-  if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                  "O|iOO:OutputStream.flush_async",
-                                  kwlist,
-                                  &notify->callback,
-                                  &io_priority,
-                                  &pycancellable,
-                                  &notify->data))
-      goto error;
-
-  if (!pygio_notify_callback_is_valid(notify))
-      goto error;
-
-  if (!pygio_check_cancellable(pycancellable, &cancellable))
-      goto error;
-
-  pygio_notify_reference_callback(notify);
-  
-  g_output_stream_flush_async(G_OUTPUT_STREAM(self->obj),
-                             io_priority,
-                             cancellable,
-                             (GAsyncReadyCallback)async_result_callback_marshal,
-                             notify);
-  
-  Py_INCREF(Py_None);
-  return Py_None;
-
- error:
-  pygio_notify_free(notify);
-  return NULL;
-}
-%%
-override g_output_stream_splice_async kwargs
-static PyObject *
-_wrap_g_output_stream_splice_async(PyGObject *self,
-                                   PyObject *args,
-                                   PyObject *kwargs)
-{
-    static char *kwlist[] = { "source", "callback", "flags", "io_priority",
-                              "cancellable", "user_data", NULL };
-    
-    int io_priority = G_PRIORITY_DEFAULT;
-    GOutputStreamSpliceFlags flags = G_OUTPUT_STREAM_SPLICE_NONE;
-    PyObject *py_flags = NULL;
-    PyGObject *source;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    PyGIONotify *notify;
-  
-    notify = pygio_notify_new();
-  
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!O|OiOO:OutputStream.splice_async",
-                                     kwlist,
-                                     &PyGInputStream_Type,
-                                     &source,
-                                     &notify->callback,
-                                     &py_flags,
-                                     &io_priority,
-                                     &pycancellable,
-                                     &notify->data))
-        goto error;
-  
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-  
-    if (py_flags && pyg_flags_get_value(G_TYPE_OUTPUT_STREAM_SPLICE_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-    
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-        goto error;
-  
-    pygio_notify_reference_callback(notify);
-    
-    g_output_stream_splice_async(G_OUTPUT_STREAM(self->obj),
-                            G_INPUT_STREAM(source->obj), flags, io_priority,
-                            cancellable,
-                            (GAsyncReadyCallback)async_result_callback_marshal,
-                            notify);
-    
-    Py_INCREF(Py_None);
-        return Py_None;
-  
-    error:
-        pygio_notify_free(notify);
-        return NULL;
-}
-
-/* GOutputStream.write_all: No ArgType for const-void* */
diff --git a/gio/gresolver.override b/gio/gresolver.override
deleted file mode 100644 (file)
index ddde73b..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2009  Gian Mario Tagliaretti
- *
- *   gresolver.override: module overrides for GResolver
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-override g_resolver_lookup_by_name kwargs
-static PyObject *
-_wrap_g_resolver_lookup_by_name(PyGObject *self,
-                                PyObject *args,
-                                PyObject *kwargs)
-{
-    static char *kwlist[] = { "hostname", "cancellable", NULL };
-    gchar *hostname;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    GList *addr;
-    GError *error = NULL;
-    PyObject *ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "s|O:gio.Resolver.lookup_by_name",
-                                    kwlist,
-                                    &hostname,
-                                    &pycancellable))
-        return NULL;
-    
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-       return NULL;
-    
-    addr = g_resolver_lookup_by_name(G_RESOLVER(self->obj),
-                                     hostname, cancellable, &error);
-    
-    if (addr) {
-        PYLIST_FROMGLIST(ret, addr, pygobject_new(list_item), g_resolver_free_addresses, NULL);
-        return ret;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-%%
-override g_resolver_lookup_by_name_async kwargs
-static PyObject *
-_wrap_g_resolver_lookup_by_name_async(PyGObject *self,
-                                      PyObject *args,
-                                      PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "hostname",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    gchar *hostname;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "Os|OO:gio.Resolver.lookup_by_name_async",
-                                     kwlist,
-                                     &notify->callback,
-                                     &hostname,
-                                     &py_cancellable,
-                                     &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_resolver_lookup_by_name_async(G_RESOLVER(self->obj),
-                          hostname,
-                          cancellable,
-                          (GAsyncReadyCallback) async_result_callback_marshal,
-                          notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_resolver_lookup_by_name_finish kwargs
-static PyObject *
-_wrap_g_resolver_lookup_by_name_finish(PyGObject *self,
-                                       PyObject *args,
-                                       PyObject *kwargs)
-{
-    static char *kwlist[] = { "result", NULL };
-    PyGObject *result;
-    GList *addr;
-    PyObject *ret;
-    GError *error = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!:gio.Resolver.lookup_by_name_finish",
-                                     kwlist,
-                                     &PyGAsyncResult_Type,
-                                     &result))
-        return NULL;
-    
-    addr = g_resolver_lookup_by_name_finish(G_RESOLVER(self->obj),
-                                            G_ASYNC_RESULT(result->obj),
-                                            &error);
-    
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (addr) {
-        PYLIST_FROMGLIST(ret, addr, pygobject_new(list_item),
-                         g_resolver_free_addresses, NULL);
-        return ret;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-%%
-override g_resolver_lookup_by_address_async kwargs
-static PyObject *
-_wrap_g_resolver_lookup_by_address_async(PyGObject *self,
-                                         PyObject *args,
-                                         PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "address",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyGObject *address;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "OO|OO:gio.Resolver.lookup_by_address_async",
-                                     kwlist,
-                                     &notify->callback,
-                                     &address,
-                                     &py_cancellable,
-                                     &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_resolver_lookup_by_address_async(G_RESOLVER(self->obj),
-                          G_INET_ADDRESS(address->obj),
-                          cancellable,
-                          (GAsyncReadyCallback) async_result_callback_marshal,
-                          notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_resolver_lookup_service kwargs
-static PyObject *
-_wrap_g_resolver_lookup_service(PyGObject *self,
-                                PyObject *args,
-                                PyObject *kwargs)
-{
-    static char *kwlist[] = { "service", "protocol",
-                              "domain", "cancellable", NULL };
-    gchar *service, *protocol, *domain;
-    PyGObject *pycancellable = NULL;
-    GCancellable *cancellable;
-    GList *targets;
-    GError *error = NULL;
-    PyObject *ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "sss|O:gio.Resolver.lookup_service",
-                                    kwlist,
-                                    &service,
-                                    &protocol,
-                                    &domain,
-                                    &pycancellable))
-        return NULL;
-    
-    if (!pygio_check_cancellable(pycancellable, &cancellable))
-       return NULL;
-    
-    targets = g_resolver_lookup_service(G_RESOLVER(self->obj),
-                                        service, protocol, domain,
-                                        cancellable, &error);
-    
-    if (targets) {
-        PYLIST_FROMGLIST(ret, targets,
-                        pyg_boxed_new(G_TYPE_SRV_TARGET, list_item, TRUE, TRUE),
-                        g_resolver_free_targets, NULL);
-        return ret;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-%%
-override g_resolver_lookup_service_async kwargs
-static PyObject *
-_wrap_g_resolver_lookup_service_async(PyGObject *self,
-                                      PyObject *args,
-                                      PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "service", "protocol", "domain",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    gchar *service, *protocol, *domain;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "Osss|OO:gio.Resolver.lookup_service_async",
-                                    kwlist,
-                                    &notify->callback,
-                                    &service,
-                                    &protocol,
-                                    &domain,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_resolver_lookup_service_async(G_RESOLVER(self->obj),
-                          service, protocol, domain,
-                          cancellable,
-                          (GAsyncReadyCallback) async_result_callback_marshal,
-                          notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_resolver_lookup_service_finish kwargs
-static PyObject *
-_wrap_g_resolver_lookup_service_finish(PyGObject *self,
-                                       PyObject *args,
-                                       PyObject *kwargs)
-{
-    static char *kwlist[] = { "result", NULL };
-    PyGObject *result;
-    GList *targets;
-    PyObject *ret;
-    GError *error = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!:gio.Resolver.lookup_service_finish",
-                                     kwlist,
-                                     &PyGAsyncResult_Type,
-                                     &result))
-        return NULL;
-    
-    targets = g_resolver_lookup_service_finish(G_RESOLVER(self->obj),
-                                               G_ASYNC_RESULT(result->obj),
-                                               &error);
-    
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (targets) {
-        PYLIST_FROMGLIST(ret, targets,
-                        pyg_boxed_new(G_TYPE_SRV_TARGET, list_item, TRUE, TRUE),
-                        g_resolver_free_targets, NULL);
-        return ret;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
diff --git a/gio/gsocket.override b/gio/gsocket.override
deleted file mode 100644 (file)
index 8f66653..0000000
+++ /dev/null
@@ -1,575 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2009  Gian Mario Tagliaretti
- *
- *   gsocket.override: module overrides for GSocket and related types
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- */
-
-%%
-override g_socket_condition_check kwargs
-static PyObject *
-_wrap_g_socket_condition_check(PyGObject *self,
-                               PyObject *args,
-                               PyObject *kwargs)
-{
-    static char *kwlist[] = { "condition", NULL };
-    gint condition, ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "i:gio.Socket.condition_check",
-                                     kwlist, &condition))
-        return NULL;
-    
-    ret = g_socket_condition_check(G_SOCKET(self->obj), condition);
-    
-    return pyg_flags_from_gtype(G_TYPE_IO_CONDITION, ret);
-}
-%%
-override g_socket_condition_wait kwargs
-static PyObject *
-_wrap_g_socket_condition_wait(PyGObject *self,
-                              PyObject *args,
-                              PyObject *kwargs)
-{
-    static char *kwlist[] = { "condition", "cancellable", NULL };
-    gboolean ret;
-    gint condition;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-    GError *error;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "i|O:gio.Socket.condition_wait",
-                                     kwlist, &condition, &cancellable))
-        return NULL;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        return NULL;
-    
-    ret = g_socket_condition_wait(G_SOCKET(self->obj), condition,
-                                  cancellable, &error);
-    
-    return PyBool_FromLong(ret);
-}
-%%
-override g_socket_address_enumerator_next_async kwargs
-static PyObject *
-_wrap_g_socket_address_enumerator_next_async(PyGObject *self,
-                                             PyObject *args,
-                                             PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "O|OO:gio.SocketAddressEnumerator.next_async",
-                                    kwlist,
-                                    &notify->callback,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_socket_address_enumerator_next_async(G_SOCKET_ADDRESS_ENUMERATOR(self->obj),
-                          cancellable,
-                          (GAsyncReadyCallback) async_result_callback_marshal,
-                          notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_socket_client_connect_async kwargs
-static PyObject *
-_wrap_g_socket_client_connect_async(PyGObject *self,
-                                    PyObject *args,
-                                    PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "connectable", "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-    PyGObject *py_connectable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "OO|OO:gio.SocketClient.connect_async",
-                                    kwlist,
-                                    &notify->callback,
-                                    &py_connectable,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_socket_client_connect_async(G_SOCKET_CLIENT(self->obj),
-                          G_SOCKET_CONNECTABLE(py_connectable->obj),
-                          cancellable,
-                          (GAsyncReadyCallback) async_result_callback_marshal,
-                          notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_socket_client_connect_to_host_async kwargs
-static PyObject *
-_wrap_g_socket_client_connect_to_host_async(PyGObject *self,
-                                            PyObject *args,
-                                            PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "host_and_port", "default_port",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-    gchar *host_and_port;
-    guint16 default_port;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                "OsH|OO:gio.SocketClient.connect_to_host_async",
-                                kwlist,
-                                &notify->callback,
-                                &host_and_port,
-                                &default_port,
-                                &py_cancellable,
-                                &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_socket_client_connect_to_host_async(G_SOCKET_CLIENT(self->obj),
-                          host_and_port, default_port,
-                          cancellable,
-                          (GAsyncReadyCallback) async_result_callback_marshal,
-                          notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_socket_client_connect_to_service_async kwargs
-static PyObject *
-_wrap_g_socket_client_connect_to_service_async(PyGObject *self,
-                                               PyObject *args,
-                                               PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "domain", "service",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-    gchar *domain, *service;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                            "Oss|OO:gio.SocketClient.connect_to_service_async",
-                            kwlist,
-                            &notify->callback,
-                            &domain,
-                            &service,
-                            &py_cancellable,
-                            &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_socket_client_connect_to_service_async(G_SOCKET_CLIENT(self->obj),
-                          domain, service,
-                          cancellable,
-                          (GAsyncReadyCallback) async_result_callback_marshal,
-                          notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_socket_listener_add_address kwargs
-static PyObject *
-_wrap_g_socket_listener_add_address(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "address", "type", "protocol",
-                              "source_object", NULL };
-    GSocketProtocol protocol;
-    PyObject *py_type = NULL, *py_protocol = NULL;
-    GError *error = NULL;
-    gboolean ret;
-    GSocketType type;
-    GSocketAddress *effective_address;
-    PyGObject *address, *py_source_object = NULL;
-    GObject *source_object;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!OO|O!:gio.SocketListener.add_address",
-                                     kwlist,
-                                     &PyGSocketAddress_Type, &address,
-                                     &py_type, &py_protocol,
-                                     &PyGObject_Type, &source_object,
-                                     &PyGSocketAddress_Type, &effective_address))
-        return NULL;
-
-    if (pyg_enum_get_value(G_TYPE_SOCKET_TYPE, py_type, (gpointer)&type))
-        return NULL;
-
-    if (pyg_enum_get_value(G_TYPE_SOCKET_PROTOCOL, py_protocol, (gpointer)&protocol))
-        return NULL;
-    
-    if (py_source_object == NULL || (PyObject*)py_source_object == Py_None)
-        source_object = NULL;
-    else if (pygobject_check(py_source_object, &PyGObject_Type))
-        source_object = G_OBJECT(py_source_object->obj);
-    else {
-      PyErr_SetString(PyExc_TypeError, "source_object should be a gobject.GObject or None");
-      return NULL;
-    }
-    
-    ret = g_socket_listener_add_address(G_SOCKET_LISTENER(self->obj),
-                                        G_SOCKET_ADDRESS(address->obj),
-                                        type, protocol,
-                                        source_object,
-                                        &effective_address,
-                                        &error);
-    
-    if (pyg_error_check(&error))
-        return NULL;
-    
-    if (ret)
-        return pygobject_new((GObject *)effective_address);
-    else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-%%
-override g_socket_listener_accept kwargs
-static PyObject *
-_wrap_g_socket_listener_accept(PyGObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "cancellable", NULL };
-    GError *error = NULL;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-    PyObject *py_connection, *py_source_object;
-    GObject *source_object;
-    GSocketConnection *connection;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"|O:gio.SocketListener.accept",
-                                     kwlist,
-                                     &py_cancellable))
-        return NULL;
-
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        return NULL;
-
-    connection = g_socket_listener_accept(G_SOCKET_LISTENER(self->obj),
-                                          &source_object,
-                                          cancellable,
-                                          &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (connection)
-        py_connection = pygobject_new((GObject *)connection);
-    else {
-        py_connection = Py_None;
-        Py_INCREF(py_connection);
-    }
-
-    if (source_object)
-        py_source_object = pygobject_new((GObject *)source_object);
-    else {
-        py_source_object= Py_None;
-        Py_INCREF(py_source_object);
-    }
-    return Py_BuildValue("(NN)", py_connection, py_source_object);
-}
-%%
-override g_socket_listener_accept_async kwargs
-static PyObject *
-_wrap_g_socket_listener_accept_async(PyGObject *self,
-                                     PyObject *args,
-                                     PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                            "O|OO:gio.SocketListener.accept_async",
-                            kwlist,
-                            &notify->callback,
-                            &py_cancellable,
-                            &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_socket_listener_accept_async(G_SOCKET_LISTENER(self->obj),
-                          cancellable,
-                          (GAsyncReadyCallback) async_result_callback_marshal,
-                          notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_socket_listener_accept_finish kwargs
-static PyObject *
-_wrap_g_socket_listener_accept_finish(PyGObject *self,
-                                      PyObject *args,
-                                      PyObject *kwargs)
-{
-    static char *kwlist[] = { "result", NULL };
-    GError *error = NULL;
-    PyGObject *result;
-    PyObject *py_connection, *py_source_object;
-    GObject *source_object;
-    GSocketConnection *connection;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:gio.SocketListener.accept_finish",
-                                     kwlist,
-                                     &PyGAsyncResult_Type, &result))
-        return NULL;
-
-    connection = g_socket_listener_accept_finish(G_SOCKET_LISTENER(self->obj),
-                                                 G_ASYNC_RESULT(result->obj),
-                                                 &source_object,
-                                                 &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (connection)
-        py_connection = pygobject_new((GObject *)connection);
-    else {
-        py_connection = Py_None;
-        Py_INCREF(py_connection);
-    }
-
-    if (source_object)
-        py_source_object = pygobject_new((GObject *)source_object);
-    else {
-        py_source_object= Py_None;
-        Py_INCREF(py_source_object);
-    }
-    return Py_BuildValue("(NN)", py_connection, py_source_object);
-}
-%%
-override g_socket_listener_accept_socket kwargs
-static PyObject *
-_wrap_g_socket_listener_accept_socket(PyGObject *self,
-                                      PyObject *args,
-                                      PyObject *kwargs)
-{
-    static char *kwlist[] = { "cancellable", NULL };
-    GError *error = NULL;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-    PyObject *py_socket, *py_source_object;
-    GObject *source_object;
-    GSocket *socket;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"|O:gio.SocketListener.accept_socket",
-                                     kwlist,
-                                     &py_cancellable))
-        return NULL;
-
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        return NULL;
-
-    socket = g_socket_listener_accept_socket(G_SOCKET_LISTENER(self->obj),
-                                             &source_object,
-                                             cancellable,
-                                             &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (socket)
-        py_socket = pygobject_new((GObject *)socket);
-    else {
-        py_socket = Py_None;
-        Py_INCREF(py_socket);
-    }
-
-    if (source_object)
-        py_source_object = pygobject_new((GObject *)source_object);
-    else {
-        py_source_object= Py_None;
-        Py_INCREF(py_source_object);
-    }
-    return Py_BuildValue("(NN)", py_socket, py_source_object);
-}
-%%
-override g_socket_listener_accept_socket_async kwargs
-static PyObject *
-_wrap_g_socket_listener_accept_socket_async(PyGObject *self,
-                                            PyObject *args,
-                                            PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyGObject *py_cancellable = NULL;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                            "O|OO:gio.SocketListener.accept_socket_async",
-                            kwlist,
-                            &notify->callback,
-                            &py_cancellable,
-                            &notify->data))
-        goto error;
-      
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_socket_listener_accept_socket_async(G_SOCKET_LISTENER(self->obj),
-                          cancellable,
-                          (GAsyncReadyCallback) async_result_callback_marshal,
-                          notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_socket_listener_accept_socket_finish kwargs
-static PyObject *
-_wrap_g_socket_listener_accept_socket_finish(PyGObject *self,
-                                            PyObject *args,
-                                            PyObject *kwargs)
-{
-    static char *kwlist[] = { "result", NULL };
-    GError *error = NULL;
-    PyGObject *result;
-    PyObject *py_socket, *py_source_object;
-    GObject *source_object;
-    GSocket *socket;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:gio.SocketListener.accept_socket_finish",
-                                     kwlist,
-                                     &PyGAsyncResult_Type, &result))
-        return NULL;
-
-    socket = g_socket_listener_accept_socket_finish(G_SOCKET_LISTENER(self->obj),
-                                                    G_ASYNC_RESULT(result->obj),
-                                                    &source_object,
-                                                    &error);
-
-    if (pyg_error_check(&error))
-        return NULL;
-
-    if (socket)
-        py_socket = pygobject_new((GObject *)socket);
-    else {
-        py_socket= Py_None;
-        Py_INCREF(py_socket);
-    }
-
-    if (source_object)
-        py_source_object = pygobject_new((GObject *)source_object);
-    else {
-        py_source_object= Py_None;
-        Py_INCREF(py_source_object);
-    }
-    return Py_BuildValue("(NN)", py_socket, py_source_object);
-}
-
-/* Could not write method GSocketAddress.to_native: No ArgType for gpointer */
-/* Could not write method GSocket.receive_from: No ArgType for GSocketAddress** */
-/* Could not write method GSocket.receive_message: No ArgType for GSocketAddress** */
-/* Could not write method GSocket.send_message: No ArgType for GOutputVector* */
-/* Could not write method GSocket.create_source: No ArgType for GIOCondition */
-/* Could not write method GSocketControlMessage.serialize: No ArgType for gpointer */
-/* Could not write function socket_address_new_from_native: No ArgType for gpointer */
-/* Could not write function socket_control_message_deserialize: No ArgType for gpointer */
diff --git a/gio/gvolume.override b/gio/gvolume.override
deleted file mode 100644 (file)
index 89c27e4..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- *
- *   gvolume.override: module overrides for GVolume
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-override g_volume_mount kwargs
-static PyObject *
-_wrap_g_volume_mount(PyGObject *self,
-                    PyObject *args,
-                    PyObject *kwargs)
-{
-    static char *kwlist[] = { "mount_operation", "callback", "flags",
-                             "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *py_mount_operation = NULL;
-    GMountOperation *mount_operation = NULL;
-    PyGObject *py_cancellable = NULL;
-    GMountMountFlags flags = G_MOUNT_MOUNT_NONE;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "OO|OOO:Volume.mount",
-                                    kwlist,
-                                    &py_mount_operation,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-    
-    if ((PyObject *)py_mount_operation == Py_None)
-        mount_operation = NULL;
-    
-    else if (py_mount_operation && pygobject_check(py_mount_operation,
-                                                  &PyGMountOperation_Type))
-        mount_operation = G_MOUNT_OPERATION(py_mount_operation->obj);
-    
-    else if (py_mount_operation) {
-        PyErr_SetString(PyExc_TypeError,
-                       "mount_operation should be a GMountOperation or None");
-        return NULL;
-    }
-    
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_MOUNT_FLAGS,
-                                       py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_volume_mount(G_VOLUME(self->obj),
-                  flags,
-                  mount_operation,
-                  cancellable,
-                  (GAsyncReadyCallback)async_result_callback_marshal,
-                  notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override g_volume_eject kwargs
-static PyObject *
-_wrap_g_volume_eject(PyGObject *self,
-                    PyObject *args,
-                    PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags",
-                             "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *py_cancellable = NULL;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O|OOO:Volume.eject",
-                                    kwlist,
-                                    &notify->callback,
-                                    &py_flags,
-                                    &py_cancellable,
-                                    &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                       py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_volume_eject(G_VOLUME(self->obj),
-                  flags,
-                  cancellable,
-                  (GAsyncReadyCallback)async_result_callback_marshal,
-                  notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
-%%
-override-slot GVolume.tp_repr
-static PyObject *
-_wrap_g_volume_tp_repr(PyGObject *self)
-{
-    char *name = g_volume_get_name(G_VOLUME(self->obj));
-    gchar *representation;
-    PyObject *result;
-
-    if (name) {
-       representation = g_strdup_printf("<%s at %p: %s>", self->ob_type->tp_name, self, name);
-       g_free(name);
-    }
-    else
-       representation = g_strdup_printf("<%s at %p: UNKNOWN NAME>", self->ob_type->tp_name, self);
-
-    result = PyString_FromString(representation);
-    g_free(representation);
-    return result;
-}
-%%
-override g_volume_enumerate_identifiers noargs
-static PyObject *
-_wrap_g_volume_enumerate_identifiers (PyGObject *self)
-{
-    char **ids;
-    PyObject *ret;
-  
-    pyg_begin_allow_threads;
-  
-    ids = g_volume_enumerate_identifiers(G_VOLUME (self->obj));
-  
-    pyg_end_allow_threads;
-  
-    if (ids && ids[0] != NULL) {
-       ret = strv_to_pylist(ids);
-       g_strfreev (ids);
-    } else {
-       ret = Py_None;
-       Py_INCREF(ret);
-    }
-    return ret;
-}
-%%
-override g_volume_eject_with_operation kwargs
-static PyObject *
-_wrap_g_volume_eject_with_operation(PyGObject *self,
-                                     PyObject *args,
-                                     PyObject *kwargs)
-{
-    static char *kwlist[] = { "callback", "flags", "mount_operation",
-                              "cancellable", "user_data", NULL };
-    PyGIONotify *notify;
-    PyObject *py_flags = NULL;
-    PyGObject *mount_operation;
-    PyGObject *py_cancellable = NULL;
-    GMountUnmountFlags flags = G_MOUNT_UNMOUNT_NONE;
-    GCancellable *cancellable;
-
-    notify = pygio_notify_new();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                "O|OOOO:gio.Volume.eject_with_operation",
-                                kwlist,
-                                &notify->callback,
-                                &py_flags,
-                                &mount_operation,
-                                &py_cancellable,
-                                &notify->data))
-        goto error;
-
-    if (!pygio_notify_callback_is_valid(notify))
-        goto error;
-
-    if (py_flags && pyg_flags_get_value(G_TYPE_MOUNT_UNMOUNT_FLAGS,
-                                        py_flags, (gpointer)&flags))
-        goto error;
-
-    if (!pygio_check_cancellable(py_cancellable, &cancellable))
-        goto error;
-
-    pygio_notify_reference_callback(notify);
-
-    g_volume_eject_with_operation(G_VOLUME(self->obj),
-                            flags,
-                            G_MOUNT_OPERATION(mount_operation->obj),
-                            cancellable,
-                            (GAsyncReadyCallback)async_result_callback_marshal,
-                            notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
- error:
-    pygio_notify_free(notify);
-    return NULL;
-}
diff --git a/gio/gvolumemonitor.override b/gio/gvolumemonitor.override
deleted file mode 100644 (file)
index 4ffedf3..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- *
- *   gvolumemonitor.override: module overrides for GVolumeMonitor
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-override-slot GVolumeMonitor.tp_new
-static PyObject *
-_wrap_g_volume_monitor_tp_new(PyObject *type, PyObject *args, PyObject *kwargs)
-{
-    return pygobject_new(G_OBJECT(g_volume_monitor_get()));
-}
-%%
-override g_volume_monitor_get_connected_drives noargs
-static PyObject *
-_wrap_g_volume_monitor_get_connected_drives (PyGObject *self)
-{
-  GList *list, *l;
-  PyObject *ret;
-  
-  list = g_volume_monitor_get_connected_drives (G_VOLUME_MONITOR (self->obj));
-
-  ret = PyList_New(0);
-  for (l = list; l; l = l->next) {
-    GDrive *drive = l->data;
-    PyObject *item = pygobject_new((GObject *)drive);
-    PyList_Append(ret, item);
-    Py_DECREF(item);
-    g_object_unref(drive);
-  }
-  g_list_free(list);
-  
-  return ret;
-}
-%%
-override g_volume_monitor_get_volumes noargs
-static PyObject *
-_wrap_g_volume_monitor_get_volumes (PyGObject *self)
-{
-  GList *list, *l;
-  PyObject *ret;
-  
-  list = g_volume_monitor_get_volumes (G_VOLUME_MONITOR (self->obj));
-
-  ret = PyList_New(0);
-  for (l = list; l; l = l->next) {
-    GVolume *volume = l->data;
-    PyObject *item = pygobject_new((GObject *)volume);
-    PyList_Append(ret, item);
-    Py_DECREF(item);
-    g_object_unref(volume);
-  }
-  g_list_free(list);
-  
-  return ret;
-}
-%%
-override g_volume_monitor_get_mounts noargs
-static PyObject *
-_wrap_g_volume_monitor_get_mounts (PyGObject *self)
-{
-  GList *list, *l;
-  PyObject *ret;
-  
-  list = g_volume_monitor_get_mounts (G_VOLUME_MONITOR (self->obj));
-
-  ret = PyList_New(0);
-  for (l = list; l; l = l->next) {
-    GMount *mount = l->data;
-    PyObject *item = pygobject_new((GObject *)mount);
-    PyList_Append(ret, item);
-    Py_DECREF(item);
-    g_object_unref(mount);
-  }
-  g_list_free(list);
-  
-  return ret;
-}
diff --git a/gio/pygio-utils.c b/gio/pygio-utils.c
deleted file mode 100644 (file)
index f89c4b9..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 2008  Johan Dahlin
- * Copyright (C) 2008  Gian Mario Tagliaretti
- *
- *   giomodule.c: module wrapping the GIO library
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-#include "pygio-utils.h"
-#include <pyglib-python-compat.h>
-
-/**
- * pygio_check_cancellable:
- * @pycancellable:
- * @cancellable:
- *
- * Returns:
- */
-gboolean
-pygio_check_cancellable(PyGObject *pycancellable,
-                       GCancellable **cancellable)
-{
-  if (pycancellable == NULL || (PyObject*)pycancellable == Py_None)
-      *cancellable = NULL;
-  else if (pygobject_check(pycancellable, &PyGCancellable_Type))
-      *cancellable = G_CANCELLABLE(pycancellable->obj);
-  else
-    {
-      PyErr_SetString(PyExc_TypeError,
-                     "cancellable should be a gio.Cancellable");
-      return FALSE;
-    }
-  return TRUE;
-}
-
-/**
- * pygio_check_launch_context:
- * @pycontext:
- * @context:
- *
- * Returns:
- */
-gboolean
-pygio_check_launch_context(PyGObject *pycontext,
-                           GAppLaunchContext **context)
-{
-  if (pycontext == NULL || (PyObject*)pycontext == Py_None)
-      *context = NULL;
-  else if (pygobject_check(pycontext, &PyGAppLaunchContext_Type))
-      *context = G_APP_LAUNCH_CONTEXT(pycontext->obj);
-  else
-    {
-      PyErr_SetString(PyExc_TypeError,
-                     "launch_context should be a GAppLaunchContext or None");
-      return FALSE;
-    }
-  return TRUE;
-}
-
-/**
- * pygio_pylist_to_gfile_glist:
- * @pyfile_list:
- *
- * Returns:
- */
-GList *
-pygio_pylist_to_gfile_glist(PyObject *pyfile_list)
-{
-    GList *file_list = NULL;
-    PyObject *item;
-    int len, i;
-
-    len = PySequence_Size(pyfile_list);
-    for (i = 0; i < len; i++) {
-        item = PySequence_GetItem(pyfile_list, i);
-        if (!PyObject_TypeCheck(item, &PyGFile_Type)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "files must be a list or tuple of GFile");
-            g_list_free(file_list);
-            return NULL;
-        }
-        file_list = g_list_prepend(file_list, ((PyGObject *)item)->obj);
-    }
-    file_list = g_list_reverse(file_list);
-
-    return file_list;
-}
-
-/**
- * pygio_pylist_to_uri_glist:
- * @pyfile_list:
- *
- * Returns:
- */
-GList *
-pygio_pylist_to_uri_glist(PyObject *pyfile_list)
-{
-    GList *file_list = NULL;
-    PyObject *item;
-    int len, i;
-
-    len = PySequence_Size(pyfile_list);
-    for (i = 0; i < len; i++) {
-        item = PySequence_GetItem(pyfile_list, i);
-        if (!PYGLIB_PyUnicode_Check(item)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "files must be strings");
-            g_list_free(file_list);
-            return NULL;
-        }
-
-#if PY_VERSION_HEX < 0x03000000
-        file_list = g_list_prepend(file_list, g_strdup(PyString_AsString(item)));
-#else
-       {
-            PyObject *utf8_bytes_obj = PyUnicode_AsUTF8String (item);
-            if (!utf8_bytes_obj) {
-                g_list_free(file_list);
-                return NULL;
-            }
-            file_list = g_list_prepend(file_list, g_strdup(PyBytes_AsString(utf8_bytes_obj)));
-            Py_DECREF (utf8_bytes_obj);
-        }
-#endif
-
-    }
-    file_list = g_list_reverse(file_list);
-
-    return file_list;
-}
-
-/**
- * strv_to_pylist:
- * @strv: array of strings
- *
- * Returns: A python list of strings
- */
-PyObject *
-strv_to_pylist (char **strv)
-{
-    gsize len, i;
-    PyObject *list;
-
-    len = strv ? g_strv_length (strv) : 0;
-    list = PyList_New (len);
-
-    for (i = 0; i < len; i++) {
-        PyList_SetItem (list, i, PYGLIB_PyUnicode_FromString (strv[i]));
-    }
-    return list;
-}
-
-/**
- * pylist_to_strv:
- * @strvp: a pointer to an array where return strings.
- *
- * Returns: TRUE if the list of strings could be converted, FALSE otherwise.
- */
-gboolean
-pylist_to_strv (PyObject *list,
-                char   ***strvp)
-{
-    int i, len;
-    char **ret;
-
-    *strvp = NULL;
-
-    if (list == Py_None)
-        return TRUE;
-
-    if (!PySequence_Check (list))
-    {
-        PyErr_Format (PyExc_TypeError, "argument must be a list or tuple of strings");
-        return FALSE;
-    }
-
-    if ((len = PySequence_Size (list)) < 0)
-        return FALSE;
-
-    ret = g_new (char*, len + 1);
-    for (i = 0; i <= len; ++i)
-        ret[i] = NULL;
-
-    for (i = 0; i < len; ++i)
-    {
-        PyObject *item = PySequence_GetItem (list, i);
-
-        if (!item)
-        {
-            g_strfreev (ret);
-            return FALSE;
-        }
-
-        if (!PYGLIB_PyUnicode_Check (item))
-        {
-            Py_DECREF (item);
-            g_strfreev (ret);
-            PyErr_Format (PyExc_TypeError, "argument must be a list of strings");
-            return FALSE;
-        }
-
-#if PY_VERSION_HEX < 0x03000000
-        ret[i] = g_strdup (PyString_AsString (item));
-#else
-       {
-            PyObject *utf8_bytes_obj = PyUnicode_AsUTF8String (item);
-            if (!utf8_bytes_obj) {
-                Py_DECREF (item);
-                g_strfreev (ret);
-                return FALSE;
-            }
-            ret[i] = g_strdup (PyBytes_AsString(utf8_bytes_obj));
-            Py_DECREF (utf8_bytes_obj);
-        }
-#endif
-        Py_DECREF (item);
-    }
-
-    *strvp = ret;
-    return TRUE;
-}
diff --git a/gio/pygio-utils.h b/gio/pygio-utils.h
deleted file mode 100644 (file)
index 76bfde3..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 2008  Johan Dahlin
- *
- *   giomodule.c: module wrapping the GIO library
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-#ifndef __PYGIO_UTILS_H__
-#define __PYGIO_UTILS_H__
-
-#define NO_IMPORT_PYGOBJECT
-#include <Python.h>
-#include <pygobject.h>
-#include <gio/gio.h>
-
-extern PyTypeObject PyGCancellable_Type;
-extern PyTypeObject PyGAppLaunchContext_Type;
-extern PyTypeObject PyGFile_Type;
-
-gboolean pygio_check_cancellable(PyGObject *pycancellable,
-                                GCancellable **cancellable);
-
-gboolean pygio_check_launch_context(PyGObject *pycontext,
-                                   GAppLaunchContext **context);
-
-GList* pygio_pylist_to_gfile_glist(PyObject *pycontext);
-
-GList* pygio_pylist_to_uri_glist(PyObject *pycontext);
-
-PyObject* strv_to_pylist (char **strv);
-
-gboolean pylist_to_strv (PyObject *list, char ***strvp);
-
-#endif /* __PYGIO_UTILS_H__ */
diff --git a/gio/unix-types.defs b/gio/unix-types.defs
deleted file mode 100644 (file)
index ed1ed9f..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-;; -*- scheme -*-
-
-(define-object Connection
-  (in-module "giounix")
-  (parent "GSocketConnection")
-  (c-name "GUnixConnection")
-  (gtype-id "G_TYPE_UNIX_CONNECTION")
-)
-
-(define-object DesktopAppInfo
-  (docstring
-  "DesktopAppInfo(desktop_id) -> gio.unix.DesktopAppInfo\n\n"
-  "gio.Unix.DesktopAppInfo is an implementation of gio.AppInfo\n"
-  "based on desktop files."
-  )
-  (in-module "giounix")
-  (parent "GObject")
-  (c-name "GDesktopAppInfo")
-  (gtype-id "G_TYPE_DESKTOP_APP_INFO")
-)
-
-(define-object FDMessage
-  (in-module "giounix")
-  (parent "GSocketControlMessage")
-  (c-name "GUnixFDMessage")
-  (gtype-id "G_TYPE_UNIX_FD_MESSAGE")
-)
-
-(define-object InputStream
-  (in-module "giounix")
-  (parent "GInputStream")
-  (c-name "GUnixInputStream")
-  (gtype-id "G_TYPE_UNIX_INPUT_STREAM")
-)
-
-(define-object OutputStream
-  (in-module "giounix")
-  (parent "GOutputStream")
-  (c-name "GUnixOutputStream")
-  (gtype-id "G_TYPE_UNIX_OUTPUT_STREAM")
-)
-
-(define-pointer MountEntry
-  (in-module "giounix")
-  (c-name "GUnixMountEntry")
-  (gtype-id "GIO_UNIX_MOUNT_ENTRY_TYPE")
-)
-
-(define-object SocketAddress
-  (in-module "giounix")
-  (parent "GSocketAddress")
-  (c-name "GUnixSocketAddress")
-  (gtype-id "G_TYPE_UNIX_SOCKET_ADDRESS")
-)
-
diff --git a/gio/unix.defs b/gio/unix.defs
deleted file mode 100644 (file)
index ff43ed6..0000000
+++ /dev/null
@@ -1,475 +0,0 @@
-;; -*- scheme -*-
-
-(include "unix-types.defs")
-
-;; From gunixconnection.h
-
-(define-function g_unix_connection_get_type
-  (c-name "g_unix_connection_get_type")
-  (return-type "GType")
-)
-
-(define-method send_fd
-  (of-object "GUnixConnection")
-  (c-name "g_unix_connection_send_fd")
-  (return-type "gboolean")
-  (parameters
-    '("gint" "fd")
-    '("GCancellable*" "cancellable")
-    '("GError**" "error")
-  )
-)
-
-(define-method receive_fd
-  (of-object "GUnixConnection")
-  (c-name "g_unix_connection_receive_fd")
-  (return-type "gint")
-  (parameters
-    '("GCancellable*" "cancellable")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gdesktopappinfo.h
-
-(define-function desktop_app_info_get_type
-  (c-name "g_desktop_app_info_get_type")
-  (return-type "GType")
-)
-
-(define-function desktop_app_info_new_from_filename
-  (c-name "g_desktop_app_info_new_from_filename")
-  (return-type "GDesktopAppInfo*")
-  (parameters
-    '("const-char*" "filename")
-  )
-)
-
-(define-function g_desktop_app_info_new_from_keyfile
-  (c-name "g_desktop_app_info_new_from_keyfile")
-  (return-type "GDesktopAppInfo*")
-  (parameters
-    '("GKeyFile*" "key_file")
-  )
-)
-
-(define-function desktop_app_info_new
-  (c-name "g_desktop_app_info_new")
-  (is-constructor-of "GDesktopAppInfo")
-  (return-type "GDesktopAppInfo*")
-  (parameters
-    '("const-char*" "desktop_id")
-  )
-)
-
-(define-method get_is_hidden
-  (of-object "GDesktopAppInfo")
-  (c-name "g_desktop_app_info_get_is_hidden")
-  (return-type "gboolean")
-)
-
-(define-function desktop_app_info_set_desktop_env
-  (c-name "g_desktop_app_info_set_desktop_env")
-  (return-type "none")
-  (parameters
-    '("const-char*" "desktop_env")
-  )
-)
-
-
-
-;; From gunixfdmessage.h
-
-(define-function g_unix_fd_message_get_type
-  (c-name "g_unix_fd_message_get_type")
-  (return-type "GType")
-)
-
-(define-function g_unix_fd_message_new
-  (c-name "g_unix_fd_message_new")
-  (is-constructor-of "GUnixFdMessage")
-  (return-type "GSocketControlMessage*")
-)
-
-(define-method steal_fds
-  (of-object "GUnixFDMessage")
-  (c-name "g_unix_fd_message_steal_fds")
-  (return-type "gint*")
-  (parameters
-    '("gint*" "length")
-  )
-)
-
-(define-method append_fd
-  (of-object "GUnixFDMessage")
-  (c-name "g_unix_fd_message_append_fd")
-  (return-type "gboolean")
-  (parameters
-    '("gint" "fd")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From gunixmounts.h
-
-(define-function unix_mount_free
-  (c-name "g_unix_mount_free")
-  (return-type "none")
-  (parameters
-    '("GUnixMountEntry*" "mount_entry")
-  )
-)
-
-(define-method free
-  (of-object "GUnixMountPoint")
-  (c-name "g_unix_mount_point_free")
-  (return-type "none")
-)
-
-(define-function unix_mount_compare
-  (c-name "g_unix_mount_compare")
-  (return-type "gint")
-  (parameters
-    '("GUnixMountEntry*" "mount1")
-    '("GUnixMountEntry*" "mount2")
-  )
-)
-
-(define-function unix_mount_get_mount_path
-  (c-name "g_unix_mount_get_mount_path")
-  (return-type "const-char*")
-  (parameters
-    '("GUnixMountEntry*" "mount_entry")
-  )
-)
-
-(define-function unix_mount_get_device_path
-  (c-name "g_unix_mount_get_device_path")
-  (return-type "const-char*")
-  (parameters
-    '("GUnixMountEntry*" "mount_entry")
-  )
-)
-
-(define-function unix_mount_get_fs_type
-  (c-name "g_unix_mount_get_fs_type")
-  (return-type "const-char*")
-  (parameters
-    '("GUnixMountEntry*" "mount_entry")
-  )
-)
-
-(define-function unix_mount_is_readonly
-  (c-name "g_unix_mount_is_readonly")
-  (return-type "gboolean")
-  (parameters
-    '("GUnixMountEntry*" "mount_entry")
-  )
-)
-
-(define-function unix_mount_is_system_internal
-  (c-name "g_unix_mount_is_system_internal")
-  (return-type "gboolean")
-  (parameters
-    '("GUnixMountEntry*" "mount_entry")
-  )
-)
-
-(define-function unix_mount_guess_can_eject
-  (c-name "g_unix_mount_guess_can_eject")
-  (return-type "gboolean")
-  (parameters
-    '("GUnixMountEntry*" "mount_entry")
-  )
-)
-
-(define-function unix_mount_guess_should_display
-  (c-name "g_unix_mount_guess_should_display")
-  (return-type "gboolean")
-  (parameters
-    '("GUnixMountEntry*" "mount_entry")
-  )
-)
-
-(define-function unix_mount_guess_name
-  (c-name "g_unix_mount_guess_name")
-  (return-type "char*")
-  (parameters
-    '("GUnixMountEntry*" "mount_entry")
-  )
-)
-
-(define-function unix_mount_guess_icon
-  (c-name "g_unix_mount_guess_icon")
-  (return-type "GIcon*")
-  (parameters
-    '("GUnixMountEntry*" "mount_entry")
-  )
-)
-
-(define-method compare
-  (of-object "GUnixMountPoint")
-  (c-name "g_unix_mount_point_compare")
-  (return-type "gint")
-  (parameters
-    '("GUnixMountPoint*" "mount2")
-  )
-)
-
-(define-method get_mount_path
-  (of-object "GUnixMountPoint")
-  (c-name "g_unix_mount_point_get_mount_path")
-  (return-type "const-char*")
-)
-
-(define-method get_device_path
-  (of-object "GUnixMountPoint")
-  (c-name "g_unix_mount_point_get_device_path")
-  (return-type "const-char*")
-)
-
-(define-method get_fs_type
-  (of-object "GUnixMountPoint")
-  (c-name "g_unix_mount_point_get_fs_type")
-  (return-type "const-char*")
-)
-
-(define-method is_readonly
-  (of-object "GUnixMountPoint")
-  (c-name "g_unix_mount_point_is_readonly")
-  (return-type "gboolean")
-)
-
-(define-method is_user_mountable
-  (of-object "GUnixMountPoint")
-  (c-name "g_unix_mount_point_is_user_mountable")
-  (return-type "gboolean")
-)
-
-(define-method is_loopback
-  (of-object "GUnixMountPoint")
-  (c-name "g_unix_mount_point_is_loopback")
-  (return-type "gboolean")
-)
-
-(define-method guess_can_eject
-  (of-object "GUnixMountPoint")
-  (c-name "g_unix_mount_point_guess_can_eject")
-  (return-type "gboolean")
-)
-
-(define-method guess_name
-  (of-object "GUnixMountPoint")
-  (c-name "g_unix_mount_point_guess_name")
-  (return-type "char*")
-)
-
-(define-method guess_icon
-  (of-object "GUnixMountPoint")
-  (c-name "g_unix_mount_point_guess_icon")
-  (return-type "GIcon*")
-)
-
-(define-function unix_mount_points_get
-  (c-name "g_unix_mount_points_get")
-  (return-type "GList*")
-  (parameters
-    '("guint64*" "time_read")
-  )
-)
-
-(define-function unix_mounts_get
-  (c-name "g_unix_mounts_get")
-  (return-type "GList*")
-  (parameters
-    '("guint64*" "time_read")
-  )
-)
-
-(define-function unix_mount_at
-  (c-name "g_unix_mount_at")
-  (return-type "GUnixMountEntry*")
-  (parameters
-    '("const-char*" "mount_path")
-    '("guint64*" "time_read")
-  )
-)
-
-(define-function unix_mounts_changed_since
-  (c-name "g_unix_mounts_changed_since")
-  (return-type "gboolean")
-  (parameters
-    '("guint64" "time")
-  )
-)
-
-(define-function unix_mount_points_changed_since
-  (c-name "g_unix_mount_points_changed_since")
-  (return-type "gboolean")
-  (parameters
-    '("guint64" "time")
-  )
-)
-
-(define-function unix_mount_monitor_get_type
-  (c-name "g_unix_mount_monitor_get_type")
-  (return-type "GType")
-)
-
-(define-function unix_mount_monitor_new
-  (c-name "g_unix_mount_monitor_new")
-  (is-constructor-of "GUnixMountMonitor")
-  (return-type "GUnixMountMonitor*")
-)
-
-(define-method set_rate_limit
-  (of-object "GUnixMountMonitor")
-  (c-name "g_unix_mount_monitor_set_rate_limit")
-  (return-type "none")
-  (parameters
-    '("int" "limit_msec")
-  )
-)
-
-(define-function unix_is_mount_path_system_internal
-  (c-name "g_unix_is_mount_path_system_internal")
-  (return-type "gboolean")
-  (parameters
-    '("const-char*" "mount_path")
-  )
-)
-
-
-
-;; From gunixinputstream.h
-
-(define-function unix_input_stream_get_type
-  (c-name "g_unix_input_stream_get_type")
-  (return-type "GType")
-)
-
-(define-function unix_input_stream_new
-  (c-name "g_unix_input_stream_new")
-  (is-constructor-of "GUnixInputStream")
-  (return-type "GInputStream*")
-  (parameters
-    '("int" "fd")
-    '("gboolean" "close_fd_at_close")
-  )
-)
-
-(define-method set_close_fd
-  (of-object "GUnixInputStream")
-  (c-name "g_unix_input_stream_set_close_fd")
-  (return-type "none")
-  (parameters
-    '("gboolean" "close_fd")
-  )
-)
-
-(define-method get_close_fd
-  (of-object "GUnixInputStream")
-  (c-name "g_unix_input_stream_get_close_fd")
-  (return-type "gboolean")
-)
-
-(define-method get_fd
-  (of-object "GUnixInputStream")
-  (c-name "g_unix_input_stream_get_fd")
-  (return-type "gint")
-)
-
-
-
-;; From gunixoutputstream.h
-
-(define-function unix_output_stream_get_type
-  (c-name "g_unix_output_stream_get_type")
-  (return-type "GType")
-)
-
-(define-function unix_output_stream_new
-  (c-name "g_unix_output_stream_new")
-  (is-constructor-of "GUnixOutputStream")
-  (return-type "GOutputStream*")
-  (parameters
-    '("int" "fd")
-    '("gboolean" "close_fd_at_close")
-  )
-)
-
-(define-method set_close_fd
-  (of-object "GUnixOutputStream")
-  (c-name "g_unix_output_stream_set_close_fd")
-  (return-type "none")
-  (parameters
-    '("gboolean" "close_fd")
-  )
-)
-
-(define-method get_close_fd
-  (of-object "GUnixOutputStream")
-  (c-name "g_unix_output_stream_get_close_fd")
-  (return-type "gboolean")
-)
-
-(define-method get_fd
-  (of-object "GUnixOutputStream")
-  (c-name "g_unix_output_stream_get_fd")
-  (return-type "gint")
-)
-
-
-
-;; From gunixsocketaddress.h
-
-(define-function g_unix_socket_address_get_type
-  (c-name "g_unix_socket_address_get_type")
-  (return-type "GType")
-)
-
-(define-function g_unix_socket_address_new
-  (c-name "g_unix_socket_address_new")
-  (is-constructor-of "GUnixSocketAddress")
-  (return-type "GSocketAddress*")
-  (parameters
-    '("const-gchar*" "path")
-  )
-)
-
-(define-function g_unix_socket_address_new_abstract
-  (c-name "g_unix_socket_address_new_abstract")
-  (return-type "GSocketAddress*")
-  (parameters
-    '("const-gchar*" "path")
-    '("int" "path_len")
-  )
-)
-
-(define-method get_path
-  (of-object "GUnixSocketAddress")
-  (c-name "g_unix_socket_address_get_path")
-  (return-type "const-char*")
-)
-
-(define-method get_path_len
-  (of-object "GUnixSocketAddress")
-  (c-name "g_unix_socket_address_get_path_len")
-  (return-type "gsize")
-)
-
-(define-method get_is_abstract
-  (of-object "GUnixSocketAddress")
-  (c-name "g_unix_socket_address_get_is_abstract")
-  (return-type "gboolean")
-)
-
-(define-function g_unix_socket_address_abstract_names_supported
-  (c-name "g_unix_socket_address_abstract_names_supported")
-  (return-type "gboolean")
-)
-
diff --git a/gio/unix.override b/gio/unix.override
deleted file mode 100644 (file)
index aebc6fc..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*- 
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- *
- *   unixmodule.c: module wrapping the GIO UNIX library
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-%%
-headers
-#define NO_IMPORT_PYGOBJECT
-#include <pygobject.h>
-#include <gio/gio.h>
-#include <gio/gdesktopappinfo.h>
-#include <gio/gunixinputstream.h>
-#include <gio/gunixmounts.h>
-#include <gio/gunixoutputstream.h>
-#define GIO_COMPILATION
-#include <gio/gunixconnection.h>
-#undef GIO_COMPILATION
-#include <gio/gunixfdmessage.h>
-#include <gio/gunixsocketaddress.h>
-
-#define GIO_UNIX_MOUNT_ENTRY_TYPE (_gio_unix_mount_entry_get_type ())
-
-static GType _gio_unix_mount_entry_get_type (void)
-{
-  static GType our_type = 0;
-  
-  if (our_type == 0)
-    our_type = g_pointer_type_register_static ("GUnixMountEntry");
-
-  return our_type;
-}
-
-%%
-modulename gio.unix
-%%
-import gobject.GObject as PyGObject_Type
-import gio.InputStream as PyGInputStream_Type
-import gio.OutputStream as PyGOutputStream_Type
-import gio.SocketAddress as PyGSocketAddress_Type
-import gio.Cancellable as PyGCancellable_Type
-import gio.SocketConnection as PyGSocketConnection_Type
-import gio.SocketControlMessage as PyGSocketControlMessage_Type
-%%
-ignore-glob
-  *_get_type
-%%
diff --git a/gio/unixmodule.c b/gio/unixmodule.c
deleted file mode 100644 (file)
index 7a49856..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygobject - Python bindings for GObject
- * Copyright (C) 2008  Johan Dahlin
- *
- *   unixmodule.c: module wrapping the GIO UNIX library
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-#ifdef HAVE_CONFIG_H
-#  include "config.h"
-#endif
-#include <Python.h>
-#include <pygobject.h>
-
-#include <gio/gio.h>
-
-/* include any extra headers needed here */
-
-void pyunix_register_classes(PyObject *d);
-void pyunix_add_constants(PyObject *module, const gchar *strip_prefix);
-
-extern PyMethodDef pyunix_functions[];
-
-DL_EXPORT(void)
-initunix(void)
-{
-    PyObject *m, *d;
-
-    /* perform any initialisation required by the library here */
-
-    m = Py_InitModule("gio.unix", pyunix_functions);
-    d = PyModule_GetDict(m);
-
-    init_pygobject();
-
-    pyunix_register_classes(d);
-
-}
-
diff --git a/glib/Makefile.am b/glib/Makefile.am
deleted file mode 100644 (file)
index e210318..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-AUTOMAKE_OPTIONS = 1.7
-INCLUDES = $(PYTHON_INCLUDES) $(GLIB_CFLAGS) -DPY_SSIZE_T_CLEAN
-
-pkgincludedir = $(includedir)/pygtk-2.0
-pkginclude_HEADERS = pyglib.h
-
-lib_LTLIBRARIES = libpyglib-2.0-@PYTHON_BASENAME@.la
-
-pkgpyexecdir = $(pyexecdir)
-
-pyglibdir = $(pkgpyexecdir)/glib
-pyglib_PYTHON =        \
-       __init__.py     \
-       option.py
-pyglib_LTLIBRARIES = _glib.la
-
-common_ldflags = -module -avoid-version
-if PLATFORM_WIN32
-common_ldflags += -no-undefined
-endif
-
-libpyglib_2_0_@PYTHON_BASENAME@_la_CFLAGS = $(GLIB_CFLAGS)
-libpyglib_2_0_@PYTHON_BASENAME@_la_LIBADD = $(GLIB_LIBS) $(FFI_LIBS)
-libpyglib_2_0_@PYTHON_BASENAME@_la_SOURCES =   \
-       pyglib.c                \
-       pyglib.h                \
-       pyglib-private.h        \
-       pyglib-python-compat.h
-
-_glib_la_CFLAGS = $(GLIB_CFLAGS)
-_glib_la_LDFLAGS = $(common_ldflags) -export-symbols-regex "_glib|PyInit__glib"
-_glib_la_LIBADD = $(GLIB_LIBS) libpyglib-2.0-@PYTHON_BASENAME@.la
-_glib_la_SOURCES =             \
-       glibmodule.c            \
-       pygiochannel.c          \
-       pygiochannel.h          \
-       pygoptioncontext.c      \
-       pygoptioncontext.h      \
-       pygoptiongroup.c        \
-       pygoptiongroup.h        \
-       pygmaincontext.c        \
-       pygmaincontext.h        \
-       pygmainloop.c           \
-       pygmainloop.h           \
-       pygsource.c             \
-       pygsource.h             \
-       pygspawn.c              \
-       pygspawn.h
-
-if PLATFORM_WIN32
-_glib_la_CFLAGS += -DPLATFORM_WIN32
-endif
-
-all: $(pyglib_LTLIBRARIES:.la=.so)
-check-local: $(pyglib_LTLIBRARIES:.la=.so)
-clean-local:
-       rm -f $(pyglib_LTLIBRARIES:.la=.so)
-.la.so:
-       $(LN_S) .libs/$@ $@ || true
-
--include $(top_srcdir)/git.mk
diff --git a/gobject/Makefile.am b/gobject/Makefile.am
deleted file mode 100644 (file)
index 7208329..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-AUTOMAKE_OPTIONS = 1.7
-PLATFORM_VERSION = 2.0
-
-pkgincludedir = $(includedir)/pygtk-$(PLATFORM_VERSION)
-pkginclude_HEADERS = pygobject.h
-
-pkgpyexecdir = $(pyexecdir)
-
-# gobject python scripts
-pygobjectdir = $(pkgpyexecdir)/gobject
-pygobject_PYTHON =     \
-       __init__.py     \
-       constants.py    \
-       propertyhelper.py
-pygobject_LTLIBRARIES = _gobject.la 
-
-common_ldflags = -module -avoid-version
-if PLATFORM_WIN32
-common_ldflags += -no-undefined
-endif
-
-_gobject_la_CFLAGS = \
-       -I$(top_srcdir)/glib \
-       -I$(top_srcdir)/gi \
-       $(PYTHON_INCLUDES) \
-       $(FFI_CFLAGS) \
-       $(GLIB_CFLAGS) \
-        -DPY_SSIZE_T_CLEAN
-
-if ENABLE_INTROSPECTION
-_gobject_la_CFLAGS += $(GI_CFLAGS)
-endif
-
-_gobject_la_LDFLAGS = $(common_ldflags) -export-symbols-regex "_gobject|PyInit__gobject"
-_gobject_la_LIBADD = \
-       $(GLIB_LIBS) \
-       $(FFI_LIBS) \
-       $(top_builddir)/glib/libpyglib-2.0-@PYTHON_BASENAME@.la
-_gobject_la_SOURCES =           \
-        gobjectmodule.c         \
-        pygboxed.c              \
-        pygboxed.h              \
-        pygenum.c               \
-        pygenum.h               \
-        pygflags.c              \
-        pygflags.h              \
-        pyginterface.c          \
-        pyginterface.h          \
-        pygobject.c             \
-        pygobject.h             \
-        pygobject-private.h     \
-        pygparamspec.c          \
-        pygparamspec.h          \
-        pygpointer.c            \
-        pygpointer.h            \
-        pygtype.c               \
-        pygtype.h
-
-if HAVE_LIBFFI
-_gobject_la_SOURCES += ffi-marshaller.c ffi-marshaller.h
-endif
-
-if PLATFORM_WIN32
-_gobject_la_CFLAGS += -DPLATFORM_WIN32
-endif
-
-
-all: $(pygobject_LTLIBRARIES:.la=.so)
-check-local: $(pygobject_LTLIBRARIES:.la=.so)
-clean-local:
-       rm -f $(pygobject_LTLIBRARIES:.la=.so)
-.la.so:
-       $(LN_S) .libs/$@ $@ || true
-
--include $(top_srcdir)/git.mk
diff --git a/gobject/__init__.py b/gobject/__init__.py
deleted file mode 100644 (file)
index a9522a6..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# pygobject - Python bindings for the GObject library
-# Copyright (C) 2006  Johan Dahlin
-#
-#   gobject/__init__.py: initialisation file for gobject module
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-# this can go when things are a little further along
-
-import sys
-
-from glib import spawn_async, idle_add, timeout_add, timeout_add_seconds, \
-     io_add_watch, source_remove, child_watch_add, markup_escape_text, \
-     get_current_time, filename_display_name, filename_display_basename, \
-     filename_from_utf8, get_application_name, set_application_name, \
-     get_prgname, set_prgname, main_depth, Pid, GError, glib_version, \
-     MainLoop, MainContext, main_context_default, IOChannel, Source, Idle, \
-     Timeout, PollFD, OptionGroup, OptionContext, option, uri_list_extract_uris
-from glib import SPAWN_LEAVE_DESCRIPTORS_OPEN, SPAWN_DO_NOT_REAP_CHILD, \
-     SPAWN_SEARCH_PATH, SPAWN_STDOUT_TO_DEV_NULL, SPAWN_STDERR_TO_DEV_NULL, \
-     SPAWN_CHILD_INHERITS_STDIN, SPAWN_FILE_AND_ARGV_ZERO, PRIORITY_HIGH, \
-     PRIORITY_DEFAULT, PRIORITY_HIGH_IDLE, PRIORITY_DEFAULT_IDLE, \
-     PRIORITY_LOW, IO_IN, IO_OUT, IO_PRI, IO_ERR, IO_HUP, IO_NVAL, \
-     IO_STATUS_ERROR, IO_STATUS_NORMAL, IO_STATUS_EOF, IO_STATUS_AGAIN, \
-     IO_FLAG_APPEND, IO_FLAG_NONBLOCK, IO_FLAG_IS_READABLE, \
-     IO_FLAG_IS_WRITEABLE, IO_FLAG_IS_SEEKABLE, IO_FLAG_MASK, \
-     IO_FLAG_GET_MASK, IO_FLAG_SET_MASK, OPTION_FLAG_HIDDEN, \
-     OPTION_FLAG_IN_MAIN, OPTION_FLAG_REVERSE, OPTION_FLAG_NO_ARG, \
-     OPTION_FLAG_FILENAME, OPTION_FLAG_OPTIONAL_ARG, OPTION_FLAG_NOALIAS, \
-     OPTION_ERROR_UNKNOWN_OPTION, OPTION_ERROR_BAD_VALUE, \
-     OPTION_ERROR_FAILED, OPTION_REMAINING, OPTION_ERROR
-
-from gobject.constants import *
-from gobject._gobject import *
-_PyGObject_API = _gobject._PyGObject_API
-
-from gobject.propertyhelper import property
-
-sys.modules['gobject.option'] = option
-
-class GObjectMeta(type):
-    "Metaclass for automatically registering GObject classes"
-    def __init__(cls, name, bases, dict_):
-        type.__init__(cls, name, bases, dict_)
-        cls._install_properties()
-        cls._type_register(cls.__dict__)
-
-    def _install_properties(cls):
-        gproperties = getattr(cls, '__gproperties__', {})
-
-        props = []
-        for name, prop in cls.__dict__.items():
-            if isinstance(prop, property): # not same as the built-in
-                if name in gproperties:
-                    raise ValueError
-                prop.name = name
-                gproperties[name] = prop.get_pspec_args()
-                props.append(prop)
-
-        if not props:
-            return
-
-        cls.__gproperties__ = gproperties
-
-        if ('do_get_property' in cls.__dict__ or
-            'do_set_property' in cls.__dict__):
-            for prop in props:
-                if (prop.getter != prop._default_getter or
-                    prop.setter != prop._default_setter):
-                    raise TypeError(
-                        "GObject subclass %r defines do_get/set_property"
-                        " and it also uses a property which a custom setter"
-                        " or getter. This is not allowed" % (
-                        cls.__name__,))
-
-        def obj_get_property(self, pspec):
-            name = pspec.name.replace('-', '_')
-            prop = getattr(cls, name, None)
-            if prop:
-                return prop.getter(self)
-        cls.do_get_property = obj_get_property
-
-        def obj_set_property(self, pspec, value):
-            name = pspec.name.replace('-', '_')
-            prop = getattr(cls, name, None)
-            if prop:
-                prop.setter(self, value)
-        cls.do_set_property = obj_set_property
-
-    def _must_register_type(cls, namespace):
-        ## don't register the class if already registered
-        if '__gtype__' in namespace:
-            return False
-
-        return ('__gproperties__' in namespace or
-                '__gsignals__' in namespace or
-                '__gtype_name__' in namespace)
-
-    def _type_register(cls, namespace):
-        if cls._must_register_type(namespace):
-            type_register(cls, namespace.get('__gtype_name__'))
-
-_gobject._install_metaclass(GObjectMeta)
-
-del _gobject
diff --git a/gobject/ffi-marshaller.c b/gobject/ffi-marshaller.c
deleted file mode 100644 (file)
index 60cfc34..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 2007 Johan Dahlin
- *
- *   ffi-marshaller: Generic CMarshaller using libffi
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-#include <glib-object.h>
-#include <ffi.h>
-
-static ffi_type *
-g_value_to_ffi_type (const GValue *gvalue, gpointer *value)
-{
-  ffi_type *rettype = NULL;
-  GType type = g_type_fundamental (G_VALUE_TYPE (gvalue));
-  g_assert (type != G_TYPE_INVALID);
-
-  switch (type) {
-  case G_TYPE_BOOLEAN:
-  case G_TYPE_CHAR:
-  case G_TYPE_INT:
-    rettype = &ffi_type_sint;
-    *value = (gpointer)&(gvalue->data[0].v_int);
-    break;
-  case G_TYPE_UCHAR:
-  case G_TYPE_UINT:
-    rettype = &ffi_type_uint;
-    *value = (gpointer)&(gvalue->data[0].v_uint);
-    break;
-  case G_TYPE_STRING:
-  case G_TYPE_OBJECT:
-  case G_TYPE_BOXED:
-  case G_TYPE_POINTER:
-    rettype = &ffi_type_pointer;
-    *value = (gpointer)&(gvalue->data[0].v_pointer);
-    break;
-  case G_TYPE_FLOAT:
-    rettype = &ffi_type_float;
-    *value = (gpointer)&(gvalue->data[0].v_float);
-    break;
-  case G_TYPE_DOUBLE:
-    rettype = &ffi_type_double;
-    *value = (gpointer)&(gvalue->data[0].v_double);
-    break;
-  case G_TYPE_LONG:
-    rettype = &ffi_type_slong;
-    *value = (gpointer)&(gvalue->data[0].v_long);
-    break;
-  case G_TYPE_ULONG:
-    rettype = &ffi_type_ulong;
-    *value = (gpointer)&(gvalue->data[0].v_ulong);
-    break;
-  case G_TYPE_INT64:
-    rettype = &ffi_type_sint64;
-    *value = (gpointer)&(gvalue->data[0].v_int64);
-    break;
-  case G_TYPE_UINT64:
-    rettype = &ffi_type_uint64;
-    *value = (gpointer)&(gvalue->data[0].v_uint64);
-    break;
-  default:
-    rettype = &ffi_type_pointer;
-    *value = NULL;
-    g_warning ("Unsupported fundamental type: %s", g_type_name (type));
-    break;
-  }
-  return rettype;
-}
-
-static void
-g_value_from_ffi_type (GValue *gvalue, gpointer *value)
-{
-  switch (g_type_fundamental (G_VALUE_TYPE (gvalue))) {
-  case G_TYPE_INT:
-      g_value_set_int (gvalue, *(gint*)value);
-      break;
-  case G_TYPE_FLOAT:
-      g_value_set_float (gvalue, *(gfloat*)value);
-      break;
-  case G_TYPE_DOUBLE:
-      g_value_set_double (gvalue, *(gdouble*)value);
-      break;
-  case G_TYPE_BOOLEAN:
-      g_value_set_boolean (gvalue, *(gboolean*)value);
-      break;
-  case G_TYPE_STRING:
-      g_value_set_string (gvalue, *(gchar**)value);
-      break;
-  case G_TYPE_CHAR:
-      g_value_set_char (gvalue, *(gchar*)value);
-      break;
-  case G_TYPE_UCHAR:
-      g_value_set_uchar (gvalue, *(guchar*)value);
-      break;
-  case G_TYPE_UINT:
-      g_value_set_uint (gvalue, *(guint*)value);
-      break;
-  case G_TYPE_POINTER:
-      g_value_set_pointer (gvalue, *(gpointer*)value);
-      break;
-  case G_TYPE_LONG:
-      g_value_set_long (gvalue, *(glong*)value);
-      break;
-  case G_TYPE_ULONG:
-      g_value_set_ulong (gvalue, *(gulong*)value);
-      break;
-  case G_TYPE_INT64:
-      g_value_set_int64 (gvalue, *(gint64*)value);
-      break;
-  case G_TYPE_UINT64:
-      g_value_set_uint64 (gvalue, *(guint64*)value);
-      break;
-  case G_TYPE_BOXED:
-      g_value_set_boxed (gvalue, *(gpointer*)value);
-      break;
-  default:
-    g_warning ("Unsupported fundamental type: %s",
-              g_type_name (g_type_fundamental (G_VALUE_TYPE (gvalue))));
-  }
-
-}
-
-void
-g_cclosure_marshal_generic_ffi (GClosure *closure,
-                               GValue *return_gvalue,
-                               guint n_param_values,
-                               const GValue *param_values,
-                               gpointer invocation_hint,
-                               gpointer marshal_data)
-{
-  ffi_type *rtype;
-  void *rvalue;
-  int n_args;
-  ffi_type **atypes;
-  void **args;
-  int i;
-  ffi_cif cif;
-  GCClosure *cc = (GCClosure*) closure;
-
-  if (return_gvalue && G_VALUE_TYPE (return_gvalue)) 
-    {
-      rtype = g_value_to_ffi_type (return_gvalue, &rvalue);
-    }
-  else 
-    {
-      rtype = &ffi_type_void;
-    }
-
-  rvalue = g_alloca (MAX (rtype->size, sizeof (ffi_arg)));
-  
-  n_args = n_param_values + 1;
-  atypes = g_alloca (sizeof (ffi_type *) * n_args);
-  args =  g_alloca (sizeof (gpointer) * n_args);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      atypes[n_args-1] = g_value_to_ffi_type (param_values + 0,  
-                                             &args[n_args-1]);
-      atypes[0] = &ffi_type_pointer;
-      args[0] = &closure->data;
-    }
-  else
-    {
-      atypes[0] = g_value_to_ffi_type (param_values + 0, &args[0]);
-      atypes[n_args-1] = &ffi_type_pointer;
-      args[n_args-1] = &closure->data;
-    }
-
-  for (i = 1; i < n_args - 1; i++)
-    atypes[i] = g_value_to_ffi_type (param_values + i, &args[i]);
-
-  if (ffi_prep_cif (&cif, FFI_DEFAULT_ABI, n_args, rtype, atypes) != FFI_OK)
-    return;
-
-  ffi_call (&cif, marshal_data ? marshal_data : cc->callback, rvalue, args);
-
-  if (return_gvalue && G_VALUE_TYPE (return_gvalue))
-    g_value_from_ffi_type (return_gvalue, rvalue);
-}
diff --git a/gobject/ffi-marshaller.h b/gobject/ffi-marshaller.h
deleted file mode 100644 (file)
index aac18bd..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 2007 Johan Dahlin
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-#ifndef _FFI_MARSHALLER_H_
-#define _FFI_MARSHALLER_H_
-
-void g_cclosure_marshal_generic_ffi (GClosure *closure,
-                                    GValue *return_gvalue,
-                                    guint n_param_values,
-                                    const GValue *param_values,
-                                    gpointer invocation_hint,
-                                    gpointer marshal_data);
-
-#endif /* _FFI_MARSHALLER_H_ */
index 6781b98..a9244eb 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-01-19.21; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -156,6 +156,10 @@ while test $# -ne 0; do
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
+       # Protect names problematic for `test' and other utilities.
+       case $dst_arg in
+         -* | [=\(\)!]) dst_arg=./$dst_arg;;
+       esac
        shift;;
 
     -T) no_target_directory=true;;
@@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
     fi
     shift # arg
     dst_arg=$arg
+    # Protect names problematic for `test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
   done
 fi
 
@@ -200,7 +208,11 @@ if test $# -eq 0; then
 fi
 
 if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
 
   # Set umask so as not to create temps with too-generous modes.
   # However, 'strip' requires both read and write access to temps.
@@ -228,9 +240,9 @@ fi
 
 for src
 do
-  # Protect names starting with `-'.
+  # Protect names problematic for `test' and other utilities.
   case $src in
-    -*) src=./$src;;
+    -* | [=\(\)!]) src=./$src;;
   esac
 
   if test -n "$dir_arg"; then
@@ -252,12 +264,7 @@ do
       echo "$0: no destination specified." >&2
       exit 1
     fi
-
     dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
 
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
@@ -385,7 +392,7 @@ do
 
       case $dstdir in
        /*) prefix='/';;
-       -*) prefix='./';;
+       [-=\(\)!]*) prefix='./';;
        *)  prefix='';;
       esac
 
@@ -403,7 +410,7 @@ do
 
       for d
       do
-       test -z "$d" && continue
+       test X"$d" = X && continue
 
        prefix=$prefix$d
        if test -d "$prefix"; then
old mode 100755 (executable)
new mode 100644 (file)
index aa5624c..c2852d8
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,9 +1,9 @@
 
-# libtool (GNU libtool) 2.4
+# libtool (GNU libtool) 2.4.2
 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
@@ -41,6 +41,7 @@
 #       --quiet, --silent    don't print informational messages
 #       --no-quiet, --no-silent
 #                            print informational messages (default)
+#       --no-warn            don't display warning messages
 #       --tag=TAG            use configuration variables from tag TAG
 #   -v, --verbose            print more informational messages than default
 #       --no-verbose         don't print the extra informational messages
@@ -69,7 +70,7 @@
 #         compiler:            $LTCC
 #         compiler flags:              $LTCFLAGS
 #         linker:              $LD (gnu? $with_gnu_ld)
-#         $progname:   (GNU libtool) 2.4
+#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1
 #         automake:    $automake_version
 #         autoconf:    $autoconf_version
 #
@@ -79,9 +80,9 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION=2.4
+VERSION="2.4.2 Debian-2.4.2-1ubuntu1"
 TIMESTAMP=""
-package_revision=1.3293
+package_revision=1.3337
 
 # Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -136,15 +137,10 @@ progpath="$0"
 
 : ${CP="cp -f"}
 test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
-: ${LN_S="ln -s"}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
-: ${SED="/bin/sed"}
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
 : ${Xsed="$SED -e 1s/^X//"}
 
@@ -387,7 +383,7 @@ case $progpath in
      ;;
   *)
      save_IFS="$IFS"
-     IFS=:
+     IFS=${PATH_SEPARATOR-:}
      for progdir in $PATH; do
        IFS="$save_IFS"
        test -x "$progdir/$progname" && break
@@ -771,8 +767,8 @@ func_help ()
        s*\$LTCFLAGS*'"$LTCFLAGS"'*
        s*\$LD*'"$LD"'*
        s/\$with_gnu_ld/'"$with_gnu_ld"'/
-       s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-       s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+       s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+       s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
        p
        d
      }
@@ -1052,6 +1048,7 @@ opt_finish=false
 opt_help=false
 opt_help_all=false
 opt_silent=:
+opt_warning=:
 opt_verbose=:
 opt_silent=false
 opt_verbose=false
@@ -1120,6 +1117,10 @@ esac
                        opt_silent=false
 func_append preserve_args " $opt"
                        ;;
+      --no-warning|--no-warn)
+                       opt_warning=false
+func_append preserve_args " $opt"
+                       ;;
       --no-verbose)
                        opt_verbose=false
 func_append preserve_args " $opt"
@@ -2059,7 +2060,7 @@ func_mode_compile ()
     *.[cCFSifmso] | \
     *.ada | *.adb | *.ads | *.asm | \
     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
       func_xform "$libobj"
       libobj=$func_xform_result
       ;;
@@ -3201,11 +3202,13 @@ func_mode_install ()
 
       # Set up the ranlib parameters.
       oldlib="$destdir/$name"
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
 
       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
 
       if test -n "$stripme" && test -n "$old_striplib"; then
-       func_show_eval "$old_striplib $oldlib" 'exit $?'
+       func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
       fi
 
       # Do each command in the postinstall commands.
@@ -3470,7 +3473,7 @@ static const void *lt_preloaded_setup() {
          # linked before any other PIC object.  But we must not use
          # pic_flag when linking with -static.  The problem exists in
          # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-         *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+         *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
            pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
          *-*-hpux*)
            pic_flag_for_symtable=" $pic_flag"  ;;
@@ -3982,14 +3985,17 @@ func_exec_program_core ()
 # launches target application with the remaining arguments.
 func_exec_program ()
 {
-  for lt_wr_arg
-  do
-    case \$lt_wr_arg in
-    --lt-*) ;;
-    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-    esac
-    shift
-  done
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
   func_exec_program_core \${1+\"\$@\"}
 }
 
@@ -5057,9 +5063,15 @@ void lt_dump_script (FILE* f)
 {
 EOF
            func_emit_wrapper yes |
-              $SED -e 's/\([\\"]\)/\\\1/g' \
-                  -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
-
+             $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
             cat <<"EOF"
 }
 EOF
@@ -5643,7 +5655,8 @@ func_mode_link ()
        continue
        ;;
 
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
        func_append compiler_flags " $arg"
        func_append compile_command " $arg"
        func_append finalize_command " $arg"
@@ -6111,7 +6124,10 @@ func_mode_link ()
        case $pass in
        dlopen) libs="$dlfiles" ;;
        dlpreopen) libs="$dlprefiles" ;;
-       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+       link)
+         libs="$deplibs %DEPLIBS%"
+         test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+         ;;
        esac
       fi
       if test "$linkmode,$pass" = "lib,dlpreopen"; then
@@ -6147,7 +6163,8 @@ func_mode_link ()
        lib=
        found=no
        case $deplib in
-       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
          if test "$linkmode,$pass" = "prog,link"; then
            compile_deplibs="$deplib $compile_deplibs"
            finalize_deplibs="$deplib $finalize_deplibs"
@@ -6430,19 +6447,19 @@ func_mode_link ()
            # It is a libtool convenience library, so add in its objects.
            func_append convenience " $ladir/$objdir/$old_library"
            func_append old_convenience " $ladir/$objdir/$old_library"
+           tmp_libs=
+           for deplib in $dependency_libs; do
+             deplibs="$deplib $deplibs"
+             if $opt_preserve_dup_deps ; then
+               case "$tmp_libs " in
+               *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+               esac
+             fi
+             func_append tmp_libs " $deplib"
+           done
          elif test "$linkmode" != prog && test "$linkmode" != lib; then
            func_fatal_error "\`$lib' is not a convenience library"
          fi
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           deplibs="$deplib $deplibs"
-           if $opt_preserve_dup_deps ; then
-             case "$tmp_libs " in
-             *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-             esac
-           fi
-           func_append tmp_libs " $deplib"
-         done
          continue
        fi # $pass = conv
 
@@ -6831,7 +6848,7 @@ func_mode_link ()
                 test "$hardcode_direct_absolute" = no; then
                add="$dir/$linklib"
              elif test "$hardcode_minus_L" = yes; then
-               add_dir="-L$dir"
+               add_dir="-L$absdir"
                # Try looking first in the location we're being installed to.
                if test -n "$inst_prefix_dir"; then
                  case $libdir in
@@ -7316,6 +7333,7 @@ func_mode_link ()
          # which has an extra 1 added just for fun
          #
          case $version_type in
+         # correct linux to gnu/linux during the next big refactor
          darwin|linux|osf|windows|none)
            func_arith $number_major + $number_minor
            current=$func_arith_result
@@ -7334,6 +7352,9 @@ func_mode_link ()
            revision="$number_minor"
            lt_irix_increment=no
            ;;
+         *)
+           func_fatal_configuration "$modename: unknown library version type \`$version_type'"
+           ;;
          esac
          ;;
        no)
@@ -7432,7 +7453,7 @@ func_mode_link ()
          versuffix="$major.$revision"
          ;;
 
-       linux)
+       linux) # correct to gnu/linux during the next big refactor
          func_arith $current - $age
          major=.$func_arith_result
          versuffix="$major.$age.$revision"
@@ -8020,6 +8041,11 @@ EOF
 
       # Test again, we may have decided not to build it any more
       if test "$build_libtool_libs" = yes; then
+       # Remove ${wl} instances when linking with ld.
+       # FIXME: should test the right _cmds variable.
+       case $archive_cmds in
+         *\$LD\ *) wl= ;;
+        esac
        if test "$hardcode_into_libs" = yes; then
          # Hardcode the library paths
          hardcode_libdirs=
@@ -8050,7 +8076,7 @@ EOF
            elif test -n "$runpath_var"; then
              case "$perm_rpath " in
              *" $libdir "*) ;;
-             *) func_apped perm_rpath " $libdir" ;;
+             *) func_append perm_rpath " $libdir" ;;
              esac
            fi
          done
@@ -8058,11 +8084,7 @@ EOF
          if test -n "$hardcode_libdir_separator" &&
             test -n "$hardcode_libdirs"; then
            libdir="$hardcode_libdirs"
-           if test -n "$hardcode_libdir_flag_spec_ld"; then
-             eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-           else
-             eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-           fi
+           eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
          fi
          if test -n "$runpath_var" && test -n "$perm_rpath"; then
            # We should set the runpath_var.
@@ -9152,6 +9174,8 @@ EOF
            esac
          done
        fi
+       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+       tool_oldlib=$func_to_tool_file_result
        eval cmds=\"$old_archive_cmds\"
 
        func_len " $cmds"
@@ -9261,7 +9285,8 @@ EOF
              *.la)
                func_basename "$deplib"
                name="$func_basename_result"
-               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+               func_resolve_sysroot "$deplib"
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
                test -z "$libdir" && \
                  func_fatal_error "\`$deplib' is not a valid libtool archive"
                func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
index 88de383..828104c 100644 (file)
@@ -1,8 +1,8 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -11,8 +11,8 @@
 
 m4_define([_LT_COPYING], [dnl
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -146,6 +146,8 @@ AC_REQUIRE([AC_CANONICAL_BUILD])dnl
 AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
 AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
 
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
 _LT_DECL([], [host_alias], [0], [The host system])dnl
 _LT_DECL([], [host], [0])dnl
 _LT_DECL([], [host_os], [0])dnl
@@ -637,7 +639,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
 m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
 configured by $[0], generated by m4_PACKAGE_STRING.
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
@@ -801,6 +803,7 @@ AC_DEFUN([LT_LANG],
 m4_case([$1],
   [C],                 [_LT_LANG(C)],
   [C++],               [_LT_LANG(CXX)],
+  [Go],                        [_LT_LANG(GO)],
   [Java],              [_LT_LANG(GCJ)],
   [Fortran 77],                [_LT_LANG(F77)],
   [Fortran],           [_LT_LANG(FC)],
@@ -822,6 +825,31 @@ m4_defun([_LT_LANG],
 ])# _LT_LANG
 
 
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC],     [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+  fi
+fi
+if test -z "$GOC"; then
+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
 # _LT_LANG_DEFAULT_CONFIG
 # -----------------------
 m4_defun([_LT_LANG_DEFAULT_CONFIG],
@@ -852,6 +880,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
        m4_ifdef([LT_PROG_GCJ],
        [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
 
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+  [LT_LANG(GO)],
+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
 AC_PROVIDE_IFELSE([LT_PROG_RC],
   [LT_LANG(RC)],
   [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
@@ -954,7 +986,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
        $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
          -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=$?
-       if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+       # If there is a non-empty error log, and "single_module"
+       # appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+         cat conftest.err >&AS_MESSAGE_LOG_FD
+       # Otherwise, if the output was created with a 0 exit code from
+       # the compiler, it worked.
+       elif test -f libconftest.dylib && test $_lt_result -eq 0; then
          lt_cv_apple_cc_single_mod=yes
        else
          cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -962,6 +1000,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
        rm -rf libconftest.dylib*
        rm -f conftest.*
       fi])
+
     AC_CACHE_CHECK([for -exported_symbols_list linker flag],
       [lt_cv_ld_exported_symbols_list],
       [lt_cv_ld_exported_symbols_list=no
@@ -973,6 +1012,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
        [lt_cv_ld_exported_symbols_list=no])
        LDFLAGS="$save_LDFLAGS"
     ])
+
     AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
       [lt_cv_ld_force_load=no
       cat > conftest.c << _LT_EOF
@@ -990,7 +1030,9 @@ _LT_EOF
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+       cat conftest.err >&AS_MESSAGE_LOG_FD
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
        lt_cv_ld_force_load=yes
       else
        cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1035,8 +1077,8 @@ _LT_EOF
 ])
 
 
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
 # Checks for linker and compiler features on darwin
 m4_defun([_LT_DARWIN_LINKER_FEATURES],
 [
@@ -1047,6 +1089,8 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
   else
     _LT_TAGVAR(whole_archive_flag_spec, $1)=''
   fi
@@ -1330,14 +1374,27 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
       *)
        if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
          LD="${LD-ld} -64"
@@ -1414,13 +1471,13 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
 case $host_os in
@@ -1600,6 +1657,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -1639,7 +1701,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
                 = "X$teststring$teststring"; } >/dev/null 2>&1 &&
              test $i != 17 # 1/2 MB should be enough
       do
@@ -2185,7 +2247,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -2194,7 +2256,7 @@ aix3*)
   ;;
 
 aix[[4-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -2259,7 +2321,7 @@ beos*)
   ;;
 
 bsdi[[45]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -2398,7 +2460,7 @@ m4_if([$1], [],[
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -2406,10 +2468,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -2417,7 +2475,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
+    freebsd[[23]].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -2435,7 +2493,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[[01]]* | freebsdelf3.[[01]]*)
@@ -2455,17 +2513,18 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -2526,7 +2585,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[[3-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -2542,7 +2601,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
        if test "$lt_cv_prog_gnu_ld" = yes; then
-               version_type=linux
+               version_type=linux # correct to gnu/linux during the next big refactor
        else
                version_type=irix
        fi ;;
@@ -2579,9 +2638,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2610,14 +2669,10 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Add ABI-specific directories to the system library path.
-  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
-
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
-
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
   # We used to test for /lib/ld.so.1 and disable shared libraries on
@@ -2629,6 +2684,18 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -2648,7 +2715,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -2717,7 +2784,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2742,7 +2809,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -2766,7 +2833,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -2797,7 +2864,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2807,7 +2874,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -3229,12 +3296,12 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
   else
@@ -3649,6 +3716,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK ['"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -4045,7 +4113,7 @@ m4_if([$1], [CXX], [
            ;;
        esac
        ;;
-      netbsd*)
+      netbsd* | netbsdelf*-gnu)
        ;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -4233,7 +4301,9 @@ m4_if([$1], [CXX], [
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+      fi
       ;;
     esac
   else
@@ -4325,18 +4395,33 @@ m4_if([$1], [CXX], [
        ;;
       *)
        case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ F* | *Sun*Fortran*)
+       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
          # Sun Fortran 8.3 passes all unrecognized flags to the linker
          _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
          _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
          _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
          ;;
+       *Sun\ F* | *Sun*Fortran*)
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+         ;;
        *Sun\ C*)
          # Sun C 5.9
          _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
          _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
          _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
          ;;
+        *Intel*\ [[CF]]*Compiler*)
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+         ;;
+       *Portland\ Group*)
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         ;;
        esac
        ;;
       esac
@@ -4496,13 +4581,18 @@ m4_if([$1], [CXX], [
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
-    cl*) ;;
+    cl*)
+      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
     *)
       _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
       _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
       ;;
     esac
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
   *)
     _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     ;;
@@ -4521,7 +4611,6 @@ m4_if([$1], [CXX], [
   _LT_TAGVAR(hardcode_direct, $1)=no
   _LT_TAGVAR(hardcode_direct_absolute, $1)=no
   _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
   _LT_TAGVAR(hardcode_libdir_separator, $1)=
   _LT_TAGVAR(hardcode_minus_L, $1)=no
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -4566,6 +4655,9 @@ dnl Note also adjust exclude_expsyms for C++ above.
   openbsd*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
   esac
 
   _LT_TAGVAR(ld_shlibs, $1)=yes
@@ -4772,8 +4864,7 @@ _LT_EOF
        xlf* | bgf* | bgxlf* | mpixlf*)
          # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
          _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-         _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
          _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
          if test "x$supports_anon_versioning" = xyes; then
            _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
@@ -4788,7 +4879,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
        _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
        wlarc=
@@ -4965,6 +5056,7 @@ _LT_EOF
        if test "$aix_use_runtimelinking" = yes; then
          shared_flag="$shared_flag "'${wl}-G'
        fi
+       _LT_TAGVAR(link_all_deplibs, $1)=no
       else
        # not using gcc
        if test "$host_cpu" = ia64; then
@@ -5068,6 +5160,7 @@ _LT_EOF
        # The linker will not automatically build a static lib if we build a DLL.
        # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+       _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
        _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
        # Don't use ranlib
        _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
@@ -5114,10 +5207,6 @@ _LT_EOF
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
 
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -5130,7 +5219,7 @@ _LT_EOF
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       _LT_TAGVAR(hardcode_direct, $1)=yes
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -5169,7 +5258,6 @@ _LT_EOF
       fi
       if test "$with_gnu_ld" = no; then
        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-       _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
        _LT_TAGVAR(hardcode_direct, $1)=yes
        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
@@ -5273,7 +5361,7 @@ _LT_EOF
       _LT_TAGVAR(link_all_deplibs, $1)=yes
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
        _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -5611,9 +5699,6 @@ _LT_TAGDECL([], [no_undefined_flag], [1],
 _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
     [Flag to hardcode $libdir into a binary during linking.
     This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
 _LT_TAGDECL([], [hardcode_libdir_separator], [1],
     [Whether we need a single "-rpath" flag with a separated argument])
 _LT_TAGDECL([], [hardcode_direct], [0],
@@ -5771,7 +5856,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -6141,7 +6225,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         esac
         ;;
 
-      freebsd[[12]]*)
+      freebsd2.*)
         # C++ shared libraries reported to be fairly broken before
        # switch to ELF
         _LT_TAGVAR(ld_shlibs, $1)=no
@@ -6902,12 +6986,18 @@ public class foo {
   }
 };
 _LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
 ])
 
 _lt_libdeps_save_CFLAGS=$CFLAGS
 case "$CC $CFLAGS " in #(
 *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
 *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
 esac
 
 dnl Parse the compiler output and extract the necessary
@@ -7104,7 +7194,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7237,7 +7326,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7424,6 +7512,77 @@ CFLAGS=$lt_save_CFLAGS
 ])# _LT_LANG_GCJ_CONFIG
 
 
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
 # _LT_LANG_RC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for the Windows resource compiler
@@ -7493,6 +7652,13 @@ dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
 
 
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
 # LT_PROG_RC
 # ----------
 AC_DEFUN([LT_PROG_RC],
index 17cfd51..5d9acd8 100644 (file)
@@ -326,9 +326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
 # MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
 m4_define([_LT_WITH_PIC],
 [AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
+    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
        [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
+    [lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+       IFS="$lt_save_ifs"
+       if test "X$lt_pkg" = "X$lt_p"; then
+         pic_mode=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
     [pic_mode=default])
 
 test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
index 9c7b5d4..07a8602 100644 (file)
@@ -9,15 +9,15 @@
 
 # @configure_input@
 
-# serial 3293 ltversion.m4
+# serial 3337 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.4])
-m4_define([LT_PACKAGE_REVISION], [1.3293])
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4'
-macro_revision='1.3293'
+[macro_version='2.4.2'
+macro_revision='1.3337'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
index 523e45a..c9cdf5d 100644 (file)
@@ -43,16 +43,18 @@ AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
 [AC_REQUIRE([AM_PATH_PYTHON])
 AC_MSG_CHECKING(for headers required to compile python extensions)
 dnl deduce PYTHON_INCLUDES
-py_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
-py_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
-PYTHON_CONFIG=`which $PYTHON`-config
-if test -x "$PYTHON_CONFIG"; then
-PYTHON_INCLUDES=`$PYTHON_CONFIG --includes 2>/dev/null`
-else
-PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
-if test "$py_prefix" != "$py_exec_prefix"; then
-  PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
-fi
+if test "x$PYTHON_INCLUDES" = x; then
+  PYTHON_CONFIG=`which $PYTHON`-config
+  if test -x "$PYTHON_CONFIG"; then
+    PYTHON_INCLUDES=`$PYTHON_CONFIG --includes 2>/dev/null`
+  else
+    py_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+    py_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+    PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+    if test "$py_prefix" != "$py_exec_prefix"; then
+      PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+    fi
+  fi
 fi
 AC_SUBST(PYTHON_INCLUDES)
 dnl check if the headers exist:
@@ -66,6 +68,31 @@ $2])
 CPPFLAGS="$save_CPPFLAGS"
 ])
 
+dnl a macro to check for ability to embed python
+dnl  AM_CHECK_PYTHON_LIBS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl function also defines PYTHON_LIBS
+AC_DEFUN([AM_CHECK_PYTHON_LIBS],
+[AC_REQUIRE([AM_CHECK_PYTHON_HEADERS])
+AC_MSG_CHECKING(for libraries required to embed python)
+dnl deduce PYTHON_LIBS
+py_exec_prefix=`$PYTHON -c "import sys; print(sys.exec_prefix)"`
+if test "x$PYTHON_LIBS" = x; then
+       PYTHON_LIBS="-L${py_prefix}/lib -lpython${PYTHON_VERSION}"
+fi
+if test "x$PYTHON_LIB_LOC" = x; then
+       PYTHON_LIB_LOC="${py_prefix}/lib"
+fi
+AC_SUBST(PYTHON_LIBS)
+AC_SUBST(PYTHON_LIB_LOC)
+dnl check if the headers exist:
+save_LIBS="$LIBS"
+LIBS="$LIBS $PYTHON_LIBS"
+AC_TRY_LINK_FUNC(Py_Initialize, dnl
+         [LIBS="$save_LIBS"; AC_MSG_RESULT(yes); $1], dnl
+         [LIBS="$save_LIBS"; AC_MSG_RESULT(no); $2])
+
+])
+
 # JD_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
 # ---------------------------------------------------------------------------
 # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
@@ -119,8 +146,7 @@ AC_DEFUN([JD_PATH_PYTHON],
   dnl Find a Python interpreter.  Python versions prior to 2.0 are not
   dnl supported
   m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-                    [python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 dnl
-python2.1 python2.0])
+                    [python python2 python2.7 python2.6 python3 python3.2 python3.1])
 
   m4_if([$1],[],[
     dnl No version check is needed.
diff --git a/missing b/missing
index 28055d2..86a8fc3 100755 (executable)
--- a/missing
+++ b/missing
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-01-06.13; # UTC
 
 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -84,7 +84,6 @@ Supported PROGRAM values:
   help2man     touch the output file
   lex          create \`lex.yy.c', if possible, from existing .c
   makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
   yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
 
 Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
@@ -122,15 +121,6 @@ case $1 in
     # Not GNU programs, they don't have --version.
     ;;
 
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
   *)
     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
        # We have it, but it failed.
@@ -226,7 +216,7 @@ WARNING: \`$1' $msg.  You should only need it if
          \`Bison' from any GNU archive site."
     rm -f y.tab.c y.tab.h
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
        case $LASTARG in
        *.y)
            SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
@@ -256,7 +246,7 @@ WARNING: \`$1' is $msg.  You should only need it if
          \`Flex' from any GNU archive site."
     rm -f lex.yy.c
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
        case $LASTARG in
        *.l)
            SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
@@ -318,41 +308,6 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch $file
     ;;
 
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-       case $firstarg in
-       *o*)
-           firstarg=`echo "$firstarg" | sed s/o//`
-           tar "$firstarg" "$@" && exit 0
-           ;;
-       esac
-       case $firstarg in
-       *h*)
-           firstarg=`echo "$firstarg" | sed s/h//`
-           tar "$firstarg" "$@" && exit 0
-           ;;
-       esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
   *)
     echo 1>&2 "\
 WARNING: \`$1' is needed, and is $msg.
index 3f9d05b..15c834c 100755 (executable)
@@ -1,10 +1,10 @@
 #!/bin/sh
 # py-compile - Compile a Python program
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-06-08.12; # UTC
 
-# Copyright (C) 2000, 2001, 2003, 2004, 2005, 2008, 2009 Free Software
-# Foundation, Inc.
+# Copyright (C) 2000, 2001, 2003, 2004, 2005, 2008, 2009, 2011 Free
+# Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -32,28 +32,36 @@ if [ -z "$PYTHON" ]; then
   PYTHON=python
 fi
 
+me=py-compile
+
+usage_error ()
+{
+  echo "$me: $*" >&2
+  echo "Try \`$me --help' for more information." >&2
+  exit 1
+}
+
 basedir=
 destdir=
-files=
 while test $# -ne 0; do
   case "$1" in
     --basedir)
-      basedir=$2
-      if test -z "$basedir"; then
-        echo "$0: Missing argument to --basedir." 1>&2
-        exit 1
+      if test $# -lt 2; then
+        usage_error "option '--basedir' requires an argument"
+      else
+        basedir=$2
       fi
       shift
       ;;
     --destdir)
-      destdir=$2
-      if test -z "$destdir"; then
-        echo "$0: Missing argument to --destdir." 1>&2
-        exit 1
+      if test $# -lt 2; then
+        usage_error "option '--destdir' requires an argument"
+      else
+        destdir=$2
       fi
       shift
       ;;
-    -h|--h*)
+    -h|--help)
       cat <<\EOF
 Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] FILES..."
 
@@ -69,20 +77,27 @@ Report bugs to <bug-automake@gnu.org>.
 EOF
       exit $?
       ;;
-    -v|--v*)
-      echo "py-compile $scriptversion"
+    -v|--version)
+      echo "$me $scriptversion"
       exit $?
       ;;
+    --)
+      shift
+      break
+      ;;
+    -*)
+      usage_error "unrecognized option '$1'"
+      ;;
     *)
-      files="$files $1"
+      break
       ;;
   esac
   shift
 done
 
+files=$*
 if test -z "$files"; then
-    echo "$0: No files given.  Try \`$0 --help' for more information." 1>&2
-    exit 1
+    usage_error "no files given"
 fi
 
 # if basedir was given, then it should be prepended to filenames before
diff --git a/pygobject-2.0-uninstalled.pc.in b/pygobject-2.0-uninstalled.pc.in
deleted file mode 100644 (file)
index 3fb6288..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-Name: PyGObject
-Description: Python bindings for GObject
-Requires: gobject-2.0
-Requires.private: @LIBFFI_PC@
-Version: @VERSION@
-Cflags: -I${pc_top_builddir}/${pcfiledir}/gobject
-
-# you can use the --variable=pygtkincludedir argument to
-# pkg-config to get this value.  You might want to use this to
-# install additional headers.
-pygtkincludedir=${pc_top_builddir}/${pcfiledir}/gobject
-xslfiles=${pc_top_builddir}/${pcfiledir}/docs/xsl
-
-# same here.  Useful when calling the code generator in addon packages.
-defsdir=${pc_top_builddir}/${pcfiledir}/gio
-fixxref=${pc_top_builddir}/${pcfiledir}/docs/xsl/fixxref.py
-codegendir=${pc_top_builddir}/${pcfiledir}/codegen
-pygdocs=${pc_top_builddir}/${pcfiledir}/docs
-datadir=${pc_top_builddir}/pygobject-@VERSION@
diff --git a/pygobject-2.0.pc.in b/pygobject-2.0.pc.in
deleted file mode 100644 (file)
index a47b685..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-includedir=@includedir@
-datarootdir=@datarootdir@
-datadir=@datadir@
-libdir=@libdir@
-
-# you can use the --variable=pygtkincludedir argument to
-# pkg-config to get this value.  You might want to use this to
-# install additional headers.
-pygtkincludedir=${includedir}/pygtk-2.0
-fixxref=${datadir}/pygobject/xsl/fixxref.py
-pygdocs=${datadir}/gtk-doc/html/pygobject
-defsdir=${datadir}/pygobject/2.0/defs
-codegendir=${datadir}/pygobject/2.0/codegen
-overridesdir=@pyexecdir@/gi/overrides
-
-Name: PyGObject
-Description: Python bindings for GObject
-Requires: gobject-2.0
-Requires.private: @LIBFFI_PC@
-Version: @VERSION@
-Cflags: -I${pygtkincludedir}
diff --git a/pygobject-3.0-uninstalled.pc.in b/pygobject-3.0-uninstalled.pc.in
new file mode 100644 (file)
index 0000000..4cec178
--- /dev/null
@@ -0,0 +1,12 @@
+# you can use the --variable=pygobjectincludedir argument to
+# pkg-config to get this value. You might want to use this to
+# install additional headers.
+pygobjectincludedir=${pcfiledir}/gi/_gobject
+overridesdir=${pcfiledir}/gi/overrides
+
+Name: PyGObject
+Description: Python bindings for GObject
+Requires: gobject-2.0
+Requires.private: @LIBFFI_PC@
+Version: @VERSION@
+Cflags: -I${pcfiledir}/gi/_gobject
diff --git a/pygobject-3.0.pc.in b/pygobject-3.0.pc.in
new file mode 100644 (file)
index 0000000..3c7af01
--- /dev/null
@@ -0,0 +1,27 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+includedir=@includedir@
+datarootdir=@datarootdir@
+datadir=@datadir@
+libdir=@libdir@
+
+# you can use the --variable=pygobjectincludedir argument to
+# pkg-config to get this value. You might want to use this to
+# install additional headers.
+pygobjectincludedir=${includedir}/pygobject-3.0
+
+Name: PyGObject
+Description: Python bindings for GObject
+Requires: gobject-2.0
+Requires.private: @LIBFFI_PC@
+Version: @VERSION@
+Cflags: -I${pygobjectincludedir}
+
+# overridesdir has now moved to the gi module
+# third parties can access it in a python script:
+#
+# import gi
+# installdir = gi._overridesdir
+#
+# the version of python you run the script from
+# will determine the actual overrides path
diff --git a/pygobject_postinstall.py b/pygobject_postinstall.py
deleted file mode 100644 (file)
index bd546bf..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- coding: utf-8 -*-
-
-
-import sys
-
-
-if len(sys.argv) == 2:
-    if sys.argv[1] == '-install':
-        print ('pygobject is now installed on your machine.\n')
diff --git a/pygtk.py b/pygtk.py
deleted file mode 100644 (file)
index e061b88..0000000
--- a/pygtk.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# pygtk - Python bindings for the GTK+ widget set.
-# Copyright (C) 1998-2002  James Henstridge
-#
-#   pygtk.py: pygtk version selection code.
-#
-# This library is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation; either version 2.1 of the License, or
-# (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-import fnmatch
-import glob
-import os
-import os.path
-import sys
-
-__all__ = ['require']
-
-_our_dir = os.path.dirname(os.path.abspath(os.path.normpath(__file__)))
-_pygtk_2_0_dir = os.path.normpath('%s/gtk-2.0' % _our_dir)
-
-_pygtk_dir_pat = 'gtk-[0-9].[0-9]'
-
-_pygtk_required_version = None
-
-def _get_available_versions():
-    versions = {}
-    for dir in sys.path:
-        if not dir: 
-            dir = os.getcwd()
-            
-        if not os.path.isdir(dir):
-            continue
-        
-        # if the dir is a pygtk dir, skip it
-        if fnmatch.fnmatchcase(os.path.basename(dir), _pygtk_dir_pat):
-            continue  
-        
-        for filename in glob.glob(os.path.join(dir, _pygtk_dir_pat)):
-            pathname = os.path.join(dir, filename)
-
-            # skip non directories
-            if not os.path.isdir(pathname):
-                continue
-            
-            # skip empty directories
-            if not os.listdir(pathname):
-                continue
-            
-            if not versions.has_key(filename[-3:]):
-                versions[filename[-3:]] = pathname
-    return versions
-
-def require20():
-    if _pygtk_2_0_dir not in sys.path:
-        sys.path.insert(0, _pygtk_2_0_dir)
-
-def require(version):
-    if version == '2.0':
-        return require20()
-    
-    global _pygtk_required_version
-
-    if _pygtk_required_version != None:
-        assert _pygtk_required_version == version, \
-               "a different version of gtk was already required"
-        return
-
-    assert not sys.modules.has_key('gtk'), \
-           "pygtk.require() must be called before importing gtk"
-
-    versions = _get_available_versions()
-    assert versions.has_key(version), \
-           "required version '%s' not found on system" % version
-
-    # remove any pygtk dirs first ...
-    for dir in sys.path:
-        if fnmatch.fnmatchcase(os.path.basename(dir), _pygtk_dir_pat):
-            sys.path.remove(dir)
-
-    # prepend the pygtk path ...
-    sys.path.insert(0, versions[version])
-    
-    _pygtk_required_version = version
diff --git a/setup.py b/setup.py
deleted file mode 100755 (executable)
index 74b9141..0000000
--- a/setup.py
+++ /dev/null
@@ -1,351 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# setup.py - distutils configuration for pygobject
-
-
-'''Python Bindings for GObject.
-
-PyGObject is a set of bindings for the glib, gobject and gio libraries.
-It provides an object oriented interface that is slightly higher level than
-the C one. It automatically does all the type casting and reference
-counting that you would have to do normally with the C API. You can
-find out more on the official homepage, http://www.pygtk.org/'''
-
-
-import os
-import sys
-import glob
-
-from distutils.command.build import build
-from distutils.command.build_clib import build_clib
-from distutils.command.build_scripts import build_scripts
-from distutils.sysconfig import get_python_inc
-from distutils.extension import Extension
-from distutils.core import setup
-
-from dsextras import GLOBAL_MACROS, GLOBAL_INC, get_m4_define, getoutput, \
-                     have_pkgconfig, pkgc_get_libraries, \
-                     pkgc_get_library_dirs, pkgc_get_include_dirs, \
-                     PkgConfigExtension, TemplateExtension, \
-                     BuildExt, InstallLib, InstallData
-
-
-if sys.platform != 'win32':
-    msg =  '*' * 68 + '\n'
-    msg += '* Building PyGObject using distutils is only supported on windows. *\n'
-    msg += '* To build PyGObject in a supported way, read the INSTALL file.    *\n'
-    msg += '*' * 68
-    raise SystemExit(msg)
-
-MIN_PYTHON_VERSION = (2, 6, 0)
-
-if sys.version_info[:3] < MIN_PYTHON_VERSION:
-    raise SystemExit('ERROR: Python %s or higher is required, %s found.' % (
-                         '.'.join(map(str, MIN_PYTHON_VERSION)),
-                         '.'.join(map(str, sys.version_info[:3]))))
-
-if not have_pkgconfig():
-    raise SystemExit('ERROR: Could not find pkg-config: '
-                     'Please check your PATH environment variable.')
-
-
-PYGTK_SUFFIX = '2.0'
-PYGTK_SUFFIX_LONG = 'gtk-' + PYGTK_SUFFIX
-
-GLIB_REQUIRED = get_m4_define('glib_required_version')
-
-MAJOR_VERSION = int(get_m4_define('pygobject_major_version'))
-MINOR_VERSION = int(get_m4_define('pygobject_minor_version'))
-MICRO_VERSION = int(get_m4_define('pygobject_micro_version'))
-VERSION       = '%d.%d.%d' % (MAJOR_VERSION, MINOR_VERSION, MICRO_VERSION)
-
-GLOBAL_INC += ['gobject']
-GLOBAL_MACROS += [('PYGOBJECT_MAJOR_VERSION', MAJOR_VERSION),
-                  ('PYGOBJECT_MINOR_VERSION', MINOR_VERSION),
-                  ('PYGOBJECT_MICRO_VERSION', MICRO_VERSION),
-                  ('VERSION', '\\"%s\\"' % VERSION)]
-
-BIN_DIR     = os.path.join('Scripts')
-INCLUDE_DIR = os.path.join('include', 'pygtk-%s' % PYGTK_SUFFIX)
-DEFS_DIR    = os.path.join('share', 'pygobject', PYGTK_SUFFIX, 'defs')
-XSL_DIR     = os.path.join('share', 'pygobject','xsl')
-HTML_DIR    = os.path.join('share', 'gtk-doc', 'html', 'pygobject')
-
-
-class PyGObjectInstallLib(InstallLib):
-    def run(self):
-        # Install pygtk.pth, pygtk.py[c] and templates
-        self.install_pth()
-        self.install_pygtk()
-
-        # Modify the base installation dir
-        install_dir = os.path.join(self.install_dir, PYGTK_SUFFIX_LONG)
-        self.set_install_dir(install_dir)
-
-        # Install tests
-        self.install_tests()
-
-        InstallLib.run(self)
-
-    def install_pth(self):
-        '''Create the pygtk.pth file'''
-        file = os.path.join(self.install_dir, 'pygtk.pth')
-        self.mkpath(self.install_dir)
-        open(file, 'w').write(PYGTK_SUFFIX_LONG)
-        self.local_outputs.append(file)
-        self.local_inputs.append('pygtk.pth')
-
-    def install_pygtk(self):
-        '''Install pygtk.py in the right place.'''
-        self.copy_file('pygtk.py', self.install_dir)
-        pygtk = os.path.join(self.install_dir, 'pygtk.py')
-        self.byte_compile([pygtk])
-        self.local_outputs.append(pygtk)
-        self.local_inputs.append('pygtk.py')
-
-    def copy_test(self, srcfile, dstfile=None):
-        if dstfile is None:
-            dstfile = os.path.join(self.test_dir, srcfile)
-        else:
-            dstfile = os.path.join(self.test_dir, dstfile)
-
-        srcfile = os.path.join('tests', srcfile)
-
-        self.copy_file(srcfile, os.path.abspath(dstfile))
-        self.local_outputs.append(dstfile)
-        self.local_inputs.append('srcfile')
-
-    def install_tests(self):
-        self.test_dir = os.path.join(self.install_dir, 'tests', 'pygobject')
-        self.mkpath(self.test_dir)
-
-        self.copy_test('runtests-windows.py', 'runtests.py')
-        self.copy_test('compathelper.py')
-
-        for testfile in glob.glob('tests/test*.py'):
-            self.copy_test(os.path.basename(testfile))
-
-
-class PyGObjectInstallData(InstallData):
-    def run(self):
-        self.add_template_option('VERSION', VERSION)
-        self.add_template_option('FFI_LIBS', '')
-        self.add_template_option('LIBFFI_PC', '')
-        self.prepare()
-
-        # Install templates
-        self.install_templates()
-
-        InstallData.run(self)
-
-    def install_templates(self):
-        self.install_template('pygobject-%s.pc.in' % PYGTK_SUFFIX,
-                              os.path.join(self.install_dir, 'lib', 'pkgconfig'))
-
-        self.install_template('docs/xsl/fixxref.py.in',
-                              os.path.join(self.install_dir, XSL_DIR))
-
-
-class PyGObjectBuild(build):
-    enable_threading = True
-
-PyGObjectBuild.user_options.append(('enable-threading', None,
-                                    'enable threading support'))
-
-
-class PyGObjectBuildScripts(build_scripts):
-    '''
-    Overrides distutils' build_script command so we can generate
-    a valid pygobject-codegen script that works on windows.
-    '''
-
-    def run(self):
-        self.mkpath(self.build_dir)
-        self.install_codegen_script()
-        build_scripts.run(self)
-
-    def install_codegen_script(self):
-        '''Create pygobject-codegen'''
-        script = ('#!/bin/sh\n\n'
-                  'codegendir=`pkg-config pygobject-%s --variable=codegendir`\n\n'
-                  'PYTHONPATH=$codegendir\n'
-                  'export PYTHONPATH\n\n'
-                  'exec pythonw.exe "$codegendir/codegen.py" "$@"\n' % PYGTK_SUFFIX)
-
-        outfile = os.path.join(self.build_dir, 'pygobject-codegen-%s' % PYGTK_SUFFIX)
-        open(outfile, 'w').write(script)
-
-
-# glib
-glib = PkgConfigExtension(name='glib._glib',
-                          pkc_name='glib-%s' % PYGTK_SUFFIX,
-                          pkc_version=GLIB_REQUIRED,
-                          pygobject_pkc=None,
-                          include_dirs=['glib'],
-                          libraries=['pyglib'],
-                          sources=['glib/glibmodule.c',
-                                   'glib/pygiochannel.c',
-                                   'glib/pygmaincontext.c',
-                                   'glib/pygmainloop.c',
-                                   'glib/pygoptioncontext.c',
-                                   'glib/pygoptiongroup.c',
-                                   'glib/pygsource.c',
-                                   'glib/pygspawn.c',
-                                   ])
-
-# GObject
-gobject = PkgConfigExtension(name='gobject._gobject',
-                             pkc_name='gobject-%s' % PYGTK_SUFFIX,
-                             pkc_version=GLIB_REQUIRED,
-                             pygobject_pkc=None,
-                             include_dirs=['glib','gi'],
-                             libraries=['pyglib'],
-                             sources=['gobject/gobjectmodule.c',
-                                      'gobject/pygboxed.c',
-                                      'gobject/pygenum.c',
-                                      'gobject/pygflags.c',
-                                      'gobject/pyginterface.c',
-                                      'gobject/pygobject.c',
-                                      'gobject/pygparamspec.c',
-                                      'gobject/pygpointer.c',
-                                      'gobject/pygtype.c',
-                                      ])
-
-# gio
-gio = TemplateExtension(name='gio',
-                        pkc_name='gio-%s' % PYGTK_SUFFIX,
-                        pkc_version=GLIB_REQUIRED,
-                        output='gio._gio',
-                        defs='gio/gio.defs',
-                        include_dirs=['glib'],
-                        libraries=['pyglib'],
-                        sources=['gio/giomodule.c',
-                                 'gio/gio.c',
-                                 'gio/pygio-utils.c'],
-                        register=['gio/gio-types.defs'],
-                        override='gio/gio.override')
-
-clibs = []
-data_files = []
-ext_modules = []
-
-#Install dsextras and codegen so that the pygtk installer can find them
-py_modules = ['dsextras']
-packages = ['codegen']
-
-if glib.can_build():
-    #It would have been nice to create another class, such as PkgConfigCLib to
-    #encapsulate this dictionary, but it is impossible. build_clib.py does
-    #a dumb check to see if its only arguments are a 2-tuple containing a
-    #string and a Dictionary type - which makes it impossible to hide behind a
-    #subclass
-    #
-    #So we are stuck with this ugly thing
-    clibs.append(('pyglib', {'sources': ['glib/pyglib.c'],
-                             'macros': GLOBAL_MACROS,
-                             'include_dirs': ['glib', get_python_inc()] +
-                                              pkgc_get_include_dirs('glib-%s' % PYGTK_SUFFIX)}))
-    #this library is not installed, so probably should not include its header
-    #data_files.append((INCLUDE_DIR, ('glib/pyglib.h',)))
-
-    ext_modules.append(glib)
-    py_modules += ['glib.__init__', 'glib.option']
-else:
-    raise SystemExit('ERROR: Nothing to do, glib could not be found and is essential.')
-
-if gobject.can_build():
-    ext_modules.append(gobject)
-    data_files.append((INCLUDE_DIR, ('gobject/pygobject.h',)))
-    data_files.append((HTML_DIR, glob.glob('docs/html/*.html')))
-    data_files.append((HTML_DIR, ['docs/style.css']))
-    data_files.append((XSL_DIR,  glob.glob('docs/xsl/*.xsl')))
-    py_modules += ['gobject.__init__', 'gobject.propertyhelper', 'gobject.constants']
-else:
-    raise SystemExit('ERROR: Nothing to do, gobject could not be found and is essential.')
-
-if gio.can_build():
-    ext_modules.append(gio)
-    py_modules += ['gio.__init__']
-    data_files.append((DEFS_DIR,('gio/gio.defs', 'gio/gio-types.defs',)))
-else:
-    raise SystemExit, 'ERROR: Nothing to do, gio could not be found and is essential.'
-
-# Build testhelper library
-testhelper = Extension(name='testhelper',
-                       sources=['tests/testhelpermodule.c',
-                                'tests/test-floating.c',
-                                'tests/test-thread.c',
-                                'tests/test-unknown.c'],
-                       libraries=['pyglib'] +
-                                 pkgc_get_libraries('glib-%s' % PYGTK_SUFFIX) +
-                                 pkgc_get_libraries('gobject-%s' % PYGTK_SUFFIX),
-                       include_dirs=['tests', 'glib',
-                                     'gobject', get_python_inc()] +
-                                    pkgc_get_include_dirs('glib-%s' % PYGTK_SUFFIX) +
-                                    pkgc_get_include_dirs('gobject-%s' % PYGTK_SUFFIX),
-                       library_dirs=pkgc_get_library_dirs('glib%s' % PYGTK_SUFFIX) +
-                                    pkgc_get_library_dirs('gobject-%s' % PYGTK_SUFFIX))
-
-ext_modules.append(testhelper)
-
-# Threading support
-if '--disable-threading' in sys.argv:
-    sys.argv.remove('--disable-threading')
-    enable_threading = False
-else:
-    if '--enable-threading' in sys.argv:
-        sys.argv.remove('--enable-threading')
-    try:
-        import thread
-    except ImportError:
-        print ('* Could not import thread module, disabling threading')
-        enable_threading = False
-    else:
-        enable_threading = True
-
-if enable_threading:
-    name = 'gthread-%s' % PYGTK_SUFFIX
-    for module in ext_modules:
-        raw = getoutput('pkg-config --libs-only-l %s' % name)
-        for arg in raw.split():
-            if arg.startswith('-l'):
-                module.libraries.append(arg[2:])
-            else:
-                module.extra_link_args.append(arg)
-        raw = getoutput('pkg-config --cflags-only-I %s' % name)
-        for arg in raw.split():
-            if arg.startswith('-I'):
-                module.include_dirs.append(arg[2:])
-            else:
-                module.extra_compile_args.append(arg)
-else:
-    GLOBAL_MACROS.append(('DISABLE_THREADING', 1))
-
-doclines = __doc__.split('\n')
-options = {'bdist_wininst': {'install_script': 'pygobject_postinstall.py',
-                             'user_access_control': 'auto'}}
-
-setup(name='pygobject',
-      url='http://www.pygtk.org/',
-      version=VERSION,
-      license='LGPL',
-      platforms=['MS Windows'],
-      maintainer='Johan Dahlin',
-      maintainer_email='johan@gnome.org',
-      description=doclines[0],
-      long_description='\n'.join(doclines[2:]),
-      provides=['codegen', 'dsextras', 'gio', 'glib', 'gobject'],
-      py_modules=py_modules,
-      packages=packages,
-      ext_modules=ext_modules,
-      libraries=clibs,
-      data_files=data_files,
-      scripts=['pygobject_postinstall.py'],
-      options=options,
-      cmdclass={'install_lib': PyGObjectInstallLib,
-                'install_data': PyGObjectInstallData,
-                'build_scripts': PyGObjectBuildScripts,
-                'build_clib' : build_clib,
-                'build_ext': BuildExt,
-                'build': PyGObjectBuild})
index bad15f0..081028a 100644 (file)
@@ -1,11 +1,9 @@
 CLEANFILES =
-noinst_LTLIBRARIES = 
-if ENABLE_INTROSPECTION
-noinst_LTLIBRARIES += libregress.la libgimarshallingtests.la
+noinst_LTLIBRARIES = libregress.la libgimarshallingtests.la
 
 nodist_libregress_la_SOURCES = $(GI_DATADIR)/tests/regress.c $(GI_DATADIR)/tests/regress.h
-libregress_la_CFLAGS = $(GIO_CFLAGS) $(PYCAIRO_CFLAGS)
-libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(PYCAIRO_LIBS)
+libregress_la_CFLAGS = $(GIO_CFLAGS) $(CAIRO_CFLAGS)
+libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(CAIRO_LIBS)
 nodist_libgimarshallingtests_la_SOURCES = $(GI_DATADIR)/tests/gimarshallingtests.c $(GI_DATADIR)/tests/gimarshallingtests.h
 libgimarshallingtests_la_CFLAGS = $(GLIB_CFLAGS)
 libgimarshallingtests_la_LDFLAGS = -module -avoid-version $(GLIB_LIBS)
@@ -44,11 +42,10 @@ gschemas.compiled: org.gnome.test.gschema.xml
        glib-compile-schemas --targetdir=. --schema-file=$<
 
 CLEANFILES += Regress-1.0.gir Regress-1.0.typelib GIMarshallingTests-1.0.gir GIMarshallingTests-1.0.typelib gschemas.compiled
-endif
 
 noinst_LTLIBRARIES += testhelper.la
 
-testhelper_la_CFLAGS = -I$(top_srcdir)/gobject -I$(top_srcdir)/glib $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
+testhelper_la_CFLAGS = -I$(top_srcdir)/gi/_gobject -I$(top_srcdir)/gi/_glib $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
 testhelper_la_LDFLAGS = -module -avoid-version
 testhelper_la_LIBADD = $(GLIB_LIBS)
 testhelper_la_SOURCES = \
@@ -68,7 +65,17 @@ testhelper.la: $(testhelper_la_OBJECTS) $(testhelper_la_DEPENDENCIES)
 
 all: $(LTLIBRARIES:.la=.so)
 
-TEST_FILES_STATIC = \
+EXTRA_DIST = \
+       compathelper.py \
+       runtests.py \
+       runtests-windows.py \
+       testmodule.py \
+       test-floating.h \
+       test-thread.h \
+       test-unknown.h \
+       te_ST@nouppera \
+       org.gnome.test.gschema.xml \
+       test_glib.py \
        test_gobject.py \
        test_interface.py \
        test_mainloop.py \
@@ -78,35 +85,22 @@ TEST_FILES_STATIC = \
        test_source.py \
        test_subprocess.py \
        test_thread.py \
-       test_uris.py
-
-if BUILD_GIO
-TEST_FILES_GIO = \
-       test_gio.py \
-       test_gresolver.py \
-       test_gsocket.py \
-       test_gicon.py \
-       test_gcancellable.py
-endif 
-
-if ENABLE_INTROSPECTION
-TEST_FILES_GI = \
+       test_uris.py \
        test_everything.py \
        test_gi.py \
        test_gdbus.py \
-       test_overrides.py
-endif
-
-EXTRA_DIST = \
-       compathelper.py \
-       runtests.py \
-       testmodule.py \
-       test-floating.h \
-       test-thread.h \
-       test-unknown.h \
-       org.gnome.test.gschema.xml
-
-EXTRA_DIST += $(TEST_FILES_STATIC) $(TEST_FILES_GI) $(TEST_FILES_GIO)
+       test_overrides.py \
+       test_overrides_gio.py \
+       test_overrides_glib.py \
+       test_overrides_pango.py \
+       test_overrides_gdk.py \
+       test_overrides_gtk.py \
+       test_atoms.py \
+       test_pygtkcompat.py \
+       gi/__init__.py \
+       gi/overrides/__init__.py \
+       gi/overrides/Regress.py \
+       $(NULL)
 
 clean-local:
        rm -f $(LTLIBRARIES:.la=.so) file.txt~
@@ -117,21 +111,21 @@ RUN_TESTS_ENV_VARS= \
        LD_LIBRARY_PATH=$(builddir)/.libs:$$LD_LIBRARY_PATH \
        GI_TYPELIB_PATH=$(builddir):$$GI_TYPELIB_PATH \
        XDG_DATA_DIRS=$$XDG_DATA_DIRS:/usr/share \
+       MALLOC_PERTURB_=85 \
        TESTS_BUILDDIR=$(builddir)
-RUN_TESTS_LAUNCH=$(RUN_TESTS_ENV_VARS) $(DBUS_LAUNCH) $(EXEC_NAME) $(PYTHON) $(srcdir)/runtests.py
 
-# run tests in separately to avoid loading static and introspection bindings in the same process
 check-local: $(LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled
-       TEST_FILES="$(TEST_FILES_STATIC)" $(RUN_TESTS_LAUNCH)
-       TEST_FILES="$(TEST_FILES_GI)" $(RUN_TESTS_LAUNCH)
-if BUILD_GIO
-       TEST_FILES="$(TEST_FILES_GIO)" $(RUN_TESTS_LAUNCH)
-endif 
+       @echo "  CHECK  Pyflakes"
+       @if type pyflakes >/dev/null 2>&1; then pyflakes $(top_srcdir); else echo "skipped, pyflakes not installed"; fi
+       @echo "  CHECK  PEP8"
+       @if type pep8 >/dev/null 2>&1; then pep8 --ignore=E501,E123,E124 --repeat --show-source $(top_srcdir); else echo "skipped, pep8 not installed"; fi
+       $(RUN_TESTS_ENV_VARS) $(DBUS_LAUNCH) $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning $(srcdir)/runtests.py
 
 check.gdb:
        EXEC_NAME="gdb --args" $(MAKE) check
 
-check.valgrind:
-       EXEC_NAME="valgrind --suppressions=python.supp" G_SLICE=always-malloc G_DEBUG=gc-friendly $(MAKE) check
+check.nemiver:
+       EXEC_NAME="nemiver" $(MAKE) check
 
--include $(top_srcdir)/git.mk
+check.valgrind:
+       EXEC_NAME="valgrind --leak-check=full --show-possibly-lost=no --suppressions=python.supp" G_SLICE=always-malloc G_DEBUG=gc-friendly $(MAKE) check
index a695412..a548741 100644 (file)
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -34,8 +51,6 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-@ENABLE_INTROSPECTION_TRUE@am__append_1 = libregress.la libgimarshallingtests.la
-@ENABLE_INTROSPECTION_TRUE@am__append_2 = Regress-1.0.gir Regress-1.0.typelib GIMarshallingTests-1.0.gir GIMarshallingTests-1.0.typelib gschemas.compiled
 subdir = tests
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -52,25 +67,23 @@ CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libgimarshallingtests_la_LIBADD =
-@ENABLE_INTROSPECTION_TRUE@nodist_libgimarshallingtests_la_OBJECTS = libgimarshallingtests_la-gimarshallingtests.lo
+nodist_libgimarshallingtests_la_OBJECTS =  \
+       libgimarshallingtests_la-gimarshallingtests.lo
 libgimarshallingtests_la_OBJECTS =  \
        $(nodist_libgimarshallingtests_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 libgimarshallingtests_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
        $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
        $(libgimarshallingtests_la_CFLAGS) $(CFLAGS) \
        $(libgimarshallingtests_la_LDFLAGS) $(LDFLAGS) -o $@
-@ENABLE_INTROSPECTION_TRUE@am_libgimarshallingtests_la_rpath =
 libregress_la_LIBADD =
-@ENABLE_INTROSPECTION_TRUE@nodist_libregress_la_OBJECTS =  \
-@ENABLE_INTROSPECTION_TRUE@    libregress_la-regress.lo
+nodist_libregress_la_OBJECTS = libregress_la-regress.lo
 libregress_la_OBJECTS = $(nodist_libregress_la_OBJECTS)
 libregress_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libregress_la_CFLAGS) \
        $(CFLAGS) $(libregress_la_LDFLAGS) $(LDFLAGS) -o $@
-@ENABLE_INTROSPECTION_TRUE@am_libregress_la_rpath =
 am__DEPENDENCIES_1 =
 testhelper_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_testhelper_la_OBJECTS = testhelper_la-testhelpermodule.lo \
@@ -90,25 +103,30 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
 am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(nodist_libgimarshallingtests_la_SOURCES) \
        $(nodist_libregress_la_SOURCES) $(testhelper_la_SOURCES)
 DIST_SOURCES = $(testhelper_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -122,6 +140,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
@@ -142,14 +162,13 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GIOUNIX_CFLAGS = @GIOUNIX_CFLAGS@
-GIOUNIX_LIBS = @GIOUNIX_LIBS@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
 GI_DATADIR = @GI_DATADIR@
 GI_LIBS = @GI_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
 GLIB_MKENUMS = @GLIB_MKENUMS@
@@ -202,6 +221,8 @@ PYTHON = @PYTHON@
 PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
 PYTHON_VERSION = @PYTHON_VERSION@
@@ -212,7 +233,6 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-XSLTPROC = @XSLTPROC@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -260,7 +280,6 @@ prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
-pygobject_CODEGEN_DEFINES = @pygobject_CODEGEN_DEFINES@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
@@ -270,15 +289,18 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-CLEANFILES = $(am__append_2)
-noinst_LTLIBRARIES = $(am__append_1) testhelper.la
-@ENABLE_INTROSPECTION_TRUE@nodist_libregress_la_SOURCES = $(GI_DATADIR)/tests/regress.c $(GI_DATADIR)/tests/regress.h
-@ENABLE_INTROSPECTION_TRUE@libregress_la_CFLAGS = $(GIO_CFLAGS) $(PYCAIRO_CFLAGS)
-@ENABLE_INTROSPECTION_TRUE@libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(PYCAIRO_LIBS)
-@ENABLE_INTROSPECTION_TRUE@nodist_libgimarshallingtests_la_SOURCES = $(GI_DATADIR)/tests/gimarshallingtests.c $(GI_DATADIR)/tests/gimarshallingtests.h
-@ENABLE_INTROSPECTION_TRUE@libgimarshallingtests_la_CFLAGS = $(GLIB_CFLAGS)
-@ENABLE_INTROSPECTION_TRUE@libgimarshallingtests_la_LDFLAGS = -module -avoid-version $(GLIB_LIBS)
-testhelper_la_CFLAGS = -I$(top_srcdir)/gobject -I$(top_srcdir)/glib $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
+CLEANFILES = Regress-1.0.gir Regress-1.0.typelib \
+       GIMarshallingTests-1.0.gir GIMarshallingTests-1.0.typelib \
+       gschemas.compiled
+noinst_LTLIBRARIES = libregress.la libgimarshallingtests.la \
+       testhelper.la
+nodist_libregress_la_SOURCES = $(GI_DATADIR)/tests/regress.c $(GI_DATADIR)/tests/regress.h
+libregress_la_CFLAGS = $(GIO_CFLAGS) $(CAIRO_CFLAGS)
+libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(CAIRO_LIBS)
+nodist_libgimarshallingtests_la_SOURCES = $(GI_DATADIR)/tests/gimarshallingtests.c $(GI_DATADIR)/tests/gimarshallingtests.h
+libgimarshallingtests_la_CFLAGS = $(GLIB_CFLAGS)
+libgimarshallingtests_la_LDFLAGS = -module -avoid-version $(GLIB_LIBS)
+testhelper_la_CFLAGS = -I$(top_srcdir)/gi/_gobject -I$(top_srcdir)/gi/_glib $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
 testhelper_la_LDFLAGS = -module -avoid-version
 testhelper_la_LIBADD = $(GLIB_LIBS)
 testhelper_la_SOURCES = \
@@ -287,7 +309,17 @@ testhelper_la_SOURCES = \
        test-thread.c \
        test-unknown.c
 
-TEST_FILES_STATIC = \
+EXTRA_DIST = \
+       compathelper.py \
+       runtests.py \
+       runtests-windows.py \
+       testmodule.py \
+       test-floating.h \
+       test-thread.h \
+       test-unknown.h \
+       te_ST@nouppera \
+       org.gnome.test.gschema.xml \
+       test_glib.py \
        test_gobject.py \
        test_interface.py \
        test_mainloop.py \
@@ -297,33 +329,32 @@ TEST_FILES_STATIC = \
        test_source.py \
        test_subprocess.py \
        test_thread.py \
-       test_uris.py
-
-@BUILD_GIO_TRUE@TEST_FILES_GIO = \
-@BUILD_GIO_TRUE@       test_gio.py \
-@BUILD_GIO_TRUE@       test_gresolver.py \
-@BUILD_GIO_TRUE@       test_gsocket.py \
-@BUILD_GIO_TRUE@       test_gicon.py \
-@BUILD_GIO_TRUE@       test_gcancellable.py
-
-@ENABLE_INTROSPECTION_TRUE@TEST_FILES_GI = \
-@ENABLE_INTROSPECTION_TRUE@    test_everything.py \
-@ENABLE_INTROSPECTION_TRUE@    test_gi.py \
-@ENABLE_INTROSPECTION_TRUE@    test_gdbus.py \
-@ENABLE_INTROSPECTION_TRUE@    test_overrides.py
-
-EXTRA_DIST = compathelper.py runtests.py testmodule.py test-floating.h \
-       test-thread.h test-unknown.h org.gnome.test.gschema.xml \
-       $(TEST_FILES_STATIC) $(TEST_FILES_GI) $(TEST_FILES_GIO)
+       test_uris.py \
+       test_everything.py \
+       test_gi.py \
+       test_gdbus.py \
+       test_overrides.py \
+       test_overrides_gio.py \
+       test_overrides_glib.py \
+       test_overrides_pango.py \
+       test_overrides_gdk.py \
+       test_overrides_gtk.py \
+       test_atoms.py \
+       test_pygtkcompat.py \
+       gi/__init__.py \
+       gi/overrides/__init__.py \
+       gi/overrides/Regress.py \
+       $(NULL)
+
 DBUS_LAUNCH = $(shell which dbus-launch)
 RUN_TESTS_ENV_VARS = \
        PYTHONPATH=$(top_builddir):$(top_builddir)/tests:$${PYTHONPATH:+:$$PYTHONPATH} \
        LD_LIBRARY_PATH=$(builddir)/.libs:$$LD_LIBRARY_PATH \
        GI_TYPELIB_PATH=$(builddir):$$GI_TYPELIB_PATH \
        XDG_DATA_DIRS=$$XDG_DATA_DIRS:/usr/share \
+       MALLOC_PERTURB_=85 \
        TESTS_BUILDDIR=$(builddir)
 
-RUN_TESTS_LAUNCH = $(RUN_TESTS_ENV_VARS) $(DBUS_LAUNCH) $(EXEC_NAME) $(PYTHON) $(srcdir)/runtests.py
 all: all-am
 
 .SUFFIXES:
@@ -367,10 +398,6 @@ clean-noinstLTLIBRARIES:
          echo "rm -f \"$${dir}/so_locations\""; \
          rm -f "$${dir}/so_locations"; \
        done
-@ENABLE_INTROSPECTION_FALSE@libgimarshallingtests.la: $(libgimarshallingtests_la_OBJECTS) $(libgimarshallingtests_la_DEPENDENCIES) 
-@ENABLE_INTROSPECTION_FALSE@   $(AM_V_CCLD)$(libgimarshallingtests_la_LINK) $(am_libgimarshallingtests_la_rpath) $(libgimarshallingtests_la_OBJECTS) $(libgimarshallingtests_la_LIBADD) $(LIBS)
-@ENABLE_INTROSPECTION_FALSE@libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES) 
-@ENABLE_INTROSPECTION_FALSE@   $(AM_V_CCLD)$(libregress_la_LINK) $(am_libregress_la_rpath) $(libregress_la_OBJECTS) $(libregress_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -388,74 +415,65 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 libgimarshallingtests_la-gimarshallingtests.lo: $(GI_DATADIR)/tests/gimarshallingtests.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgimarshallingtests_la_CFLAGS) $(CFLAGS) -MT libgimarshallingtests_la-gimarshallingtests.lo -MD -MP -MF $(DEPDIR)/libgimarshallingtests_la-gimarshallingtests.Tpo -c -o libgimarshallingtests_la-gimarshallingtests.lo `test -f '$(GI_DATADIR)/tests/gimarshallingtests.c' || echo '$(srcdir)/'`$(GI_DATADIR)/tests/gimarshallingtests.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgimarshallingtests_la-gimarshallingtests.Tpo $(DEPDIR)/libgimarshallingtests_la-gimarshallingtests.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$(GI_DATADIR)/tests/gimarshallingtests.c' object='libgimarshallingtests_la-gimarshallingtests.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$(GI_DATADIR)/tests/gimarshallingtests.c' object='libgimarshallingtests_la-gimarshallingtests.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgimarshallingtests_la_CFLAGS) $(CFLAGS) -c -o libgimarshallingtests_la-gimarshallingtests.lo `test -f '$(GI_DATADIR)/tests/gimarshallingtests.c' || echo '$(srcdir)/'`$(GI_DATADIR)/tests/gimarshallingtests.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgimarshallingtests_la_CFLAGS) $(CFLAGS) -c -o libgimarshallingtests_la-gimarshallingtests.lo `test -f '$(GI_DATADIR)/tests/gimarshallingtests.c' || echo '$(srcdir)/'`$(GI_DATADIR)/tests/gimarshallingtests.c
 
 libregress_la-regress.lo: $(GI_DATADIR)/tests/regress.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libregress_la_CFLAGS) $(CFLAGS) -MT libregress_la-regress.lo -MD -MP -MF $(DEPDIR)/libregress_la-regress.Tpo -c -o libregress_la-regress.lo `test -f '$(GI_DATADIR)/tests/regress.c' || echo '$(srcdir)/'`$(GI_DATADIR)/tests/regress.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libregress_la-regress.Tpo $(DEPDIR)/libregress_la-regress.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$(GI_DATADIR)/tests/regress.c' object='libregress_la-regress.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$(GI_DATADIR)/tests/regress.c' object='libregress_la-regress.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libregress_la_CFLAGS) $(CFLAGS) -c -o libregress_la-regress.lo `test -f '$(GI_DATADIR)/tests/regress.c' || echo '$(srcdir)/'`$(GI_DATADIR)/tests/regress.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libregress_la_CFLAGS) $(CFLAGS) -c -o libregress_la-regress.lo `test -f '$(GI_DATADIR)/tests/regress.c' || echo '$(srcdir)/'`$(GI_DATADIR)/tests/regress.c
 
 testhelper_la-testhelpermodule.lo: testhelpermodule.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-testhelpermodule.lo -MD -MP -MF $(DEPDIR)/testhelper_la-testhelpermodule.Tpo -c -o testhelper_la-testhelpermodule.lo `test -f 'testhelpermodule.c' || echo '$(srcdir)/'`testhelpermodule.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/testhelper_la-testhelpermodule.Tpo $(DEPDIR)/testhelper_la-testhelpermodule.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='testhelpermodule.c' object='testhelper_la-testhelpermodule.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testhelpermodule.c' object='testhelper_la-testhelpermodule.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-testhelpermodule.lo `test -f 'testhelpermodule.c' || echo '$(srcdir)/'`testhelpermodule.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-testhelpermodule.lo `test -f 'testhelpermodule.c' || echo '$(srcdir)/'`testhelpermodule.c
 
 testhelper_la-test-floating.lo: test-floating.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-test-floating.lo -MD -MP -MF $(DEPDIR)/testhelper_la-test-floating.Tpo -c -o testhelper_la-test-floating.lo `test -f 'test-floating.c' || echo '$(srcdir)/'`test-floating.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/testhelper_la-test-floating.Tpo $(DEPDIR)/testhelper_la-test-floating.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='test-floating.c' object='testhelper_la-test-floating.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='test-floating.c' object='testhelper_la-test-floating.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-floating.lo `test -f 'test-floating.c' || echo '$(srcdir)/'`test-floating.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-floating.lo `test -f 'test-floating.c' || echo '$(srcdir)/'`test-floating.c
 
 testhelper_la-test-thread.lo: test-thread.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-test-thread.lo -MD -MP -MF $(DEPDIR)/testhelper_la-test-thread.Tpo -c -o testhelper_la-test-thread.lo `test -f 'test-thread.c' || echo '$(srcdir)/'`test-thread.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/testhelper_la-test-thread.Tpo $(DEPDIR)/testhelper_la-test-thread.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='test-thread.c' object='testhelper_la-test-thread.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='test-thread.c' object='testhelper_la-test-thread.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-thread.lo `test -f 'test-thread.c' || echo '$(srcdir)/'`test-thread.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-thread.lo `test -f 'test-thread.c' || echo '$(srcdir)/'`test-thread.c
 
 testhelper_la-test-unknown.lo: test-unknown.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-test-unknown.lo -MD -MP -MF $(DEPDIR)/testhelper_la-test-unknown.Tpo -c -o testhelper_la-test-unknown.lo `test -f 'test-unknown.c' || echo '$(srcdir)/'`test-unknown.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/testhelper_la-test-unknown.Tpo $(DEPDIR)/testhelper_la-test-unknown.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='test-unknown.c' object='testhelper_la-test-unknown.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='test-unknown.c' object='testhelper_la-test-unknown.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-unknown.lo `test -f 'test-unknown.c' || echo '$(srcdir)/'`test-unknown.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-unknown.lo `test -f 'test-unknown.c' || echo '$(srcdir)/'`test-unknown.c
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -560,10 +578,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
@@ -665,37 +688,37 @@ uninstall-am:
 
 
 # This is a hack to make sure a shared library is built
-@ENABLE_INTROSPECTION_TRUE@libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES)
-@ENABLE_INTROSPECTION_TRUE@    $(LINK) -rpath $(pkgpyexecdir) $(libregress_la_LDFLAGS) $(libregress_la_OBJECTS) $(libregress_la_LIBADD) $(LIBS)
+libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES)
+       $(LINK) -rpath $(pkgpyexecdir) $(libregress_la_LDFLAGS) $(libregress_la_OBJECTS) $(libregress_la_LIBADD) $(LIBS)
 
-@ENABLE_INTROSPECTION_TRUE@libgimarshallingtests.la: $(libgimarshallingtests_la_OBJECTS) $(libgimarshallingtests_la_DEPENDENCIES)
-@ENABLE_INTROSPECTION_TRUE@    $(LINK) -rpath $(pkgpyexecdir) $(libgimarshallingtests_la_LDFLAGS) $(libgimarshallingtests_la_OBJECTS) $(libgimarhallingtests_la_LIBADD) $(LIBS)
+libgimarshallingtests.la: $(libgimarshallingtests_la_OBJECTS) $(libgimarshallingtests_la_DEPENDENCIES)
+       $(LINK) -rpath $(pkgpyexecdir) $(libgimarshallingtests_la_LDFLAGS) $(libgimarshallingtests_la_OBJECTS) $(libgimarhallingtests_la_LIBADD) $(LIBS)
 
 # g-i doesn't ship these as shared libraries anymore; we build them here
-@ENABLE_INTROSPECTION_TRUE@Regress-1.0.gir: libregress.la Makefile
-@ENABLE_INTROSPECTION_TRUE@    $(AM_V_GEN) g-ir-scanner --include=cairo-1.0 --include=Gio-2.0 \
-@ENABLE_INTROSPECTION_TRUE@    --namespace=Regress --nsversion=1.0 \
-@ENABLE_INTROSPECTION_TRUE@    --warn-all --warn-error \
-@ENABLE_INTROSPECTION_TRUE@    --library=libregress.la \
-@ENABLE_INTROSPECTION_TRUE@    --libtool="$(top_builddir)/libtool" \
-@ENABLE_INTROSPECTION_TRUE@    --output $@ \
-@ENABLE_INTROSPECTION_TRUE@    $(nodist_libregress_la_SOURCES)
-@ENABLE_INTROSPECTION_TRUE@Regress-1.0.typelib: Regress-1.0.gir Makefile
-@ENABLE_INTROSPECTION_TRUE@    $(AM_V_GEN) g-ir-compiler $< -o $@
-
-@ENABLE_INTROSPECTION_TRUE@GIMarshallingTests-1.0.gir: libgimarshallingtests.la Makefile
-@ENABLE_INTROSPECTION_TRUE@    $(AM_V_GEN) g-ir-scanner --include=Gio-2.0 \
-@ENABLE_INTROSPECTION_TRUE@    --namespace=GIMarshallingTests --nsversion=1.0 --symbol-prefix=gi_marshalling_tests \
-@ENABLE_INTROSPECTION_TRUE@    --warn-all --warn-error \
-@ENABLE_INTROSPECTION_TRUE@    --library=libgimarshallingtests.la \
-@ENABLE_INTROSPECTION_TRUE@    --libtool="$(top_builddir)/libtool" \
-@ENABLE_INTROSPECTION_TRUE@    --output $@ \
-@ENABLE_INTROSPECTION_TRUE@    $(nodist_libgimarshallingtests_la_SOURCES)
-@ENABLE_INTROSPECTION_TRUE@GIMarshallingTests-1.0.typelib: GIMarshallingTests-1.0.gir Makefile
-@ENABLE_INTROSPECTION_TRUE@    $(AM_V_GEN) g-ir-compiler $< -o $@
-
-@ENABLE_INTROSPECTION_TRUE@gschemas.compiled: org.gnome.test.gschema.xml
-@ENABLE_INTROSPECTION_TRUE@    glib-compile-schemas --targetdir=. --schema-file=$<
+Regress-1.0.gir: libregress.la Makefile
+       $(AM_V_GEN) g-ir-scanner --include=cairo-1.0 --include=Gio-2.0 \
+       --namespace=Regress --nsversion=1.0 \
+       --warn-all --warn-error \
+       --library=libregress.la \
+       --libtool="$(top_builddir)/libtool" \
+       --output $@ \
+       $(nodist_libregress_la_SOURCES)
+Regress-1.0.typelib: Regress-1.0.gir Makefile
+       $(AM_V_GEN) g-ir-compiler $< -o $@
+
+GIMarshallingTests-1.0.gir: libgimarshallingtests.la Makefile
+       $(AM_V_GEN) g-ir-scanner --include=Gio-2.0 \
+       --namespace=GIMarshallingTests --nsversion=1.0 --symbol-prefix=gi_marshalling_tests \
+       --warn-all --warn-error \
+       --library=libgimarshallingtests.la \
+       --libtool="$(top_builddir)/libtool" \
+       --output $@ \
+       $(nodist_libgimarshallingtests_la_SOURCES)
+GIMarshallingTests-1.0.typelib: GIMarshallingTests-1.0.gir Makefile
+       $(AM_V_GEN) g-ir-compiler $< -o $@
+
+gschemas.compiled: org.gnome.test.gschema.xml
+       glib-compile-schemas --targetdir=. --schema-file=$<
 
 # This is a hack to make sure a shared library is built
 testhelper.la: $(testhelper_la_OBJECTS) $(testhelper_la_DEPENDENCIES)
@@ -709,19 +732,21 @@ all: $(LTLIBRARIES:.la=.so)
 clean-local:
        rm -f $(LTLIBRARIES:.la=.so) file.txt~
 
-# run tests in separately to avoid loading static and introspection bindings in the same process
 check-local: $(LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled
-       TEST_FILES="$(TEST_FILES_STATIC)" $(RUN_TESTS_LAUNCH)
-       TEST_FILES="$(TEST_FILES_GI)" $(RUN_TESTS_LAUNCH)
-@BUILD_GIO_TRUE@       TEST_FILES="$(TEST_FILES_GIO)" $(RUN_TESTS_LAUNCH)
+       @echo "  CHECK  Pyflakes"
+       @if type pyflakes >/dev/null 2>&1; then pyflakes $(top_srcdir); else echo "skipped, pyflakes not installed"; fi
+       @echo "  CHECK  PEP8"
+       @if type pep8 >/dev/null 2>&1; then pep8 --ignore=E501,E123,E124 --repeat --show-source $(top_srcdir); else echo "skipped, pep8 not installed"; fi
+       $(RUN_TESTS_ENV_VARS) $(DBUS_LAUNCH) $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning $(srcdir)/runtests.py
 
 check.gdb:
        EXEC_NAME="gdb --args" $(MAKE) check
 
-check.valgrind:
-       EXEC_NAME="valgrind --suppressions=python.supp" G_SLICE=always-malloc G_DEBUG=gc-friendly $(MAKE) check
+check.nemiver:
+       EXEC_NAME="nemiver" $(MAKE) check
 
--include $(top_srcdir)/git.mk
+check.valgrind:
+       EXEC_NAME="valgrind --leak-check=full --show-possibly-lost=no --suppressions=python.supp" G_SLICE=always-malloc G_DEBUG=gc-friendly $(MAKE) check
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 2465747..668e60a 100644 (file)
@@ -49,7 +49,7 @@ if sys.version_info >= (3, 0):
     for tests that need to write to intefaces that take unicode in
     python 2
 
-    python 3 strings are unicode encoded as UTF-8 so the unicode object 
+    python 3 strings are unicode encoded as UTF-8 so the unicode object
     doesn't exist
 
     python 2 differs between a string an unicode string and you must specify
diff --git a/tests/gi/__init__.py b/tests/gi/__init__.py
new file mode 100644 (file)
index 0000000..3ad9513
--- /dev/null
@@ -0,0 +1,2 @@
+from pkgutil import extend_path
+__path__ = extend_path(__path__, __name__)
similarity index 69%
rename from glib/__init__.py
rename to tests/gi/overrides/Regress.py
index b114cb9..cb38631 100644 (file)
@@ -1,8 +1,7 @@
 # -*- Mode: Python; py-indent-offset: 4 -*-
-# pygobject - Python bindings for the GObject library
-# Copyright (C) 2006-2008 Johan Dahlin
+# vim: tabstop=4 shiftwidth=4 expandtab
 #
-#   glib/__init__.py: initialisation file for glib module
+# Copyright (C) 2012 Martin Pitt <martinpitt@gnome.org>
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 #
 # You should have received a copy of the GNU Lesser General Public
 # License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
 # USA
 
-from glib._glib import *
-_PyGLib_API = _glib._PyGLib_API
+from ..importer import modules
 
-del _glib
+Regress = modules['Regress']._introspection_module
+
+REGRESS_OVERRIDE = 42
+__all__ = ['REGRESS_OVERRIDE']
diff --git a/tests/gi/overrides/__init__.py b/tests/gi/overrides/__init__.py
new file mode 100644 (file)
index 0000000..3ad9513
--- /dev/null
@@ -0,0 +1,2 @@
+from pkgutil import extend_path
+__path__ = extend_path(__path__, __name__)
diff --git a/tests/runtests-windows.py b/tests/runtests-windows.py
new file mode 100644 (file)
index 0000000..36ab9e1
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+
+import os
+import sys
+import glob
+import unittest
+
+mydir = os.path.dirname(os.path.abspath(__file__))
+tests_builddir = os.path.abspath(os.environ.get('TESTS_BUILDDIR', os.path.dirname(__file__)))
+builddir = os.path.dirname(tests_builddir)
+
+# we have to do this here instead of Makefile.am so that the implicitly added
+# directory for the source file comes after the builddir
+sys.path.insert(0, tests_builddir)
+sys.path.insert(0, builddir)
+
+os.environ['PYGTK_USE_GIL_STATE_API'] = ''
+sys.argv.append('--g-fatal-warnings')
+
+from gi.repository import GObject
+GObject.threads_init()
+
+
+SKIP_FILES = ['runtests',
+              'test_mainloop',      # no os.fork on windows
+              'test_subprocess']    # blocks on testChildWatch
+
+
+if __name__ == '__main__':
+    testdir = os.path.split(os.path.abspath(__file__))[0]
+    os.chdir(testdir)
+
+    def gettestnames():
+        files = glob.glob('*.py')
+        names = map(lambda x: x[:-3], files)
+        map(names.remove, SKIP_FILES)
+        return names
+
+    suite = unittest.TestSuite()
+    loader = unittest.TestLoader()
+
+    for name in gettestnames():
+        try:
+            suite.addTest(loader.loadTestsFromName(name))
+        except Exception, e:
+            print 'Could not load %s: %s' % (name, e)
+
+    testRunner = unittest.TextTestRunner()
+    testRunner.verbosity = 2
+    testRunner.run(suite)
old mode 100644 (file)
new mode 100755 (executable)
index 2bb8637..c518fcc
@@ -1,3 +1,4 @@
+#!/usr/bin/env python
 # -*- Mode: Python -*-
 
 import os
@@ -6,21 +7,71 @@ import sys
 
 import unittest
 
+# provide missing unittest decorators and API for python 2.6; these decorators
+# do not actually work, just avoid the syntax failure
+if sys.version_info[:2] == (2, 6):
+    def skipUnless(condition, reason):
+        if not condition:
+            sys.stderr.write('[expected failure] ')
+        return lambda obj: obj
+
+    unittest.skipUnless = skipUnless
+    unittest.expectedFailure = lambda obj: obj
+
+    def assertGreater(self, a, b, msg=None):
+        if not a > b:
+            self.fail('%s not greater than %s' % (repr(a), repr(b)))
+
+    def assertGreaterEqual(self, a, b, msg=None):
+        if not a >= b:
+            self.fail('%s not greater than or equal to %s' % (repr(a), repr(b)))
+
+    def assertIsInstance(self, obj, cls, msg=None):
+        if not isinstance(obj, cls):
+            self.fail('%s is not an instance of %r' % (repr(obj), cls))
+
+    unittest.TestCase.assertGreaterEqual = assertGreaterEqual
+    unittest.TestCase.assertGreater = assertGreater
+    unittest.TestCase.assertIsInstance = assertIsInstance
+
+if '--help' in sys.argv:
+    print("Usage: ./runtests.py <testfiles>")
+    sys.exit(0)
+
+mydir = os.path.dirname(os.path.abspath(__file__))
+tests_builddir = os.path.abspath(os.environ.get('TESTS_BUILDDIR', os.path.dirname(__file__)))
+builddir = os.path.dirname(tests_builddir)
+
+# we have to do this here instead of Makefile.am so that the implicitly added
+# directory for the source file comes after the builddir
+sys.path.insert(0, tests_builddir)
+sys.path.insert(0, builddir)
 
 # force untranslated messages, as we check for them in some tests
 os.environ['LC_MESSAGES'] = 'C'
+os.environ['G_DEBUG'] = 'fatal-warnings fatal-criticals'
+
+# make Gio able to find our gschemas.compiled in tests/. This needs to be set
+# before importing Gio. Support a separate build tree, so look in build dir
+# first.
+os.environ['GSETTINGS_BACKEND'] = 'memory'
+os.environ['GSETTINGS_SCHEMA_DIR'] = tests_builddir
 
 # Load tests.
 if 'TEST_NAMES' in os.environ:
-       names = os.environ['TEST_NAMES'].split()
+    names = os.environ['TEST_NAMES'].split()
 elif 'TEST_FILES' in os.environ:
-       names = []
-       for filename in os.environ['TEST_FILES'].split():
-               names.append(filename[:-3])
+    names = []
+    for filename in os.environ['TEST_FILES'].split():
+        names.append(filename[:-3])
+elif len(sys.argv) > 1:
+    names = []
+    for filename in sys.argv[1:]:
+        names.append(filename.replace('.py', ''))
 else:
-       names = []
-       for filename in glob.iglob("test_*.py"):
-               names.append(filename[:-3])
+    names = []
+    for filename in glob.iglob(os.path.join(mydir, 'test_*.py')):
+        names.append(os.path.basename(filename)[:-3])
 
 loader = unittest.TestLoader()
 suite = loader.loadTestsFromNames(names)
@@ -30,5 +81,4 @@ suite = loader.loadTestsFromNames(names)
 runner = unittest.TextTestRunner(verbosity=2)
 result = runner.run(suite)
 if not result.wasSuccessful():
-       sys.exit(1) # exit code so "make check" reports error
-
+    sys.exit(1)  # exit code so "make check" reports error
diff --git a/tests/te_ST@nouppera b/tests/te_ST@nouppera
new file mode 100644 (file)
index 0000000..a511e90
--- /dev/null
@@ -0,0 +1,50 @@
+LC_IDENTIFICATION
+title      "pygobject test locale"
+END LC_IDENTIFICATION
+
+LC_COLLATE
+copy "POSIX"
+END LC_COLLATE
+
+LC_CTYPE
+# a â†’ a, other characters normally
+toupper (<U0061>,<U0061>); (<U0062>,<U0042>); (<U0063>,<U0043>); \
+        (<U0076>,<U0056>); (<U006C>,<U004C>); (<U0075>,<U0055>); \
+        (<U0065>,<U0045>);
+END LC_CTYPE
+
+LC_MESSAGES
+copy "en_US"
+END LC_MESSAGES
+
+LC_MONETARY
+copy "en_US"
+END LC_MONETARY
+
+LC_NUMERIC
+copy "POSIX"
+END LC_NUMERIC
+
+LC_TIME
+copy "POSIX"
+END LC_TIME
+
+LC_PAPER
+copy "en_US"
+END LC_PAPER
+
+LC_TELEPHONE
+copy "en_US"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+copy "en_US"
+END LC_MEASUREMENT
+
+LC_NAME
+copy "en_US"
+END LC_NAME
+
+LC_ADDRESS
+copy "en_US"
+END LC_ADDRESS
index 8e8ba5d..18e4a46 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * test-floating.c - Source for TestFloatingWithSinkFunc and TestFloatingWithoutSinkFunc
+ * test-floating.c - Source for TestFloating
  * Copyright (C) 2010 Collabora Ltd.
  *
  * This library is free software; you can redistribute it and/or
 
 #include "test-floating.h"
 
-/* TestFloatingWithSinkFunc */
+/* TestFloating */
 
-G_DEFINE_TYPE(TestFloatingWithSinkFunc, test_floating_with_sink_func, G_TYPE_INITIALLY_UNOWNED)
+G_DEFINE_TYPE(TestFloating, test_floating, G_TYPE_INITIALLY_UNOWNED)
 
 static void
-test_floating_with_sink_func_finalize (GObject *gobject)
+test_floating_finalize (GObject *gobject)
 {
-  TestFloatingWithSinkFunc *object = TEST_FLOATING_WITH_SINK_FUNC (gobject);
-
-  if (g_object_is_floating (object))
-    {
-      g_warning ("A floating object was finalized. This means that someone\n"
-                "called g_object_unref() on an object that had only a floating\n"
-                "reference; the initial floating reference is not owned by anyone\n"
-                "and must be removed with g_object_ref_sink().");
-    }
-  
-  G_OBJECT_CLASS (test_floating_with_sink_func_parent_class)->finalize (gobject);
-}
-
-static void
-test_floating_with_sink_func_class_init (TestFloatingWithSinkFuncClass *klass)
-{
-  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
-  gobject_class->finalize = test_floating_with_sink_func_finalize;
-}
-
-static void
-test_floating_with_sink_func_init (TestFloatingWithSinkFunc *self)
-{
-}
-
-void
-sink_test_floating_with_sink_func (GObject *object)
-{
-    if (g_object_is_floating(object)) {
-           g_object_ref_sink(object);
-    }
-}
-
-/* TestFloatingWithoutSinkFunc */
-
-G_DEFINE_TYPE(TestFloatingWithoutSinkFunc, test_floating_without_sink_func, G_TYPE_INITIALLY_UNOWNED)
-
-static void
-test_floating_without_sink_func_finalize (GObject *gobject)
-{
-  TestFloatingWithoutSinkFunc *object = TEST_FLOATING_WITHOUT_SINK_FUNC (gobject);
+  TestFloating *object = TEST_FLOATING (gobject);
 
   if (g_object_is_floating (object))
     {
@@ -77,19 +36,19 @@ test_floating_without_sink_func_finalize (GObject *gobject)
                 "and must be removed without g_object_ref_sink().");
     }
 
-  G_OBJECT_CLASS (test_floating_without_sink_func_parent_class)->finalize (gobject);
+  G_OBJECT_CLASS (test_floating_parent_class)->finalize (gobject);
 }
 
 static void
-test_floating_without_sink_func_class_init (TestFloatingWithoutSinkFuncClass *klass)
+test_floating_class_init (TestFloatingClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-  gobject_class->finalize = test_floating_without_sink_func_finalize;
+  gobject_class->finalize = test_floating_finalize;
 }
 
 static void
-test_floating_without_sink_func_init (TestFloatingWithoutSinkFunc *self)
+test_floating_init (TestFloating *self)
 {
 }
 
index bf4e101..ecf2462 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * test-floating.h - Header for TestFloatingWithSinkFunc and TestFloatingWithoutSinkFunc
+ * test-floating.h - Header for TestFloating
  * Copyright (C) 2010 Collabora Ltd.
  *
  * This library is free software; you can redistribute it and/or
 
 #include <glib-object.h>
 
-/* TestFloatingWithSinkFunc */
+/* TestFloating */
 
 typedef struct {
   GInitiallyUnowned parent;
-} TestFloatingWithSinkFunc;
+} TestFloating;
 
 typedef struct {
   GInitiallyUnownedClass parent_class;
-} TestFloatingWithSinkFuncClass;
+} TestFloatingClass;
 
-#define TEST_TYPE_FLOATING_WITH_SINK_FUNC (test_floating_with_sink_func_get_type())
-#define TEST_FLOATING_WITH_SINK_FUNC(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_FLOATING_WITH_SINK_FUNC, TestFloatingWithSinkFunc))
-#define TEST_FLOATING_WITH_SINK_FUNC_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_FLOATING_WITH_SINK_FUNC, TestFloatingWithSinkFuncClass))
-#define TEST_IS_FLOATING_WITH_SINK_FUNC(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_FLOATING_WITH_SINK_FUNC))
-#define TEST_IS_FLOATING_WITH_SINK_FUNC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), TEST_TYPE_FLOATING_WITH_SINK_FUNC))
-#define TEST_FLOATING_WITH_SINK_FUNC_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), TEST_TYPE_FLOATING_WITH_SINK_FUNC, TestFloatingWithSinkFuncClass))
+#define TEST_TYPE_FLOATING            (test_floating_get_type())
+#define TEST_FLOATING(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_FLOATING, TestFloating))
+#define TEST_FLOATING_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_FLOATING, TestFloatingClass))
+#define TEST_IS_FLOATING(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_FLOATING))
+#define TEST_IS_FLOATING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), TEST_TYPE_FLOATING))
+#define TEST_FLOATING_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), TEST_TYPE_FLOATING, TestFloatingClass))
 
-GType test_floating_with_sink_func_get_type (void);
-void sink_test_floating_with_sink_func (GObject *object);
-
-/* TestFloatingWithoutSinkFunc */
-
-typedef struct {
-  GInitiallyUnowned parent;
-} TestFloatingWithoutSinkFunc;
-
-typedef struct {
-  GInitiallyUnownedClass parent_class;
-} TestFloatingWithoutSinkFuncClass;
-
-#define TEST_TYPE_FLOATING_WITHOUT_SINK_FUNC (test_floating_without_sink_func_get_type())
-#define TEST_FLOATING_WITHOUT_SINK_FUNC(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_TYPE_FLOATING_WITHOUT_SINK_FUNC, TestFloatingWithoutSinkFunc))
-#define TEST_FLOATING_WITHOUT_SINK_FUNC_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_FLOATING_WITHOUT_SINK_FUNC, TestFloatingWithoutSinkFuncClass))
-#define TEST_IS_FLOATING_WITHOUT_SINK_FUNC(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_TYPE_FLOATING_WITHOUT_SINK_FUNC))
-#define TEST_IS_FLOATING_WITHOUT_SINK_FUNC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), TEST_TYPE_FLOATING_WITHOUT_SINK_FUNC))
-#define TEST_FLOATING_WITHOUT_SINK_FUNC_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), TEST_TYPE_FLOATING_WITHOUT_SINK_FUNC, TestFloatingWithoutSinkFuncClass))
-
-GType test_floating_without_sink_func_get_type (void);
+GType test_floating_get_type (void);
 
 /* TestOwnedByLibrary */
 
index 85aba73..f1c3139 100644 (file)
@@ -53,7 +53,7 @@ test_interface_get_type (void)
   return gtype;
 }
 
-void test_unknown_iface_method (TestInterface *iface)
+static void test_unknown_iface_method (TestInterface *iface)
 {
 }
 
diff --git a/tests/test_atoms.py b/tests/test_atoms.py
new file mode 100644 (file)
index 0000000..a59d15a
--- /dev/null
@@ -0,0 +1,46 @@
+import unittest
+
+try:
+    from gi.repository import Atk, Gdk, Gtk
+    (Atk, Gdk)  # pyflakes
+except:
+    Gdk = None
+
+
+@unittest.skipUnless(Gdk, 'Gdk not available')
+class TestGdkAtom(unittest.TestCase):
+    def test_create(self):
+        atom = Gdk.Atom.intern('my_string', False)
+        self.assertEqual(atom.name(), 'my_string')
+
+    def test_in_single(self):
+        a_selection = Gdk.Atom.intern('test_clipboard', False)
+        clipboard = Gtk.Clipboard.get(a_selection)
+        clipboard.set_text('hello', 5)
+
+        # needs a Gdk.Atom, not a string
+        self.assertRaises(TypeError, Gtk.Clipboard.get, 'CLIPBOARD')
+
+    def test_in_array(self):
+        a_plain = Gdk.Atom.intern('text/plain', False)
+        a_html = Gdk.Atom.intern('text/html', False)
+        a_jpeg = Gdk.Atom.intern('image/jpeg', False)
+
+        self.assertFalse(Gtk.targets_include_text([]))
+        self.assertTrue(Gtk.targets_include_text([a_plain, a_html]))
+        self.assertFalse(Gtk.targets_include_text([a_jpeg]))
+        self.assertTrue(Gtk.targets_include_text([a_jpeg, a_plain]))
+
+        self.assertFalse(Gtk.targets_include_image([], False))
+        self.assertFalse(Gtk.targets_include_image([a_plain, a_html], False))
+        self.assertTrue(Gtk.targets_include_image([a_jpeg], False))
+        self.assertTrue(Gtk.targets_include_image([a_jpeg, a_plain], False))
+
+    def test_out_glist(self):
+        display = Gdk.Display.get_default()
+        dm = display.get_device_manager()
+        device = dm.get_client_pointer()
+        axes = device.list_axes()
+        axes_names = [atom.name() for atom in axes]
+        self.assertNotEqual(axes_names, [])
+        self.assertTrue('Rel X' in axes_names)
index 5fadc36..243e770 100644 (file)
@@ -3,16 +3,30 @@
 # vim: tabstop=4 shiftwidth=4 expandtab
 
 import unittest
+import traceback
 
 import sys
-sys.path.insert(0, "../")
 from sys import getrefcount
 
-import cairo
+import copy
+try:
+    import cairo
+    has_cairo = True
+except ImportError:
+    has_cairo = False
 
+#import gi
 from gi.repository import GObject
+from gi.repository import GLib
+from gi.repository import Gio
 from gi.repository import Regress as Everything
 
+try:
+    from gi.repository import Gtk
+    Gtk  # pyflakes
+except:
+    Gtk = None
+
 if sys.version_info < (3, 0):
     UNICHAR = "\xe2\x99\xa5"
     PY2_UNICODE_UNICHAR = unicode(UNICHAR, 'UTF-8')
@@ -22,6 +36,7 @@ else:
 
 class TestEverything(unittest.TestCase):
 
+    @unittest.skipUnless(has_cairo, 'built without cairo support')
     def test_cairo_context(self):
         context = Everything.test_cairo_context_full_return()
         self.assertTrue(isinstance(context, cairo.Context))
@@ -30,20 +45,21 @@ class TestEverything(unittest.TestCase):
         context = cairo.Context(surface)
         Everything.test_cairo_context_none_in(context)
 
+    @unittest.skipUnless(has_cairo, 'built without cairo support')
     def test_cairo_surface(self):
         surface = Everything.test_cairo_surface_none_return()
         self.assertTrue(isinstance(surface, cairo.ImageSurface))
         self.assertTrue(isinstance(surface, cairo.Surface))
-        self.assertEquals(surface.get_format(), cairo.FORMAT_ARGB32)
-        self.assertEquals(surface.get_width(), 10)
-        self.assertEquals(surface.get_height(), 10)
+        self.assertEqual(surface.get_format(), cairo.FORMAT_ARGB32)
+        self.assertEqual(surface.get_width(), 10)
+        self.assertEqual(surface.get_height(), 10)
 
         surface = Everything.test_cairo_surface_full_return()
         self.assertTrue(isinstance(surface, cairo.ImageSurface))
         self.assertTrue(isinstance(surface, cairo.Surface))
-        self.assertEquals(surface.get_format(), cairo.FORMAT_ARGB32)
-        self.assertEquals(surface.get_width(), 10)
-        self.assertEquals(surface.get_height(), 10)
+        self.assertEqual(surface.get_format(), cairo.FORMAT_ARGB32)
+        self.assertEqual(surface.get_width(), 10)
+        self.assertEqual(surface.get_height(), 10)
 
         surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 10, 10)
         Everything.test_cairo_surface_none_in(surface)
@@ -51,29 +67,28 @@ class TestEverything(unittest.TestCase):
         surface = Everything.test_cairo_surface_full_out()
         self.assertTrue(isinstance(surface, cairo.ImageSurface))
         self.assertTrue(isinstance(surface, cairo.Surface))
-        self.assertEquals(surface.get_format(), cairo.FORMAT_ARGB32)
-        self.assertEquals(surface.get_width(), 10)
-        self.assertEquals(surface.get_height(), 10)
+        self.assertEqual(surface.get_format(), cairo.FORMAT_ARGB32)
+        self.assertEqual(surface.get_width(), 10)
+        self.assertEqual(surface.get_height(), 10)
 
     def test_unichar(self):
-        self.assertEquals("c", Everything.test_unichar("c"))
+        self.assertEqual("c", Everything.test_unichar("c"))
 
         if sys.version_info < (3, 0):
-            self.assertEquals(UNICHAR, Everything.test_unichar(PY2_UNICODE_UNICHAR))
-        self.assertEquals(UNICHAR, Everything.test_unichar(UNICHAR))
+            self.assertEqual(UNICHAR, Everything.test_unichar(PY2_UNICODE_UNICHAR))
+        self.assertEqual(UNICHAR, Everything.test_unichar(UNICHAR))
         self.assertRaises(TypeError, Everything.test_unichar, "")
         self.assertRaises(TypeError, Everything.test_unichar, "morethanonechar")
-        
 
     def test_floating(self):
         e = Everything.TestFloating()
-        self.assertEquals(e.__grefcount__, 1)
+        self.assertEqual(e.__grefcount__, 1)
 
         e = GObject.new(Everything.TestFloating)
-        self.assertEquals(e.__grefcount__, 1)
+        self.assertEqual(e.__grefcount__, 1)
 
         e = Everything.TestFloating.new()
-        self.assertEquals(e.__grefcount__, 1)
+        self.assertEqual(e.__grefcount__, 1)
 
     def test_caller_allocates(self):
         struct_a = Everything.TestStructA()
@@ -84,10 +99,10 @@ class TestEverything(unittest.TestCase):
 
         struct_a_clone = struct_a.clone()
         self.assertTrue(struct_a != struct_a_clone)
-        self.assertEquals(struct_a.some_int, struct_a_clone.some_int)
-        self.assertEquals(struct_a.some_int8, struct_a_clone.some_int8)
-        self.assertEquals(struct_a.some_double, struct_a_clone.some_double)
-        self.assertEquals(struct_a.some_enum, struct_a_clone.some_enum)
+        self.assertEqual(struct_a.some_int, struct_a_clone.some_int)
+        self.assertEqual(struct_a.some_int8, struct_a_clone.some_int8)
+        self.assertEqual(struct_a.some_double, struct_a_clone.some_double)
+        self.assertEqual(struct_a.some_enum, struct_a_clone.some_enum)
 
         struct_b = Everything.TestStructB()
         struct_b.some_int8 = 8
@@ -98,30 +113,30 @@ class TestEverything(unittest.TestCase):
 
         struct_b_clone = struct_b.clone()
         self.assertTrue(struct_b != struct_b_clone)
-        self.assertEquals(struct_b.some_int8, struct_b_clone.some_int8)
-        self.assertEquals(struct_b.nested_a.some_int, struct_b_clone.nested_a.some_int)
-        self.assertEquals(struct_b.nested_a.some_int8, struct_b_clone.nested_a.some_int8)
-        self.assertEquals(struct_b.nested_a.some_double, struct_b_clone.nested_a.some_double)
-        self.assertEquals(struct_b.nested_a.some_enum, struct_b_clone.nested_a.some_enum)
+        self.assertEqual(struct_b.some_int8, struct_b_clone.some_int8)
+        self.assertEqual(struct_b.nested_a.some_int, struct_b_clone.nested_a.some_int)
+        self.assertEqual(struct_b.nested_a.some_int8, struct_b_clone.nested_a.some_int8)
+        self.assertEqual(struct_b.nested_a.some_double, struct_b_clone.nested_a.some_double)
+        self.assertEqual(struct_b.nested_a.some_enum, struct_b_clone.nested_a.some_enum)
 
     def test_wrong_type_of_arguments(self):
         try:
             Everything.test_int8()
         except TypeError:
             (e_type, e) = sys.exc_info()[:2]
-            self.assertEquals(e.args, ("test_int8() takes exactly 1 argument(s) (0 given)",))
+            self.assertEqual(e.args, ("test_int8() takes exactly 1 argument (0 given)",))
 
     def test_gtypes(self):
         gchararray_gtype = GObject.type_from_name('gchararray')
         gtype = Everything.test_gtype(str)
-        self.assertEquals(gchararray_gtype, gtype)
+        self.assertEqual(gchararray_gtype, gtype)
         gtype = Everything.test_gtype('gchararray')
-        self.assertEquals(gchararray_gtype, gtype)
+        self.assertEqual(gchararray_gtype, gtype)
         gobject_gtype = GObject.GObject.__gtype__
         gtype = Everything.test_gtype(GObject.GObject)
-        self.assertEquals(gobject_gtype, gtype)
+        self.assertEqual(gobject_gtype, gtype)
         gtype = Everything.test_gtype('GObject')
-        self.assertEquals(gobject_gtype, gtype)
+        self.assertEqual(gobject_gtype, gtype)
         self.assertRaises(TypeError, Everything.test_gtype, 'invalidgtype')
 
         class NotARegisteredClass(object):
@@ -133,29 +148,102 @@ class TestEverything(unittest.TestCase):
             __gtype_name__ = 'EverythingTestsARegisteredClass'
 
         gtype = Everything.test_gtype('EverythingTestsARegisteredClass')
-        self.assertEquals(ARegisteredClass.__gtype__, gtype)
+        self.assertEqual(ARegisteredClass.__gtype__, gtype)
         gtype = Everything.test_gtype(ARegisteredClass)
-        self.assertEquals(ARegisteredClass.__gtype__, gtype)
+        self.assertEqual(ARegisteredClass.__gtype__, gtype)
         self.assertRaises(TypeError, Everything.test_gtype, 'ARegisteredClass')
-        
+
     def test_dir(self):
         attr_list = dir(Everything)
-        
+
         # test that typelib attributes are listed
         self.assertTrue('TestStructA' in attr_list)
-        
+
         # test that class attributes and methods are listed
         self.assertTrue('__class__' in attr_list)
         self.assertTrue('__dir__' in attr_list)
         self.assertTrue('__repr__' in attr_list)
-        
+
         # test that instance members are listed
         self.assertTrue('_namespace' in attr_list)
         self.assertTrue('_version' in attr_list)
-        
+
         # test that there are no duplicates returned
         self.assertEqual(len(attr_list), len(set(attr_list)))
 
+    def test_ptrarray(self):
+        # transfer container
+        result = Everything.test_garray_container_return()
+        self.assertEqual(result, ['regress'])
+        result = None
+
+        # transfer full
+        result = Everything.test_garray_full_return()
+        self.assertEqual(result, ['regress'])
+        result = None
+
+    def test_hash_return(self):
+        result = Everything.test_ghash_gvalue_return()
+        self.assertEqual(result['integer'], 12)
+        self.assertEqual(result['boolean'], True)
+        self.assertEqual(result['string'], 'some text')
+        self.assertEqual(result['strings'], ['first', 'second', 'third'])
+        self.assertEqual(result['flags'], Everything.TestFlags.FLAG1 | Everything.TestFlags.FLAG3)
+        self.assertEqual(result['enum'], Everything.TestEnum.VALUE2)
+        result = None
+
+    def test_hash_in(self):
+        # specifying a simple string array for "strings" does not work due to
+        # https://bugzilla.gnome.org/show_bug.cgi?id=666636
+        # workaround by explicitly building a GStrv object
+        class GStrv(list):
+            __gtype__ = GObject.TYPE_STRV
+
+        data = {'integer': 12,
+                'boolean': True,
+                'string': 'some text',
+                'strings': GStrv(['first', 'second', 'third']),
+                'flags': Everything.TestFlags.FLAG1 | Everything.TestFlags.FLAG3,
+                'enum': Everything.TestEnum.VALUE2,
+               }
+        Everything.test_ghash_gvalue_in(data)
+        data = None
+
+    def test_struct_gpointer(self):
+        l1 = GLib.List()
+        self.assertEqual(l1.data, None)
+        init_refcount = getrefcount(l1)
+
+        l1.data = 'foo'
+        self.assertEqual(l1.data, 'foo')
+
+        l2 = l1
+        self.assertEqual(l1.data, l2.data)
+        self.assertEqual(getrefcount(l1), init_refcount + 1)
+
+        l3 = copy.copy(l1)
+        l3.data = 'bar'
+        self.assertEqual(l1.data, 'foo')
+        self.assertEqual(l2.data, 'foo')
+        self.assertEqual(l3.data, 'bar')
+        self.assertEqual(getrefcount(l1), init_refcount + 1)
+        self.assertEqual(getrefcount(l3), init_refcount)
+
+    def test_struct_opaque(self):
+        # we should get a sensible error message
+        try:
+            Everything.TestBoxedPrivate()
+            self.fail('allocating disguised struct without default constructor unexpectedly succeeded')
+        except TypeError:
+            (e_type, e_value, e_tb) = sys.exc_info()
+            self.assertEqual(e_type, TypeError)
+            self.assertTrue('TestBoxedPrivate' in str(e_value), str(e_value))
+            self.assertTrue('override' in str(e_value), str(e_value))
+            self.assertTrue('constructor' in str(e_value), str(e_value))
+            tb = ''.join(traceback.format_exception(e_type, e_value, e_tb))
+            self.assertTrue('tests/test_everything.py", line' in tb, tb)
+
+
 class TestNullableArgs(unittest.TestCase):
     def test_in_nullable_hash(self):
         Everything.test_ghash_null_in(None)
@@ -197,89 +285,97 @@ class TestCallbacks(unittest.TestCase):
     called = False
     main_loop = GObject.MainLoop()
 
-    def testCallback(self):
+    def test_callback(self):
         TestCallbacks.called = False
+
         def callback():
             TestCallbacks.called = True
-        
+
         Everything.test_simple_callback(callback)
         self.assertTrue(TestCallbacks.called)
 
-    def testCallbackException(self):
+    def test_callback_exception(self):
         """
         This test ensures that we get errors from callbacks correctly
         and in particular that we do not segv when callbacks fail
         """
         def callback():
             x = 1 / 0
-            
-        try:
-            Everything.test_simple_callback(callback)
-        except ZeroDivisionError:
-            pass
+            self.fail('unexpected surviving zero divsion:' + str(x))
 
-    def testDoubleCallbackException(self):
+        # note that we do NOT expect the ZeroDivisionError to be propagated
+        # through from the callback, as it crosses the Python<->C boundary
+        # twice. (See GNOME #616279)
+        Everything.test_simple_callback(callback)
+
+    def test_double_callback_exception(self):
         """
         This test ensures that we get errors from callbacks correctly
         and in particular that we do not segv when callbacks fail
         """
         def badcallback():
             x = 1 / 0
+            self.fail('unexpected surviving zero divsion:' + str(x))
 
         def callback():
             Everything.test_boolean(True)
             Everything.test_boolean(False)
             Everything.test_simple_callback(badcallback())
 
-        try:
-            Everything.test_simple_callback(callback)
-        except ZeroDivisionError:
-            pass
+        # note that we do NOT expect the ZeroDivisionError to be propagated
+        # through from the callback, as it crosses the Python<->C boundary
+        # twice. (See GNOME #616279)
+        Everything.test_simple_callback(callback)
 
-    def testReturnValueCallback(self):
+    def test_return_value_callback(self):
         TestCallbacks.called = False
+
         def callback():
             TestCallbacks.called = True
             return 44
 
-        self.assertEquals(Everything.test_callback(callback), 44)
+        self.assertEqual(Everything.test_callback(callback), 44)
         self.assertTrue(TestCallbacks.called)
-    
-    def testCallbackAsync(self):
+
+    def test_callback_async(self):
         TestCallbacks.called = False
+
         def callback(foo):
             TestCallbacks.called = True
             return foo
 
-        Everything.test_callback_async(callback, 44);
-        i = Everything.test_callback_thaw_async();
-        self.assertEquals(44, i);
+        Everything.test_callback_async(callback, 44)
+        i = Everything.test_callback_thaw_async()
+        self.assertEqual(44, i)
         self.assertTrue(TestCallbacks.called)
 
-    def testCallbackScopeCall(self):
+    def test_callback_scope_call(self):
         TestCallbacks.called = 0
+
         def callback():
             TestCallbacks.called += 1
             return 0
 
         Everything.test_multi_callback(callback)
-        self.assertEquals(TestCallbacks.called, 2)
+        self.assertEqual(TestCallbacks.called, 2)
 
-    def testCallbackUserdata(self):
+    def test_callback_userdata(self):
         TestCallbacks.called = 0
+
         def callback(userdata):
-            self.assertEquals(userdata, "Test%d" % TestCallbacks.called)
+            self.assertEqual(userdata, "Test%d" % TestCallbacks.called)
             TestCallbacks.called += 1
             return TestCallbacks.called
-        
+
         for i in range(100):
             val = Everything.test_callback_user_data(callback, "Test%d" % i)
-            self.assertEquals(val, i+1)
-            
-        self.assertEquals(TestCallbacks.called, 100)
+            self.assertEqual(val, i + 1)
 
-    def testCallbackUserdataRefCount(self):
+        self.assertEqual(TestCallbacks.called, 100)
+
+    def test_callback_userdata_refcount(self):
         TestCallbacks.called = False
+
         def callback(userdata):
             TestCallbacks.called = True
             return 1
@@ -289,13 +385,13 @@ class TestCallbacks(unittest.TestCase):
         start_ref_count = getrefcount(ud)
         for i in range(100):
             Everything.test_callback_destroy_notify(callback, ud)
-            
+
         Everything.test_callback_thaw_notifications()
         end_ref_count = getrefcount(ud)
 
-        self.assertEquals(start_ref_count, end_ref_count)
+        self.assertEqual(start_ref_count, end_ref_count)
 
-    def testAsyncReadyCallback(self):
+    def test_async_ready_callback(self):
         TestCallbacks.called = False
         TestCallbacks.main_loop = GObject.MainLoop()
 
@@ -309,17 +405,17 @@ class TestCallbacks(unittest.TestCase):
 
         self.assertTrue(TestCallbacks.called)
 
-    def testCallbackDestroyNotify(self):
+    def test_callback_destroy_notify(self):
         def callback(user_data):
             TestCallbacks.called = True
             return 42
 
         TestCallbacks.called = False
-        self.assertEquals(Everything.test_callback_destroy_notify(callback, 42), 42)
+        self.assertEqual(Everything.test_callback_destroy_notify(callback, 42), 42)
         self.assertTrue(TestCallbacks.called)
-        self.assertEquals(Everything.test_callback_thaw_notifications(), 42)
+        self.assertEqual(Everything.test_callback_thaw_notifications(), 42)
 
-    def testCallbackInMethods(self):
+    def test_callback_in_methods(self):
         object_ = Everything.TestObj()
 
         def callback():
@@ -339,65 +435,167 @@ class TestCallbacks(unittest.TestCase):
             return 42
 
         TestCallbacks.called = False
-        obj_ = Everything.TestObj.new_callback(callbackWithUserData, None)
+        Everything.TestObj.new_callback(callbackWithUserData, None)
         self.assertTrue(TestCallbacks.called)
 
-    def testCallbackNone(self):
+    def test_callback_none(self):
         # make sure this doesn't assert or crash
         Everything.test_simple_callback(None)
 
+    def test_callback_gerror(self):
+        def callback(error):
+            self.assertEqual(error.message, 'regression test error')
+            self.assertTrue('g-io' in error.domain)
+            self.assertEqual(error.code, Gio.IOErrorEnum.NOT_SUPPORTED)
+            TestCallbacks.called = True
+
+        TestCallbacks.called = False
+        Everything.test_gerror_callback(callback)
+        self.assertTrue(TestCallbacks.called)
+
+    def test_callback_null_gerror(self):
+        def callback(error):
+            self.assertEqual(error, None)
+            TestCallbacks.called = True
+
+        TestCallbacks.called = False
+        Everything.test_null_gerror_callback(callback)
+        self.assertTrue(TestCallbacks.called)
+
+    def test_callback_owned_gerror(self):
+        def callback(error):
+            self.assertEqual(error.message, 'regression test owned error')
+            self.assertTrue('g-io' in error.domain)
+            self.assertEqual(error.code, Gio.IOErrorEnum.PERMISSION_DENIED)
+            TestCallbacks.called = True
+
+        TestCallbacks.called = False
+        Everything.test_owned_gerror_callback(callback)
+        self.assertTrue(TestCallbacks.called)
+
+    def test_callback_hashtable(self):
+        def callback(data):
+            self.assertEqual(data, mydict)
+            mydict['new'] = 42
+            TestCallbacks.called = True
+
+        mydict = {'foo': 1, 'bar': 2}
+        TestCallbacks.called = False
+        Everything.test_hash_table_callback(mydict, callback)
+        self.assertTrue(TestCallbacks.called)
+        self.assertEqual(mydict, {'foo': 1, 'bar': 2, 'new': 42})
+
+
+class TestClosures(unittest.TestCase):
+    def test_int_arg(self):
+        def callback(num):
+            self.called = True
+            return num + 1
+
+        self.called = False
+        result = Everything.test_closure_one_arg(callback, 42)
+        self.assertTrue(self.called)
+        self.assertEqual(result, 43)
+
+    def test_variant(self):
+        def callback(variant):
+            self.called = True
+            if variant is None:
+                return None
+            self.assertEqual(variant.get_type_string(), 'i')
+            return GLib.Variant('i', variant.get_int32() + 1)
+
+        self.called = False
+        result = Everything.test_closure_variant(callback, GLib.Variant('i', 42))
+        self.assertTrue(self.called)
+        self.assertEqual(result.get_type_string(), 'i')
+        self.assertEqual(result.get_int32(), 43)
+
+        self.called = False
+        result = Everything.test_closure_variant(callback, None)
+        self.assertTrue(self.called)
+        self.assertEqual(result, None)
+
+        self.called = False
+        self.assertRaises(TypeError, Everything.test_closure_variant, callback, 'foo')
+        self.assertFalse(self.called)
+
 
 class TestProperties(unittest.TestCase):
 
     def test_basic(self):
         object_ = Everything.TestObj()
 
-        self.assertEquals(object_.props.int, 0)
+        self.assertEqual(object_.props.int, 0)
         object_.props.int = 42
         self.assertTrue(isinstance(object_.props.int, int))
-        self.assertEquals(object_.props.int, 42)
+        self.assertEqual(object_.props.int, 42)
 
-        self.assertEquals(object_.props.float, 0.0)
+        self.assertEqual(object_.props.float, 0.0)
         object_.props.float = 42.42
         self.assertTrue(isinstance(object_.props.float, float))
-        self.assertAlmostEquals(object_.props.float, 42.42, places=5)
+        self.assertAlmostEqual(object_.props.float, 42.42, places=5)
 
-        self.assertEquals(object_.props.double, 0.0)
+        self.assertEqual(object_.props.double, 0.0)
         object_.props.double = 42.42
         self.assertTrue(isinstance(object_.props.double, float))
-        self.assertAlmostEquals(object_.props.double, 42.42, places=5)
+        self.assertAlmostEqual(object_.props.double, 42.42, places=5)
 
-        self.assertEquals(object_.props.string, None)
+        self.assertEqual(object_.props.string, None)
         object_.props.string = 'mec'
         self.assertTrue(isinstance(object_.props.string, str))
-        self.assertEquals(object_.props.string, 'mec')
+        self.assertEqual(object_.props.string, 'mec')
+
+        self.assertEqual(object_.props.gtype, GObject.TYPE_INVALID)
+        object_.props.gtype = int
+        self.assertEqual(object_.props.gtype, GObject.TYPE_INT)
 
     def test_hash_table(self):
         object_ = Everything.TestObj()
-        self.assertEquals(object_.props.hash_table, None)
+        self.assertEqual(object_.props.hash_table, None)
 
         object_.props.hash_table = {'mec': 56}
         self.assertTrue(isinstance(object_.props.hash_table, dict))
-        self.assertEquals(list(object_.props.hash_table.items())[0], ('mec', 56))
+        self.assertEqual(list(object_.props.hash_table.items())[0], ('mec', 56))
 
     def test_list(self):
         object_ = Everything.TestObj()
-        self.assertEquals(object_.props.list, [])
+        self.assertEqual(object_.props.list, [])
 
         object_.props.list = ['1', '2', '3']
         self.assertTrue(isinstance(object_.props.list, list))
-        self.assertEquals(object_.props.list, ['1', '2', '3'])
+        self.assertEqual(object_.props.list, ['1', '2', '3'])
 
     def test_boxed(self):
         object_ = Everything.TestObj()
-        self.assertEquals(object_.props.boxed, None)
+        self.assertEqual(object_.props.boxed, None)
 
         boxed = Everything.TestBoxed()
         boxed.some_int8 = 42
         object_.props.boxed = boxed
 
         self.assertTrue(isinstance(object_.props.boxed, Everything.TestBoxed))
-        self.assertEquals(object_.props.boxed.some_int8, 42)
+        self.assertEqual(object_.props.boxed.some_int8, 42)
+
+    def test_boxed_equality(self):
+        boxed = Everything.TestBoxedC()
+        # TestBoxedC uses refcounting, so we know that
+        # the pointer is the same when copied
+        copy = boxed.copy()
+        self.assertEqual(boxed, copy)
+        self.assertNotEqual(id(boxed), id(copy))
+
+    def test_gtype(self):
+        object_ = Everything.TestObj()
+        self.assertEqual(object_.props.gtype, GObject.TYPE_INVALID)
+        object_.props.gtype = int
+        self.assertEqual(object_.props.gtype, GObject.TYPE_INT)
+
+        object_ = Everything.TestObj(gtype=int)
+        self.assertEqual(object_.props.gtype, GObject.TYPE_INT)
+        object_.props.gtype = str
+        self.assertEqual(object_.props.gtype, GObject.TYPE_STRING)
+
 
 class TestTortureProfile(unittest.TestCase):
     def test_torture_profile(self):
@@ -409,9 +607,9 @@ class TestTortureProfile(unittest.TestCase):
 
         start_time = time.clock()
         for i in range(10000):
-            (y,z,q) = object_.torture_signature_0(5000,
-                                                  "Torture Test 1",
-                                                  12345)
+            (y, z, q) = object_.torture_signature_0(5000,
+                                                    "Torture Test 1",
+                                                    12345)
 
         end_time = time.clock()
         delta_time = end_time - start_time
@@ -422,23 +620,20 @@ class TestTortureProfile(unittest.TestCase):
 
         start_time = time.clock()
         for i in range(10000):
-            (y,z,q) = Everything.TestObj().torture_signature_0(5000,
-                                                               "Torture Test 2",
-                                                               12345)
+            (y, z, q) = Everything.TestObj().torture_signature_0(
+                5000, "Torture Test 2", 12345)
 
         end_time = time.clock()
         delta_time = end_time - start_time
         total_time += delta_time
         print("%f secs" % delta_time)
 
-
         sys.stdout.write("\ttorture test 3 (10000 iterations): ")
         start_time = time.clock()
         for i in range(10000):
             try:
-                (y,z,q) = object_.torture_signature_1(5000,
-                                                      "Torture Test 3",
-                                                      12345)
+                (y, z, q) = object_.torture_signature_1(
+                    5000, "Torture Test 3", 12345)
             except:
                 pass
         end_time = time.clock()
@@ -447,17 +642,15 @@ class TestTortureProfile(unittest.TestCase):
         print("%f secs" % delta_time)
 
         sys.stdout.write("\ttorture test 4 (10000 iterations): ")
+
         def callback(userdata):
             pass
 
-        userdata = [1,2,3,4]
+        userdata = [1, 2, 3, 4]
         start_time = time.clock()
         for i in range(10000):
-            (y,z,q) = Everything.test_torture_signature_2(5000,
-                                                          callback,
-                                                          userdata,
-                                                          "Torture Test 4",
-                                                          12345)
+            (y, z, q) = Everything.test_torture_signature_2(
+                5000, callback, userdata, "Torture Test 4", 12345)
         end_time = time.clock()
         delta_time = end_time - start_time
         total_time += delta_time
@@ -465,3 +658,101 @@ class TestTortureProfile(unittest.TestCase):
         print("\t====")
         print("\tTotal: %f sec" % total_time)
 
+
+class TestAdvancedInterfaces(unittest.TestCase):
+    def test_array_objs(self):
+        obj1, obj2 = Everything.test_array_fixed_out_objects()
+        self.assertTrue(isinstance(obj1, Everything.TestObj))
+        self.assertTrue(isinstance(obj2, Everything.TestObj))
+        self.assertNotEqual(obj1, obj2)
+
+    def test_obj_skip_return_val(self):
+        obj = Everything.TestObj()
+        ret = obj.skip_return_val(50, 42.0, 60, 2, 3)
+        self.assertEqual(len(ret), 3)
+        self.assertEqual(ret[0], 51)
+        self.assertEqual(ret[1], 61)
+        self.assertEqual(ret[2], 32)
+
+    def test_obj_skip_return_val_no_out(self):
+        obj = Everything.TestObj()
+        # raises an error for 0, succeeds for any other value
+        self.assertRaises(GLib.GError, obj.skip_return_val_no_out, 0)
+
+        ret = obj.skip_return_val_no_out(1)
+        self.assertEqual(ret, None)
+
+
+class TestSignals(unittest.TestCase):
+    def test_object_param_signal(self):
+        obj = Everything.TestObj()
+
+        def callback(obj, obj_param):
+            self.assertEqual(obj_param.props.int, 3)
+            self.assertGreater(obj_param.__grefcount__, 1)
+            obj.called = True
+
+        obj.called = False
+        obj.connect('sig-with-obj', callback)
+        obj.emit_sig_with_obj()
+        self.assertTrue(obj.called)
+
+    def test_int64_param_from_py(self):
+        obj = Everything.TestObj()
+
+        def callback(obj, i):
+            obj.callback_i = i
+            return i
+
+        obj.callback_i = None
+        obj.connect('sig-with-int64-prop', callback)
+        rv = obj.emit('sig-with-int64-prop', GObject.G_MAXINT64)
+        self.assertEqual(rv, GObject.G_MAXINT64)
+        self.assertEqual(obj.callback_i, GObject.G_MAXINT64)
+
+    def test_uint64_param_from_py(self):
+        obj = Everything.TestObj()
+
+        def callback(obj, i):
+            obj.callback_i = i
+            return i
+
+        obj.callback_i = None
+        obj.connect('sig-with-uint64-prop', callback)
+        rv = obj.emit('sig-with-uint64-prop', GObject.G_MAXUINT64)
+        self.assertEqual(rv, GObject.G_MAXUINT64)
+        self.assertEqual(obj.callback_i, GObject.G_MAXUINT64)
+
+    def test_int64_param_from_c(self):
+        obj = Everything.TestObj()
+
+        def callback(obj, i):
+            obj.callback_i = i
+            return i
+
+        obj.callback_i = None
+
+        obj.connect('sig-with-int64-prop', callback)
+        obj.emit_sig_with_int64()
+        self.assertEqual(obj.callback_i, GObject.G_MAXINT64)
+
+    def test_uint64_param_from_c(self):
+        obj = Everything.TestObj()
+
+        def callback(obj, i):
+            obj.callback_i = i
+            return i
+
+        obj.callback_i = None
+
+        obj.connect('sig-with-uint64-prop', callback)
+        obj.emit_sig_with_uint64()
+        self.assertEqual(obj.callback_i, GObject.G_MAXUINT64)
+
+
+class TestPango(unittest.TestCase):
+    @unittest.skipUnless(Gtk, 'Gtk not available')
+    def test_cairo_font_options(self):
+        screen = Gtk.Window().get_screen()
+        font_opts = screen.get_font_options()
+        self.assertEqual(type(font_opts.get_subpixel_order()), int)
diff --git a/tests/test_gcancellable.py b/tests/test_gcancellable.py
deleted file mode 100644 (file)
index f911572..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# -*- Mode: Python -*-
-
-import unittest
-
-import glib
-import gio
-
-
-class TestResolver(unittest.TestCase):
-    def setUp(self):
-        self.cancellable = gio.Cancellable()
-    
-    def test_make_poll_fd(self):
-        poll = self.cancellable.make_pollfd()
-        self.failUnless(isinstance(poll, glib.PollFD))
index a9442fe..b129419 100644 (file)
@@ -3,34 +3,35 @@
 
 import unittest
 
-import sys
-sys.path.insert(0, "../")
-
-import gobject
+from gi.repository import GObject
 from gi.repository import GLib
 from gi.repository import Gio
 
+
 class TestGDBusClient(unittest.TestCase):
     def setUp(self):
         self.bus = Gio.bus_get_sync(Gio.BusType.SESSION, None)
 
         self.dbus_proxy = Gio.DBusProxy.new_sync(self.bus,
-                Gio.DBusProxyFlags.NONE, None, 
-                'org.freedesktop.DBus',
-                '/org/freedesktop/DBus',
-                'org.freedesktop.DBus', None)
+                                                 Gio.DBusProxyFlags.NONE,
+                                                 None,
+                                                 'org.freedesktop.DBus',
+                                                 '/org/freedesktop/DBus',
+                                                 'org.freedesktop.DBus',
+                                                 None)
 
     def test_native_calls_sync(self):
-        result = self.dbus_proxy.call_sync('ListNames', None, 
-                Gio.DBusCallFlags.NO_AUTO_START, 500, None)
+        result = self.dbus_proxy.call_sync('ListNames', None,
+                                           Gio.DBusCallFlags.NO_AUTO_START,
+                                           500, None)
         self.assertTrue(isinstance(result, GLib.Variant))
-        result = result.unpack()[0] # result is always a tuple
+        result = result.unpack()[0]  # result is always a tuple
         self.assertTrue(len(result) > 1)
         self.assertTrue('org.freedesktop.DBus' in result)
 
-        result = self.dbus_proxy.call_sync('GetNameOwner', 
-                GLib.Variant('(s)', ('org.freedesktop.DBus',)),
-                Gio.DBusCallFlags.NO_AUTO_START, 500, None)
+        result = self.dbus_proxy.call_sync('GetNameOwner',
+                                           GLib.Variant('(s)', ('org.freedesktop.DBus',)),
+                                           Gio.DBusCallFlags.NO_AUTO_START, 500, None)
         self.assertTrue(isinstance(result, GLib.Variant))
         self.assertEqual(type(result.unpack()[0]), type(''))
 
@@ -38,47 +39,44 @@ class TestGDBusClient(unittest.TestCase):
         # error case: invalid argument types
         try:
             self.dbus_proxy.call_sync('GetConnectionUnixProcessID', None,
-                    Gio.DBusCallFlags.NO_AUTO_START, 500, None)
+                                      Gio.DBusCallFlags.NO_AUTO_START, 500, None)
             self.fail('call with invalid arguments should raise an exception')
-        except Exception:
-            etype, e = sys.exc_info()[:2]
+        except Exception as e:
             self.assertTrue('InvalidArgs' in str(e))
 
         # error case: invalid argument
         try:
-            self.dbus_proxy.call_sync('GetConnectionUnixProcessID', 
-                    GLib.Variant('(s)', (' unknown',)),
-                    Gio.DBusCallFlags.NO_AUTO_START, 500, None)
+            self.dbus_proxy.call_sync('GetConnectionUnixProcessID',
+                                      GLib.Variant('(s)', (' unknown',)),
+                                      Gio.DBusCallFlags.NO_AUTO_START, 500, None)
             self.fail('call with invalid arguments should raise an exception')
-        except Exception:
-            etype, e = sys.exc_info()[:2]
-
+        except Exception as e:
             self.assertTrue('NameHasNoOwner' in str(e))
 
         # error case: unknown method
         try:
             self.dbus_proxy.call_sync('UnknownMethod', None,
-                    Gio.DBusCallFlags.NO_AUTO_START, 500, None)
+                                      Gio.DBusCallFlags.NO_AUTO_START, 500, None)
             self.fail('call for unknown method should raise an exception')
-        except Exception:
-            etype, e = sys.exc_info()[:2]
-
+        except Exception as e:
             self.assertTrue('UnknownMethod' in str(e))
 
     def test_native_calls_async(self):
         def call_done(obj, result, user_data):
-            user_data['result'] = obj.call_finish(result)
-            user_data['main_loop'].quit()
+            try:
+                user_data['result'] = obj.call_finish(result)
+            finally:
+                user_data['main_loop'].quit()
 
-        main_loop = gobject.MainLoop()
+        main_loop = GObject.MainLoop()
         data = {'main_loop': main_loop}
-        self.dbus_proxy.call('ListNames', None, 
-                Gio.DBusCallFlags.NO_AUTO_START, 500, None,
-                call_done, data)
+        self.dbus_proxy.call('ListNames', None,
+                             Gio.DBusCallFlags.NO_AUTO_START, 500, None,
+                             call_done, data)
         main_loop.run()
 
         self.assertTrue(isinstance(data['result'], GLib.Variant))
-        result = data['result'].unpack()[0] # result is always a tuple
+        result = data['result'].unpack()[0]  # result is always a tuple
         self.assertTrue(len(result) > 1)
         self.assertTrue('org.freedesktop.DBus' in result)
 
@@ -87,17 +85,16 @@ class TestGDBusClient(unittest.TestCase):
             try:
                 obj.call_finish(result)
                 self.fail('call_finish() for unknown method should raise an exception')
-            except Exception:
-                etype, e = sys.exc_info()[:2]
-
+            except Exception as e:
                 self.assertTrue('UnknownMethod' in str(e))
             finally:
                 user_data['main_loop'].quit()
 
-        main_loop = gobject.MainLoop()
+        main_loop = GObject.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.call('UnknownMethod', None,
-                Gio.DBusCallFlags.NO_AUTO_START, 500, None, call_done, data)
+                             Gio.DBusCallFlags.NO_AUTO_START, 500, None,
+                             call_done, data)
         main_loop.run()
 
     def test_python_calls_sync(self):
@@ -117,29 +114,26 @@ class TestGDBusClient(unittest.TestCase):
         # does not have any method returning multiple results, so try talking
         # to notification-daemon (and don't fail the test if it does not exist)
         try:
-            notification_daemon = Gio.DBusProxy.new_sync(self.bus,
-                    Gio.DBusProxyFlags.NONE, None,
-                    'org.freedesktop.Notifications',
-                    '/org/freedesktop/Notifications',
-                    'org.freedesktop.Notifications', None)
-            result = notification_daemon.GetServerInformation('()')
+            nd = Gio.DBusProxy.new_sync(self.bus,
+                                        Gio.DBusProxyFlags.NONE, None,
+                                        'org.freedesktop.Notifications',
+                                        '/org/freedesktop/Notifications',
+                                        'org.freedesktop.Notifications',
+                                        None)
+            result = nd.GetServerInformation('()')
             self.assertTrue(isinstance(result, tuple))
             self.assertEqual(len(result), 4)
             for i in result:
                 self.assertEqual(type(i), type(''))
-        except Exception:
-            etype, e = sys.exc_info()[:2]
-
+        except Exception as e:
             if 'Error.ServiceUnknown' not in str(e):
                 raise
 
         # test keyword argument; timeout=0 will fail immediately
         try:
-            self.dbus_proxy.GetConnectionUnixProcessID('()', timeout=0)
+            self.dbus_proxy.GetConnectionUnixProcessID('(s)', '1', timeout=0)
             self.fail('call with timeout=0 should raise an exception')
-        except Exception:
-            etype, e = sys.exc_info()[:2]
-
+        except Exception as e:
             self.assertTrue('Timeout' in str(e), str(e))
 
     def test_python_calls_sync_noargs(self):
@@ -154,9 +148,7 @@ class TestGDBusClient(unittest.TestCase):
         try:
             self.dbus_proxy.GetConnectionUnixProcessID('()')
             self.fail('call with invalid arguments should raise an exception')
-        except Exception:
-            etype, e = sys.exc_info()[:2]
-
+        except Exception as e:
             self.assertTrue('InvalidArgs' in str(e), str(e))
 
         try:
@@ -170,10 +162,9 @@ class TestGDBusClient(unittest.TestCase):
             user_data['result'] = result
             user_data['main_loop'].quit()
 
-        main_loop = gobject.MainLoop()
+        main_loop = GObject.MainLoop()
         data = {'main_loop': main_loop}
-        self.dbus_proxy.ListNames('()', result_handler=call_done,
-                user_data=data)
+        self.dbus_proxy.ListNames('()', result_handler=call_done, user_data=data)
         main_loop.run()
 
         result = data['result']
@@ -187,10 +178,10 @@ class TestGDBusClient(unittest.TestCase):
             user_data['result'] = result
             user_data['main_loop'].quit()
 
-        main_loop = gobject.MainLoop()
+        main_loop = GObject.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.ListNames('(s)', 'invalid_argument',
-                result_handler=call_done, user_data=data)
+                                  result_handler=call_done, user_data=data)
         main_loop.run()
 
         self.assertTrue(isinstance(data['result'], Exception))
@@ -206,13 +197,13 @@ class TestGDBusClient(unittest.TestCase):
             user_data['error'] = error
             user_data['main_loop'].quit()
 
-        main_loop = gobject.MainLoop()
+        main_loop = GObject.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.ListNames('(s)', 'invalid_argument',
-                result_handler=call_done, error_handler=call_error,
-                user_data=data)
+                                  result_handler=call_done,
+                                  error_handler=call_error,
+                                  user_data=data)
         main_loop.run()
 
         self.assertTrue(isinstance(data['error'], Exception))
         self.assertTrue('InvalidArgs' in str(data['error']), str(data['error']))
-
index 6990225..ea58547 100644 (file)
@@ -10,9 +10,11 @@ import shutil
 import os
 import locale
 import subprocess
-from gi.repository import GObject
+from io import StringIO, BytesIO
+
+import gi
+from gi.repository import GObject, GLib, Gio
 
-import gobject
 from gi.repository import GIMarshallingTests
 
 from compathelper import _bytes
@@ -20,10 +22,10 @@ from compathelper import _bytes
 if sys.version_info < (3, 0):
     CONSTANT_UTF8 = "const \xe2\x99\xa5 utf8"
     PY2_UNICODE_UTF8 = unicode(CONSTANT_UTF8, 'UTF-8')
-    CHAR_255='\xff'
+    CHAR_255 = '\xff'
 else:
     CONSTANT_UTF8 = "const â™¥ utf8"
-    CHAR_255=bytes([255])
+    CHAR_255 = bytes([255])
 
 CONSTANT_NUMBER = 42
 
@@ -56,17 +58,17 @@ class TestConstant(unittest.TestCase):
 
 # Blocked by https://bugzilla.gnome.org/show_bug.cgi?id=595773
 #    def test_constant_utf8(self):
-#        self.assertEquals(CONSTANT_UTF8, GIMarshallingTests.CONSTANT_UTF8)
+#        self.assertEqual(CONSTANT_UTF8, GIMarshallingTests.CONSTANT_UTF8)
 
     def test_constant_number(self):
-        self.assertEquals(CONSTANT_NUMBER, GIMarshallingTests.CONSTANT_NUMBER)
+        self.assertEqual(CONSTANT_NUMBER, GIMarshallingTests.CONSTANT_NUMBER)
 
 
 class TestBoolean(unittest.TestCase):
 
     def test_boolean_return(self):
-        self.assertEquals(True, GIMarshallingTests.boolean_return_true())
-        self.assertEquals(False, GIMarshallingTests.boolean_return_false())
+        self.assertEqual(True, GIMarshallingTests.boolean_return_true())
+        self.assertEqual(False, GIMarshallingTests.boolean_return_false())
 
     def test_boolean_in(self):
         GIMarshallingTests.boolean_in_true(True)
@@ -76,12 +78,12 @@ class TestBoolean(unittest.TestCase):
         GIMarshallingTests.boolean_in_false(0)
 
     def test_boolean_out(self):
-        self.assertEquals(True, GIMarshallingTests.boolean_out_true())
-        self.assertEquals(False, GIMarshallingTests.boolean_out_false())
+        self.assertEqual(True, GIMarshallingTests.boolean_out_true())
+        self.assertEqual(False, GIMarshallingTests.boolean_out_false())
 
     def test_boolean_inout(self):
-        self.assertEquals(False, GIMarshallingTests.boolean_inout_true_false(True))
-        self.assertEquals(True, GIMarshallingTests.boolean_inout_false_true(False))
+        self.assertEqual(False, GIMarshallingTests.boolean_inout_true_false(True))
+        self.assertEqual(True, GIMarshallingTests.boolean_inout_false_true(False))
 
 
 class TestInt8(unittest.TestCase):
@@ -90,8 +92,8 @@ class TestInt8(unittest.TestCase):
     MIN = GObject.G_MININT8
 
     def test_int8_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.int8_return_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.int8_return_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.int8_return_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.int8_return_min())
 
     def test_int8_in(self):
         max = Number(self.MAX)
@@ -109,12 +111,12 @@ class TestInt8(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.int8_in_max, "self.MAX")
 
     def test_int8_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.int8_out_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.int8_out_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.int8_out_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.int8_out_min())
 
     def test_int8_inout(self):
-        self.assertEquals(self.MIN, GIMarshallingTests.int8_inout_max_min(Number(self.MAX)))
-        self.assertEquals(self.MAX, GIMarshallingTests.int8_inout_min_max(Number(self.MIN)))
+        self.assertEqual(self.MIN, GIMarshallingTests.int8_inout_max_min(Number(self.MAX)))
+        self.assertEqual(self.MAX, GIMarshallingTests.int8_inout_min_max(Number(self.MIN)))
 
 
 class TestUInt8(unittest.TestCase):
@@ -122,7 +124,7 @@ class TestUInt8(unittest.TestCase):
     MAX = GObject.G_MAXUINT8
 
     def test_uint8_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.uint8_return())
+        self.assertEqual(self.MAX, GIMarshallingTests.uint8_return())
 
     def test_uint8_in(self):
         number = Number(self.MAX)
@@ -137,10 +139,10 @@ class TestUInt8(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.uint8_in, "self.MAX")
 
     def test_uint8_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.uint8_out())
+        self.assertEqual(self.MAX, GIMarshallingTests.uint8_out())
 
     def test_uint8_inout(self):
-        self.assertEquals(0, GIMarshallingTests.uint8_inout(Number(self.MAX)))
+        self.assertEqual(0, GIMarshallingTests.uint8_inout(Number(self.MAX)))
 
 
 class TestInt16(unittest.TestCase):
@@ -149,8 +151,8 @@ class TestInt16(unittest.TestCase):
     MIN = GObject.G_MININT16
 
     def test_int16_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.int16_return_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.int16_return_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.int16_return_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.int16_return_min())
 
     def test_int16_in(self):
         max = Number(self.MAX)
@@ -168,12 +170,12 @@ class TestInt16(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.int16_in_max, "self.MAX")
 
     def test_int16_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.int16_out_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.int16_out_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.int16_out_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.int16_out_min())
 
     def test_int16_inout(self):
-        self.assertEquals(self.MIN, GIMarshallingTests.int16_inout_max_min(Number(self.MAX)))
-        self.assertEquals(self.MAX, GIMarshallingTests.int16_inout_min_max(Number(self.MIN)))
+        self.assertEqual(self.MIN, GIMarshallingTests.int16_inout_max_min(Number(self.MAX)))
+        self.assertEqual(self.MAX, GIMarshallingTests.int16_inout_min_max(Number(self.MIN)))
 
 
 class TestUInt16(unittest.TestCase):
@@ -181,7 +183,7 @@ class TestUInt16(unittest.TestCase):
     MAX = GObject.G_MAXUINT16
 
     def test_uint16_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.uint16_return())
+        self.assertEqual(self.MAX, GIMarshallingTests.uint16_return())
 
     def test_uint16_in(self):
         number = Number(self.MAX)
@@ -196,10 +198,10 @@ class TestUInt16(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.uint16_in, "self.MAX")
 
     def test_uint16_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.uint16_out())
+        self.assertEqual(self.MAX, GIMarshallingTests.uint16_out())
 
     def test_uint16_inout(self):
-        self.assertEquals(0, GIMarshallingTests.uint16_inout(Number(self.MAX)))
+        self.assertEqual(0, GIMarshallingTests.uint16_inout(Number(self.MAX)))
 
 
 class TestInt32(unittest.TestCase):
@@ -208,8 +210,8 @@ class TestInt32(unittest.TestCase):
     MIN = GObject.G_MININT32
 
     def test_int32_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.int32_return_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.int32_return_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.int32_return_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.int32_return_min())
 
     def test_int32_in(self):
         max = Number(self.MAX)
@@ -227,12 +229,12 @@ class TestInt32(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.int32_in_max, "self.MAX")
 
     def test_int32_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.int32_out_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.int32_out_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.int32_out_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.int32_out_min())
 
     def test_int32_inout(self):
-        self.assertEquals(self.MIN, GIMarshallingTests.int32_inout_max_min(Number(self.MAX)))
-        self.assertEquals(self.MAX, GIMarshallingTests.int32_inout_min_max(Number(self.MIN)))
+        self.assertEqual(self.MIN, GIMarshallingTests.int32_inout_max_min(Number(self.MAX)))
+        self.assertEqual(self.MAX, GIMarshallingTests.int32_inout_min_max(Number(self.MIN)))
 
 
 class TestUInt32(unittest.TestCase):
@@ -240,7 +242,7 @@ class TestUInt32(unittest.TestCase):
     MAX = GObject.G_MAXUINT32
 
     def test_uint32_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.uint32_return())
+        self.assertEqual(self.MAX, GIMarshallingTests.uint32_return())
 
     def test_uint32_in(self):
         number = Number(self.MAX)
@@ -255,10 +257,10 @@ class TestUInt32(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.uint32_in, "self.MAX")
 
     def test_uint32_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.uint32_out())
+        self.assertEqual(self.MAX, GIMarshallingTests.uint32_out())
 
     def test_uint32_inout(self):
-        self.assertEquals(0, GIMarshallingTests.uint32_inout(Number(self.MAX)))
+        self.assertEqual(0, GIMarshallingTests.uint32_inout(Number(self.MAX)))
 
 
 class TestInt64(unittest.TestCase):
@@ -267,8 +269,8 @@ class TestInt64(unittest.TestCase):
     MIN = - (2 ** 63)
 
     def test_int64_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.int64_return_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.int64_return_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.int64_return_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.int64_return_min())
 
     def test_int64_in(self):
         max = Number(self.MAX)
@@ -286,12 +288,12 @@ class TestInt64(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.int64_in_max, "self.MAX")
 
     def test_int64_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.int64_out_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.int64_out_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.int64_out_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.int64_out_min())
 
     def test_int64_inout(self):
-        self.assertEquals(self.MIN, GIMarshallingTests.int64_inout_max_min(Number(self.MAX)))
-        self.assertEquals(self.MAX, GIMarshallingTests.int64_inout_min_max(Number(self.MIN)))
+        self.assertEqual(self.MIN, GIMarshallingTests.int64_inout_max_min(Number(self.MAX)))
+        self.assertEqual(self.MAX, GIMarshallingTests.int64_inout_min_max(Number(self.MIN)))
 
 
 class TestUInt64(unittest.TestCase):
@@ -299,7 +301,7 @@ class TestUInt64(unittest.TestCase):
     MAX = 2 ** 64 - 1
 
     def test_uint64_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.uint64_return())
+        self.assertEqual(self.MAX, GIMarshallingTests.uint64_return())
 
     def test_uint64_in(self):
         number = Number(self.MAX)
@@ -314,10 +316,10 @@ class TestUInt64(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.uint64_in, "self.MAX")
 
     def test_uint64_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.uint64_out())
+        self.assertEqual(self.MAX, GIMarshallingTests.uint64_out())
 
     def test_uint64_inout(self):
-        self.assertEquals(0, GIMarshallingTests.uint64_inout(Number(self.MAX)))
+        self.assertEqual(0, GIMarshallingTests.uint64_inout(Number(self.MAX)))
 
 
 class TestShort(unittest.TestCase):
@@ -326,8 +328,8 @@ class TestShort(unittest.TestCase):
     MIN = GObject.constants.G_MINSHORT
 
     def test_short_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.short_return_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.short_return_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.short_return_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.short_return_min())
 
     def test_short_in(self):
         max = Number(self.MAX)
@@ -345,12 +347,12 @@ class TestShort(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.short_in_max, "self.MAX")
 
     def test_short_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.short_out_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.short_out_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.short_out_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.short_out_min())
 
     def test_short_inout(self):
-        self.assertEquals(self.MIN, GIMarshallingTests.short_inout_max_min(Number(self.MAX)))
-        self.assertEquals(self.MAX, GIMarshallingTests.short_inout_min_max(Number(self.MIN)))
+        self.assertEqual(self.MIN, GIMarshallingTests.short_inout_max_min(Number(self.MAX)))
+        self.assertEqual(self.MAX, GIMarshallingTests.short_inout_min_max(Number(self.MIN)))
 
 
 class TestUShort(unittest.TestCase):
@@ -358,7 +360,7 @@ class TestUShort(unittest.TestCase):
     MAX = GObject.constants.G_MAXUSHORT
 
     def test_ushort_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.ushort_return())
+        self.assertEqual(self.MAX, GIMarshallingTests.ushort_return())
 
     def test_ushort_in(self):
         number = Number(self.MAX)
@@ -373,10 +375,10 @@ class TestUShort(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.ushort_in, "self.MAX")
 
     def test_ushort_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.ushort_out())
+        self.assertEqual(self.MAX, GIMarshallingTests.ushort_out())
 
     def test_ushort_inout(self):
-        self.assertEquals(0, GIMarshallingTests.ushort_inout(Number(self.MAX)))
+        self.assertEqual(0, GIMarshallingTests.ushort_inout(Number(self.MAX)))
 
 
 class TestInt(unittest.TestCase):
@@ -385,8 +387,8 @@ class TestInt(unittest.TestCase):
     MIN = GObject.constants.G_MININT
 
     def test_int_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.int_return_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.int_return_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.int_return_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.int_return_min())
 
     def test_int_in(self):
         max = Number(self.MAX)
@@ -404,12 +406,12 @@ class TestInt(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.int_in_max, "self.MAX")
 
     def test_int_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.int_out_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.int_out_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.int_out_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.int_out_min())
 
     def test_int_inout(self):
-        self.assertEquals(self.MIN, GIMarshallingTests.int_inout_max_min(Number(self.MAX)))
-        self.assertEquals(self.MAX, GIMarshallingTests.int_inout_min_max(Number(self.MIN)))
+        self.assertEqual(self.MIN, GIMarshallingTests.int_inout_max_min(Number(self.MAX)))
+        self.assertEqual(self.MAX, GIMarshallingTests.int_inout_min_max(Number(self.MIN)))
         self.assertRaises(TypeError, GIMarshallingTests.int_inout_min_max, Number(self.MIN), CONSTANT_NUMBER)
 
 
@@ -418,7 +420,7 @@ class TestUInt(unittest.TestCase):
     MAX = GObject.constants.G_MAXUINT
 
     def test_uint_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.uint_return())
+        self.assertEqual(self.MAX, GIMarshallingTests.uint_return())
 
     def test_uint_in(self):
         number = Number(self.MAX)
@@ -433,10 +435,10 @@ class TestUInt(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.uint_in, "self.MAX")
 
     def test_uint_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.uint_out())
+        self.assertEqual(self.MAX, GIMarshallingTests.uint_out())
 
     def test_uint_inout(self):
-        self.assertEquals(0, GIMarshallingTests.uint_inout(Number(self.MAX)))
+        self.assertEqual(0, GIMarshallingTests.uint_inout(Number(self.MAX)))
 
 
 class TestLong(unittest.TestCase):
@@ -445,8 +447,8 @@ class TestLong(unittest.TestCase):
     MIN = GObject.constants.G_MINLONG
 
     def test_long_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.long_return_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.long_return_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.long_return_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.long_return_min())
 
     def test_long_in(self):
         max = Number(self.MAX)
@@ -464,12 +466,12 @@ class TestLong(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.long_in_max, "self.MAX")
 
     def test_long_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.long_out_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.long_out_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.long_out_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.long_out_min())
 
     def test_long_inout(self):
-        self.assertEquals(self.MIN, GIMarshallingTests.long_inout_max_min(Number(self.MAX)))
-        self.assertEquals(self.MAX, GIMarshallingTests.long_inout_min_max(Number(self.MIN)))
+        self.assertEqual(self.MIN, GIMarshallingTests.long_inout_max_min(Number(self.MAX)))
+        self.assertEqual(self.MAX, GIMarshallingTests.long_inout_min_max(Number(self.MIN)))
 
 
 class TestULong(unittest.TestCase):
@@ -477,7 +479,7 @@ class TestULong(unittest.TestCase):
     MAX = GObject.constants.G_MAXULONG
 
     def test_ulong_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.ulong_return())
+        self.assertEqual(self.MAX, GIMarshallingTests.ulong_return())
 
     def test_ulong_in(self):
         number = Number(self.MAX)
@@ -492,10 +494,10 @@ class TestULong(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.ulong_in, "self.MAX")
 
     def test_ulong_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.ulong_out())
+        self.assertEqual(self.MAX, GIMarshallingTests.ulong_out())
 
     def test_ulong_inout(self):
-        self.assertEquals(0, GIMarshallingTests.ulong_inout(Number(self.MAX)))
+        self.assertEqual(0, GIMarshallingTests.ulong_inout(Number(self.MAX)))
 
 
 class TestSSize(unittest.TestCase):
@@ -504,8 +506,8 @@ class TestSSize(unittest.TestCase):
     MIN = GObject.constants.G_MINLONG
 
     def test_ssize_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.ssize_return_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.ssize_return_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.ssize_return_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.ssize_return_min())
 
     def test_ssize_in(self):
         max = Number(self.MAX)
@@ -523,12 +525,12 @@ class TestSSize(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.ssize_in_max, "self.MAX")
 
     def test_ssize_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.ssize_out_max())
-        self.assertEquals(self.MIN, GIMarshallingTests.ssize_out_min())
+        self.assertEqual(self.MAX, GIMarshallingTests.ssize_out_max())
+        self.assertEqual(self.MIN, GIMarshallingTests.ssize_out_min())
 
     def test_ssize_inout(self):
-        self.assertEquals(self.MIN, GIMarshallingTests.ssize_inout_max_min(Number(self.MAX)))
-        self.assertEquals(self.MAX, GIMarshallingTests.ssize_inout_min_max(Number(self.MIN)))
+        self.assertEqual(self.MIN, GIMarshallingTests.ssize_inout_max_min(Number(self.MAX)))
+        self.assertEqual(self.MAX, GIMarshallingTests.ssize_inout_min_max(Number(self.MIN)))
 
 
 class TestSize(unittest.TestCase):
@@ -536,7 +538,7 @@ class TestSize(unittest.TestCase):
     MAX = GObject.constants.G_MAXULONG
 
     def test_size_return(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.size_return())
+        self.assertEqual(self.MAX, GIMarshallingTests.size_return())
 
     def test_size_in(self):
         number = Number(self.MAX)
@@ -551,10 +553,10 @@ class TestSize(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.size_in, "self.MAX")
 
     def test_size_out(self):
-        self.assertEquals(self.MAX, GIMarshallingTests.size_out())
+        self.assertEqual(self.MAX, GIMarshallingTests.size_out())
 
     def test_size_inout(self):
-        self.assertEquals(0, GIMarshallingTests.size_inout(Number(self.MAX)))
+        self.assertEqual(0, GIMarshallingTests.size_inout(Number(self.MAX)))
 
 
 class TestFloat(unittest.TestCase):
@@ -563,7 +565,7 @@ class TestFloat(unittest.TestCase):
     MIN = GObject.constants.G_MINFLOAT
 
     def test_float_return(self):
-        self.assertAlmostEquals(self.MAX, GIMarshallingTests.float_return())
+        self.assertAlmostEqual(self.MAX, GIMarshallingTests.float_return())
 
     def test_float_in(self):
         GIMarshallingTests.float_in(Number(self.MAX))
@@ -571,10 +573,10 @@ class TestFloat(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.float_in, "self.MAX")
 
     def test_float_out(self):
-        self.assertAlmostEquals(self.MAX, GIMarshallingTests.float_out())
+        self.assertAlmostEqual(self.MAX, GIMarshallingTests.float_out())
 
     def test_float_inout(self):
-        self.assertAlmostEquals(self.MIN, GIMarshallingTests.float_inout(Number(self.MAX)))
+        self.assertAlmostEqual(self.MIN, GIMarshallingTests.float_inout(Number(self.MAX)))
 
 
 class TestDouble(unittest.TestCase):
@@ -583,7 +585,7 @@ class TestDouble(unittest.TestCase):
     MIN = GObject.constants.G_MINDOUBLE
 
     def test_double_return(self):
-        self.assertAlmostEquals(self.MAX, GIMarshallingTests.double_return())
+        self.assertAlmostEqual(self.MAX, GIMarshallingTests.double_return())
 
     def test_double_in(self):
         GIMarshallingTests.double_in(Number(self.MAX))
@@ -591,36 +593,49 @@ class TestDouble(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.double_in, "self.MAX")
 
     def test_double_out(self):
-        self.assertAlmostEquals(self.MAX, GIMarshallingTests.double_out())
+        self.assertAlmostEqual(self.MAX, GIMarshallingTests.double_out())
 
     def test_double_inout(self):
-        self.assertAlmostEquals(self.MIN, GIMarshallingTests.double_inout(Number(self.MAX)))
+        self.assertAlmostEqual(self.MIN, GIMarshallingTests.double_inout(Number(self.MAX)))
 
 
 class TestGType(unittest.TestCase):
 
+    def test_gtype_name(self):
+        self.assertEqual("void", GObject.TYPE_NONE.name)
+        self.assertEqual("gchararray", GObject.TYPE_STRING.name)
+
+        def check_readonly(gtype):
+            gtype.name = "foo"
+
+        self.assertRaises(AttributeError, check_readonly, GObject.TYPE_NONE)
+        self.assertRaises(AttributeError, check_readonly, GObject.TYPE_STRING)
+
     def test_gtype_return(self):
-        self.assertEquals(GObject.TYPE_NONE, GIMarshallingTests.gtype_return())
+        self.assertEqual(GObject.TYPE_NONE, GIMarshallingTests.gtype_return())
+        self.assertEqual(GObject.TYPE_STRING, GIMarshallingTests.gtype_string_return())
 
     def test_gtype_in(self):
         GIMarshallingTests.gtype_in(GObject.TYPE_NONE)
-
-        self.assertRaises(TypeError, GIMarshallingTests.gtype_in, "GObject.TYPE_NONE")
+        GIMarshallingTests.gtype_string_in(GObject.TYPE_STRING)
+        self.assertRaises(TypeError, GIMarshallingTests.gtype_in, "foo")
+        self.assertRaises(TypeError, GIMarshallingTests.gtype_string_in, "foo")
 
     def test_gtype_out(self):
-        self.assertEquals(GObject.TYPE_NONE, GIMarshallingTests.gtype_out())
+        self.assertEqual(GObject.TYPE_NONE, GIMarshallingTests.gtype_out())
+        self.assertEqual(GObject.TYPE_STRING, GIMarshallingTests.gtype_string_out())
 
     def test_gtype_inout(self):
-        self.assertEquals(GObject.TYPE_INT, GIMarshallingTests.gtype_inout(GObject.TYPE_NONE))
+        self.assertEqual(GObject.TYPE_INT, GIMarshallingTests.gtype_inout(GObject.TYPE_NONE))
 
 
 class TestUtf8(unittest.TestCase):
 
     def test_utf8_none_return(self):
-        self.assertEquals(CONSTANT_UTF8, GIMarshallingTests.utf8_none_return())
+        self.assertEqual(CONSTANT_UTF8, GIMarshallingTests.utf8_none_return())
 
     def test_utf8_full_return(self):
-        self.assertEquals(CONSTANT_UTF8, GIMarshallingTests.utf8_full_return())
+        self.assertEqual(CONSTANT_UTF8, GIMarshallingTests.utf8_full_return())
 
     def test_utf8_none_in(self):
         GIMarshallingTests.utf8_none_in(CONSTANT_UTF8)
@@ -631,28 +646,28 @@ class TestUtf8(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.utf8_none_in, None)
 
     def test_utf8_none_out(self):
-        self.assertEquals(CONSTANT_UTF8, GIMarshallingTests.utf8_none_out())
+        self.assertEqual(CONSTANT_UTF8, GIMarshallingTests.utf8_none_out())
 
     def test_utf8_full_out(self):
-        self.assertEquals(CONSTANT_UTF8, GIMarshallingTests.utf8_full_out())
+        self.assertEqual(CONSTANT_UTF8, GIMarshallingTests.utf8_full_out())
 
     def test_utf8_dangling_out(self):
         GIMarshallingTests.utf8_dangling_out()
 
     def test_utf8_none_inout(self):
-        self.assertEquals("", GIMarshallingTests.utf8_none_inout(CONSTANT_UTF8))
+        self.assertEqual("", GIMarshallingTests.utf8_none_inout(CONSTANT_UTF8))
 
     def test_utf8_full_inout(self):
-        self.assertEquals("", GIMarshallingTests.utf8_full_inout(CONSTANT_UTF8))
+        self.assertEqual("", GIMarshallingTests.utf8_full_inout(CONSTANT_UTF8))
 
 
 class TestArray(unittest.TestCase):
 
     def test_array_fixed_int_return(self):
-        self.assertEquals([-1, 0, 1, 2], GIMarshallingTests.array_fixed_int_return())
+        self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.array_fixed_int_return())
 
     def test_array_fixed_short_return(self):
-        self.assertEquals([-1, 0, 1, 2], GIMarshallingTests.array_fixed_short_return())
+        self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.array_fixed_short_return())
 
     def test_array_fixed_int_in(self):
         GIMarshallingTests.array_fixed_int_in(Sequence([-1, 0, 1, 2]))
@@ -666,27 +681,29 @@ class TestArray(unittest.TestCase):
         GIMarshallingTests.array_fixed_short_in(Sequence([-1, 0, 1, 2]))
 
     def test_array_fixed_out(self):
-        self.assertEquals([-1, 0, 1, 2], GIMarshallingTests.array_fixed_out())
+        self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.array_fixed_out())
 
     def test_array_fixed_inout(self):
-        self.assertEquals([2, 1, 0, -1], GIMarshallingTests.array_fixed_inout([-1, 0, 1, 2]))
-
+        self.assertEqual([2, 1, 0, -1], GIMarshallingTests.array_fixed_inout([-1, 0, 1, 2]))
 
     def test_array_return(self):
-        self.assertEquals([-1, 0, 1, 2], GIMarshallingTests.array_return())
+        self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.array_return())
 
     def test_array_in(self):
         GIMarshallingTests.array_in(Sequence([-1, 0, 1, 2]))
 
+    def test_array_in_len_zero_terminated(self):
+        GIMarshallingTests.array_in_len_zero_terminated(Sequence([-1, 0, 1, 2]))
+
     def test_array_uint8_in(self):
         GIMarshallingTests.array_uint8_in(Sequence([97, 98, 99, 100]))
         GIMarshallingTests.array_uint8_in(_bytes("abcd"))
 
     def test_array_out(self):
-        self.assertEquals([-1, 0, 1, 2], GIMarshallingTests.array_out())
+        self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.array_out())
 
     def test_array_inout(self):
-        self.assertEquals([-2, -1, 0, 1, 2], GIMarshallingTests.array_inout(Sequence([-1, 0, 1, 2])))
+        self.assertEqual([-2, -1, 0, 1, 2], GIMarshallingTests.array_inout(Sequence([-1, 0, 1, 2])))
 
     def test_method_array_in(self):
         object_ = GIMarshallingTests.Object()
@@ -694,68 +711,122 @@ class TestArray(unittest.TestCase):
 
     def test_method_array_out(self):
         object_ = GIMarshallingTests.Object()
-        self.assertEquals([-1, 0, 1, 2], object_.method_array_out())
+        self.assertEqual([-1, 0, 1, 2], object_.method_array_out())
 
     def test_method_array_inout(self):
         object_ = GIMarshallingTests.Object()
-        self.assertEquals([-2, -1, 0, 1, 2], object_.method_array_inout(Sequence([-1, 0, 1, 2])))
+        self.assertEqual([-2, -1, 0, 1, 2], object_.method_array_inout(Sequence([-1, 0, 1, 2])))
 
     def test_method_array_return(self):
         object_ = GIMarshallingTests.Object()
-        self.assertEquals([-1, 0, 1, 2], object_.method_array_return())
+        self.assertEqual([-1, 0, 1, 2], object_.method_array_return())
+
+    def test_array_enum_in(self):
+        GIMarshallingTests.array_enum_in([GIMarshallingTests.Enum.VALUE1,
+                                          GIMarshallingTests.Enum.VALUE2,
+                                          GIMarshallingTests.Enum.VALUE3])
+
+    def test_array_boxed_struct_in(self):
+        struct1 = GIMarshallingTests.BoxedStruct()
+        struct1.long_ = 1
+        struct2 = GIMarshallingTests.BoxedStruct()
+        struct2.long_ = 2
+        struct3 = GIMarshallingTests.BoxedStruct()
+        struct3.long_ = 3
+
+        GIMarshallingTests.array_struct_in([struct1, struct2, struct3])
+
+    def test_array_simple_struct_in(self):
+        struct1 = GIMarshallingTests.SimpleStruct()
+        struct1.long_ = 1
+        struct2 = GIMarshallingTests.SimpleStruct()
+        struct2.long_ = 2
+        struct3 = GIMarshallingTests.SimpleStruct()
+        struct3.long_ = 3
+
+        GIMarshallingTests.array_simple_struct_in([struct1, struct2, struct3])
+
+    def test_array_multi_array_key_value_in(self):
+        GIMarshallingTests.multi_array_key_value_in(["one", "two", "three"],
+                                                    [1, 2, 3])
+
+    def test_array_in_nonzero_nonlen(self):
+        GIMarshallingTests.array_in_nonzero_nonlen(1, b'abcd')
 
     def test_array_fixed_out_struct(self):
         struct1, struct2 = GIMarshallingTests.array_fixed_out_struct()
 
-        self.assertEquals(7, struct1.long_)
-        self.assertEquals(6, struct1.int8)
-        self.assertEquals(6, struct2.long_)
-        self.assertEquals(7, struct2.int8)
+        self.assertEqual(7, struct1.long_)
+        self.assertEqual(6, struct1.int8)
+        self.assertEqual(6, struct2.long_)
+        self.assertEqual(7, struct2.int8)
 
     def test_array_zero_terminated_return(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.array_zero_terminated_return())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.array_zero_terminated_return())
+
+    def test_array_zero_terminated_return_null(self):
+        self.assertEqual([], GIMarshallingTests.array_zero_terminated_return_null())
 
     def test_array_zero_terminated_in(self):
         GIMarshallingTests.array_zero_terminated_in(Sequence(['0', '1', '2']))
 
     def test_array_zero_terminated_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.array_zero_terminated_out())
-
-    def test_array_zero_terminated_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.array_zero_terminated_out())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.array_zero_terminated_out())
 
     def test_array_zero_terminated_inout(self):
-        self.assertEquals(['-1', '0', '1', '2'], GIMarshallingTests.array_zero_terminated_inout(['0', '1', '2']))
+        self.assertEqual(['-1', '0', '1', '2'], GIMarshallingTests.array_zero_terminated_inout(['0', '1', '2']))
+
+
+class TestGStrv(unittest.TestCase):
 
     def test_gstrv_return(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.gstrv_return())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gstrv_return())
 
     def test_gstrv_in(self):
         GIMarshallingTests.gstrv_in(Sequence(['0', '1', '2']))
 
     def test_gstrv_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.gstrv_out())
-
-    def test_gstrv_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.gstrv_out())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gstrv_out())
 
     def test_gstrv_inout(self):
-        self.assertEquals(['-1', '0', '1', '2'], GIMarshallingTests.gstrv_inout(['0', '1', '2']))
+        self.assertEqual(['-1', '0', '1', '2'], GIMarshallingTests.gstrv_inout(['0', '1', '2']))
+
+
+class TestArrayGVariant(unittest.TestCase):
+
+    def test_array_gvariant_none_in(self):
+        v = [GLib.Variant("i", 27), GLib.Variant("s", "Hello")]
+        returned = [GLib.Variant.unpack(r) for r in GIMarshallingTests.array_gvariant_none_in(v)]
+        self.assertEqual([27, "Hello"], returned)
+
+    def test_array_gvariant_container_in(self):
+        v = [GLib.Variant("i", 27), GLib.Variant("s", "Hello")]
+        returned = [GLib.Variant.unpack(r) for r in GIMarshallingTests.array_gvariant_container_in(v)]
+        self.assertEqual([27, "Hello"], returned)
+
+    def test_array_gvariant_full_in(self):
+        v = [GLib.Variant("i", 27), GLib.Variant("s", "Hello")]
+        returned = [GLib.Variant.unpack(r) for r in GIMarshallingTests.array_gvariant_full_in(v)]
+        self.assertEqual([27, "Hello"], returned)
+
+    def test_bytearray_gvariant(self):
+        v = GLib.Variant.new_bytestring(b"foo")
+        self.assertEqual(v.get_bytestring(), b"foo")
 
 
 class TestGArray(unittest.TestCase):
 
     def test_garray_int_none_return(self):
-        self.assertEquals([-1, 0, 1, 2], GIMarshallingTests.garray_int_none_return())
+        self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.garray_int_none_return())
 
     def test_garray_utf8_none_return(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.garray_utf8_none_return())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_none_return())
 
     def test_garray_utf8_container_return(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.garray_utf8_container_return())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_container_return())
 
     def test_garray_utf8_full_return(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.garray_utf8_full_return())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_full_return())
 
     def test_garray_int_none_in(self):
         GIMarshallingTests.garray_int_none_in(Sequence([-1, 0, 1, 2]))
@@ -769,37 +840,70 @@ class TestGArray(unittest.TestCase):
         GIMarshallingTests.garray_utf8_none_in(Sequence(['0', '1', '2']))
 
     def test_garray_utf8_none_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.garray_utf8_none_out())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_none_out())
 
     def test_garray_utf8_container_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.garray_utf8_container_out())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_container_out())
 
     def test_garray_utf8_full_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.garray_utf8_full_out())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_full_out())
 
     def test_garray_utf8_none_inout(self):
-        self.assertEquals(['-2', '-1', '0', '1'], GIMarshallingTests.garray_utf8_none_inout(Sequence(('0', '1', '2'))))
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.garray_utf8_none_inout(Sequence(('0', '1', '2'))))
 
     def test_garray_utf8_container_inout(self):
-        self.assertEquals(['-2', '-1','0', '1'], GIMarshallingTests.garray_utf8_container_inout(['0', '1', '2']))
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.garray_utf8_container_inout(['0', '1', '2']))
 
     def test_garray_utf8_full_inout(self):
-        self.assertEquals(['-2', '-1','0', '1'], GIMarshallingTests.garray_utf8_full_inout(['0', '1', '2']))
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.garray_utf8_full_inout(['0', '1', '2']))
+
+
+class TestGPtrArray(unittest.TestCase):
+
+    def test_gptrarray_utf8_none_return(self):
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gptrarray_utf8_none_return())
+
+    def test_gptrarray_utf8_container_return(self):
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gptrarray_utf8_container_return())
+
+    def test_gptrarray_utf8_full_return(self):
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gptrarray_utf8_full_return())
+
+    def test_gptrarray_utf8_none_in(self):
+        GIMarshallingTests.gptrarray_utf8_none_in(Sequence(['0', '1', '2']))
+
+    def test_gptrarray_utf8_none_out(self):
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gptrarray_utf8_none_out())
+
+    def test_gptrarray_utf8_container_out(self):
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gptrarray_utf8_container_out())
+
+    def test_gptrarray_utf8_full_out(self):
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gptrarray_utf8_full_out())
+
+    def test_gptrarray_utf8_none_inout(self):
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.gptrarray_utf8_none_inout(Sequence(('0', '1', '2'))))
+
+    def test_gptrarray_utf8_container_inout(self):
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.gptrarray_utf8_container_inout(['0', '1', '2']))
+
+    def test_gptrarray_utf8_full_inout(self):
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.gptrarray_utf8_full_inout(['0', '1', '2']))
 
 
 class TestGList(unittest.TestCase):
 
     def test_glist_int_none_return(self):
-        self.assertEquals([-1, 0, 1, 2], GIMarshallingTests.glist_int_none_return())
+        self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.glist_int_none_return())
 
     def test_glist_utf8_none_return(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.glist_utf8_none_return())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.glist_utf8_none_return())
 
     def test_glist_utf8_container_return(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.glist_utf8_container_return())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.glist_utf8_container_return())
 
     def test_glist_utf8_full_return(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.glist_utf8_full_return())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.glist_utf8_full_return())
 
     def test_glist_int_none_in(self):
         GIMarshallingTests.glist_int_none_in(Sequence((-1, 0, 1, 2)))
@@ -813,37 +917,37 @@ class TestGList(unittest.TestCase):
         GIMarshallingTests.glist_utf8_none_in(Sequence(('0', '1', '2')))
 
     def test_glist_utf8_none_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.glist_utf8_none_out())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.glist_utf8_none_out())
 
     def test_glist_utf8_container_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.glist_utf8_container_out())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.glist_utf8_container_out())
 
     def test_glist_utf8_full_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.glist_utf8_full_out())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.glist_utf8_full_out())
 
     def test_glist_utf8_none_inout(self):
-        self.assertEquals(['-2', '-1', '0', '1'], GIMarshallingTests.glist_utf8_none_inout(Sequence(('0', '1', '2'))))
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.glist_utf8_none_inout(Sequence(('0', '1', '2'))))
 
     def test_glist_utf8_container_inout(self):
-        self.assertEquals(['-2', '-1','0', '1'], GIMarshallingTests.glist_utf8_container_inout(('0', '1', '2')))
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.glist_utf8_container_inout(('0', '1', '2')))
 
     def test_glist_utf8_full_inout(self):
-        self.assertEquals(['-2', '-1','0', '1'], GIMarshallingTests.glist_utf8_full_inout(('0', '1', '2')))
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.glist_utf8_full_inout(('0', '1', '2')))
 
 
 class TestGSList(unittest.TestCase):
 
     def test_gslist_int_none_return(self):
-        self.assertEquals([-1, 0, 1, 2], GIMarshallingTests.gslist_int_none_return())
+        self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.gslist_int_none_return())
 
     def test_gslist_utf8_none_return(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.gslist_utf8_none_return())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gslist_utf8_none_return())
 
     def test_gslist_utf8_container_return(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.gslist_utf8_container_return())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gslist_utf8_container_return())
 
     def test_gslist_utf8_full_return(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.gslist_utf8_full_return())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gslist_utf8_full_return())
 
     def test_gslist_int_none_in(self):
         GIMarshallingTests.gslist_int_none_in(Sequence((-1, 0, 1, 2)))
@@ -857,37 +961,37 @@ class TestGSList(unittest.TestCase):
         GIMarshallingTests.gslist_utf8_none_in(Sequence(('0', '1', '2')))
 
     def test_gslist_utf8_none_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.gslist_utf8_none_out())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gslist_utf8_none_out())
 
     def test_gslist_utf8_container_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.gslist_utf8_container_out())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gslist_utf8_container_out())
 
     def test_gslist_utf8_full_out(self):
-        self.assertEquals(['0', '1', '2'], GIMarshallingTests.gslist_utf8_full_out())
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.gslist_utf8_full_out())
 
     def test_gslist_utf8_none_inout(self):
-        self.assertEquals(['-2', '-1', '0', '1'], GIMarshallingTests.gslist_utf8_none_inout(Sequence(('0', '1', '2'))))
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.gslist_utf8_none_inout(Sequence(('0', '1', '2'))))
 
     def test_gslist_utf8_container_inout(self):
-        self.assertEquals(['-2', '-1','0', '1'], GIMarshallingTests.gslist_utf8_container_inout(('0', '1', '2')))
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.gslist_utf8_container_inout(('0', '1', '2')))
 
     def test_gslist_utf8_full_inout(self):
-        self.assertEquals(['-2', '-1','0', '1'], GIMarshallingTests.gslist_utf8_full_inout(('0', '1', '2')))
+        self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.gslist_utf8_full_inout(('0', '1', '2')))
 
 
 class TestGHashTable(unittest.TestCase):
 
     def test_ghashtable_int_none_return(self):
-        self.assertEquals({-1: 1, 0: 0, 1: -1, 2: -2}, GIMarshallingTests.ghashtable_int_none_return())
+        self.assertEqual({-1: 1, 0: 0, 1: -1, 2: -2}, GIMarshallingTests.ghashtable_int_none_return())
 
-    def test_ghashtable_int_none_return(self):
-        self.assertEquals({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_none_return())
+    def test_ghashtable_int_none_return2(self):
+        self.assertEqual({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_none_return())
 
     def test_ghashtable_int_container_return(self):
-        self.assertEquals({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_container_return())
+        self.assertEqual({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_container_return())
 
     def test_ghashtable_int_full_return(self):
-        self.assertEquals({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_full_return())
+        self.assertEqual({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_full_return())
 
     def test_ghashtable_int_none_in(self):
         GIMarshallingTests.ghashtable_int_none_in({-1: 1, 0: 0, 1: -1, 2: -2})
@@ -902,31 +1006,34 @@ class TestGHashTable(unittest.TestCase):
         GIMarshallingTests.ghashtable_utf8_none_in({'-1': '1', '0': '0', '1': '-1', '2': '-2'})
 
     def test_ghashtable_utf8_none_out(self):
-        self.assertEquals({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_none_out())
+        self.assertEqual({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_none_out())
 
     def test_ghashtable_utf8_container_out(self):
-        self.assertEquals({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_container_out())
+        self.assertEqual({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_container_out())
 
     def test_ghashtable_utf8_full_out(self):
-        self.assertEquals({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_full_out())
+        self.assertEqual({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_full_out())
 
     def test_ghashtable_utf8_none_inout(self):
-        self.assertEquals({'-1': '1', '0': '0', '1': '1'},
-            GIMarshallingTests.ghashtable_utf8_none_inout({'-1': '1', '0': '0', '1': '-1', '2': '-2'}))
+        i = {'-1': '1', '0': '0', '1': '-1', '2': '-2'}
+        self.assertEqual({'-1': '1', '0': '0', '1': '1'},
+                         GIMarshallingTests.ghashtable_utf8_none_inout(i))
 
     def test_ghashtable_utf8_container_inout(self):
-        self.assertEquals({'-1': '1', '0': '0', '1': '1'},
-            GIMarshallingTests.ghashtable_utf8_container_inout({'-1': '1', '0': '0', '1': '-1', '2': '-2'}))
+        i = {'-1': '1', '0': '0', '1': '-1', '2': '-2'}
+        self.assertEqual({'-1': '1', '0': '0', '1': '1'},
+                         GIMarshallingTests.ghashtable_utf8_container_inout(i))
 
     def test_ghashtable_utf8_full_inout(self):
-        self.assertEquals({'-1': '1', '0': '0', '1': '1'},
-            GIMarshallingTests.ghashtable_utf8_full_inout({'-1': '1', '0': '0', '1': '-1', '2': '-2'}))
+        i = {'-1': '1', '0': '0', '1': '-1', '2': '-2'}
+        self.assertEqual({'-1': '1', '0': '0', '1': '1'},
+                         GIMarshallingTests.ghashtable_utf8_full_inout(i))
 
 
 class TestGValue(unittest.TestCase):
 
     def test_gvalue_return(self):
-        self.assertEquals(42, GIMarshallingTests.gvalue_return())
+        self.assertEqual(42, GIMarshallingTests.gvalue_return())
 
     def test_gvalue_in(self):
         GIMarshallingTests.gvalue_in(42)
@@ -935,15 +1042,36 @@ class TestGValue(unittest.TestCase):
         value.set_int(42)
         GIMarshallingTests.gvalue_in(value)
 
+    def test_gvalue_int64_in(self):
+        value = GObject.Value()
+        value.init(GObject.TYPE_INT64)
+        value.set_int64(GObject.G_MAXINT64)
+        GIMarshallingTests.gvalue_int64_in(value)
+
     def test_gvalue_out(self):
-        self.assertEquals(42, GIMarshallingTests.gvalue_out())
+        self.assertEqual(42, GIMarshallingTests.gvalue_out())
+
+    def test_gvalue_int64_out(self):
+        self.assertEqual(GObject.G_MAXINT64, GIMarshallingTests.gvalue_int64_out())
+
+    def test_gvalue_out_caller_allocates(self):
+        self.assertEqual(42, GIMarshallingTests.gvalue_out_caller_allocates())
 
     def test_gvalue_inout(self):
-        self.assertEquals('42', GIMarshallingTests.gvalue_inout(42))
+        self.assertEqual('42', GIMarshallingTests.gvalue_inout(42))
         value = GObject.Value()
         value.init(GObject.TYPE_INT)
         value.set_int(42)
-        self.assertEquals('42', GIMarshallingTests.gvalue_inout(value))
+        self.assertEqual('42', GIMarshallingTests.gvalue_inout(value))
+
+    def test_gvalue_flat_array_in(self):
+        # the function already asserts the correct values
+        GIMarshallingTests.gvalue_flat_array([42, "42", True])
+
+    def test_gvalue_flat_array_out(self):
+        values = GIMarshallingTests.return_gvalue_flat_array()
+        self.assertEqual(values, [42, '42', True])
+
 
 class TestGClosure(unittest.TestCase):
 
@@ -960,7 +1088,7 @@ class TestGClosure(unittest.TestCase):
 
 class TestPointer(unittest.TestCase):
     def test_pointer_in_return(self):
-        self.assertEquals(GIMarshallingTests.pointer_in_return(42), 42)
+        self.assertEqual(GIMarshallingTests.pointer_in_return(42), 42)
 
 
 class TestEnum(unittest.TestCase):
@@ -969,15 +1097,15 @@ class TestEnum(unittest.TestCase):
     def setUpClass(cls):
         '''Run tests under a test locale.
 
-        Upper case conversion of member names should not be locale specific;
+        Upper case conversion of member names should not be locale specific
         e.  g. in Turkish, "i".upper() == "i", which gives results like "iNVALiD"
 
         Run test under a locale which defines toupper('a') == 'a'
         '''
         cls.locale_dir = tempfile.mkdtemp()
-        subprocess.check_call(['localedef', '-i',
-            os.path.join(os.path.dirname(os.path.realpath(__file__)), 'te_ST@nouppera'),
-            '-c', '-f', 'UTF-8', os.path.join(cls.locale_dir, 'te_ST.UTF-8@nouppera')])
+        src = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'te_ST@nouppera')
+        dest = os.path.join(cls.locale_dir, 'te_ST.UTF-8@nouppera')
+        subprocess.check_call(['localedef', '-i', src, '-c', '-f', 'UTF-8', dest])
         os.environ['LOCPATH'] = cls.locale_dir
         locale.setlocale(locale.LC_ALL, 'te_ST.UTF-8@nouppera')
 
@@ -995,7 +1123,7 @@ class TestEnum(unittest.TestCase):
         self.assertTrue(isinstance(GIMarshallingTests.Enum.VALUE1, GIMarshallingTests.Enum))
         self.assertTrue(isinstance(GIMarshallingTests.Enum.VALUE2, GIMarshallingTests.Enum))
         self.assertTrue(isinstance(GIMarshallingTests.Enum.VALUE3, GIMarshallingTests.Enum))
-        self.assertEquals(42, GIMarshallingTests.Enum.VALUE3)
+        self.assertEqual(42, GIMarshallingTests.Enum.VALUE3)
 
     def test_value_nick_and_name(self):
         self.assertEqual(GIMarshallingTests.Enum.VALUE1.value_nick, 'value1')
@@ -1016,12 +1144,12 @@ class TestEnum(unittest.TestCase):
     def test_enum_out(self):
         enum = GIMarshallingTests.enum_out()
         self.assertTrue(isinstance(enum, GIMarshallingTests.Enum))
-        self.assertEquals(enum, GIMarshallingTests.Enum.VALUE3)
+        self.assertEqual(enum, GIMarshallingTests.Enum.VALUE3)
 
     def test_enum_inout(self):
         enum = GIMarshallingTests.enum_inout(GIMarshallingTests.Enum.VALUE3)
         self.assertTrue(isinstance(enum, GIMarshallingTests.Enum))
-        self.assertEquals(enum, GIMarshallingTests.Enum.VALUE1)
+        self.assertEqual(enum, GIMarshallingTests.Enum.VALUE1)
 
     def test_enum_second(self):
         # check for the bug where different non-gtype enums share the same class
@@ -1041,7 +1169,7 @@ class TestGEnum(unittest.TestCase):
         self.assertTrue(isinstance(GIMarshallingTests.GEnum.VALUE1, GIMarshallingTests.GEnum))
         self.assertTrue(isinstance(GIMarshallingTests.GEnum.VALUE2, GIMarshallingTests.GEnum))
         self.assertTrue(isinstance(GIMarshallingTests.GEnum.VALUE3, GIMarshallingTests.GEnum))
-        self.assertEquals(42, GIMarshallingTests.GEnum.VALUE3)
+        self.assertEqual(42, GIMarshallingTests.GEnum.VALUE3)
 
     def test_value_nick_and_name(self):
         self.assertEqual(GIMarshallingTests.GEnum.VALUE1.value_nick, 'value1')
@@ -1062,12 +1190,12 @@ class TestGEnum(unittest.TestCase):
     def test_genum_out(self):
         genum = GIMarshallingTests.genum_out()
         self.assertTrue(isinstance(genum, GIMarshallingTests.GEnum))
-        self.assertEquals(genum, GIMarshallingTests.GEnum.VALUE3)
+        self.assertEqual(genum, GIMarshallingTests.GEnum.VALUE3)
 
     def test_genum_inout(self):
         genum = GIMarshallingTests.genum_inout(GIMarshallingTests.GEnum.VALUE3)
         self.assertTrue(isinstance(genum, GIMarshallingTests.GEnum))
-        self.assertEquals(genum, GIMarshallingTests.GEnum.VALUE1)
+        self.assertEqual(genum, GIMarshallingTests.GEnum.VALUE1)
 
 
 class TestGFlags(unittest.TestCase):
@@ -1080,7 +1208,7 @@ class TestGFlags(unittest.TestCase):
         # __or__() operation should still return an instance, not an int.
         self.assertTrue(isinstance(GIMarshallingTests.Flags.VALUE1 | GIMarshallingTests.Flags.VALUE2,
                                    GIMarshallingTests.Flags))
-        self.assertEquals(1 << 1, GIMarshallingTests.Flags.VALUE2)
+        self.assertEqual(1 << 1, GIMarshallingTests.Flags.VALUE2)
 
     def test_value_nick_and_name(self):
         self.assertEqual(GIMarshallingTests.Flags.VALUE1.first_value_nick, 'value1')
@@ -1103,12 +1231,13 @@ class TestGFlags(unittest.TestCase):
     def test_flags_out(self):
         flags = GIMarshallingTests.flags_out()
         self.assertTrue(isinstance(flags, GIMarshallingTests.Flags))
-        self.assertEquals(flags, GIMarshallingTests.Flags.VALUE2)
+        self.assertEqual(flags, GIMarshallingTests.Flags.VALUE2)
 
     def test_flags_inout(self):
         flags = GIMarshallingTests.flags_inout(GIMarshallingTests.Flags.VALUE2)
         self.assertTrue(isinstance(flags, GIMarshallingTests.Flags))
-        self.assertEquals(flags, GIMarshallingTests.Flags.VALUE1)
+        self.assertEqual(flags, GIMarshallingTests.Flags.VALUE1)
+
 
 class TestNoTypeFlags(unittest.TestCase):
 
@@ -1120,7 +1249,7 @@ class TestNoTypeFlags(unittest.TestCase):
         # __or__() operation should still return an instance, not an int.
         self.assertTrue(isinstance(GIMarshallingTests.NoTypeFlags.VALUE1 | GIMarshallingTests.NoTypeFlags.VALUE2,
                                    GIMarshallingTests.NoTypeFlags))
-        self.assertEquals(1 << 1, GIMarshallingTests.NoTypeFlags.VALUE2)
+        self.assertEqual(1 << 1, GIMarshallingTests.NoTypeFlags.VALUE2)
 
     def test_value_nick_and_name(self):
         self.assertEqual(GIMarshallingTests.NoTypeFlags.VALUE1.first_value_nick, 'value1')
@@ -1142,12 +1271,12 @@ class TestNoTypeFlags(unittest.TestCase):
     def test_flags_out(self):
         flags = GIMarshallingTests.no_type_flags_out()
         self.assertTrue(isinstance(flags, GIMarshallingTests.NoTypeFlags))
-        self.assertEquals(flags, GIMarshallingTests.NoTypeFlags.VALUE2)
+        self.assertEqual(flags, GIMarshallingTests.NoTypeFlags.VALUE2)
 
     def test_flags_inout(self):
         flags = GIMarshallingTests.no_type_flags_inout(GIMarshallingTests.NoTypeFlags.VALUE2)
         self.assertTrue(isinstance(flags, GIMarshallingTests.NoTypeFlags))
-        self.assertEquals(flags, GIMarshallingTests.NoTypeFlags.VALUE1)
+        self.assertEqual(flags, GIMarshallingTests.NoTypeFlags.VALUE1)
 
 
 class TestStructure(unittest.TestCase):
@@ -1158,14 +1287,14 @@ class TestStructure(unittest.TestCase):
         struct = GIMarshallingTests.SimpleStruct()
         self.assertTrue(isinstance(struct, GIMarshallingTests.SimpleStruct))
 
-        self.assertEquals(0, struct.long_)
-        self.assertEquals(0, struct.int8)
+        self.assertEqual(0, struct.long_)
+        self.assertEqual(0, struct.int8)
 
         struct.long_ = 6
         struct.int8 = 7
 
-        self.assertEquals(6, struct.long_)
-        self.assertEquals(7, struct.int8)
+        self.assertEqual(6, struct.long_)
+        self.assertEqual(7, struct.int8)
 
         del struct
 
@@ -1175,20 +1304,20 @@ class TestStructure(unittest.TestCase):
         self.assertTrue(isinstance(struct.simple_struct, GIMarshallingTests.SimpleStruct))
 
         struct.simple_struct.long_ = 42
-        self.assertEquals(42, struct.simple_struct.long_)
+        self.assertEqual(42, struct.simple_struct.long_)
 
         del struct
 
     def test_not_simple_struct(self):
         struct = GIMarshallingTests.NotSimpleStruct()
-        self.assertEquals(None, struct.pointer)
+        self.assertEqual(None, struct.pointer)
 
     def test_simple_struct_return(self):
         struct = GIMarshallingTests.simple_struct_returnv()
 
         self.assertTrue(isinstance(struct, GIMarshallingTests.SimpleStruct))
-        self.assertEquals(6, struct.long_)
-        self.assertEquals(7, struct.int8)
+        self.assertEqual(6, struct.long_)
+        self.assertEqual(7, struct.int8)
 
         del struct
 
@@ -1220,7 +1349,6 @@ class TestStructure(unittest.TestCase):
 
         self.assertRaises(TypeError, GIMarshallingTests.SimpleStruct.method)
 
-
     def test_pointer_struct(self):
         self.assertTrue(issubclass(GIMarshallingTests.PointerStruct, GObject.GPointer))
 
@@ -1233,7 +1361,7 @@ class TestStructure(unittest.TestCase):
         struct = GIMarshallingTests.pointer_struct_returnv()
 
         self.assertTrue(isinstance(struct, GIMarshallingTests.PointerStruct))
-        self.assertEquals(42, struct.long_)
+        self.assertEqual(42, struct.long_)
 
         del struct
 
@@ -1251,8 +1379,8 @@ class TestStructure(unittest.TestCase):
         struct = GIMarshallingTests.BoxedStruct()
         self.assertTrue(isinstance(struct, GIMarshallingTests.BoxedStruct))
 
-        self.assertEquals(0, struct.long_)
-        self.assertEquals([], struct.g_strv)
+        self.assertEqual(0, struct.long_)
+        self.assertEqual([], struct.g_strv)
 
         del struct
 
@@ -1275,8 +1403,8 @@ class TestStructure(unittest.TestCase):
         struct = GIMarshallingTests.boxed_struct_returnv()
 
         self.assertTrue(isinstance(struct, GIMarshallingTests.BoxedStruct))
-        self.assertEquals(42, struct.long_)
-        self.assertEquals(['0', '1', '2'], struct.g_strv)
+        self.assertEqual(42, struct.long_)
+        self.assertEqual(['0', '1', '2'], struct.g_strv)
 
         del struct
 
@@ -1292,7 +1420,7 @@ class TestStructure(unittest.TestCase):
         struct = GIMarshallingTests.boxed_struct_out()
 
         self.assertTrue(isinstance(struct, GIMarshallingTests.BoxedStruct))
-        self.assertEquals(42, struct.long_)
+        self.assertEqual(42, struct.long_)
 
         del struct
 
@@ -1303,7 +1431,7 @@ class TestStructure(unittest.TestCase):
         out_struct = GIMarshallingTests.boxed_struct_inout(in_struct)
 
         self.assertTrue(isinstance(out_struct, GIMarshallingTests.BoxedStruct))
-        self.assertEquals(0, out_struct.long_)
+        self.assertEqual(0, out_struct.long_)
 
         del in_struct
         del out_struct
@@ -1323,7 +1451,7 @@ class TestStructure(unittest.TestCase):
         union = GIMarshallingTests.union_returnv()
 
         self.assertTrue(isinstance(union, GIMarshallingTests.Union))
-        self.assertEquals(42, union.long_)
+        self.assertEqual(42, union.long_)
 
         del union
 
@@ -1345,6 +1473,7 @@ class TestStructure(unittest.TestCase):
 
         self.assertRaises(TypeError, GIMarshallingTests.Union.method)
 
+
 class TestGObject(unittest.TestCase):
 
     def test_object(self):
@@ -1352,29 +1481,28 @@ class TestGObject(unittest.TestCase):
 
         object_ = GIMarshallingTests.Object()
         self.assertTrue(isinstance(object_, GIMarshallingTests.Object))
-        self.assertEquals(object_.__grefcount__, 1)
+        self.assertEqual(object_.__grefcount__, 1)
 
     def test_object_new(self):
         object_ = GIMarshallingTests.Object.new(42)
         self.assertTrue(isinstance(object_, GIMarshallingTests.Object))
-        self.assertEquals(object_.__grefcount__, 1)
+        self.assertEqual(object_.__grefcount__, 1)
 
     def test_object_int(self):
-        object_ = GIMarshallingTests.Object(int = 42)
-        self.assertEquals(object_.int_, 42)
+        object_ = GIMarshallingTests.Object(int=42)
+        self.assertEqual(object_.int_, 42)
 # FIXME: Don't work yet.
 #        object_.int_ = 0
-#        self.assertEquals(object_.int_, 0)
+#        self.assertEqual(object_.int_, 0)
 
     def test_object_static_method(self):
         GIMarshallingTests.Object.static_method()
 
     def test_object_method(self):
-        GIMarshallingTests.Object(int = 42).method()
+        GIMarshallingTests.Object(int=42).method()
         self.assertRaises(TypeError, GIMarshallingTests.Object.method, GObject.GObject())
         self.assertRaises(TypeError, GIMarshallingTests.Object.method)
 
-
     def test_sub_object(self):
         self.assertTrue(issubclass(GIMarshallingTests.SubObject, GIMarshallingTests.Object))
 
@@ -1389,7 +1517,7 @@ class TestGObject(unittest.TestCase):
         object_.static_method()
 
     def test_sub_object_method(self):
-        object_ = GIMarshallingTests.SubObject(int = 42)
+        object_ = GIMarshallingTests.SubObject(int=42)
         object_.method()
 
     def test_sub_object_sub_method(self):
@@ -1404,27 +1532,27 @@ class TestGObject(unittest.TestCase):
 
     def test_sub_object_int(self):
         object_ = GIMarshallingTests.SubObject()
-        self.assertEquals(object_.int_, 0)
+        self.assertEqual(object_.int_, 0)
 # FIXME: Don't work yet.
 #        object_.int_ = 42
-#        self.assertEquals(object_.int_, 42)
+#        self.assertEqual(object_.int_, 42)
 
     def test_object_none_return(self):
         object_ = GIMarshallingTests.Object.none_return()
         self.assertTrue(isinstance(object_, GIMarshallingTests.Object))
-        self.assertEquals(object_.__grefcount__, 2)
+        self.assertEqual(object_.__grefcount__, 2)
 
     def test_object_full_return(self):
         object_ = GIMarshallingTests.Object.full_return()
         self.assertTrue(isinstance(object_, GIMarshallingTests.Object))
-        self.assertEquals(object_.__grefcount__, 1)
+        self.assertEqual(object_.__grefcount__, 1)
 
     def test_object_none_in(self):
-        object_ = GIMarshallingTests.Object(int = 42)
+        object_ = GIMarshallingTests.Object(int=42)
         GIMarshallingTests.Object.none_in(object_)
-        self.assertEquals(object_.__grefcount__, 1)
+        self.assertEqual(object_.__grefcount__, 1)
 
-        object_ = GIMarshallingTests.SubObject(int = 42)
+        object_ = GIMarshallingTests.SubObject(int=42)
         GIMarshallingTests.Object.none_in(object_)
 
         object_ = GObject.GObject()
@@ -1435,7 +1563,7 @@ class TestGObject(unittest.TestCase):
     def test_object_none_out(self):
         object_ = GIMarshallingTests.Object.none_out()
         self.assertTrue(isinstance(object_, GIMarshallingTests.Object))
-        self.assertEquals(object_.__grefcount__, 2)
+        self.assertEqual(object_.__grefcount__, 2)
 
         new_object = GIMarshallingTests.Object.none_out()
         self.assertTrue(new_object is object_)
@@ -1443,41 +1571,41 @@ class TestGObject(unittest.TestCase):
     def test_object_full_out(self):
         object_ = GIMarshallingTests.Object.full_out()
         self.assertTrue(isinstance(object_, GIMarshallingTests.Object))
-        self.assertEquals(object_.__grefcount__, 1)
+        self.assertEqual(object_.__grefcount__, 1)
 
     def test_object_none_inout(self):
-        object_ = GIMarshallingTests.Object(int = 42)
+        object_ = GIMarshallingTests.Object(int=42)
         new_object = GIMarshallingTests.Object.none_inout(object_)
 
         self.assertTrue(isinstance(new_object, GIMarshallingTests.Object))
 
         self.assertFalse(object_ is new_object)
 
-        self.assertEquals(object_.__grefcount__, 1)
-        self.assertEquals(new_object.__grefcount__, 2)
+        self.assertEqual(object_.__grefcount__, 1)
+        self.assertEqual(new_object.__grefcount__, 2)
 
         new_new_object = GIMarshallingTests.Object.none_inout(object_)
         self.assertTrue(new_new_object is new_object)
 
-        GIMarshallingTests.Object.none_inout(GIMarshallingTests.SubObject(int = 42))
+        GIMarshallingTests.Object.none_inout(GIMarshallingTests.SubObject(int=42))
 
     def test_object_full_inout(self):
-        object_ = GIMarshallingTests.Object(int = 42)
+        object_ = GIMarshallingTests.Object(int=42)
         new_object = GIMarshallingTests.Object.full_inout(object_)
 
         self.assertTrue(isinstance(new_object, GIMarshallingTests.Object))
 
         self.assertFalse(object_ is new_object)
 
-        self.assertEquals(object_.__grefcount__, 2)
-        self.assertEquals(new_object.__grefcount__, 1)
+        self.assertEqual(object_.__grefcount__, 2)
+        self.assertEqual(new_object.__grefcount__, 1)
 
 # FIXME: Doesn't actually return the same object.
 #    def test_object_inout_same(self):
 #        object_ = GIMarshallingTests.Object()
 #        new_object = GIMarshallingTests.object_full_inout(object_)
 #        self.assertTrue(object_ is new_object)
-#        self.assertEquals(object_.__grefcount__, 1)
+#        self.assertEqual(object_.__grefcount__, 1)
 
 
 class TestPythonGObject(unittest.TestCase):
@@ -1501,6 +1629,24 @@ class TestPythonGObject(unittest.TestCase):
             GIMarshallingTests.Object.do_method_with_default_implementation(self, int8)
             self.props.int += int8
 
+        def do_vfunc_return_value_only(self):
+            return 4242
+
+        def do_vfunc_one_out_parameter(self):
+            return 42.42
+
+        def do_vfunc_multiple_out_parameters(self):
+            return (42.42, 3.14)
+
+        def do_vfunc_return_value_and_one_out_parameter(self):
+            return (5, 42)
+
+        def do_vfunc_return_value_and_multiple_out_parameters(self):
+            return (5, 42, 99)
+
+        def do_vfunc_caller_allocated_out_parameter(self):
+            return 'hello'
+
     class SubObject(GIMarshallingTests.SubObject):
         def __init__(self, int):
             GIMarshallingTests.SubObject.__init__(self)
@@ -1509,17 +1655,27 @@ class TestPythonGObject(unittest.TestCase):
         def do_method_with_default_implementation(self, int8):
             self.val = int8
 
+    class Interface3Impl(GObject.Object, GIMarshallingTests.Interface3):
+        def __init__(self):
+            GObject.Object.__init__(self)
+            self.variants = None
+            self.n_variants = None
+
+        def do_test_variant_array_in(self, variants, n_variants):
+            self.variants = variants
+            self.n_variants = n_variants
+
     def test_object(self):
         self.assertTrue(issubclass(self.Object, GIMarshallingTests.Object))
 
-        object_ = self.Object(int = 42)
+        object_ = self.Object(int=42)
         self.assertTrue(isinstance(object_, self.Object))
 
     def test_object_method(self):
-        self.Object(int = 0).method()
+        self.Object(int=0).method()
 
     def test_object_vfuncs(self):
-        object_ = self.Object(int = 42)
+        object_ = self.Object(int=42)
         object_.method_int8_in(84)
         self.assertEqual(object_.val, 84)
         self.assertEqual(object_.method_int8_out(), 42)
@@ -1527,26 +1683,39 @@ class TestPythonGObject(unittest.TestCase):
         object_.method_with_default_implementation(42)
         self.assertEqual(object_.props.int, 84)
 
+        self.assertEqual(object_.vfunc_return_value_only(), 4242)
+        self.assertAlmostEqual(object_.vfunc_one_out_parameter(), 42.42, places=5)
+
+        (a, b) = object_.vfunc_multiple_out_parameters()
+        self.assertAlmostEqual(a, 42.42, places=5)
+        self.assertAlmostEqual(b, 3.14, places=5)
+
+        self.assertEqual(object_.vfunc_return_value_and_one_out_parameter(), (5, 42))
+        self.assertEqual(object_.vfunc_return_value_and_multiple_out_parameters(), (5, 42, 99))
+
+        self.assertEqual(object_.vfunc_caller_allocated_out_parameter(), 'hello')
+
         class ObjectWithoutVFunc(GIMarshallingTests.Object):
             def __init__(self, int):
                 GIMarshallingTests.Object.__init__(self)
 
-        object_ = ObjectWithoutVFunc(int = 42)
+        object_ = ObjectWithoutVFunc(int=42)
         object_.method_with_default_implementation(84)
         self.assertEqual(object_.props.int, 84)
 
     def test_subobject_parent_vfunc(self):
-        object_ = self.SubObject(int = 81)
+        object_ = self.SubObject(int=81)
         object_.method_with_default_implementation(87)
-        self.assertEquals(object_.val, 87)
+        self.assertEqual(object_.val, 87)
 
     def test_dynamic_module(self):
         from gi.module import DynamicGObjectModule
         self.assertTrue(isinstance(GObject, DynamicGObjectModule))
         # compare the same enum from both the pygobject attrs and gi GObject attrs
-        self.assertEquals(GObject.SIGNAL_ACTION, GObject.SignalFlags.ACTION)
+        self.assertEqual(GObject.SIGNAL_ACTION, GObject.SignalFlags.ACTION)
         # compare a static gobject attr with a dynamic GObject attr
-        self.assertEquals(GObject.GObject, gobject.GObject)
+        import gi._gobject
+        self.assertEqual(GObject.GObject, gi._gobject.GObject)
 
     def test_subobject_non_vfunc_do_method(self):
         class PythonObjectWithNonVFuncDoMethod:
@@ -1559,7 +1728,7 @@ class TestPythonGObject(unittest.TestCase):
                 return 13 + value
 
         object_ = ObjectOverrideNonVFuncDoMethod()
-        self.assertEquals(18, object_.do_not_a_vfunc())
+        self.assertEqual(18, object_.do_not_a_vfunc())
 
     def test_native_function_not_set_in_subclass_dict(self):
         # Previously, GI was setting virtual functions on the class as well
@@ -1568,16 +1737,6 @@ class TestPythonGObject(unittest.TestCase):
         self.assertTrue('do_method_with_default_implementation' in GIMarshallingTests.Object.__dict__)
         self.assertTrue('do_method_with_default_implementation' not in GIMarshallingTests.SubObject.__dict__)
 
-        # Here we check that accessing a vfunc from the subclass returns the same wrapper object,
-        # meaning that multiple wrapper objects have not been created for the same vfunc.
-        func1 = GIMarshallingTests.Object.do_method_with_default_implementation
-        func2 = GIMarshallingTests.SubObject.do_method_with_default_implementation
-        if sys.version_info < (3,0):
-            func1 = func1.im_func
-            func2 = func2.im_func
-            
-        self.assertTrue(func1 is func2)
-
     def test_subobject_with_interface_and_non_vfunc_do_method(self):
         # There was a bug for searching for vfuncs in interfaces. It was
         # triggered by having a do_* method that wasn't overriding
@@ -1586,13 +1745,75 @@ class TestPythonGObject(unittest.TestCase):
             def do_method_not_a_vfunc(self):
                 pass
 
+    def test_subsubobject(self):
+        class SubSubSubObject(GIMarshallingTests.SubSubObject):
+            def do_method_deep_hierarchy(self, num):
+                self.props.int = num * 2
+
+        sub_sub_sub_object = SubSubSubObject()
+        GIMarshallingTests.SubSubObject.do_method_deep_hierarchy(sub_sub_sub_object, 5)
+        self.assertEqual(sub_sub_sub_object.props.int, 5)
+
+    def test_interface3impl(self):
+        iface3 = self.Interface3Impl()
+        variants = [GLib.Variant('i', 27), GLib.Variant('s', 'Hello')]
+        iface3.test_variant_array_in(variants)
+        self.assertEqual(iface3.n_variants, 2)
+        self.assertEqual(iface3.variants[0].unpack(), 27)
+        self.assertEqual(iface3.variants[1].unpack(), 'Hello')
+
+    def test_python_subsubobject_vfunc(self):
+        class PySubObject(GIMarshallingTests.Object):
+            def __init__(self):
+                GIMarshallingTests.Object.__init__(self)
+                self.sub_method_int8_called = 0
+
+            def do_method_int8_in(self, int8):
+                self.sub_method_int8_called += 1
+
+        class PySubSubObject(PySubObject):
+            def __init__(self):
+                PySubObject.__init__(self)
+                self.subsub_method_int8_called = 0
+
+            def do_method_int8_in(self, int8):
+                self.subsub_method_int8_called += 1
+
+        so = PySubObject()
+        so.method_int8_in(1)
+        self.assertEqual(so.sub_method_int8_called, 1)
+
+        # it should call the method on the SubSub object only
+        sso = PySubSubObject()
+        sso.method_int8_in(1)
+        self.assertEqual(sso.subsub_method_int8_called, 1)
+        self.assertEqual(sso.sub_method_int8_called, 0)
+
+    def test_callback_in_vfunc(self):
+        class SubObject(GIMarshallingTests.Object):
+            def __init__(self):
+                GObject.GObject.__init__(self)
+                self.worked = False
+
+            def do_vfunc_with_callback(self, callback):
+                self.worked = callback(42) == 42
+
+        _object = SubObject()
+        _object.call_vfunc_with_callback()
+        self.assertTrue(_object.worked)
+        _object.worked = False
+        _object.call_vfunc_with_callback()
+        self.assertTrue(_object.worked)
+
+
 class TestMultiOutputArgs(unittest.TestCase):
 
     def test_int_out_out(self):
-        self.assertEquals((6, 7), GIMarshallingTests.int_out_out())
+        self.assertEqual((6, 7), GIMarshallingTests.int_out_out())
 
     def test_int_return_out(self):
-        self.assertEquals((6, 7), GIMarshallingTests.int_return_out())
+        self.assertEqual((6, 7), GIMarshallingTests.int_return_out())
+
 
 class TestGErrorException(unittest.TestCase):
     def test_gerror_exception(self):
@@ -1601,39 +1822,42 @@ class TestGErrorException(unittest.TestCase):
             GIMarshallingTests.gerror()
         except Exception:
             etype, e = sys.exc_info()[:2]
-            self.assertEquals(e.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
-            self.assertEquals(e.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
-            self.assertEquals(e.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
+            self.assertEqual(e.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
+            self.assertEqual(e.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
+            self.assertEqual(e.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
 
 
 # Interface
 
+
 class TestInterfaces(unittest.TestCase):
 
+    class TestInterfaceImpl(GObject.GObject, GIMarshallingTests.Interface):
+        def __init__(self):
+            GObject.GObject.__init__(self)
+            self.val = None
+
+        def do_test_int8_in(self, int8):
+            self.val = int8
+
+    def setUp(self):
+        self.instance = self.TestInterfaceImpl()
+
     def test_wrapper(self):
         self.assertTrue(issubclass(GIMarshallingTests.Interface, GObject.GInterface))
-        self.assertEquals(GIMarshallingTests.Interface.__gtype__.name, 'GIMarshallingTestsInterface')
+        self.assertEqual(GIMarshallingTests.Interface.__gtype__.name, 'GIMarshallingTestsInterface')
         self.assertRaises(NotImplementedError, GIMarshallingTests.Interface)
 
     def test_implementation(self):
+        self.assertTrue(issubclass(self.TestInterfaceImpl, GIMarshallingTests.Interface))
+        self.assertTrue(isinstance(self.instance, GIMarshallingTests.Interface))
 
-        class TestInterfaceImpl(GObject.GObject, GIMarshallingTests.Interface):
-            def __init__(self):
-                GObject.GObject.__init__(self)
-                self.val = None
-
-            def do_test_int8_in(self, int8):
-                self.val = int8
-
-        self.assertTrue(issubclass(TestInterfaceImpl, GIMarshallingTests.Interface))
-
-        instance = TestInterfaceImpl()
-        self.assertTrue(isinstance(instance, GIMarshallingTests.Interface))
+    def test_int8_int(self):
+        GIMarshallingTests.test_interface_test_int8_in(self.instance, 42)
+        self.assertEqual(self.instance.val, 42)
 
-        GIMarshallingTests.test_interface_test_int8_in(instance, 42)
-        self.assertEquals(instance.val, 42)
-
-        class TestInterfaceImplA(TestInterfaceImpl):
+    def test_subclass(self):
+        class TestInterfaceImplA(self.TestInterfaceImpl):
             pass
 
         class TestInterfaceImplB(TestInterfaceImplA):
@@ -1641,7 +1865,7 @@ class TestInterfaces(unittest.TestCase):
 
         instance = TestInterfaceImplA()
         GIMarshallingTests.test_interface_test_int8_in(instance, 42)
-        self.assertEquals(instance.val, 42)
+        self.assertEqual(instance.val, 42)
 
     def test_mro(self):
         # there was a problem with Python bailing out because of
@@ -1655,10 +1879,73 @@ class TestInterfaces(unittest.TestCase):
                                  TestInterfaceImpl):
             pass
 
-        class TestInterfaceImpl3(TestInterfaceImpl,
+        class TestInterfaceImpl3(self.TestInterfaceImpl,
                                  GIMarshallingTests.Interface2):
             pass
 
+    def test_type_mismatch(self):
+        obj = GIMarshallingTests.Object()
+
+        # wrong type for first argument: interface
+        enum = Gio.File.new_for_path('.').enumerate_children(
+            '', Gio.FileQueryInfoFlags.NONE, None)
+        try:
+            enum.next_file(obj)
+            self.fail('call with wrong type argument unexpectedly succeeded')
+        except TypeError as e:
+            # should have argument name
+            self.assertTrue('cancellable' in str(e), e)
+            # should have expected type
+            self.assertTrue('xpected Gio.Cancellable' in str(e), e)
+            # should have actual type
+            self.assertTrue('GIMarshallingTests.Object' in str(e), e)
+
+        # wrong type for self argument: interface
+        try:
+            Gio.FileEnumerator.next_file(obj, None)
+            self.fail('call with wrong type argument unexpectedly succeeded')
+        except TypeError as e:
+            if sys.version_info < (3, 0):
+                self.assertTrue('FileEnumerator' in str(e), e)
+                self.assertTrue('Object' in str(e), e)
+            else:
+                # should have argument name
+                self.assertTrue('self' in str(e), e)
+                # should have expected type
+                self.assertTrue('xpected Gio.FileEnumerator' in str(e), e)
+                # should have actual type
+                self.assertTrue('GIMarshallingTests.Object' in str(e), e)
+
+        # wrong type for first argument: GObject
+        var = GLib.Variant('s', 'mystring')
+        action = Gio.SimpleAction.new('foo', var.get_type())
+        try:
+            action.activate(obj)
+            self.fail('call with wrong type argument unexpectedly succeeded')
+        except TypeError as e:
+            # should have argument name
+            self.assertTrue('parameter' in str(e), e)
+            # should have expected type
+            self.assertTrue('xpected GLib.Variant' in str(e), e)
+            # should have actual type
+            self.assertTrue('GIMarshallingTests.Object' in str(e), e)
+
+        # wrong type for self argument: GObject
+        try:
+            Gio.SimpleAction.activate(obj, obj)
+            self.fail('call with wrong type argument unexpectedly succeeded')
+        except TypeError as e:
+            if sys.version_info < (3, 0):
+                self.assertTrue('SimpleAction' in str(e), e)
+                self.assertTrue('Object' in str(e), e)
+            else:
+                # should have argument name
+                self.assertTrue('self' in str(e), e)
+                # should have expected type
+                self.assertTrue('xpected Gio.Action' in str(e), e)
+                # should have actual type
+                self.assertTrue('GIMarshallingTests.Object' in str(e), e)
+
 
 class TestInterfaceClash(unittest.TestCase):
 
@@ -1675,7 +1962,7 @@ class TestInterfaceClash(unittest.TestCase):
 class TestOverrides(unittest.TestCase):
 
     def test_constant(self):
-        self.assertEquals(GIMarshallingTests.OVERRIDES_CONSTANT, 7)
+        self.assertEqual(GIMarshallingTests.OVERRIDES_CONSTANT, 7)
 
     def test_struct(self):
         # Test that the constructor has been overridden.
@@ -1684,7 +1971,7 @@ class TestOverrides(unittest.TestCase):
         self.assertTrue(isinstance(struct, GIMarshallingTests.OverridesStruct))
 
         # Test that the method has been overridden.
-        self.assertEquals(6, struct.method())
+        self.assertEqual(6, struct.method())
 
         del struct
 
@@ -1707,7 +1994,7 @@ class TestOverrides(unittest.TestCase):
         self.assertTrue(isinstance(object_, GIMarshallingTests.OverridesObject))
 
         # Test that the method has been overridden.
-        self.assertEquals(6, object_.method())
+        self.assertEqual(6, object_.method())
 
         # Test that the overrides wrapper has been registered.
         object_ = GIMarshallingTests.OverridesObject.returnv()
@@ -1715,8 +2002,9 @@ class TestOverrides(unittest.TestCase):
         self.assertTrue(isinstance(object_, GIMarshallingTests.OverridesObject))
 
     def test_module_name(self):
-        self.assertEquals(GIMarshallingTests.OverridesStruct.__module__, 'gi.overrides.GIMarshallingTests')
-        self.assertEquals(GObject.InitiallyUnowned.__module__, 'gi.repository.GObject')
+        self.assertEqual(GIMarshallingTests.OverridesStruct.__module__, 'gi.overrides.GIMarshallingTests')
+        self.assertEqual(GObject.InitiallyUnowned.__module__, 'gi.repository.GObject')
+
 
 class TestDir(unittest.TestCase):
     def test_members_list(self):
@@ -1742,6 +2030,7 @@ class TestDir(unittest.TestCase):
         #
         # self.assertTrue('DoNotImportDummyTests' in list)
 
+
 class TestGErrorArrayInCrash(unittest.TestCase):
     # Previously there was a bug in invoke, in which C arrays were unwrapped
     # from inside GArrays to be passed to the C function. But when a GError was
@@ -1750,3 +2039,370 @@ class TestGErrorArrayInCrash(unittest.TestCase):
     # take in GArrays. See https://bugzilla.gnome.org/show_bug.cgi?id=642708
     def test_gerror_array_in_crash(self):
         self.assertRaises(GObject.GError, GIMarshallingTests.gerror_array_in, [1, 2, 3])
+
+
+class TestGErrorOut(unittest.TestCase):
+    # See https://bugzilla.gnome.org/show_bug.cgi?id=666098
+    def test_gerror_out(self):
+        error, debug = GIMarshallingTests.gerror_out()
+
+        self.assertIsInstance(error, GObject.GError)
+        self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
+        self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
+        self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
+        self.assertEqual(debug, GIMarshallingTests.CONSTANT_GERROR_DEBUG_MESSAGE)
+
+
+class TestGErrorOutTransferNone(unittest.TestCase):
+    # See https://bugzilla.gnome.org/show_bug.cgi?id=666098
+    def test_gerror_out_transfer_none(self):
+        error, debug = GIMarshallingTests.gerror_out_transfer_none()
+
+        self.assertIsInstance(error, GObject.GError)
+        self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
+        self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
+        self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
+        self.assertEqual(GIMarshallingTests.CONSTANT_GERROR_DEBUG_MESSAGE, debug)
+
+
+class TestGErrorReturn(unittest.TestCase):
+    # See https://bugzilla.gnome.org/show_bug.cgi?id=666098
+    def test_return_gerror(self):
+        error = GIMarshallingTests.gerror_return()
+
+        self.assertIsInstance(error, GObject.GError)
+        self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
+        self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
+        self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
+
+
+class TestParamSpec(unittest.TestCase):
+    def test_param_spec_return(self):
+        obj = GIMarshallingTests.param_spec_return()
+        self.assertEqual(obj.name, 'test-param')
+        self.assertEqual(obj.nick, 'test')
+        self.assertEqual(obj.value_type, GObject.TYPE_STRING)
+
+    def test_param_spec_out(self):
+        obj = GIMarshallingTests.param_spec_out()
+        self.assertEqual(obj.name, 'test-param')
+        self.assertEqual(obj.nick, 'test')
+        self.assertEqual(obj.value_type, GObject.TYPE_STRING)
+
+
+class TestKeywordArgs(unittest.TestCase):
+
+    def test_calling(self):
+        kw_func = GIMarshallingTests.int_three_in_three_out
+
+        self.assertEqual(kw_func(1, 2, 3), (1, 2, 3))
+        self.assertEqual(kw_func(**{'a': 4, 'b': 5, 'c': 6}), (4, 5, 6))
+        self.assertEqual(kw_func(1, **{'b': 7, 'c': 8}), (1, 7, 8))
+        self.assertEqual(kw_func(1, 7, **{'c': 8}), (1, 7, 8))
+        self.assertEqual(kw_func(1, c=8, **{'b': 7}), (1, 7, 8))
+        self.assertEqual(kw_func(2, c=4, b=3), (2, 3, 4))
+        self.assertEqual(kw_func(a=2, c=4, b=3), (2, 3, 4))
+
+    def assertRaisesMessage(self, exception, message, func, *args, **kwargs):
+        try:
+            func(*args, **kwargs)
+        except exception:
+            (e_type, e) = sys.exc_info()[:2]
+            if message is not None:
+                self.assertEqual(str(e), message)
+        except:
+            raise
+        else:
+            msg = "%s() did not raise %s" % (func.__name__, exception.__name__)
+            raise AssertionError(msg)
+
+    def test_type_errors(self):
+        # test too few args
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 arguments (0 given)",
+                                 GIMarshallingTests.int_three_in_three_out)
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 arguments (1 given)",
+                                 GIMarshallingTests.int_three_in_three_out, 1)
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 arguments (0 given)",
+                                 GIMarshallingTests.int_three_in_three_out, *())
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 arguments (0 given)",
+                                 GIMarshallingTests.int_three_in_three_out, *(), **{})
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 non-keyword arguments (0 given)",
+                                 GIMarshallingTests.int_three_in_three_out, *(), **{'c': 4})
+
+        # test too many args
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 arguments (4 given)",
+                                 GIMarshallingTests.int_three_in_three_out, *(1, 2, 3, 4))
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 non-keyword arguments (4 given)",
+                                 GIMarshallingTests.int_three_in_three_out, *(1, 2, 3, 4), c=6)
+
+        # test too many keyword args
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() got multiple values for keyword argument 'a'",
+                                 GIMarshallingTests.int_three_in_three_out, 1, 2, 3, **{'a': 4, 'b': 5})
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() got an unexpected keyword argument 'd'",
+                                 GIMarshallingTests.int_three_in_three_out, d=4)
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() got an unexpected keyword argument 'e'",
+                                 GIMarshallingTests.int_three_in_three_out, **{'e': 2})
+
+    def test_kwargs_are_not_modified(self):
+        d = {'b': 2}
+        d2 = d.copy()
+        GIMarshallingTests.int_three_in_three_out(1, c=4, **d)
+        self.assertEqual(d, d2)
+
+
+class TestPropertiesObject(unittest.TestCase):
+
+    def setUp(self):
+        self.obj = GIMarshallingTests.PropertiesObject()
+
+    def test_boolean(self):
+        self.assertEqual(self.obj.props.some_boolean, False)
+        self.obj.props.some_boolean = True
+        self.assertEqual(self.obj.props.some_boolean, True)
+
+        obj = GIMarshallingTests.PropertiesObject(some_boolean=True)
+        self.assertEqual(obj.props.some_boolean, True)
+
+    @unittest.expectedFailure
+    def test_char(self):
+        # gobject-introspection thinks it has a guint8 type tag, which is
+        # wrong; this will raise an assertion critical which we need to ignore
+        old_mask = GLib.log_set_always_fatal(
+            GLib.LogLevelFlags.LEVEL_WARNING | GLib.LogLevelFlags.LEVEL_ERROR)
+        self.assertEqual(self.obj.props.some_char, 0)
+        self.obj.props.some_char = GObject.G_MAXINT8
+        self.assertEqual(self.obj.props.some_char, GObject.G_MAXINT8)
+
+        GLib.log_set_always_fatal(old_mask)
+
+        obj = GIMarshallingTests.PropertiesObject(some_char=-42)
+        self.assertEqual(obj.props.some_char, -42)
+
+    def test_uchar(self):
+        self.assertEqual(self.obj.props.some_uchar, 0)
+        self.obj.props.some_uchar = GObject.G_MAXUINT8
+        self.assertEqual(self.obj.props.some_uchar, GObject.G_MAXUINT8)
+
+        obj = GIMarshallingTests.PropertiesObject(some_uchar=42)
+        self.assertEqual(obj.props.some_uchar, 42)
+
+    def test_int(self):
+        self.assertEqual(self.obj.props.some_int, 0)
+        self.obj.props.some_int = GObject.G_MAXINT
+        self.assertEqual(self.obj.props.some_int, GObject.G_MAXINT)
+
+        obj = GIMarshallingTests.PropertiesObject(some_int=-42)
+        self.assertEqual(obj.props.some_int, -42)
+
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_int', 'foo')
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_int', None)
+
+        self.assertEqual(obj.props.some_int, -42)
+
+    def test_uint(self):
+        self.assertEqual(self.obj.props.some_uint, 0)
+        self.obj.props.some_uint = GObject.G_MAXUINT
+        self.assertEqual(self.obj.props.some_uint, GObject.G_MAXUINT)
+
+        obj = GIMarshallingTests.PropertiesObject(some_uint=42)
+        self.assertEqual(obj.props.some_uint, 42)
+
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_uint', 'foo')
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_uint', None)
+
+        self.assertEqual(obj.props.some_uint, 42)
+
+    def test_long(self):
+        self.assertEqual(self.obj.props.some_long, 0)
+        self.obj.props.some_long = GObject.G_MAXLONG
+        self.assertEqual(self.obj.props.some_long, GObject.G_MAXLONG)
+
+        obj = GIMarshallingTests.PropertiesObject(some_long=-42)
+        self.assertEqual(obj.props.some_long, -42)
+
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_long', 'foo')
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_long', None)
+
+        self.assertEqual(obj.props.some_long, -42)
+
+    def test_ulong(self):
+        self.assertEqual(self.obj.props.some_ulong, 0)
+        self.obj.props.some_ulong = GObject.G_MAXULONG
+        self.assertEqual(self.obj.props.some_ulong, GObject.G_MAXULONG)
+
+        obj = GIMarshallingTests.PropertiesObject(some_ulong=42)
+        self.assertEqual(obj.props.some_ulong, 42)
+
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_ulong', 'foo')
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_ulong', None)
+
+        self.assertEqual(obj.props.some_ulong, 42)
+
+    def test_int64(self):
+        self.assertEqual(self.obj.props.some_int64, 0)
+        self.obj.props.some_int64 = GObject.G_MAXINT64
+        self.assertEqual(self.obj.props.some_int64, GObject.G_MAXINT64)
+
+        obj = GIMarshallingTests.PropertiesObject(some_int64=-4200000000000000)
+        self.assertEqual(obj.props.some_int64, -4200000000000000)
+
+    def test_uint64(self):
+        self.assertEqual(self.obj.props.some_uint64, 0)
+        self.obj.props.some_uint64 = GObject.G_MAXUINT64
+        self.assertEqual(self.obj.props.some_uint64, GObject.G_MAXUINT64)
+
+        obj = GIMarshallingTests.PropertiesObject(some_uint64=4200000000000000)
+        self.assertEqual(obj.props.some_uint64, 4200000000000000)
+
+    def test_float(self):
+        self.assertEqual(self.obj.props.some_float, 0)
+        self.obj.props.some_float = GObject.G_MAXFLOAT
+        self.assertEqual(self.obj.props.some_float, GObject.G_MAXFLOAT)
+
+        obj = GIMarshallingTests.PropertiesObject(some_float=42.42)
+        self.assertAlmostEqual(obj.props.some_float, 42.42, 4)
+
+        obj = GIMarshallingTests.PropertiesObject(some_float=42)
+        self.assertAlmostEqual(obj.props.some_float, 42.0, 4)
+
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_float', 'foo')
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_float', None)
+
+        self.assertAlmostEqual(obj.props.some_float, 42.0, 4)
+
+    def test_double(self):
+        self.assertEqual(self.obj.props.some_double, 0)
+        self.obj.props.some_double = GObject.G_MAXDOUBLE
+        self.assertEqual(self.obj.props.some_double, GObject.G_MAXDOUBLE)
+
+        obj = GIMarshallingTests.PropertiesObject(some_double=42.42)
+        self.assertAlmostEqual(obj.props.some_double, 42.42)
+
+        obj = GIMarshallingTests.PropertiesObject(some_double=42)
+        self.assertAlmostEqual(obj.props.some_double, 42.0)
+
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_double', 'foo')
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_double', None)
+
+        self.assertAlmostEqual(obj.props.some_double, 42.0)
+
+    def test_strv(self):
+        self.assertEqual(self.obj.props.some_strv, [])
+        self.obj.props.some_strv = ['hello', 'world']
+        self.assertEqual(self.obj.props.some_strv, ['hello', 'world'])
+
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_strv', 1)
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_strv', 'foo')
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_strv', [1, 2])
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_strv', ['foo', 1])
+
+        self.assertEqual(self.obj.props.some_strv, ['hello', 'world'])
+
+        obj = GIMarshallingTests.PropertiesObject(some_strv=['hello', 'world'])
+        self.assertEqual(obj.props.some_strv, ['hello', 'world'])
+
+    def test_boxed_struct(self):
+        self.assertEqual(self.obj.props.some_boxed_struct, None)
+
+        class GStrv(list):
+            __gtype__ = GObject.TYPE_STRV
+
+        struct1 = GIMarshallingTests.BoxedStruct()
+        struct1.long_ = 1
+
+        self.obj.props.some_boxed_struct = struct1
+        self.assertEqual(self.obj.props.some_boxed_struct.long_, 1)
+        self.assertEqual(self.obj.some_boxed_struct.long_, 1)
+
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_boxed_struct', 1)
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_boxed_struct', 'foo')
+
+        obj = GIMarshallingTests.PropertiesObject(some_boxed_struct=struct1)
+        self.assertEqual(obj.props.some_boxed_struct.long_, 1)
+
+
+class TestKeywords(unittest.TestCase):
+    def test_method(self):
+        # g_variant_print()
+        v = GLib.Variant('i', 1)
+        self.assertEqual(v.print_(False), '1')
+
+    def test_function(self):
+        # g_thread_yield()
+        self.assertEqual(GLib.Thread.yield_(), None)
+
+    def test_struct_method(self):
+        # g_timer_continue()
+        # we cannot currently instantiate GLib.Timer objects, so just ensure
+        # the method exists
+        self.assertTrue(callable(GLib.Timer.continue_))
+
+    def test_uppercase(self):
+        self.assertEqual(GLib.IOCondition.IN.value_nicks, ['in'])
+
+
+class TestModule(unittest.TestCase):
+    def test_path(self):
+        self.assertTrue(GIMarshallingTests.__path__.endswith('GIMarshallingTests-1.0.typelib'),
+                        GIMarshallingTests.__path__)
+
+    def test_str(self):
+        self.assertTrue("'GIMarshallingTests' from '" in str(GIMarshallingTests),
+                        str(GIMarshallingTests))
+
+    def test_dir(self):
+        _dir = dir(GIMarshallingTests)
+        self.assertGreater(len(_dir), 10)
+
+        self.assertTrue('SimpleStruct' in _dir)
+        self.assertTrue('Interface2' in _dir)
+        self.assertTrue('CONSTANT_GERROR_CODE' in _dir)
+        self.assertTrue('array_zero_terminated_inout' in _dir)
+
+        # assert that dir() does not contain garbage
+        for item_name in _dir:
+            item = getattr(GIMarshallingTests, item_name)
+            self.assertTrue(hasattr(item, '__class__'))
+
+    def test_help(self):
+        orig_stdout = sys.stdout
+        try:
+            if sys.version_info < (3, 0):
+                sys.stdout = BytesIO()
+            else:
+                sys.stdout = StringIO()
+            help(GIMarshallingTests)
+            output = sys.stdout.getvalue()
+        finally:
+            sys.stdout = orig_stdout
+
+        self.assertTrue('SimpleStruct' in output, output)
+        self.assertTrue('Interface2' in output, output)
+        self.assertTrue('method_array_inout' in output, output)
+
+
+class TestProjectVersion(unittest.TestCase):
+    def test_version_str(self):
+        self.assertGreaterEqual(gi.__version__, "3.3.5")
+
+    def test_version_info(self):
+        self.assertEqual(len(gi.version_info), 3)
+        self.assertGreaterEqual(gi.version_info, (3, 3, 5))
+
+    def test_check_version(self):
+        self.assertRaises(ValueError, gi.check_version, (99, 0, 0))
+        self.assertRaises(ValueError, gi.check_version, "99.0.0")
+        gi.check_version((3, 3, 5))
+        gi.check_version("3.3.5")
+
+
+class TestObjectInfo(unittest.TestCase):
+    def test_get_abstract_with_abstract(self):
+        repo = gi.gi.Repository.get_default()
+        info = repo.find_by_name('GObject', 'TypeModule')
+        self.assertTrue(info.get_abstract())
+
+    def test_get_abstract_with_concrete(self):
+        repo = gi.gi.Repository.get_default()
+        info = repo.find_by_name('GObject', 'Object')
+        self.assertFalse(info.get_abstract())
diff --git a/tests/test_gicon.py b/tests/test_gicon.py
deleted file mode 100644 (file)
index b9af6ff..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-# -*- Mode: Python -*-
-
-import os
-import unittest
-
-import glib
-import gio
-
-
-class TestIcon(unittest.TestCase):
-    def test_eq(self):
-        self.assertEquals(gio.FileIcon(gio.File('foo.png')),
-                          gio.FileIcon(gio.File('foo.png')))
-        self.assertEquals(gio.ThemedIcon('foo'),
-                          gio.ThemedIcon('foo'))
-
-        self.assertNotEqual(gio.FileIcon(gio.File('foo.png')),
-                            gio.FileIcon(gio.File('bar.png')))
-        self.assertNotEquals(gio.ThemedIcon('foo'),
-                             gio.ThemedIcon('bar'))
-        self.assertNotEquals(gio.FileIcon(gio.File('foo.png')),
-                             gio.ThemedIcon('foo'))
-
-    def test_hash(self):
-        self.assertEquals(hash(gio.FileIcon(gio.File('foo.png'))),
-                          hash(gio.FileIcon(gio.File('foo.png'))))
-        self.assertEquals(hash(gio.ThemedIcon('foo')),
-                          hash(gio.ThemedIcon('foo')))
-
-class TestLoadableIcon(unittest.TestCase):
-    def setUp(self):
-        self.file = open('temp.svg', 'w')
-        self.svg = ('<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
-                    '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" '
-                    '"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">'
-                    '<svg width="32" height="32"/>')
-        self.file.write(self.svg)
-        self.file.close()
-        self.icon = gio.FileIcon(gio.File('temp.svg'))
-
-    def tearDown(self):
-        if os.path.exists('temp.svg'):
-            os.unlink('temp.svg')
-
-    def test_load(self):
-        stream, type = self.icon.load()
-        try:
-            self.assert_(isinstance(stream, gio.InputStream))
-            self.assertEquals(self.svg, stream.read())
-        finally:
-            stream.close()
-
-    def test_load_async(self):
-        def callback(icon, result):
-            try:
-                stream, type = icon.load_finish(result)
-                self.assert_(isinstance(stream, gio.InputStream))
-                self.assertEquals(self.svg, stream.read())
-            finally:
-                loop.quit()
-                stream.close()
-
-        self.icon.load_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-class TestFileIcon(unittest.TestCase):
-    def test_constructor(self):
-        file = gio.File('foo.png')
-        self.assert_(file is gio.FileIcon(file).get_file())
-
-class TestThemedIcon(unittest.TestCase):
-    def setUp(self):
-        self.icon = gio.ThemedIcon("open")
-
-    def test_constructor(self):
-        have_use_default_fallbacks = ('use_default_fallbacks'
-                                      in gio.ThemedIcon.props.__members__)
-        icon = gio.ThemedIcon('foo')
-        self.assertEquals(['foo'], icon.props.names)
-        self.assert_(not have_use_default_fallbacks
-                     or not icon.props.use_default_fallbacks)
-
-        icon = gio.ThemedIcon(['foo', 'bar', 'baz'])
-        self.assertEquals(['foo', 'bar', 'baz'], icon.props.names)
-        self.assert_(not have_use_default_fallbacks
-                     or not icon.props.use_default_fallbacks)
-
-        icon = gio.ThemedIcon('xxx-yyy-zzz', True)
-        self.assertEquals(['xxx-yyy-zzz', 'xxx-yyy', 'xxx'], icon.props.names)
-        self.assert_(not have_use_default_fallbacks
-                     or icon.props.use_default_fallbacks)
-
-    def test_constructor_illegals(self):
-        self.assertRaises(TypeError, lambda: gio.ThemedIcon(42))
-        self.assertRaises(TypeError, lambda: gio.ThemedIcon(['foo', 42, 'bar']))
-
-    def test_get_names(self):
-        self.assertEquals(self.icon.get_names(), ['open'])
-
-    def test_append_name(self):
-        self.assertEquals(self.icon.get_names(), ['open'])
-        self.icon.append_name('close')
-        self.assertEquals(self.icon.get_names(), ['open', 'close'])
-
-class TestEmblemedIcon(unittest.TestCase):
-    def test_emblemed_icon(self):
-        icon = gio.FileIcon(gio.File('foo.png'))
-        emblem = gio.Emblem(icon)
-        emblemed = gio.EmblemedIcon(icon, emblem)
-        self.assertEquals(emblemed.get_emblems()[0], emblem)
diff --git a/tests/test_gio.py b/tests/test_gio.py
deleted file mode 100644 (file)
index e14eddf..0000000
+++ /dev/null
@@ -1,1138 +0,0 @@
-# -*- Mode: Python -*-
-
-import os
-import unittest
-
-import glib
-import gio
-
-
-class TestFile(unittest.TestCase):
-    def setUp(self):
-        self._f = open("file.txt", "w+")
-        self.file = gio.File("file.txt")
-
-    def tearDown(self):
-        self._f.close()
-        if os.path.exists('file.txt'):
-            os.unlink("file.txt")
-
-    def testReadAsync(self):
-        self._f.write("testing")
-        self._f.seek(0)
-
-        def callback(file, result):
-            try:
-                stream = file.read_finish(result)
-                self.failUnless(isinstance(stream, gio.InputStream))
-                self.assertEquals(stream.read(), "testing")
-            finally:
-                loop.quit()
-
-        self.file.read_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testAppendToAsync(self):
-        self._f.write("append_to ")
-        self._f.close()
-
-        def callback(file, result):
-            try:
-                stream = file.append_to_finish(result)
-                self.failUnless(isinstance(stream, gio.OutputStream))
-                w = stream.write("testing")
-                cont, leng, etag = self.file.load_contents()
-                self.assertEqual(cont, "append_to testing")
-            finally:
-                loop.quit()
-
-        self.file.append_to_async(callback, gio.FILE_CREATE_NONE,
-                                  glib.PRIORITY_HIGH)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testAppendToAsyncNoargs(self):
-        self._f.write("append_to ")
-        self._f.close()
-
-        def callback(file, result):
-            try:
-                stream = file.append_to_finish(result)
-                self.failUnless(isinstance(stream, gio.OutputStream))
-                w = stream.write("testing")
-                cont, leng, etag = self.file.load_contents()
-                self.assertEqual(cont, "append_to testing")
-            finally:
-                loop.quit()
-
-        self.file.append_to_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testCreateAsync(self):
-        def callback(file, result):
-            try:
-                stream = file.create_finish(result)
-                self.failUnless(isinstance(stream, gio.OutputStream))
-                w = stream.write("testing")
-                cont, leng, etag = file.load_contents()
-                self.assertEqual(cont, "testing")
-            finally:
-                if os.path.exists('temp.txt'):
-                    os.unlink("temp.txt")
-                loop.quit()
-
-        gfile = gio.File("temp.txt")
-        gfile.create_async(callback, gio.FILE_CREATE_NONE,
-                           glib.PRIORITY_HIGH)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testCreateReadWriteAsync(self):
-        def callback(file, result):
-            try:
-                iostream = file.create_readwrite_finish(result)
-                self.failUnless(isinstance(iostream, gio.FileIOStream))
-
-                ostream = iostream.get_output_stream()
-                self.failUnless(isinstance(ostream, gio.OutputStream))
-
-                w = ostream.write("testing")
-                cont, leng, etag = file.load_contents()
-                self.assertEqual(cont, "testing")
-            finally:
-                if os.path.exists('temp.txt'):
-                    os.unlink("temp.txt")
-                loop.quit()
-
-        gfile = gio.File("temp.txt")
-        gfile.create_readwrite_async(callback, gio.FILE_CREATE_NONE,
-                                     glib.PRIORITY_HIGH)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testCreateAsyncNoargs(self):
-        def callback(file, result):
-            try:
-                stream = file.create_finish(result)
-                self.failUnless(isinstance(stream, gio.OutputStream))
-                w = stream.write("testing")
-                cont, leng, etag = file.load_contents()
-                self.assertEqual(cont, "testing")
-            finally:
-                if os.path.exists('temp.txt'):
-                    os.unlink("temp.txt")
-                loop.quit()
-
-        gfile = gio.File("temp.txt")
-        gfile.create_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testReplaceAsync(self):
-        self._f.write("testing")
-        self._f.close()
-
-        def callback(file, result):
-            try:
-                stream = file.replace_finish(result)
-                self.failUnless(isinstance(stream, gio.OutputStream))
-                stream.write("some new string")
-                stream.close()
-                cont, leng, etag = file.load_contents()
-                self.assertEqual(cont, "some new string")
-            finally:
-                loop.quit()
-
-
-        self.file.replace_async(callback, None, True, gio.FILE_CREATE_NONE,
-                                glib.PRIORITY_HIGH)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testReplaceAsyncNoargs(self):
-        self._f.write("testing")
-        self._f.close()
-
-        def callback(file, result):
-            try:
-                stream = file.replace_finish(result)
-                self.failUnless(isinstance(stream, gio.OutputStream))
-                stream.write("some new string")
-                stream.close()
-                cont, leng, etag = file.load_contents()
-                self.assertEqual(cont, "some new string")
-            finally:
-                loop.quit()
-
-
-        self.file.replace_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testReadAsyncError(self):
-        self.assertRaises(TypeError, self.file.read_async)
-        self.assertRaises(TypeError, self.file.read_async, "foo", "bar")
-        self.assertRaises(TypeError, self.file.read_async, "foo",
-                          priority="bar")
-        self.assertRaises(TypeError, self.file.read_async, "foo",
-                          priority="bar")
-        self.assertRaises(TypeError, self.file.read_async, "foo",
-                          priority=1, cancellable="bar")
-        self.assertRaises(TypeError, self.file.read_async, "foo", 1, "bar")
-
-    def testConstructor(self):
-        for gfile in [gio.File("/"),
-                      gio.File("file:///"),
-                      gio.File(uri="file:///"),
-                      gio.File(path="/"),
-                      gio.File(u"/"),
-                      gio.File(path=u"/")]:
-            self.failUnless(isinstance(gfile, gio.File))
-            self.assertEquals(gfile.get_path(), "/")
-            self.assertEquals(gfile.get_uri(), "file:///")
-
-    def testConstructorError(self):
-        self.assertRaises(TypeError, gio.File)
-        self.assertRaises(TypeError, gio.File, 1)
-        self.assertRaises(TypeError, gio.File, "foo", "bar")
-        self.assertRaises(TypeError, gio.File, foo="bar")
-        self.assertRaises(TypeError, gio.File, uri=1)
-        self.assertRaises(TypeError, gio.File, path=1)
-
-    def testLoadContents(self):
-        self._f.write("testing load_contents")
-        self._f.seek(0)
-        c = gio.Cancellable()
-        cont, leng, etag = self.file.load_contents(cancellable=c)
-        self.assertEqual(cont, "testing load_contents")
-        self.assertEqual(leng, 21)
-        self.assertNotEqual(etag, '')
-
-    def testLoadContentsAsync(self):
-        self._f.write("testing load_contents_async")
-        self._f.seek(0)
-
-        def callback(contents, result):
-            try:
-                cont, leng, etag = contents.load_contents_finish(result)
-                self.assertEqual(cont, "testing load_contents_async")
-                self.assertEqual(leng, 27)
-                self.assertNotEqual(etag, '')
-            finally:
-                loop.quit()
-
-        canc = gio.Cancellable()
-        self.file.load_contents_async(callback, cancellable=canc)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testQueryInfoAsync(self):
-        def callback(file, result):
-            try:
-                info = file.query_info_finish(result)
-                self.failUnless(isinstance(info, gio.FileInfo))
-                self.failUnless(info.get_name(), "file.txt")
-            finally:
-                loop.quit()
-
-        self.file.query_info_async("standard", callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testMountMountable(self):
-        gfile = gio.File('localtest:')
-        def unmount_done(mount, result):
-            try:
-                retval = mount.unmount_finish(result)
-                self.failUnless(retval)
-            finally:
-                loop.quit()
-
-        def mount_enclosing_volume_done(gfile, result):
-            try:
-                try:
-                    retval = gfile.mount_enclosing_volume_finish(result)
-                except gio.Error, e:
-                    # If we run the tests too fast
-                    if e.code == gio.ERROR_ALREADY_MOUNTED:
-                        print ('WARNING: testfile is already mounted, '
-                        'skipping test')
-                        loop.quit()
-                        return
-                    raise
-                self.failUnless(retval)
-            finally:
-                try:
-                    mount = gfile.find_enclosing_mount()
-                except gio.Error:
-                    loop.quit()
-                    return
-                mount.unmount(unmount_done)
-
-        mount_operation = gio.MountOperation()
-        gfile.mount_enclosing_volume(mount_operation,
-                                     mount_enclosing_volume_done)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testCopy(self):
-        if os.path.exists('copy.txt'):
-            os.unlink("copy.txt")
-
-        source = gio.File('file.txt')
-        destination = gio.File('copy.txt')
-        try:
-            retval = source.copy(destination)
-            self.failUnless(retval)
-
-            self.failUnless(os.path.exists('copy.txt'))
-            self.assertEqual(open('file.txt').read(),
-                             open('copy.txt').read())
-        finally:
-            os.unlink("copy.txt")
-
-        self.called = False
-        def callback(current, total):
-            self.called = True
-        source = gio.File('file.txt')
-        destination = gio.File('copy.txt')
-        try:
-            retval = source.copy(destination, callback)
-            self.failUnless(retval)
-
-            self.failUnless(os.path.exists('copy.txt'))
-            self.assertEqual(open('file.txt').read(),
-                             open('copy.txt').read())
-            self.failUnless(self.called)
-        finally:
-            os.unlink("copy.txt")
-
-    def test_copy_async(self):
-        if os.path.exists('copy.txt'):
-            os.unlink("copy.txt")
-
-        source = gio.File('file.txt')
-        destination = gio.File('copy.txt')
-
-        def copied(source_, result):
-            try:
-                self.assert_(source_ is source)
-                self.failUnless(source_.copy_finish(result))
-            finally:
-                loop.quit()
-
-        def progress(current, total):
-            self.assert_(isinstance(current, long))
-            self.assert_(isinstance(total, long))
-            self.assert_(0 <= current <= total)
-
-        try:
-            loop = glib.MainLoop()
-            source.copy_async(destination, copied, progress_callback = progress)
-            loop.run()
-
-            self.failUnless(os.path.exists('copy.txt'))
-            self.assertEqual(open('file.txt').read(),
-                             open('copy.txt').read())
-        finally:
-            os.unlink("copy.txt")
-
-    # See bug 546591.
-    def test_copy_progress(self):
-        source = gio.File('file.txt')
-        destination = gio.File('copy.txt')
-
-        def progress(current, total):
-            self.assert_(isinstance(current, long))
-            self.assert_(isinstance(total, long))
-            self.assert_(0 <= current <= total)
-
-        try:
-            retval = source.copy(destination,
-                                 flags=gio.FILE_COPY_OVERWRITE,
-                                 progress_callback=progress)
-            self.failUnless(retval)
-
-            self.failUnless(os.path.exists('copy.txt'))
-            self.assertEqual(open('file.txt').read(),
-                             open('copy.txt').read())
-        finally:
-            os.unlink("copy.txt")
-
-    def testMove(self):
-        if os.path.exists('move.txt'):
-            os.unlink("move.txt")
-
-        source = gio.File('file.txt')
-        destination = gio.File('move.txt')
-        retval = source.move(destination)
-        self.failUnless(retval)
-
-        self.failIf(os.path.exists('file.txt'))
-        self.failUnless(os.path.exists('move.txt'))
-
-        self.called = False
-        def callback(current, total):
-            self.called = True
-        source = gio.File('move.txt')
-        destination = gio.File('move-2.txt')
-        try:
-            retval = source.move(destination, callback)
-            self.failUnless(retval)
-
-            self.failIf(os.path.exists('move.txt'))
-            self.failUnless(os.path.exists('move-2.txt'))
-            self.failUnless(self.called)
-        finally:
-            os.unlink("move-2.txt")
-
-    def testInfoList(self):
-        infolist = self.file.query_settable_attributes()
-        for info in infolist:
-            if info.name == "time::modified":
-                self.assertEqual(info.type, gio.FILE_ATTRIBUTE_TYPE_UINT64)
-                self.assertEqual(info.name, "time::modified")
-                self.assertEqual(info.flags,
-                                 gio.FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED |
-                                 gio.FILE_ATTRIBUTE_INFO_COPY_WITH_FILE)
-
-    def testQueryWritableNamespaces(self):
-        infolist = self.file.query_writable_namespaces()
-        for info in infolist:
-            if info.name == "xattr":
-                self.assertEqual(info.type, gio.FILE_ATTRIBUTE_TYPE_STRING)
-
-    def testSetAttribute(self):
-        self._f.write("testing attributes")
-        self._f.seek(0)
-        infolist = self.file.query_settable_attributes()
-
-        self.assertNotEqual(len(infolist), 0)
-
-        for info in infolist:
-            if info.name == "time::modified-usec":
-                ret = self.file.set_attribute("time::modified-usec",
-                                              gio.FILE_ATTRIBUTE_TYPE_UINT32,
-                                              10, gio.FILE_QUERY_INFO_NONE)
-                self.assertEqual(ret, True)
-
-    def testSetAttributesAsync(self):
-        def callback(gfile, result):
-            try:
-                info = gfile.set_attributes_finish(result)
-                usec = info.get_attribute_uint32("time::modified-usec")
-                self.assertEqual(usec, 10)
-            finally:
-                loop.quit()        
-
-        info = gio.FileInfo()
-        info.set_attribute_uint32("time::modified-usec", 10)
-        
-        canc = gio.Cancellable()
-        self.file.set_attributes_async(info, callback)
-        
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testReplaceContents(self):
-        self.file.replace_contents("testing replace_contents")
-        cont, leng, etag = self.file.load_contents()
-        self.assertEqual(cont, "testing replace_contents")
-
-        caught = False
-        try:
-            self.file.replace_contents("this won't work", etag="wrong")
-        except gio.Error, e:
-            self.assertEqual(e.code, gio.ERROR_WRONG_ETAG)
-            caught = True
-        self.failUnless(caught)
-
-        self.file.replace_contents("testing replace_contents again", etag=etag)
-        cont, leng, etag = self.file.load_contents()
-        self.assertEqual(cont, "testing replace_contents again")
-
-        self.file.replace_contents("testing replace_contents yet again", etag=None)
-        cont, leng, etag = self.file.load_contents()
-        self.assertEqual(cont, "testing replace_contents yet again")
-
-    def testReplaceContentsAsync(self):
-
-        def callback(contents, result):
-            try:
-                newetag = contents.replace_contents_finish(result)
-                cont, leng, etag = self.file.load_contents()
-                self.assertEqual(cont, "testing replace_contents_async")
-                self.assertEqual(leng, 30)
-                self.assertEqual(etag, newetag)
-                self.assertNotEqual(newetag, '')
-            finally:
-                loop.quit()
-
-        canc = gio.Cancellable()
-        self.file.replace_contents_async("testing replace_contents_async", callback, cancellable=canc)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def test_eq(self):
-        self.assertEqual(gio.File('foo'),
-                         gio.File('foo'))
-        self.assertNotEqual(gio.File('foo'),
-                            gio.File('bar'))
-
-    def test_hash(self):
-        self.assertEquals(hash(gio.File('foo')),
-                          hash(gio.File('foo')))
-
-    def testSetDisplayNameAsync(self):
-        def callback(gfile, result):
-            try:
-                new_gfile = gfile.set_display_name_finish(result)
-                new_name = new_gfile.get_basename()
-                self.assertEqual(new_name, "new.txt")
-                deleted = new_gfile.delete()
-                self.assertEqual(deleted, True)
-            finally:
-                loop.quit()        
-
-        canc = gio.Cancellable()
-        self.file.set_display_name_async("new.txt", callback, cancellable=canc)
-        
-        loop = glib.MainLoop()
-        loop.run()
-
-class TestGFileEnumerator(unittest.TestCase):
-    def setUp(self):
-        self.file = gio.File(os.path.dirname(__file__))
-
-    def testEnumerateChildren(self):
-        enumerator = self.file.enumerate_children(
-            "standard::*", gio.FILE_QUERY_INFO_NOFOLLOW_SYMLINKS)
-        for file_info in enumerator:
-            if file_info.get_name() == os.path.basename(__file__):
-                break
-        else:
-            raise AssertionError
-
-    def testEnumerateChildrenAsync(self):
-        def callback(gfile, result):
-            try:
-                for file_info in gfile.enumerate_children_finish(result):
-                    if file_info.get_name() == __file__:
-                        break
-                else:
-                    raise AssertionError
-            finally:
-                loop.quit()
-
-        self.file.enumerate_children_async(
-            "standard::*", callback)
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testNextFilesAsync(self):
-        def callback(enumerator, result):
-            try:
-                for file_info in enumerator.next_files_finish(result):
-                    if file_info.get_name() == __file__:
-                        break
-                else:
-                    raise AssertionError
-            finally:
-                loop.quit()
-
-        enumerator = self.file.enumerate_children(
-            "standard::*", gio.FILE_QUERY_INFO_NOFOLLOW_SYMLINKS)
-        enumerator.next_files_async(1000, callback)
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testCloseFilesAsync(self):
-        def callback(enumerator, result):
-            try:
-                enumerator.close_finish(result)
-            finally:
-                loop.quit()
-
-        enumerator = self.file.enumerate_children(
-            "standard::*", gio.FILE_QUERY_INFO_NOFOLLOW_SYMLINKS)
-
-        enumerator.close_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-
-class TestInputStream(unittest.TestCase):
-    def setUp(self):
-        self._f = open("inputstream.txt", "w+")
-        self._f.write("testing")
-        self._f.seek(0)
-        self.stream = gio.unix.InputStream(self._f.fileno(), False)
-
-    def tearDown(self):
-        self._f.close()
-        os.unlink("inputstream.txt")
-
-    def testRead(self):
-        self.assertEquals(self.stream.read(), "testing")
-
-        self.stream = gio.MemoryInputStream()
-        self.assertEquals(self.stream.read(), '')
-
-        self.stream = gio.MemoryInputStream()
-        some_data = open(__file__, "rb").read()
-        self.stream.add_data(some_data)
-        self.assertEquals(self.stream.read(), some_data)
-
-        stream = gio.MemoryInputStream()
-        stream.add_data(some_data)
-        self.assertEquals(self._read_in_loop(stream,
-                                             lambda: stream.read(50),
-                                             50),
-                          some_data)
-
-    def testSkip(self):
-        self.stream.skip(2)
-        res = self.stream.read()
-        self.assertEqual(res, "sting")
-        
-    def testSkipAsync(self):
-        def callback(stream, result):
-            try:
-                size = stream.skip_finish(result)
-                self.assertEqual(size, 2)
-                res = stream.read()
-                self.assertEqual(res, "sting")
-            finally:
-                loop.quit()
-        
-        self.stream.skip_async(2, callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def test_read_part(self):
-        self.assertEquals(self._read_in_loop(self.stream,
-                                             lambda: self.stream.read_part()),
-                          'testing')
-
-        stream = gio.MemoryInputStream()
-        some_data = open(__file__, 'rb').read()
-        stream.add_data(some_data)
-        self.assertEquals(self._read_in_loop(stream,
-                                             lambda: stream.read_part(50),
-                                             50),
-                          some_data)
-
-    def _read_in_loop(self, stream, reader, size_limit=0):
-        read_data = ''
-        while True:
-            read_part = reader()
-            if read_part:
-                read_data += read_part
-                if size_limit > 0:
-                    self.assert_(len(read_part) <= size_limit,
-                                 '%d <= %d' % (len(read_part), size_limit))
-            else:
-                return read_data
-
-    def testReadAsync(self):
-        def callback(stream, result):
-            self.assertEquals(result.get_op_res_gssize(), 7)
-            try:
-                data = stream.read_finish(result)
-                self.assertEquals(data, "testing")
-                stream.close()
-            finally:
-                loop.quit()
-
-        self.stream.read_async(7, callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testReadAsyncError(self):
-        self.count = 0
-        def callback(stream, result):
-            try:
-                self.count += 1
-                if self.count == 1:
-                    return
-                self.assertRaises(gio.Error, stream.read_finish, result)
-            finally:
-                loop.quit()
-
-        self.stream.read_async(10240, callback)
-        self.stream.read_async(10240, callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-        self.assertEquals(self.count, 2)
-
-        self.assertRaises(TypeError, self.stream.read_async)
-        self.assertRaises(TypeError, self.stream.read_async, "foo")
-        self.assertRaises(TypeError, self.stream.read_async, 1024, "bar")
-        self.assertRaises(TypeError, self.stream.read_async, 1024,
-                          priority="bar")
-        self.assertRaises(TypeError, self.stream.read_async, 1024,
-                          priority="bar")
-        self.assertRaises(TypeError, self.stream.read_async, 1024,
-                          priority=1, cancellable="bar")
-        self.assertRaises(TypeError, self.stream.read_async, 1024, 1, "bar")
-
-
-    # FIXME: this makes 'make check' freeze
-    def _testCloseAsync(self):
-        def callback(stream, result):
-            try:
-                self.failUnless(stream.close_finish(result))
-            finally:
-                loop.quit()
-
-        self.stream.close_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-
-class TestDataInputStream(unittest.TestCase):
-    def setUp(self):
-        self.base_stream = gio.MemoryInputStream()
-        self.data_stream = gio.DataInputStream(self.base_stream)
-
-    def test_read_line(self):
-        self.base_stream.add_data('foo\nbar\n\nbaz')
-        self.assertEquals('foo', self.data_stream.read_line())
-        self.assertEquals('bar', self.data_stream.read_line())
-        self.assertEquals('', self.data_stream.read_line())
-        self.assertEquals('baz', self.data_stream.read_line())
-
-    def test_read_line_async(self):
-        def do_read_line_async():
-            loop = glib.MainLoop()
-            line = []
-
-            def callback(stream, result):
-                try:
-                    line.append(stream.read_line_finish(result))
-                finally:
-                    loop.quit()
-
-            self.data_stream.read_line_async(callback)
-            loop.run()
-            return line[0]
-
-        self.base_stream.add_data('foo\nbar\n\nbaz')
-        self.assertEquals('foo', do_read_line_async())
-        self.assertEquals('bar', do_read_line_async())
-        self.assertEquals('', do_read_line_async())
-        self.assertEquals('baz', do_read_line_async())
-
-    def test_read_until(self):
-        self.base_stream.add_data('sentence.end of line\nthe rest')
-        self.assertEquals('sentence', self.data_stream.read_until('.!?'))
-        self.assertEquals('end of line', self.data_stream.read_until('\n\r'))
-        self.assertEquals('the rest', self.data_stream.read_until('#$%^&'))
-
-    def test_read_until_async(self):
-        def do_read_until_async(stop_chars):
-            loop = glib.MainLoop()
-            data = []
-
-            def callback(stream, result):
-                try:
-                    data.append(stream.read_until_finish(result))
-                finally:
-                    loop.quit()
-
-            self.data_stream.read_until_async(stop_chars, callback)
-            loop.run()
-            return data[0]
-
-        # Note the weird difference between synchronous and
-        # asynchronous version.  See bug #584284.
-        self.base_stream.add_data('sentence.end of line\nthe rest')
-        self.assertEquals('sentence', do_read_until_async('.!?'))
-        self.assertEquals('.end of line', do_read_until_async('\n\r'))
-        self.assertEquals('\nthe rest', do_read_until_async('#$%^&'))
-
-
-class TestMemoryInputStream(unittest.TestCase):
-    def setUp(self):
-        self.stream = gio.MemoryInputStream()
-
-    def test_add_data(self):
-        self.stream.add_data('foobar')
-        self.assertEquals('foobar', self.stream.read())
-
-        self.stream.add_data('ham ')
-        self.stream.add_data(None)
-        self.stream.add_data('spam')
-        self.assertEquals('ham spam', self.stream.read())
-    
-    def test_new_from_data(self):
-        stream = gio.memory_input_stream_new_from_data('spam')
-        self.assertEquals('spam', stream.read())
-
-
-class TestOutputStream(unittest.TestCase):
-    def setUp(self):
-        self._f = open("outputstream.txt", "w")
-        self.stream = gio.unix.OutputStream(self._f.fileno(), False)
-
-    def tearDown(self):
-        self._f.close()
-        os.unlink("outputstream.txt")
-
-    def testWrite(self):
-        self.stream.write("testing")
-        self.stream.close()
-        self.failUnless(os.path.exists("outputstream.txt"))
-        self.assertEquals(open("outputstream.txt").read(), "testing")
-
-    def test_write_part(self):
-        stream = gio.MemoryOutputStream()
-        some_data = open(__file__, 'rb').read()
-        buffer = some_data
-
-        # In fact this makes only one looping (memory stream is fast,
-        # write_part behaves just like write), but let's still be
-        # complete.
-        while buffer:
-            written = stream.write_part(buffer)
-            if written == len(buffer):
-                break
-            else:
-                buffer = buffer[written:]
-
-        self.assertEquals(stream.get_contents(), some_data)
-
-    def testWriteAsync(self):
-        def callback(stream, result):
-            self.assertEquals(result.get_op_res_gssize(), 7)
-            try:
-                self.assertEquals(stream.write_finish(result), 7)
-                self.failUnless(os.path.exists("outputstream.txt"))
-                self.assertEquals(open("outputstream.txt").read(), "testing")
-            finally:
-                loop.quit()
-
-        self.stream.write_async("testing", callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def testWriteAsyncError(self):
-        def callback(stream, result):
-            self.assertEquals(result.get_op_res_gssize(), 0)
-            try:
-                self.assertRaises(gio.Error, stream.write_finish, result)
-            finally:
-                loop.quit()
-
-        self.stream.close()
-        self.stream.write_async("testing", callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-        self.assertRaises(TypeError, self.stream.write_async)
-        self.assertRaises(TypeError, self.stream.write_async, 1138)
-        self.assertRaises(TypeError, self.stream.write_async, "foo", "bar")
-        self.assertRaises(TypeError, self.stream.write_async, "foo",
-                          priority="bar")
-        self.assertRaises(TypeError, self.stream.write_async, "foo",
-                          priority="bar")
-        self.assertRaises(TypeError, self.stream.write_async, "foo",
-                          priority=1, cancellable="bar")
-        self.assertRaises(TypeError, self.stream.write_async, "foo", 1, "bar")
-
-    # FIXME: this makes 'make check' freeze
-    def _testCloseAsync(self):
-        def callback(stream, result):
-            try:
-                self.failUnless(stream.close_finish(result))
-            finally:
-                loop.quit()
-
-        self.stream.close_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-        
-    def testFlushAsync(self):
-        def callback(stream, result):
-            try:
-                self.failUnless(stream.flush_finish(result))
-            finally:
-                loop.quit()
-
-        self.stream.flush_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-    
-    def testSpliceAsync(self):
-        _f = open("stream.txt", "w+")
-        _f.write("testing")
-        _f.seek(0)
-        instream = gio.unix.InputStream(_f.fileno(), False)
-        
-        def callback(stream, result):
-            try:
-                size = stream.splice_finish(result)
-                self.assertEqual(size, 7)
-                
-            finally:
-                os.unlink("stream.txt")
-                loop.quit()
-
-        self.stream.splice_async(instream, callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-class TestMemoryOutputStream(unittest.TestCase):
-    def setUp(self):
-        self.stream = gio.MemoryOutputStream()
-
-    def test_get_contents(self):
-        self.stream.write('foobar')
-        self.assertEquals('foobar', self.stream.get_contents())
-
-        self.stream.write('baz')
-        self.assertEquals('foobarbaz', self.stream.get_contents())
-
-
-class TestVolumeMonitor(unittest.TestCase):
-    def setUp(self):
-        self.monitor = gio.volume_monitor_get()
-
-    def testGetConnectedDrives(self):
-        drives = self.monitor.get_connected_drives()
-        self.failUnless(isinstance(drives, list))
-
-    def testGetVolumes(self):
-        volumes = self.monitor.get_volumes()
-        self.failUnless(isinstance(volumes, list))
-
-    def testGetMounts(self):
-        mounts = self.monitor.get_mounts()
-        self.failUnless(isinstance(mounts, list))
-        if not mounts:
-            return
-
-        self.failUnless(isinstance(mounts[0], gio.Mount))
-        # Bug 538601
-        icon = mounts[0].get_icon()
-        if not icon:
-            return
-        self.failUnless(isinstance(icon, gio.Icon))
-
-
-class TestContentTypeGuess(unittest.TestCase):
-    def testFromName(self):
-        mime_type = gio.content_type_guess('diagram.svg')
-        self.assertEquals('image/svg+xml', mime_type)
-
-    def testFromContents(self):
-        mime_type = gio.content_type_guess(data='<html></html>')
-        self.assertEquals('text/html', mime_type)
-
-    def testFromContentsUncertain(self):
-        mime_type, result_uncertain = gio.content_type_guess(
-            data='<html></html>', want_uncertain=True)
-        self.assertEquals('text/html', mime_type)
-        self.assertEquals(bool, type(result_uncertain))
-
-
-class TestFileInfo(unittest.TestCase):
-    def setUp(self):
-        self.fileinfo = gio.File(__file__).query_info("*")
-
-    def testListAttributes(self):
-        attributes = self.fileinfo.list_attributes("standard")
-        self.failUnless(attributes)
-        self.failUnless('standard::name' in attributes)
-
-    def testGetModificationTime(self):
-        mtime = self.fileinfo.get_modification_time()
-        self.assertEqual(type(mtime), float)
-
-    def testSetModificationTime(self):
-        self.fileinfo.set_modification_time(1000)
-        mtime = self.fileinfo.get_modification_time()
-        self.assertEqual(mtime, 1000)
-
-
-class TestAppInfo(unittest.TestCase):
-    def setUp(self):
-        self.appinfo = gio.AppInfo("does-not-exist")
-
-    def testSimple(self):
-        self.assertEquals(self.appinfo.get_description(),
-                          "Custom definition for does-not-exist")
-
-    def test_eq(self):
-        info1 = gio.app_info_get_all()[0]
-        info2 = info1.dup()
-        self.assert_(info1 is not info2)
-        self.assertEquals(info1, info2)
-
-        self.assertNotEqual(gio.app_info_get_all()[0], gio.app_info_get_all()[1])
-
-class TestVfs(unittest.TestCase):
-    def setUp(self):
-        self.vfs = gio.vfs_get_default()
-
-    def testGetSupportedURISchemes(self):
-        result = self.vfs.get_supported_uri_schemes()
-        self.failUnless(type(result), [])
-
-class TestVolume(unittest.TestCase):
-    def setUp(self):
-        self.monitor = gio.volume_monitor_get()
-    
-    def testVolumeEnumerate(self):
-        volumes = self.monitor.get_volumes()
-        self.failUnless(isinstance(volumes, list))
-        for v in volumes:
-            if v is not None:
-                ids = v.enumerate_identifiers()
-                self.failUnless(isinstance(ids, list))
-                for id in ids:
-                    if id is not None:
-                        self.failUnless(isinstance(id, str))
-
-class TestFileInputStream(unittest.TestCase):
-    def setUp(self):
-        self._f = open("file.txt", "w+")
-        self._f.write("testing")
-        self._f.seek(0)
-        self.file = gio.File("file.txt")
-
-    def tearDown(self):
-        self._f.close()
-        if os.path.exists('file.txt'):
-            os.unlink("file.txt")
-
-    def testQueryInfoAsync(self):
-        def callback(stream, result):
-            try:
-                info = stream.query_info_finish(result)
-                self.failUnless(isinstance(info, gio.FileInfo))
-                self.failUnless(info.get_attribute_uint64("standard::size"), 7)
-            finally:
-                loop.quit()
-
-        inputstream = self.file.read()
-        inputstream.query_info_async("standard", callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-class TestFileOutputStream(unittest.TestCase):
-    def setUp(self):
-        self._f = open("file.txt", "w+")
-        self._f.write("testing")
-        self._f.seek(0)
-        self.file = gio.File("file.txt")
-
-    def tearDown(self):
-        self._f.close()
-        if os.path.exists('file.txt'):
-            os.unlink("file.txt")
-
-    def testQueryInfoAsync(self):
-        def callback(stream, result):
-            try:
-                info = stream.query_info_finish(result)
-                self.failUnless(isinstance(info, gio.FileInfo))
-                self.failUnless(info.get_attribute_uint64("standard::size"), 7)
-            finally:
-                loop.quit()
-
-        outputstream = self.file.append_to()
-        outputstream.query_info_async("standard", callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-class TestBufferedInputStream(unittest.TestCase):
-    def setUp(self):
-        self._f = open("buffer.txt", "w+")
-        self._f.write("testing")
-        self._f.seek(0)
-        stream = gio.unix.InputStream(self._f.fileno(), False)
-        self.buffered = gio.BufferedInputStream(stream)
-
-    def tearDown(self):
-        self._f.close()
-        os.unlink("buffer.txt")
-
-    def test_fill_async(self):
-        def callback(stream, result):
-            try:
-                size = stream.fill_finish(result)
-                self.failUnlessEqual(size, 4)
-            finally:
-                loop.quit()
-
-        self.buffered.fill_async(4, callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-class TestIOStream(unittest.TestCase):
-    def setUp(self):
-        self.file = gio.File("file.txt")
-        self.iofile = self.file.create_readwrite(gio.FILE_CREATE_NONE)
-
-    def tearDown(self):
-        if os.path.exists('file.txt'):
-            os.unlink("file.txt")
-
-    def testIOStreamCloseAsync(self):
-        def callback(stream, result):
-            try:
-                self.failUnless(stream.close_finish(result))
-            finally:
-                loop.quit()
-
-        self.iofile.close_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-
-    def testQueryInfoAsync(self):
-        def callback(stream, result):
-            try:
-                info = stream.query_info_finish(result)
-                self.failUnless(isinstance(info, gio.FileInfo))
-                self.failUnless(info.get_attribute_uint64("standard::size"), 7)
-            finally:
-                loop.quit()
-        
-        ostream = self.iofile.get_output_stream()
-        ostream.write("testing")
-
-        self.iofile.query_info_async("standard", callback)
-
-        loop = glib.MainLoop()
-        loop.run()
diff --git a/tests/test_glib.py b/tests/test_glib.py
new file mode 100644 (file)
index 0000000..a36eca6
--- /dev/null
@@ -0,0 +1,15 @@
+# -*- Mode: Python -*-
+
+import unittest
+import os.path
+
+from gi.repository import GLib
+
+
+class TestGLib(unittest.TestCase):
+    def test_find_program_in_path(self):
+        bash_path = GLib.find_program_in_path('bash')
+        self.assertTrue(bash_path.endswith('/bash'))
+        self.assertTrue(os.path.exists(bash_path))
+
+        self.assertEqual(GLib.find_program_in_path('non existing'), None)
index d628b0e..a28a145 100644 (file)
@@ -1,57 +1,52 @@
 # -*- Mode: Python -*-
 
+import gc
 import unittest
 
-import gobject
+from gi.repository import GObject
 import sys
 import testhelper
 
 
 class TestGObjectAPI(unittest.TestCase):
     def testGObjectModule(self):
-        obj = gobject.GObject()
-        self.assertEquals(obj.__module__,
-                          'gobject._gobject')
+        obj = GObject.GObject()
+
+        self.assertEqual(obj.__module__,
+                         'gi._gobject._gobject')
 
 
 class TestReferenceCounting(unittest.TestCase):
     def testRegularObject(self):
-        obj = gobject.GObject()
-        self.assertEquals(obj.__grefcount__, 1)
-
-        obj = gobject.new(gobject.GObject)
-        self.assertEquals(obj.__grefcount__, 1)
+        obj = GObject.GObject()
+        self.assertEqual(obj.__grefcount__, 1)
 
-    def testFloatingWithSinkFunc(self):
-        obj = testhelper.FloatingWithSinkFunc()
-        self.assertEquals(obj.__grefcount__, 1)
+        obj = GObject.new(GObject.GObject)
+        self.assertEqual(obj.__grefcount__, 1)
 
-        obj = gobject.new(testhelper.FloatingWithSinkFunc)
-        self.assertEquals(obj.__grefcount__, 1)
+    def testFloating(self):
+        obj = testhelper.Floating()
+        self.assertEqual(obj.__grefcount__, 1)
 
-    def testFloatingWithoutSinkFunc(self):
-        obj = testhelper.FloatingWithoutSinkFunc()
-        self.assertEquals(obj.__grefcount__, 1)
-
-        obj = gobject.new(testhelper.FloatingWithoutSinkFunc)
-        self.assertEquals(obj.__grefcount__, 1)
+        obj = GObject.new(testhelper.Floating)
+        self.assertEqual(obj.__grefcount__, 1)
 
     def testOwnedByLibrary(self):
         # Upon creation, the refcount of the object should be 2:
         # - someone already has a reference on the new object.
         # - the python wrapper should hold its own reference.
         obj = testhelper.OwnedByLibrary()
-        self.assertEquals(obj.__grefcount__, 2)
+        self.assertEqual(obj.__grefcount__, 2)
 
         # We ask the library to release its reference, so the only
         # remaining ref should be our wrapper's. Once the wrapper
         # will run out of scope, the object will get finalized.
         obj.release()
-        self.assertEquals(obj.__grefcount__, 1)
+        self.assertEqual(obj.__grefcount__, 1)
 
     def testOwnedByLibraryOutOfScope(self):
         obj = testhelper.OwnedByLibrary()
-        self.assertEquals(obj.__grefcount__, 2)
+        self.assertEqual(obj.__grefcount__, 2)
 
         # We are manually taking the object out of scope. This means
         # that our wrapper has been freed, and its reference dropped. We
@@ -62,27 +57,27 @@ class TestReferenceCounting(unittest.TestCase):
         # When we get the object back from the lib, the wrapper is
         # re-created, so our refcount will be 2 once again.
         obj = testhelper.owned_by_library_get_instance_list()[0]
-        self.assertEquals(obj.__grefcount__, 2)
+        self.assertEqual(obj.__grefcount__, 2)
 
         obj.release()
-        self.assertEquals(obj.__grefcount__, 1)
+        self.assertEqual(obj.__grefcount__, 1)
 
     def testOwnedByLibraryUsingGObjectNew(self):
         # Upon creation, the refcount of the object should be 2:
         # - someone already has a reference on the new object.
         # - the python wrapper should hold its own reference.
-        obj = gobject.new(testhelper.OwnedByLibrary)
-        self.assertEquals(obj.__grefcount__, 2)
+        obj = GObject.new(testhelper.OwnedByLibrary)
+        self.assertEqual(obj.__grefcount__, 2)
 
         # We ask the library to release its reference, so the only
         # remaining ref should be our wrapper's. Once the wrapper
         # will run out of scope, the object will get finalized.
         obj.release()
-        self.assertEquals(obj.__grefcount__, 1)
+        self.assertEqual(obj.__grefcount__, 1)
 
     def testOwnedByLibraryOutOfScopeUsingGobjectNew(self):
-        obj = gobject.new(testhelper.OwnedByLibrary)
-        self.assertEquals(obj.__grefcount__, 2)
+        obj = GObject.new(testhelper.OwnedByLibrary)
+        self.assertEqual(obj.__grefcount__, 2)
 
         # We are manually taking the object out of scope. This means
         # that our wrapper has been freed, and its reference dropped. We
@@ -93,27 +88,27 @@ class TestReferenceCounting(unittest.TestCase):
         # When we get the object back from the lib, the wrapper is
         # re-created, so our refcount will be 2 once again.
         obj = testhelper.owned_by_library_get_instance_list()[0]
-        self.assertEquals(obj.__grefcount__, 2)
+        self.assertEqual(obj.__grefcount__, 2)
 
         obj.release()
-        self.assertEquals(obj.__grefcount__, 1)
+        self.assertEqual(obj.__grefcount__, 1)
 
     def testFloatingAndSunk(self):
         # Upon creation, the refcount of the object should be 2:
         # - someone already has a reference on the new object.
         # - the python wrapper should hold its own reference.
         obj = testhelper.FloatingAndSunk()
-        self.assertEquals(obj.__grefcount__, 2)
+        self.assertEqual(obj.__grefcount__, 2)
 
         # We ask the library to release its reference, so the only
         # remaining ref should be our wrapper's. Once the wrapper
         # will run out of scope, the object will get finalized.
         obj.release()
-        self.assertEquals(obj.__grefcount__, 1)
+        self.assertEqual(obj.__grefcount__, 1)
 
     def testFloatingAndSunkOutOfScope(self):
         obj = testhelper.FloatingAndSunk()
-        self.assertEquals(obj.__grefcount__, 2)
+        self.assertEqual(obj.__grefcount__, 2)
 
         # We are manually taking the object out of scope. This means
         # that our wrapper has been freed, and its reference dropped. We
@@ -124,28 +119,27 @@ class TestReferenceCounting(unittest.TestCase):
         # When we get the object back from the lib, the wrapper is
         # re-created, so our refcount will be 2 once again.
         obj = testhelper.floating_and_sunk_get_instance_list()[0]
-        self.assertEquals(obj.__grefcount__, 2)
+        self.assertEqual(obj.__grefcount__, 2)
 
         obj.release()
-        self.assertEquals(obj.__grefcount__, 1)
+        self.assertEqual(obj.__grefcount__, 1)
 
     def testFloatingAndSunkUsingGObjectNew(self):
         # Upon creation, the refcount of the object should be 2:
         # - someone already has a reference on the new object.
         # - the python wrapper should hold its own reference.
-        obj = gobject.new(testhelper.FloatingAndSunk)
-        self.assertEquals(obj.__grefcount__, 2)
+        obj = GObject.new(testhelper.FloatingAndSunk)
+        self.assertEqual(obj.__grefcount__, 2)
 
         # We ask the library to release its reference, so the only
         # remaining ref should be our wrapper's. Once the wrapper
         # will run out of scope, the object will get finalized.
         obj.release()
-        self.assertEquals(obj.__grefcount__, 1)
+        self.assertEqual(obj.__grefcount__, 1)
 
     def testFloatingAndSunkOutOfScopeUsingGObjectNew(self):
-        obj = gobject.new(testhelper.FloatingAndSunk)
-        self.assertEquals(obj.__grefcount__, 2)
+        obj = GObject.new(testhelper.FloatingAndSunk)
+        self.assertEqual(obj.__grefcount__, 2)
 
         # We are manually taking the object out of scope. This means
         # that our wrapper has been freed, and its reference dropped. We
@@ -156,31 +150,350 @@ class TestReferenceCounting(unittest.TestCase):
         # When we get the object back from the lib, the wrapper is
         # re-created, so our refcount will be 2 once again.
         obj = testhelper.floating_and_sunk_get_instance_list()[0]
-        self.assertEquals(obj.__grefcount__, 2)
+        self.assertEqual(obj.__grefcount__, 2)
 
         obj.release()
-        self.assertEquals(obj.__grefcount__, 1)
+        self.assertEqual(obj.__grefcount__, 1)
+
+    def testUninitializedObject(self):
+        class Obj(GObject.GObject):
+            def __init__(self):
+                x = self.__grefcount__
+                super(Obj, self).__init__()
+                assert x >= 0  # quiesce pyflakes
 
-class A(gobject.GObject):
+        # Accessing __grefcount__ before the object is initialized is wrong.
+        # Ensure we get a proper exception instead of a crash.
+        self.assertRaises(TypeError, Obj)
+
+
+class A(GObject.GObject):
     def __init__(self):
         super(A, self).__init__()
 
+
 class TestPythonReferenceCounting(unittest.TestCase):
     # Newly created instances should alwayshave two references: one for
     # the GC, and one for the bound variable in the local scope.
 
     def testNewInstanceHasTwoRefs(self):
-        obj = gobject.GObject()
-        self.assertEquals(sys.getrefcount(obj), 2)
+        obj = GObject.GObject()
+        self.assertEqual(sys.getrefcount(obj), 2)
 
     def testNewInstanceHasTwoRefsUsingGObjectNew(self):
-        obj = gobject.new(gobject.GObject)
-        self.assertEquals(sys.getrefcount(obj), 2)
+        obj = GObject.new(GObject.GObject)
+        self.assertEqual(sys.getrefcount(obj), 2)
 
     def testNewSubclassInstanceHasTwoRefs(self):
         obj = A()
-        self.assertEquals(sys.getrefcount(obj), 2)
+        self.assertEqual(sys.getrefcount(obj), 2)
 
     def testNewSubclassInstanceHasTwoRefsUsingGObjectNew(self):
-        obj = gobject.new(A)
-        self.assertEquals(sys.getrefcount(obj), 2)
+        obj = GObject.new(A)
+        self.assertEqual(sys.getrefcount(obj), 2)
+
+
+class TestContextManagers(unittest.TestCase):
+    class ContextTestObject(GObject.GObject):
+        prop = GObject.Property(default=0, type=int)
+
+    def on_prop_set(self, obj, prop):
+        # Handler which tracks property changed notifications.
+        self.tracking.append(obj.get_property(prop.name))
+
+    def setUp(self):
+        self.tracking = []
+        self.obj = self.ContextTestObject()
+        self.handler = self.obj.connect('notify::prop', self.on_prop_set)
+
+    def testFreezeNotifyContext(self):
+        # Verify prop tracking list
+        self.assertEqual(self.tracking, [])
+        self.obj.props.prop = 1
+        self.assertEqual(self.tracking, [1])
+        self.obj.props.prop = 2
+        self.assertEqual(self.tracking, [1, 2])
+        self.assertEqual(self.obj.__grefcount__, 1)
+
+        # Using the context manager the tracking list should not be affected
+        # and the GObject reference count should go up.
+        with self.obj.freeze_notify():
+            self.assertEqual(self.obj.__grefcount__, 2)
+            self.obj.props.prop = 3
+            self.assertEqual(self.obj.props.prop, 3)
+            self.assertEqual(self.tracking, [1, 2])
+
+        # After the context manager, the prop should have been modified,
+        # the tracking list will be modified, and the GObject ref
+        # count goes back down.
+        self.assertEqual(self.obj.props.prop, 3)
+        self.assertEqual(self.tracking, [1, 2, 3])
+        self.assertEqual(self.obj.__grefcount__, 1)
+
+    def testHandlerBlockContext(self):
+        # Verify prop tracking list
+        self.assertEqual(self.tracking, [])
+        self.obj.props.prop = 1
+        self.assertEqual(self.tracking, [1])
+        self.obj.props.prop = 2
+        self.assertEqual(self.tracking, [1, 2])
+        self.assertEqual(self.obj.__grefcount__, 1)
+
+        # Using the context manager the tracking list should not be affected
+        # and the GObject reference count should go up.
+        with self.obj.handler_block(self.handler):
+            self.assertEqual(self.obj.__grefcount__, 2)
+            self.obj.props.prop = 3
+            self.assertEqual(self.obj.props.prop, 3)
+            self.assertEqual(self.tracking, [1, 2])
+
+        # After the context manager, the prop should have been modified
+        # the tracking list should have stayed the same and the GObject ref
+        # count goes back down.
+        self.assertEqual(self.obj.props.prop, 3)
+        self.assertEqual(self.tracking, [1, 2])
+        self.assertEqual(self.obj.__grefcount__, 1)
+
+    def testFreezeNotifyContextNested(self):
+        self.assertEqual(self.tracking, [])
+        with self.obj.freeze_notify():
+            self.obj.props.prop = 1
+            self.assertEqual(self.tracking, [])
+
+            with self.obj.freeze_notify():
+                self.obj.props.prop = 2
+                self.assertEqual(self.tracking, [])
+
+                with self.obj.freeze_notify():
+                    self.obj.props.prop = 3
+                    self.assertEqual(self.tracking, [])
+                self.assertEqual(self.tracking, [])
+            self.assertEqual(self.tracking, [])
+
+        # Finally after last context, the notifications should have collapsed
+        # and the last one sent.
+        self.assertEqual(self.tracking, [3])
+
+    def testHandlerBlockContextNested(self):
+        self.assertEqual(self.tracking, [])
+        with self.obj.handler_block(self.handler):
+            self.obj.props.prop = 1
+            self.assertEqual(self.tracking, [])
+
+            with self.obj.handler_block(self.handler):
+                self.obj.props.prop = 2
+                self.assertEqual(self.tracking, [])
+
+                with self.obj.handler_block(self.handler):
+                    self.obj.props.prop = 3
+                    self.assertEqual(self.tracking, [])
+                self.assertEqual(self.tracking, [])
+            self.assertEqual(self.tracking, [])
+
+        # Finally after last context, the notifications should have collapsed
+        # and the last one sent.
+        self.assertEqual(self.obj.props.prop, 3)
+        self.assertEqual(self.tracking, [])
+
+    def testFreezeNotifyNormalUsageRefCounts(self):
+        # Ensure ref counts without using methods as context managers
+        # maintain the same count.
+        self.assertEqual(self.obj.__grefcount__, 1)
+        self.obj.freeze_notify()
+        self.assertEqual(self.obj.__grefcount__, 1)
+        self.obj.thaw_notify()
+        self.assertEqual(self.obj.__grefcount__, 1)
+
+    def testHandlerBlockNormalUsageRefCounts(self):
+        self.assertEqual(self.obj.__grefcount__, 1)
+        self.obj.handler_block(self.handler)
+        self.assertEqual(self.obj.__grefcount__, 1)
+        self.obj.handler_unblock(self.handler)
+        self.assertEqual(self.obj.__grefcount__, 1)
+
+    def testFreezeNotifyContextError(self):
+        # Test an exception occurring within a freeze context exits the context
+        try:
+            with self.obj.freeze_notify():
+                self.obj.props.prop = 1
+                self.assertEqual(self.tracking, [])
+                raise ValueError('Simulation')
+        except ValueError:
+            pass
+
+        # Verify the property set within the context called notify.
+        self.assertEqual(self.obj.props.prop, 1)
+        self.assertEqual(self.tracking, [1])
+
+        # Verify we are still not in a frozen context.
+        self.obj.props.prop = 2
+        self.assertEqual(self.tracking, [1, 2])
+
+    def testHandlerBlockContextError(self):
+        # Test an exception occurring within a handler block exits the context
+        try:
+            with self.obj.handler_block(self.handler):
+                self.obj.props.prop = 1
+                self.assertEqual(self.tracking, [])
+                raise ValueError('Simulation')
+        except ValueError:
+            pass
+
+        # Verify the property set within the context didn't call notify.
+        self.assertEqual(self.obj.props.prop, 1)
+        self.assertEqual(self.tracking, [])
+
+        # Verify we are still not in a handler block context.
+        self.obj.props.prop = 2
+        self.assertEqual(self.tracking, [2])
+
+
+class TestPropertyBindings(unittest.TestCase):
+    class TestObject(GObject.GObject):
+        int_prop = GObject.Property(default=0, type=int)
+
+    def setUp(self):
+        self.source = self.TestObject()
+        self.target = self.TestObject()
+
+    def testDefaultBinding(self):
+        binding = self.source.bind_property('int_prop', self.target, 'int_prop',
+                                            GObject.BindingFlags.DEFAULT)
+        binding = binding  # PyFlakes
+
+        # Test setting value on source gets pushed to target
+        self.source.int_prop = 1
+        self.assertEqual(self.source.int_prop, 1)
+        self.assertEqual(self.target.int_prop, 1)
+
+        # Test setting value on target does not change source
+        self.target.props.int_prop = 2
+        self.assertEqual(self.source.int_prop, 1)
+        self.assertEqual(self.target.int_prop, 2)
+
+    def testBiDirectionalBinding(self):
+        binding = self.source.bind_property('int_prop', self.target, 'int_prop',
+                                            GObject.BindingFlags.BIDIRECTIONAL)
+        binding = binding  # PyFlakes
+
+        # Test setting value on source gets pushed to target
+        self.source.int_prop = 1
+        self.assertEqual(self.source.int_prop, 1)
+        self.assertEqual(self.target.int_prop, 1)
+
+        # Test setting value on target also changes source
+        self.target.props.int_prop = 2
+        self.assertEqual(self.source.int_prop, 2)
+        self.assertEqual(self.target.int_prop, 2)
+
+    def testTransformToOnly(self):
+        def transform_to(binding, value, user_data=None):
+            self.assertEqual(user_data, 'test-data')
+            return value * 2
+
+        binding = self.source.bind_property('int_prop', self.target, 'int_prop',
+                                            GObject.BindingFlags.DEFAULT,
+                                            transform_to, None, 'test-data')
+        binding = binding  # PyFlakes
+
+        self.source.int_prop = 1
+        self.assertEqual(self.source.int_prop, 1)
+        self.assertEqual(self.target.int_prop, 2)
+
+        self.target.props.int_prop = 1
+        self.assertEqual(self.source.int_prop, 1)
+        self.assertEqual(self.target.int_prop, 1)
+
+    def testTransformFromOnly(self):
+        def transform_from(binding, value, user_data=None):
+            self.assertEqual(user_data, None)
+            return value * 2
+
+        binding = self.source.bind_property('int_prop', self.target, 'int_prop',
+                                            GObject.BindingFlags.BIDIRECTIONAL,
+                                            None, transform_from)
+        binding = binding  # PyFlakes
+
+        self.source.int_prop = 1
+        self.assertEqual(self.source.int_prop, 1)
+        self.assertEqual(self.target.int_prop, 1)
+
+        self.target.props.int_prop = 1
+        self.assertEqual(self.source.int_prop, 2)
+        self.assertEqual(self.target.int_prop, 1)
+
+    def testTransformBidrectional(self):
+        def transform_to(binding, value, user_data=None):
+            self.assertEqual(user_data, 'test-data')
+            return value * 2
+
+        def transform_from(binding, value, user_data=None):
+            self.assertEqual(user_data, 'test-data')
+            return value / 2
+
+        # bidirectional bindings
+        binding = self.source.bind_property('int_prop', self.target, 'int_prop',
+                                            GObject.BindingFlags.BIDIRECTIONAL,
+                                            transform_to, transform_from, 'test-data')
+        binding = binding  # PyFlakes
+
+        self.source.int_prop = 1
+        self.assertEqual(self.source.int_prop, 1)
+        self.assertEqual(self.target.int_prop, 2)
+
+        self.target.props.int_prop = 4
+        self.assertEqual(self.source.int_prop, 2)
+        self.assertEqual(self.target.int_prop, 4)
+
+    def testExplicitUnbindClearsConnection(self):
+        self.assertEqual(self.source.int_prop, 0)
+        self.assertEqual(self.target.int_prop, 0)
+
+        # Test deleting binding reference removes binding.
+        binding = self.source.bind_property('int_prop', self.target, 'int_prop')
+        self.source.int_prop = 1
+        self.assertEqual(self.source.int_prop, 1)
+        self.assertEqual(self.target.int_prop, 1)
+
+        binding.unbind()
+        self.assertEqual(binding(), None)
+
+        self.source.int_prop = 10
+        self.assertEqual(self.source.int_prop, 10)
+        self.assertEqual(self.target.int_prop, 1)
+
+        # An already unbound BindingWeakRef will raise if unbind is attempted a second time.
+        self.assertRaises(ValueError, binding.unbind)
+
+    def testReferenceCounts(self):
+        self.assertEqual(self.source.__grefcount__, 1)
+        self.assertEqual(self.target.__grefcount__, 1)
+
+        # Binding ref count will be 2 do to the initial ref implicitly held by
+        # the act of binding and the ref incurred by using __call__ to generate
+        # a wrapper from the weak binding ref within python.
+        binding = self.source.bind_property('int_prop', self.target, 'int_prop')
+        self.assertEqual(binding().__grefcount__, 2)
+
+        # Creating a binding does not inc refs on source and target (they are weak
+        # on the binding object itself)
+        self.assertEqual(self.source.__grefcount__, 1)
+        self.assertEqual(self.target.__grefcount__, 1)
+
+        # Use GObject.get_property because the "props" accessor leaks.
+        # Note property names are canonicalized.
+        self.assertEqual(binding().get_property('source'), self.source)
+        self.assertEqual(binding().get_property('source_property'), 'int-prop')
+        self.assertEqual(binding().get_property('target'), self.target)
+        self.assertEqual(binding().get_property('target_property'), 'int-prop')
+        self.assertEqual(binding().get_property('flags'), GObject.BindingFlags.DEFAULT)
+
+        # Delete reference to source or target and the binding should listen.
+        ref = self.source.weak_ref()
+        del self.source
+        gc.collect()
+        self.assertEqual(ref(), None)
+        self.assertEqual(binding(), None)
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/tests/test_gresolver.py b/tests/test_gresolver.py
deleted file mode 100644 (file)
index 4238df7..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-# -*- Mode: Python -*-
-
-import unittest
-
-import glib
-import gio
-
-
-class TestResolver(unittest.TestCase):
-    def setUp(self):
-        self.resolver = gio.resolver_get_default()
-
-    def test_resolver_lookup_by_name(self):
-        addresses = self.resolver.lookup_by_name("pygtk.org", cancellable=None)
-        self.failUnless(isinstance(addresses[0], gio.InetAddress))
-
-    def test_resolver_lookup_by_address(self):
-        address = gio.inet_address_new_from_string("8.8.8.8")
-        dns = self.resolver.lookup_by_address(address, cancellable=None)
-        self.failUnlessEqual(dns, "google-public-dns-a.google.com")
-    
-    def test_resolver_lookup_by_name_async(self):
-        def callback(resolver, result):
-            try:
-                addresses = resolver.lookup_by_name_finish(result)
-                self.failUnless(isinstance(addresses[0], gio.InetAddress))
-            finally:
-                loop.quit()
-
-        self.resolver.lookup_by_name_async(callback, "pygtk.org")
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def test_resolver_lookup_by_address_async(self):
-        def callback(resolver, result):
-            try:
-                dns = resolver.lookup_by_address_finish(result)
-                self.failUnlessEqual(dns, "google-public-dns-b.google.com")
-            finally:
-                loop.quit()
-
-        address = gio.inet_address_new_from_string("8.8.4.4")
-        self.resolver.lookup_by_address_async(callback, address)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-""" Commented out because this requires an active internet connection and a
-    router that supports SRV lookups
-
-    def test_resolver_lookup_service(self):
-        targets = self.resolver.lookup_service("xmpp-client", "tcp", "google.com")
-        self.failUnless(isinstance(targets[0], gio.SrvTarget))
-
-    def test_resolver_lookup_service_async(self):
-        def callback(resolver, result):
-            try:
-                targets = resolver.lookup_service_finish(result)
-                self.failUnless(isinstance(targets[0], gio.SrvTarget))
-            finally:
-                loop.quit()
-
-        self.resolver.lookup_service_async(callback, "xmpp-client", "tcp", "google.com")
-
-        loop = glib.MainLoop()
-        loop.run()
-"""
diff --git a/tests/test_gsocket.py b/tests/test_gsocket.py
deleted file mode 100644 (file)
index 627f6fd..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-# -*- Mode: Python -*-
-
-import os
-import unittest
-
-import glib
-import gobject
-import gio
-
-
-class TestSocket(unittest.TestCase):
-    def setUp(self):
-        self.sock = gio.Socket(gio.SOCKET_FAMILY_IPV4,
-                               gio.SOCKET_TYPE_STREAM,
-                               gio.SOCKET_PROTOCOL_TCP)
-
-    def test_socket_condition_check(self):
-        check = self.sock.condition_check(glib.IO_OUT)
-        self.failUnless(isinstance(check, gobject.GFlags))
-        self.failUnlessEqual(check, glib.IO_OUT | glib.IO_HUP)
-
-    def test_socket_condition_wait(self):
-        res = self.sock.condition_wait(glib.IO_OUT)
-        self.failUnless(res)
-
-    def tearDown(self):
-        self.sock.close()
-
-class TestSocketAddress(unittest.TestCase):
-    def test_socket_address_enumerator_next_async(self):
-        def callback(enumerator, result):
-            try:
-                address = enumerator.next_finish(result)
-                self.failUnless(isinstance(address, gio.SocketAddress))
-            finally:
-                loop.quit()
-
-        socket = gio.NetworkAddress("www.pygtk.org", 80)
-        enumerator = socket.enumerate()
-        enumerator.next_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-class TestSocketListener(unittest.TestCase):
-    def test_socket_listener_add_address(self):
-        address = gio.inet_address_new_from_string("127.0.0.1")
-        inetsock = gio.InetSocketAddress(address, 1024)
-        
-        listener = gio.SocketListener()
-        effective = listener.add_address(inetsock, gio.SOCKET_TYPE_STREAM, gio.SOCKET_PROTOCOL_TCP)
-        self.failUnless(isinstance(effective, gio.InetSocketAddress))
-
-    def test_socket_listener_accept(self):
-        address = gio.inet_address_new_from_string("127.0.0.1")
-        inetsock = gio.InetSocketAddress(address, 1024)
-
-        listener = gio.SocketListener()
-        listener.add_address(inetsock, gio.SOCKET_TYPE_STREAM, gio.SOCKET_PROTOCOL_TCP)
-
-        client = gio.SocketClient()
-        client.connect_to_host("127.0.0.1:1024", 1024)
-
-        connection, source = listener.accept(cancellable=None)
-        self.failUnless(isinstance(connection, gio.TcpConnection))
-
-    def test_socket_listener_accept_socket(self):
-        address = gio.inet_address_new_from_string("127.0.0.1")
-        inetsock = gio.InetSocketAddress(address, 1024)
-
-        listener = gio.SocketListener()
-        listener.add_address(inetsock, gio.SOCKET_TYPE_STREAM, gio.SOCKET_PROTOCOL_TCP)
-
-        client = gio.SocketClient()
-        client.connect_to_host("127.0.0.1:1024", 1024)
-
-        socket, source = listener.accept_socket(cancellable=None)
-        self.failUnless(isinstance(socket, gio.Socket))
-
-    def test_socket_listener_accept_async(self):
-        def callback(listener, result):
-            try:
-                connection, source = listener.accept_finish(result)
-                self.failUnless(isinstance(connection, gio.TcpConnection))
-            finally:
-                loop.quit()
-
-        address = gio.inet_address_new_from_string("127.0.0.1")
-        inetsock = gio.InetSocketAddress(address, 1024)
-        
-        listener = gio.SocketListener()
-        listener.add_address(inetsock,
-                             gio.SOCKET_TYPE_STREAM,
-                             gio.SOCKET_PROTOCOL_TCP)
-
-        client = gio.SocketClient()
-        client.connect_to_host("127.0.0.1:1024", 1024)
-        
-        listener.accept_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
-
-    def test_socket_listener_accept_socket_async(self):
-        def callback(listener, result):
-            try:
-                socket, source = listener.accept_socket_finish(result)
-                self.failUnless(isinstance(socket, gio.Socket))
-            finally:
-                loop.quit()
-
-        address = gio.inet_address_new_from_string("127.0.0.1")
-        inetsock = gio.InetSocketAddress(address, 1024)
-        
-        listener = gio.SocketListener()
-        listener.add_address(inetsock,
-                             gio.SOCKET_TYPE_STREAM,
-                             gio.SOCKET_PROTOCOL_TCP)
-
-        client = gio.SocketClient()
-        client.connect_to_host("127.0.0.1:1024", 1024)
-        
-        listener.accept_socket_async(callback)
-
-        loop = glib.MainLoop()
-        loop.run()
index fbc0586..2df61b1 100644 (file)
@@ -2,16 +2,16 @@
 
 import unittest
 
-import gobject
+from gi.repository import GObject
 import testhelper
 
 
-GUnknown = gobject.type_from_name("TestUnknown")
+GUnknown = GObject.type_from_name("TestUnknown")
 Unknown = GUnknown.pytype
 
 
 class MyUnknown(Unknown, testhelper.Interface):
-    some_property = gobject.property(type=str)
+    some_property = GObject.Property(type=str)
 
     def __init__(self):
         Unknown.__init__(self)
@@ -20,19 +20,19 @@ class MyUnknown(Unknown, testhelper.Interface):
     def do_iface_method(self):
         self.called = True
         Unknown.do_iface_method(self)
-gobject.type_register(MyUnknown)
+GObject.type_register(MyUnknown)
 
 
-class MyObject(gobject.GObject, testhelper.Interface):
-    some_property = gobject.property(type=str)
+class MyObject(GObject.GObject, testhelper.Interface):
+    some_property = GObject.Property(type=str)
 
     def __init__(self):
-        gobject.GObject.__init__(self)
+        GObject.GObject.__init__(self)
         self.called = False
 
     def do_iface_method(self):
         self.called = True
-gobject.type_register(MyObject)
+GObject.type_register(MyObject)
 
 
 class TestIfaceImpl(unittest.TestCase):
@@ -46,4 +46,3 @@ class TestIfaceImpl(unittest.TestCase):
         m = MyObject()
         m.iface_method()
         self.assertEqual(m.called, True)
-
index 80e2aec..4c7794a 100644 (file)
@@ -3,14 +3,23 @@
 import os
 import sys
 import select
+import signal
+import time
 import unittest
 
-import glib
+try:
+    from _thread import start_new_thread
+    start_new_thread  # pyflakes
+except ImportError:
+    # Python 2
+    from thread import start_new_thread
+from gi.repository import GLib
 
 from compathelper import _bytes
 
+
 class TestMainLoop(unittest.TestCase):
-    def testExceptionHandling(self):
+    def test_exception_handling(self):
         pipe_r, pipe_w = os.pipe()
 
         pid = os.fork()
@@ -24,8 +33,8 @@ class TestMainLoop(unittest.TestCase):
             loop.quit()
             raise Exception("deadbabe")
 
-        loop = glib.MainLoop()
-        glib.child_watch_add(pid, child_died, loop)
+        loop = GLib.MainLoop()
+        GLib.child_watch_add(pid, child_died, loop)
 
         os.close(pipe_r)
         os.write(pipe_w, _bytes("Y"))
@@ -49,3 +58,23 @@ class TestMainLoop(unittest.TestCase):
         #
         sys.excepthook = sys.__excepthook__
         assert not got_exception
+
+    def test_concurrency(self):
+        def on_usr1(signum, frame):
+            pass
+
+        try:
+            # create a thread which will terminate upon SIGUSR1 by way of
+            # interrupting sleep()
+            orig_handler = signal.signal(signal.SIGUSR1, on_usr1)
+            start_new_thread(time.sleep, (10,))
+
+            # now create two main loops
+            loop1 = GLib.MainLoop()
+            loop2 = GLib.MainLoop()
+            GLib.timeout_add(100, lambda: os.kill(os.getpid(), signal.SIGUSR1))
+            GLib.timeout_add(500, loop1.quit)
+            loop1.run()
+            loop2.quit()
+        finally:
+            signal.signal(signal.SIGUSR1, orig_handler)
index a6ecc98..345d0ad 100644 (file)
@@ -6,22 +6,23 @@ import sys
 # py3k has StringIO in a different module
 try:
     from StringIO import StringIO
+    StringIO  # pyflakes
 except ImportError:
     from io import StringIO
 
-from glib.option import OptionParser, OptionGroup, OptionValueError, \
-     make_option, BadOptionError
+# FIXME: we need a way to import the options module from a public module
+from gi._glib.option import OptionParser, OptionGroup, OptionValueError, \
+    make_option, BadOptionError
 
-from compathelper import _bytes
 
 class TestOption(unittest.TestCase):
     EXCEPTION_MESSAGE = "This callback fails"
 
     def setUp(self):
         self.parser = OptionParser("NAMES...",
-                                     description="Option unit test")
+                                   description="Option unit test")
         self.parser.add_option("-t", "--test", help="Unit test option",
-                          action="store_false", dest="test", default=True)
+                               action="store_false", dest="test", default=True)
         self.parser.add_option("--g-fatal-warnings",
                                action="store_true",
                                dest="fatal_warnings",
@@ -33,20 +34,20 @@ class TestOption(unittest.TestCase):
 
         group = OptionGroup(
             "unittest", "Unit test options", "Show all unittest options",
-            option_list = [
+            option_list=[
                 make_option("-f", "-u", "--file", "--unit-file",
-                                   type="filename",
-                                   dest="unit_file",
-                                   help="Unit test option"),
+                            type="filename",
+                            dest="unit_file",
+                            help="Unit test option"),
                 make_option("--test-integer",
-                                   type="int",
-                                   dest="test_integer",
-                                   help="Unit integer option"),
+                            type="int",
+                            dest="test_integer",
+                            help="Unit integer option"),
                 make_option("--callback-failure-test",
-                                   action="callback",
-                                   callback=option_callback,
-                                   dest="test_integer",
-                                   help="Unit integer option"),
+                            action="callback",
+                            callback=option_callback,
+                            dest="test_integer",
+                            help="Unit integer option"),
             ])
         group.add_option("-t", "--test",
                          action="store_false",
@@ -59,23 +60,20 @@ class TestOption(unittest.TestCase):
     def testParseArgs(self):
         options, args = self.parser.parse_args(
             ["test_option.py"])
-        self.failIf(args)
+        self.assertFalse(args)
 
         options, args = self.parser.parse_args(
             ["test_option.py", "foo"])
-        self.assertEquals(args, ["foo"])
+        self.assertEqual(args, [])
 
         options, args = self.parser.parse_args(
             ["test_option.py", "foo", "bar"])
-        self.assertEquals(args, ["foo", "bar"])
+        self.assertEqual(args, [])
 
     def testParseArgsDoubleDash(self):
         options, args = self.parser.parse_args(
             ["test_option.py", "--", "-xxx"])
-        #self.assertEquals(args, ["-xxx"])
-
-    def testParseArgs(self):
-        options, args = self.parser.parse_args()
+        #self.assertEqual(args, ["-xxx"])
 
     def testParseArgsGroup(self):
         group = self._create_group()
@@ -83,13 +81,13 @@ class TestOption(unittest.TestCase):
         options, args = self.parser.parse_args(
             ["test_option.py", "--test", "-f", "test"])
 
-        self.failIf(options.test)
+        self.assertFalse(options.test)
         self.assertEqual(options.unit_file, "test")
 
-        self.failUnless(group.values.test)
-        self.failIf(self.parser.values.test)
+        self.assertTrue(group.values.test)
+        self.assertFalse(self.parser.values.test)
         self.assertEqual(group.values.unit_file, "test")
-        self.failIf(args)
+        self.assertFalse(args)
 
     def testOptionValueError(self):
         self._create_group()
@@ -117,4 +115,3 @@ class TestOption(unittest.TestCase):
 
         assert (sio.getvalue().split('\n')[-2] ==
                 "Exception: " + self.EXCEPTION_MESSAGE)
-
index 47f38a3..b0a5305 100644 (file)
 
 import unittest
 
-import sys
-import os
-sys.path.insert(0, "../")
+import gi.overrides
+from gi.repository import Regress
 
-from compathelper import _long, _unicode, _bytes
 
-from gi.repository import GLib
-from gi.repository import GObject
-from gi.repository import Gdk
-from gi.repository import Gtk
-from gi.repository import Gio
-from gi.repository import Pango
-from gi.repository import GdkPixbuf
-import gi.overrides as overrides
-import gi.types
-
-class TestGLib(unittest.TestCase):
-
-    def test_gvariant_create(self):
-        # simple values
-
-        variant = GLib.Variant('i', 42)
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEquals(variant.get_int32(), 42)
-
-        variant = GLib.Variant('s', '')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEquals(variant.get_string(), '')
-
-        variant = GLib.Variant('s', 'hello')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEquals(variant.get_string(), 'hello')
-
-        # boxed variant
-        variant = GLib.Variant('v', GLib.Variant('i', 42))
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_variant(), GLib.Variant))
-        self.assertEqual(variant.get_type_string(), 'v')
-        self.assertEqual(variant.get_variant().get_type_string(), 'i')
-        self.assertEquals(variant.get_variant().get_int32(), 42)
-
-        variant = GLib.Variant('v', GLib.Variant('v', GLib.Variant('i', 42)))
-        self.assertEqual(variant.get_type_string(), 'v')
-        self.assertEqual(variant.get_variant().get_type_string(), 'v')
-        self.assertEqual(variant.get_variant().get_variant().get_type_string(), 'i')
-        self.assertEquals(variant.get_variant().get_variant().get_int32(), 42)
-
-        # tuples
-
-        variant = GLib.Variant('()', ())
-        self.assertEqual(variant.get_type_string(), '()')
-        self.assertEquals(variant.n_children(), 0)
-
-        variant = GLib.Variant('(i)', (3,))
-        self.assertEqual(variant.get_type_string(), '(i)')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEquals(variant.n_children(), 1)
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertEquals(variant.get_child_value(0).get_int32(), 3)
-
-        variant = GLib.Variant('(ss)', ('mec', 'mac'))
-        self.assertEqual(variant.get_type_string(), '(ss)')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
-        self.assertEquals(variant.get_child_value(0).get_string(), 'mec')
-        self.assertEquals(variant.get_child_value(1).get_string(), 'mac')
-
-        # nested tuples
-        variant = GLib.Variant('((si)(ub))', (('hello', -1), (42, True)))
-        self.assertEqual(variant.get_type_string(), '((si)(ub))')
-        self.assertEqual(variant.unpack(), (('hello', -1), (_long(42), True)))
-
-        # dictionaries
-
-        variant = GLib.Variant('a{si}', {})
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEqual(variant.get_type_string(), 'a{si}')
-        self.assertEquals(variant.n_children(), 0)
-
-        variant = GLib.Variant('a{si}', {'': 1, 'key1': 2, 'key2': 3})
-        self.assertEqual(variant.get_type_string(), 'a{si}')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(2), GLib.Variant))
-        self.assertEqual(variant.unpack(), {'': 1, 'key1': 2, 'key2': 3})
-
-        # nested dictionaries
-        variant = GLib.Variant('a{sa{si}}', {})
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEqual(variant.get_type_string(), 'a{sa{si}}')
-        self.assertEquals(variant.n_children(), 0)
-
-        d = {'':     {'': 1, 'keyn1': 2},
-             'key1': {'key11': 11, 'key12': 12}}
-        variant = GLib.Variant('a{sa{si}}', d)
-        self.assertEqual(variant.get_type_string(), 'a{sa{si}}')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEqual(variant.unpack(), d)
-
-        # arrays
-
-        variant = GLib.Variant('ai', [])
-        self.assertEqual(variant.get_type_string(), 'ai')
-        self.assertEquals(variant.n_children(), 0)
-
-        variant = GLib.Variant('ai', [1, 2])
-        self.assertEqual(variant.get_type_string(), 'ai')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
-        self.assertEquals(variant.get_child_value(0).get_int32(), 1)
-        self.assertEquals(variant.get_child_value(1).get_int32(), 2)
-
-        variant = GLib.Variant('as', [])
-        self.assertEqual(variant.get_type_string(), 'as')
-        self.assertEquals(variant.n_children(), 0)
-
-        variant = GLib.Variant('as', [''])
-        self.assertEqual(variant.get_type_string(), 'as')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertEquals(variant.get_child_value(0).get_string(), '')
-
-        variant = GLib.Variant('as', ['hello', 'world'])
-        self.assertEqual(variant.get_type_string(), 'as')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
-        self.assertEquals(variant.get_child_value(0).get_string(), 'hello')
-        self.assertEquals(variant.get_child_value(1).get_string(), 'world')
-
-        # nested arrays
-        variant = GLib.Variant('aai', [])
-        self.assertEqual(variant.get_type_string(), 'aai')
-        self.assertEquals(variant.n_children(), 0)
-
-        variant = GLib.Variant('aai', [[]])
-        self.assertEqual(variant.get_type_string(), 'aai')
-        self.assertEquals(variant.n_children(), 1)
-        self.assertEquals(variant.get_child_value(0).n_children(), 0)
-
-        variant = GLib.Variant('aai', [[1, 2], [3, 4, 5]])
-        self.assertEqual(variant.get_type_string(), 'aai')
-        self.assertEquals(variant.unpack(), [[1, 2], [3, 4, 5]])
-
-        #
-        # complex types
-        #
-
-        variant = GLib.Variant('(as)', ([],))
-        self.assertEqual(variant.get_type_string(), '(as)')
-        self.assertEquals(variant.n_children(), 1)
-        self.assertEquals(variant.get_child_value(0).n_children(), 0)
-
-        variant = GLib.Variant('(as)', ([''],))
-        self.assertEqual(variant.get_type_string(), '(as)')
-        self.assertEquals(variant.n_children(), 1)
-        self.assertEquals(variant.get_child_value(0).n_children(), 1)
-        self.assertEquals(variant.get_child_value(0).get_child_value(0).get_string(), '')
-
-        variant = GLib.Variant('(as)', (['hello'],))
-        self.assertEqual(variant.get_type_string(), '(as)')
-        self.assertEquals(variant.n_children(), 1)
-        self.assertEquals(variant.get_child_value(0).n_children(), 1)
-        self.assertEquals(variant.get_child_value(0).get_child_value(0).get_string(), 'hello')
-
-        obj = {'a1': (1, True), 'a2': (2, False)}
-        variant = GLib.Variant('a{s(ib)}', obj)
-        self.assertEqual(variant.get_type_string(), 'a{s(ib)}')
-        self.assertEqual(variant.unpack(), obj)
-
-        obj = {'a1': (1, GLib.Variant('b', True)), 'a2': (2, GLib.Variant('y', 255))}
-        variant = GLib.Variant('a{s(iv)}', obj)
-        self.assertEqual(variant.get_type_string(), 'a{s(iv)}')
-        self.assertEqual(variant.unpack(), {'a1': (1, True), 'a2': (2, 255)})
-
-        obj = (1, {'a': {'a1': True, 'a2': False},
-                   'b': {'b1': False},
-                   'c': {}
-                  },
-               'foo')
-        variant = GLib.Variant('(ia{sa{sb}}s)', obj)
-        self.assertEqual(variant.get_type_string(), '(ia{sa{sb}}s)')
-        self.assertEqual(variant.unpack(), obj)
-
-        obj = {"frequency": GLib.Variant('t', 738000000),
-            "hierarchy": GLib.Variant('i', 0),
-            "bandwidth": GLib.Variant('x', 8),
-            "code-rate-hp": GLib.Variant('d', 2.0/3.0),
-            "constellation": GLib.Variant('s', "QAM16"),
-            "guard-interval": GLib.Variant('u', 4),}
-        variant = GLib.Variant('a{sv}', obj)
-        self.assertEqual(variant.get_type_string(), 'a{sv}')
-        self.assertEqual(variant.unpack(), {"frequency": 738000000,
-            "hierarchy": 0,
-            "bandwidth": 8,
-            "code-rate-hp": 2.0/3.0,
-            "constellation": "QAM16",
-            "guard-interval": 4})
-
-    def test_gvariant_create_errors(self):
-        # excess arguments
-        self.assertRaises(TypeError, GLib.Variant, 'i', 42, 3)
-        self.assertRaises(TypeError, GLib.Variant, '(i)', (42, 3))
-
-        # not enough arguments
-        self.assertRaises(TypeError, GLib.Variant, '(ii)', (42,))
-
-        # data type mismatch
-        self.assertRaises(TypeError, GLib.Variant, 'i', 'hello')
-        self.assertRaises(TypeError, GLib.Variant, 's', 42)
-        self.assertRaises(TypeError, GLib.Variant, '(ss)', 'mec', 'mac')
-
-        # unimplemented data type
-        self.assertRaises(NotImplementedError, GLib.Variant, 'Q', 1)
-
-    def test_gvariant_unpack(self):
-        # simple values
-        res = GLib.Variant.new_int32(-42).unpack()
-        self.assertEqual(res, -42)
-
-        res = GLib.Variant.new_uint64(34359738368).unpack()
-        self.assertEqual(res, 34359738368)
-
-        res = GLib.Variant.new_boolean(True).unpack()
-        self.assertEqual(res, True)
-
-        res = GLib.Variant.new_object_path('/foo/Bar').unpack()
-        self.assertEqual(res, '/foo/Bar')
-
-        # variant
-        res = GLib.Variant('v', GLib.Variant.new_int32(-42)).unpack()
-        self.assertEqual(res, -42)
-
-        variant = GLib.Variant('v', GLib.Variant('v', GLib.Variant('i', 42)))
-        self.assertEqual(res, -42)
-
-        # tuple
-        res = GLib.Variant.new_tuple(GLib.Variant.new_int32(-1),
-                GLib.Variant.new_string('hello')).unpack()
-        self.assertEqual(res, (-1, 'hello'))
-
-        # array
-        vb = GLib.VariantBuilder()
-        vb.init(gi._gi.variant_type_from_string('ai'))
-        vb.add_value(GLib.Variant.new_int32(-1))
-        vb.add_value(GLib.Variant.new_int32(3))
-        res = vb.end().unpack()
-        self.assertEqual(res, [-1, 3])
-
-        # dictionary
-        res = GLib.Variant('a{si}', {'key1': 1, 'key2': 2}).unpack()
-        self.assertEqual(res, {'key1': 1, 'key2': 2})
-
-    def test_gvariant_iteration(self):
-        # array index access
-        vb = GLib.VariantBuilder()
-        vb.init(gi._gi.variant_type_from_string('ai'))
-        vb.add_value(GLib.Variant.new_int32(-1))
-        vb.add_value(GLib.Variant.new_int32(3))
-        v = vb.end()
-
-        self.assertEqual(len(v), 2)
-        self.assertEqual(v[0], -1)
-        self.assertEqual(v[1], 3)
-        self.assertEqual(v[-1], 3)
-        self.assertEqual(v[-2], -1)
-        self.assertRaises(IndexError, v.__getitem__, 2)
-        self.assertRaises(IndexError, v.__getitem__, -3)
-        self.assertRaises(ValueError, v.__getitem__, 'a')
-
-        # array iteration
-        self.assertEqual([x for x in v], [-1, 3])
-        self.assertEqual(list(v), [-1, 3])
-
-        # tuple index access
-        v = GLib.Variant.new_tuple(GLib.Variant.new_int32(-1),
-                GLib.Variant.new_string('hello'))
-        self.assertEqual(len(v), 2)
-        self.assertEqual(v[0], -1)
-        self.assertEqual(v[1], 'hello')
-        self.assertEqual(v[-1], 'hello')
-        self.assertEqual(v[-2], -1)
-        self.assertRaises(IndexError, v.__getitem__, 2)
-        self.assertRaises(IndexError, v.__getitem__, -3)
-        self.assertRaises(ValueError, v.__getitem__, 'a')
-
-        # tuple iteration
-        self.assertEqual([x for x in v], [-1, 'hello'])
-        self.assertEqual(tuple(v), (-1, 'hello'))
-
-        # dictionary index access
-        vsi = GLib.Variant('a{si}', {'key1': 1, 'key2': 2})
-        vis = GLib.Variant('a{is}', {1: 'val1', 5: 'val2'})
-
-        self.assertEqual(len(vsi), 2)
-        self.assertEqual(vsi['key1'], 1)
-        self.assertEqual(vsi['key2'], 2)
-        self.assertRaises(KeyError, vsi.__getitem__, 'unknown')
-
-        self.assertEqual(len(vis), 2)
-        self.assertEqual(vis[1], 'val1')
-        self.assertEqual(vis[5], 'val2')
-        self.assertRaises(KeyError, vsi.__getitem__, 3)
-
-        # dictionary iteration
-        self.assertEqual(set(vsi.keys()), set(['key1', 'key2']))
-        self.assertEqual(set(vis.keys()), set([1, 5]))
-
-        # string index access
-        v = GLib.Variant('s', 'hello')
-        self.assertEqual(len(v), 5)
-        self.assertEqual(v[0], 'h')
-        self.assertEqual(v[4], 'o')
-        self.assertEqual(v[-1], 'o')
-        self.assertEqual(v[-5], 'h')
-        self.assertRaises(IndexError, v.__getitem__, 5)
-        self.assertRaises(IndexError, v.__getitem__, -6)
-
-        # string iteration
-        self.assertEqual([x for x in v], ['h', 'e', 'l', 'l', 'o'])
-
-class TestPango(unittest.TestCase):
-
-    def test_default_font_description(self):
-        desc = Pango.FontDescription()
-        self.assertEquals(desc.get_variant(), Pango.Variant.NORMAL)
-
-    def test_font_description(self):
-        desc = Pango.FontDescription('monospace')
-        self.assertEquals(desc.get_family(), 'monospace')
-        self.assertEquals(desc.get_variant(), Pango.Variant.NORMAL)
-
-    def test_layout(self):
-        self.assertRaises(TypeError, Pango.Layout)
-        context = Pango.Context()
-        layout = Pango.Layout(context)
-        self.assertEquals(layout.get_context(), context)
-
-class TestGdk(unittest.TestCase):
-
-    def test_constructor(self):
-        attribute = Gdk.WindowAttr()
-        attribute.window_type = Gdk.WindowType.CHILD
-        attributes_mask = Gdk.WindowAttributesType.X | \
-            Gdk.WindowAttributesType.Y
-        window = Gdk.Window(None, attribute, attributes_mask)
-        self.assertEquals(window.get_window_type(), Gdk.WindowType.CHILD)
-
-    def test_color(self):
-        color = Gdk.Color(100, 200, 300)
-        self.assertEquals(color.red, 100)
-        self.assertEquals(color.green, 200)
-        self.assertEquals(color.blue, 300)
-        self.assertEquals(color, Gdk.Color(100, 200, 300))
-        self.assertNotEquals(color, Gdk.Color(1, 2, 3))
-
-    def test_rgba(self):
-        self.assertEquals(Gdk.RGBA, overrides.Gdk.RGBA)
-        rgba = Gdk.RGBA(0.1, 0.2, 0.3, 0.4)
-        self.assertEquals(rgba, Gdk.RGBA(0.1, 0.2, 0.3, 0.4))
-        self.assertNotEquals(rgba, Gdk.RGBA(0.0, 0.2, 0.3, 0.4))
-        self.assertEquals(rgba.red, 0.1)
-        self.assertEquals(rgba.green, 0.2)
-        self.assertEquals(rgba.blue, 0.3)
-        self.assertEquals(rgba.alpha, 0.4)
-        rgba.green = 0.9
-        self.assertEquals(rgba.green, 0.9)
-
-    def test_event(self):
-        event = Gdk.Event.new(Gdk.EventType.CONFIGURE)
-        self.assertEquals(event.type, Gdk.EventType.CONFIGURE)
-        self.assertEquals(event.send_event, 0)
-
-        event = Gdk.Event.new(Gdk.EventType.DRAG_MOTION)
-        event.x_root, event.y_root = 0, 5
-        self.assertEquals(event.x_root, 0)
-        self.assertEquals(event.y_root, 5)
-
-        event = Gdk.Event()
-        event.type = Gdk.EventType.SCROLL
-        self.assertRaises(AttributeError, lambda: getattr(event, 'foo_bar'))
-
-    def test_event_structures(self):
-        def button_press_cb(button, event):
-            self.assertTrue(isinstance(event, Gdk.EventButton))
-            self.assertTrue(event.type == Gdk.EventType.BUTTON_PRESS)
-            self.assertEquals(event.send_event, 0)
-            self.assertEquals(event.get_state(), Gdk.ModifierType.CONTROL_MASK)
-            self.assertEquals(event.get_root_coords(), (2, 5))
-
-            event.time = 12345
-            self.assertEquals(event.get_time(), 12345)
-
-        w = Gtk.Window()
-        b = Gtk.Button()
-        b.connect('button-press-event', button_press_cb)
-        w.add(b)
-        w.show_all()
-        Gdk.test_simulate_button(b.get_window(),
-                                 2, 5,
-                                 0,
-                                 Gdk.ModifierType.CONTROL_MASK,
-                                 Gdk.EventType.BUTTON_PRESS)
-
-    def test_cursor(self):
-        self.assertEquals(Gdk.Cursor, overrides.Gdk.Cursor)
-        c = Gdk.Cursor(Gdk.CursorType.WATCH)
-        self.assertNotEqual(c, None)
-        c = Gdk.Cursor(cursor_type = Gdk.CursorType.WATCH)
-        self.assertNotEqual(c, None)
-
-        display_manager = Gdk.DisplayManager.get()
-        display = display_manager.get_default_display()
-
-        test_pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB,
-                                           False,
-                                           8,
-                                           5,
-                                           10)
-
-        c = Gdk.Cursor(display,
-                       test_pixbuf,
-                       y=0, x=0)
-
-        self.assertNotEqual(c, None)
-        self.assertRaises(ValueError, Gdk.Cursor, 1, 2, 3)
-
-class TestGtk(unittest.TestCase):
-
-    def test_container(self):
-        box = Gtk.Box()
-        self.assertTrue(box)
-        label = Gtk.Label()
-        label2 = Gtk.Label()
-        box.add(label)
-        box.add(label2)
-        self.assertTrue(label in box)
-        self.assertTrue(label2 in box)
-        self.assertEqual(len(box), 2)
-        self.assertTrue(box)
-        l = [x for x in box]
-        self.assertEqual(l, [label, label2])
-
-    def test_actions(self):
-        self.assertEquals(Gtk.Action, overrides.Gtk.Action)
-        self.assertRaises(TypeError, Gtk.Action)
-        action = Gtk.Action("test", "Test", "Test Action", Gtk.STOCK_COPY)
-        self.assertEquals(action.get_name(), "test")
-        self.assertEquals(action.get_label(), "Test")
-        self.assertEquals(action.get_tooltip(), "Test Action")
-        self.assertEquals(action.get_stock_id(), Gtk.STOCK_COPY)
-
-        self.assertEquals(Gtk.RadioAction, overrides.Gtk.RadioAction)
-        self.assertRaises(TypeError, Gtk.RadioAction)
-        action = Gtk.RadioAction("test", "Test", "Test Action", Gtk.STOCK_COPY, 1)
-        self.assertEquals(action.get_name(), "test")
-        self.assertEquals(action.get_label(), "Test")
-        self.assertEquals(action.get_tooltip(), "Test Action")
-        self.assertEquals(action.get_stock_id(), Gtk.STOCK_COPY)
-        self.assertEquals(action.get_current_value(), 1)
-
-    def test_actiongroup(self):
-        self.assertEquals(Gtk.ActionGroup, overrides.Gtk.ActionGroup)
-        self.assertRaises(TypeError, Gtk.ActionGroup)
-
-        action_group = Gtk.ActionGroup (name = 'TestActionGroup')
-        callback_data = "callback data"
-
-        def test_action_callback_data(action, user_data):
-            self.assertEquals(user_data, callback_data);
-
-        def test_radio_action_callback_data(action, current, user_data):
-            self.assertEquals(user_data, callback_data);
-
-        action_group.add_actions ([
-            ('test-action1', None, 'Test Action 1',
-             None, None, test_action_callback_data),
-            ('test-action2', Gtk.STOCK_COPY, 'Test Action 2',
-              None, None, test_action_callback_data)], callback_data)
-        action_group.add_toggle_actions([
-            ('test-toggle-action1', None, 'Test Toggle Action 1',
-             None, None, test_action_callback_data, False),
-            ('test-toggle-action2', Gtk.STOCK_COPY, 'Test Toggle Action 2',
-              None, None, test_action_callback_data, True)], callback_data)
-        action_group.add_radio_actions([
-            ('test-radio-action1', None, 'Test Radio Action 1'),
-            ('test-radio-action2', Gtk.STOCK_COPY, 'Test Radio Action 2')], 1,
-            test_radio_action_callback_data,
-            callback_data)
-
-        expected_results = [('test-action1', Gtk.Action),
-                            ('test-action2', Gtk.Action),
-                            ('test-toggle-action1', Gtk.ToggleAction),
-                            ('test-toggle-action2', Gtk.ToggleAction),
-                            ('test-radio-action1', Gtk.RadioAction),
-                            ('test-radio-action2', Gtk.RadioAction)]
-
-        for action in action_group.list_actions():
-            a = (action.get_name(), type(action))
-            self.assertTrue(a in expected_results)
-            expected_results.remove(a)
-            action.activate()
-
-    def test_uimanager(self):
-        self.assertEquals(Gtk.UIManager, overrides.Gtk.UIManager)
-        ui = Gtk.UIManager()
-        ui.add_ui_from_string(
-"""
-<ui>
-    <menubar name="menubar1"></menubar>
-</ui>
-"""
-)
-        menubar = ui.get_widget("/menubar1")
-        self.assertEquals(type(menubar), Gtk.MenuBar)
-
-        ag = Gtk.ActionGroup (name="ag1")
-        ui.insert_action_group(ag)
-        ag2 = Gtk.ActionGroup (name="ag2")
-        ui.insert_action_group(ag2)
-        groups = ui.get_action_groups()
-        self.assertEquals(ag, groups[-2])
-        self.assertEquals(ag2, groups[-1])
-
-    def test_builder(self):
-        self.assertEquals(Gtk.Builder, overrides.Gtk.Builder)
-
-        class SignalTest(GObject.GObject):
-            __gtype_name__ = "GIOverrideSignalTest"
-            __gsignals__ = {
-                "test-signal": (GObject.SIGNAL_RUN_FIRST,
-                                GObject.TYPE_NONE,
-                                []),
-            }
-
-
-        class SignalCheck:
-            def __init__(self):
-                self.sentinel = 0
-
-            def on_signal_1(self, *args):
-                self.sentinel += 1
-
-            def on_signal_3(self, *args):
-                self.sentinel += 3
-
-        signal_checker = SignalCheck()
-        builder = Gtk.Builder()
-
-        # add object1 to the builder
-        builder.add_from_string(
-"""
-<interface>
-  <object class="GIOverrideSignalTest" id="object1">
-      <signal name="test-signal" handler="on_signal_1" />
-  </object>
-</interface>
-""")
-
-        # only add object3 to the builder
-        builder.add_objects_from_string(
-"""
-<interface>
-  <object class="GIOverrideSignalTest" id="object2">
-      <signal name="test-signal" handler="on_signal_2" />
-  </object>
-  <object class="GIOverrideSignalTest" id="object3">
-      <signal name="test-signal" handler="on_signal_3" />
-  </object>
-  <object class="GIOverrideSignalTest" id="object4">
-      <signal name="test-signal" handler="on_signal_4" />
-  </object>
-</interface>
-
-""",
-            ['object3'])
-
-        # hook up signals
-        builder.connect_signals(signal_checker)
-
-        # call their notify signals and check sentinel
-        objects = builder.get_objects()
-        self.assertEquals(len(objects), 2)
-        for obj in objects:
-            obj.emit('test-signal')
-
-        self.assertEquals(signal_checker.sentinel, 4)
-
-    def test_dialogs(self):
-        self.assertEquals(Gtk.Dialog, overrides.Gtk.Dialog)
-        self.assertEquals(Gtk.AboutDialog, overrides.Gtk.AboutDialog)
-        self.assertEquals(Gtk.MessageDialog, overrides.Gtk.MessageDialog)
-        self.assertEquals(Gtk.ColorSelectionDialog, overrides.Gtk.ColorSelectionDialog)
-        self.assertEquals(Gtk.FileChooserDialog, overrides.Gtk.FileChooserDialog)
-        self.assertEquals(Gtk.FontSelectionDialog, overrides.Gtk.FontSelectionDialog)
-        self.assertEquals(Gtk.RecentChooserDialog, overrides.Gtk.RecentChooserDialog)
-
-        # Gtk.Dialog
-        dialog = Gtk.Dialog (title='Foo',
-                             flags=Gtk.DialogFlags.MODAL,
-                             buttons=('test-button1', 1))
-
-        dialog.add_buttons ('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
-
-        self.assertEquals('Foo', dialog.get_title())
-        self.assertTrue(dialog.get_modal())
-        button = dialog.get_widget_for_response (1)
-        self.assertEquals('test-button1', button.get_label())
-        button = dialog.get_widget_for_response (2)
-        self.assertEquals('test-button2', button.get_label())
-        button = dialog.get_widget_for_response (Gtk.ResponseType.CLOSE)
-        self.assertEquals(Gtk.STOCK_CLOSE, button.get_label())
-
-        # Gtk.AboutDialog
-        dialog = Gtk.AboutDialog()
-
-        # Gtk.MessageDialog
-        dialog = Gtk.MessageDialog (title='message dialog test',
-                                    flags=Gtk.DialogFlags.MODAL,
-                                    buttons=Gtk.ButtonsType.OK,
-                                    message_format='dude!')
-
-        self.assertEquals('message dialog test', dialog.get_title())
-        self.assertTrue(dialog.get_modal())
-        text = dialog.get_property('text')
-        self.assertEquals('dude!', text)
-
-        dialog.format_secondary_text('2nd text')
-        self.assertEqual(dialog.get_property('secondary-text'), '2nd text')
-        self.assertFalse(dialog.get_property('secondary-use-markup'))
-
-        dialog.format_secondary_markup('2nd markup')
-        self.assertEqual(dialog.get_property('secondary-text'), '2nd markup')
-        self.assertTrue(dialog.get_property('secondary-use-markup'))
-
-        # Gtk.ColorSelectionDialog
-        dialog = Gtk.ColorSelectionDialog("color selection dialog test")
-        self.assertEquals('color selection dialog test', dialog.get_title())
-
-        # Gtk.FileChooserDialog
-        dialog = Gtk.FileChooserDialog (title='file chooser dialog test',
-                                        buttons=('test-button1', 1),
-                                        action=Gtk.FileChooserAction.SAVE)
-
-        dialog.add_buttons ('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
-        self.assertEquals('file chooser dialog test', dialog.get_title())
-        button = dialog.get_widget_for_response (1)
-        self.assertEquals('test-button1', button.get_label())
-        button = dialog.get_widget_for_response (2)
-        self.assertEquals('test-button2', button.get_label())
-        button = dialog.get_widget_for_response (Gtk.ResponseType.CLOSE)
-        self.assertEquals(Gtk.STOCK_CLOSE, button.get_label())
-        action = dialog.get_property('action')
-        self.assertEquals(Gtk.FileChooserAction.SAVE, action)
-
-
-        # Gtk.FontSelectionDialog
-        dialog = Gtk.ColorSelectionDialog("font selection dialog test")
-        self.assertEquals('font selection dialog test', dialog.get_title())
-
-        # Gtk.RecentChooserDialog
-        test_manager = Gtk.RecentManager()
-        dialog = Gtk.RecentChooserDialog (title='recent chooser dialog test',
-                                          buttons=('test-button1', 1),
-                                          manager=test_manager)
-
-        dialog.add_buttons ('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
-        self.assertEquals('recent chooser dialog test', dialog.get_title())
-        button = dialog.get_widget_for_response (1)
-        self.assertEquals('test-button1', button.get_label())
-        button = dialog.get_widget_for_response (2)
-        self.assertEquals('test-button2', button.get_label())
-        button = dialog.get_widget_for_response (Gtk.ResponseType.CLOSE)
-        self.assertEquals(Gtk.STOCK_CLOSE, button.get_label())
-
-    class TestClass(GObject.GObject):
-        __gtype_name__ = "GIOverrideTreeAPITest"
-
-        def __init__(self, tester, int_value, string_value):
-            super(TestGtk.TestClass, self).__init__()
-            self.tester = tester
-            self.int_value = int_value
-            self.string_value = string_value
-
-        def check(self, int_value, string_value):
-            self.tester.assertEquals(int_value, self.int_value)
-            self.tester.assertEquals(string_value, self.string_value)
-
-    def test_tree_store(self):
-        self.assertEquals(Gtk.TreeStore, overrides.Gtk.TreeStore)
-        self.assertEquals(Gtk.ListStore, overrides.Gtk.ListStore)
-        self.assertEquals(Gtk.TreeModel, overrides.Gtk.TreeModel)
-        self.assertEquals(Gtk.TreeViewColumn, overrides.Gtk.TreeViewColumn)
-
-        class TestPyObject(object):
-            pass
-
-        test_pyobj = TestPyObject()
-        test_pydict = {1:1, "2":2, "3":"3"}
-        test_pylist = [1,"2", "3"]
-        tree_store = Gtk.TreeStore(int,
-                                   'gchararray',
-                                   TestGtk.TestClass,
-                                   object,
-                                   object,
-                                   object,
-                                   bool,
-                                   bool,
-                                   GObject.TYPE_UINT,
-                                   GObject.TYPE_ULONG,
-                                   GObject.TYPE_INT64,
-                                   GObject.TYPE_UINT64,
-                                   GObject.TYPE_UCHAR,
-                                   GObject.TYPE_CHAR)
-
-        parent = None
-        for i in range(100):
-            label = 'this is child #%d' % i
-            testobj = TestGtk.TestClass(self, i, label)
-            parent = tree_store.append(parent, (i,
-                                                label,
-                                                testobj,
-                                                test_pyobj,
-                                                test_pydict,
-                                                test_pylist,
-                                                i % 2,
-                                                bool(i % 2),
-                                                i,
-                                                9223372036854775808,
-                                                -9223372036854775808,
-                                                0xffffffffffffffff,
-                                                254,
-                                                _bytes('a')
-                                                ))
-
-        # len gets the number of children in the root node
-        # since we kept appending to the previous node
-        # there should only be one child of the root
-        self.assertEquals(len(tree_store), 1)
-
-        # walk the tree to see if the values were stored correctly
-        parent = None
-        i = 0
-
-        treeiter = tree_store.iter_children(parent)
-        while treeiter:
-           i = tree_store.get_value(treeiter, 0)
-           s = tree_store.get_value(treeiter, 1)
-           obj = tree_store.get_value(treeiter, 2)
-           obj.check(i, s)
-
-           pyobj = tree_store.get_value(treeiter, 3)
-           self.assertEquals(pyobj, test_pyobj)
-           pydict = tree_store.get_value(treeiter, 4)
-           self.assertEquals(pydict, test_pydict)
-           pylist = tree_store.get_value(treeiter, 5)
-           self.assertEquals(pylist, test_pylist)
-
-           bool_1 = tree_store.get_value(treeiter, 6)
-           bool_2 = tree_store.get_value(treeiter, 7)
-           self.assertEquals(bool_1, bool_2)
-           self.assertTrue(isinstance(bool_1, bool))
-           self.assertTrue(isinstance(bool_2, bool))
-
-           uint_ = tree_store.get_value(treeiter, 8)
-           self.assertEquals(uint_, i)
-           ulong_ = tree_store.get_value(treeiter, 9)
-           self.assertEquals(ulong_, 9223372036854775808)
-           int64_ = tree_store.get_value(treeiter, 10)
-           self.assertEquals(int64_, -9223372036854775808)
-           uint64_ = tree_store.get_value(treeiter, 11)
-           self.assertEquals(uint64_, 0xffffffffffffffff)
-           uchar_ = tree_store.get_value(treeiter, 12)
-           self.assertEquals(ord(uchar_), 254)
-           char_ = tree_store.get_value(treeiter, 13)
-           self.assertEquals(char_, 'a')
-
-           parent = treeiter
-           treeiter = tree_store.iter_children(parent)
-
-        self.assertEquals(i, 99)
-
-    def test_list_store(self):
-        class TestPyObject(object):
-            pass
-
-        class TestPyGObject(GObject.Object):
-            __gtype_name__ = 'TestPyGObject'
-            def __init__(self, i):
-                GObject.Object.__init__(self)
-                self.sentinal = i + 5
-
-        test_pyobj = TestPyObject()
-        test_pydict = {1:1, "2":2, "3":"3"}
-        test_pylist = [1,"2", "3"]
-
-        list_store = Gtk.ListStore(int, str, 'GIOverrideTreeAPITest', object, object, object, bool, bool, object)
-        for i in range(93):
-            label = 'this is row #%d' % i
-            testobj = TestGtk.TestClass(self, i, label)
-            testpygobj = TestPyGObject(i)
-            parent = list_store.append((i,
-                                        label,
-                                        testobj,
-                                        test_pyobj,
-                                        test_pydict,
-                                        test_pylist,
-                                        i % 2,
-                                        bool(i % 2),
-                                        testpygobj))
-
-        i = 93
-        label = _unicode('this is row #93')
-        treeiter = list_store.append()
-        list_store.set_value(treeiter, 0, i)
-        list_store.set_value(treeiter, 1, label)
-        list_store.set_value(treeiter, 2, TestGtk.TestClass(self, i, label))
-        list_store.set_value(treeiter, 3, test_pyobj)
-        list_store.set_value(treeiter, 4, test_pydict)
-        list_store.set_value(treeiter, 5, test_pylist)
-        list_store.set_value(treeiter, 6, 1)
-        list_store.set_value(treeiter, 7, True)
-        list_store.set_value(treeiter, 8, TestPyGObject(i))
-
-        # test automatic unicode->str conversion
-        i = 94
-        label = _unicode('this is row #94')
-        treeiter = list_store.append((i,
-                                      label,
-                                      TestGtk.TestClass(self, i, label),
-                                      test_pyobj,
-                                      test_pydict,
-                                      test_pylist,
-                                      0,
-                                      False,
-                                      TestPyGObject(i)))
-
-        # add sorted items out of order to test insert* apis
-        # also test sending in None to not set a column
-        i = 97
-        label = 'this is row #97'
-        treeiter = list_store.append((None,
-                                      None,
-                                      None,
-                                      test_pyobj,
-                                      None,
-                                      test_pylist,
-                                      1,
-                                      None,
-                                      TestPyGObject(i)))
-
-        list_store.set_value(treeiter, 0, i)
-        list_store.set_value(treeiter, 1, label)
-        list_store.set_value(treeiter, 2, TestGtk.TestClass(self, i, label))
-        list_store.set_value(treeiter, 4, test_pydict)
-        list_store.set_value(treeiter, 7, True)
-        # this should append
-        i = 99
-        label = 'this is row #99'
-        list_store.insert(9999, (i,
-                                 label,
-                                 TestGtk.TestClass(self, i, label),
-                                 test_pyobj,
-                                 test_pydict,
-                                 test_pylist,
-                                 1,
-                                 True,
-                                 TestPyGObject(i)))
-
-        i = 96
-        label = 'this is row #96'
-        list_store.insert_before(treeiter, (i,
-                                            label,
-                                            TestGtk.TestClass(self, i, label),
-                                            test_pyobj,
-                                            test_pydict,
-                                            test_pylist,
-                                            0,
-                                            False,
-                                            TestPyGObject(i)))
-
-        i = 98
-        label = 'this is row #98'
-        list_store.insert_after(treeiter, (i,
-                                           label,
-                                           TestGtk.TestClass(self, i, label),
-                                           test_pyobj,
-                                           test_pydict,
-                                           test_pylist,
-                                           0,
-                                           False,
-                                           TestPyGObject(i)))
-
-
-        i = 95
-        label = 'this is row #95'
-        list_store.insert(95, (i,
-                               label,
-                               TestGtk.TestClass(self, i, label),
-                               test_pyobj,
-                               test_pydict,
-                               test_pylist,
-                               1,
-                               True,
-                               TestPyGObject(i)))
-
-        self.assertEquals(len(list_store), 100)
-
-        # walk the list to see if the values were stored correctly
-        i = 0
-        treeiter = list_store.get_iter_first()
-
-        counter = 0
-        while treeiter:
-            i = list_store.get_value(treeiter, 0)
-            self.assertEquals(i, counter)
-            s = list_store.get_value(treeiter, 1)
-            obj = list_store.get_value(treeiter, 2)
-            obj.check(i, s)
-
-            pyobj = list_store.get_value(treeiter, 3)
-            self.assertEquals(pyobj, test_pyobj)
-            pydict = list_store.get_value(treeiter, 4)
-            self.assertEquals(pydict, test_pydict)
-            pylist = list_store.get_value(treeiter, 5)
-            self.assertEquals(pylist, test_pylist)
-
-            bool_1 = list_store.get_value(treeiter, 6)
-            bool_2 = list_store.get_value(treeiter, 7)
-            self.assertEquals(bool_1, bool_2)
-            self.assertTrue(isinstance(bool_1, bool))
-            self.assertTrue(isinstance(bool_2, bool))
-
-            pygobj = list_store.get_value(treeiter, 8)
-            self.assertEquals(pygobj.sentinal, i + 5)
-
-            treeiter = list_store.iter_next(treeiter)
-
-            counter += 1
-
-        self.assertEquals(i, 99)
-
-    def test_tree_path(self):
-        p1 = Gtk.TreePath()
-        p2 = Gtk.TreePath.new_first()
-        self.assertEqual(p1, p2)
-        self.assertEqual(str(p1), '0')
-        p1 = Gtk.TreePath(2)
-        p2 = Gtk.TreePath.new_from_string('2')
-        self.assertEqual(p1, p2)
-        self.assertEqual(str(p1), '2')
-        p1 = Gtk.TreePath('1:2:3')
-        p2 = Gtk.TreePath.new_from_string('1:2:3')
-        self.assertEqual(p1, p2)
-        self.assertEqual(str(p1), '1:2:3')
-        p1 = Gtk.TreePath((1,2,3))
-        p2 = Gtk.TreePath.new_from_string('1:2:3')
-        self.assertEqual(p1, p2)
-        self.assertEqual(str(p1), '1:2:3')
-        self.assertTrue(p1 != None)
-        self.assertFalse(p1 == None)
-        self.assertTrue(p1 > None)
-        self.assertTrue(p1 >= None)
-        self.assertFalse(p1 < None)
-        self.assertFalse(p1 <= None)
-
-    def test_tree_model(self):
-        tree_store = Gtk.TreeStore(int, str)
-
-        self.assertTrue(tree_store)
-        self.assertEqual(len(tree_store), 0)
-        self.assertEqual(tree_store.get_iter_first(), None)
-
-        def get_by_index(row, col=None):
-            if col:
-                return tree_store[row][col]
-            else:
-                return tree_store[row]
-
-        self.assertRaises(TypeError, get_by_index, None)
-        self.assertRaises(TypeError, get_by_index, "")
-        self.assertRaises(TypeError, get_by_index, ())
-
-        self.assertRaises(IndexError, get_by_index, "0")
-        self.assertRaises(IndexError, get_by_index, 0)
-        self.assertRaises(IndexError, get_by_index, (0,))
-
-        self.assertRaises(ValueError, tree_store.get_iter, "0")
-        self.assertRaises(ValueError, tree_store.get_iter, 0)
-        self.assertRaises(ValueError, tree_store.get_iter, (0,))
-
-        self.assertRaises(ValueError, tree_store.get_iter_from_string, "0")
-
-        for row in tree_store:
-            self.fail("Should not be reached")
-
-        class DerivedIntType(int):
-            pass
-
-        class DerivedStrType(str):
+class TestRegistry(unittest.TestCase):
+    def test_non_gi(self):
+        class MyClass:
             pass
 
-        for i in range(100):
-            label = 'this is row #%d' % i
-            parent = tree_store.append(None, (DerivedIntType(i), DerivedStrType(label),))
-            self.assertNotEquals(parent, None)
-            for j in range(20):
-                label = 'this is child #%d of node #%d' % (j, i)
-                child = tree_store.append(parent, (j, label,))
-                self.assertNotEqual(child, None)
-
-        self.assertTrue(tree_store)
-        self.assertEqual(len(tree_store), 100)
-
-        for i,row in enumerate(tree_store):
-            self.assertEqual(row.model, tree_store)
-            self.assertEqual(row.parent, None)
-
-            self.assertEqual(tree_store[i].path, row.path)
-            self.assertEqual(tree_store[str(i)].path, row.path)
-            self.assertEqual(tree_store[(i,)].path, row.path)
-
-            self.assertEqual(tree_store[i][0], i)
-            self.assertEqual(tree_store[i][1], "this is row #%d" % i)
-
-            aiter = tree_store.get_iter(i)
-            self.assertEqual(tree_store.get_path(aiter), row.path)
-
-            aiter = tree_store.get_iter(str(i))
-            self.assertEqual(tree_store.get_path(aiter), row.path)
-
-            aiter = tree_store.get_iter((i,))
-            self.assertEqual(tree_store.get_path(aiter), row.path)
-
-            self.assertEqual(tree_store.iter_parent(aiter), row.parent)
-
-            next = tree_store.iter_next(aiter)
-            if i < len(tree_store) - 1:
-                self.assertEqual(tree_store.get_path(next), row.next.path)
-            else:
-                self.assertEqual(next, None)
-
-            self.assertEqual(tree_store.iter_n_children(row.iter), 20)
-
-            child = tree_store.iter_children(row.iter)
-            for j,childrow in enumerate(row.iterchildren()):
-                child_path = tree_store.get_path(child)
-                self.assertEqual(childrow.path, child_path)
-                self.assertEqual(childrow.parent.path, row.path)
-                self.assertEqual(childrow.path, tree_store[child].path)
-                self.assertEqual(childrow.path, tree_store[child_path].path)
-
-                self.assertEqual(childrow[0], tree_store[child][0])
-                self.assertEqual(childrow[0], j)
-                self.assertEqual(childrow[1], tree_store[child][1])
-                self.assertEqual(childrow[1], 'this is child #%d of node #%d' % (j, i))
-
-                self.assertRaises(IndexError, get_by_index, child, 2)
-
-                tree_store[child][1] = 'this was child #%d of node #%d' % (j, i)
-                self.assertEqual(childrow[1], 'this was child #%d of node #%d' % (j, i))
-
-                nth_child = tree_store.iter_nth_child(row.iter, j)
-                self.assertEqual(childrow.path, tree_store.get_path(nth_child))
-
-                childrow2 = tree_store["%d:%d" % (i, j)]
-                self.assertEqual(childrow.path, childrow2.path)
-
-                childrow2 = tree_store[(i, j,)]
-                self.assertEqual(childrow.path, childrow2.path)
-
-                child = tree_store.iter_next(child)
-                if j < 19:
-                    self.assertEqual(childrow.next.path, tree_store.get_path(child))
-                else:
-                    self.assertEqual(child, childrow.next)
-                    self.assertEqual(child, None)
-
-            self.assertEqual(j, 19)
-
-        self.assertEqual(i, 99)
-
-        # negative indices
-        for i in range(-1,-100,-1):
-            i_real = i + 100
-            self.assertEqual(tree_store[i][0], i_real)
-
-            row = tree_store[i]
-            for j in range(-1, -20, -1):
-                j_real = j + 20
-                path = (i_real, j_real,)
-
-                self.assertEqual(tree_store[path][-2], j_real)
-
-                label = 'this was child #%d of node #%d' % (j_real, i_real)
-                self.assertEqual(tree_store[path][-1], label)
-
-                new_label = 'this still is child #%d of node #%d' % (j_real, i_real)
-                tree_store[path][-1] = new_label
-                self.assertEqual(tree_store[path][-1], new_label)
-
-                self.assertRaises(IndexError, get_by_index, path, -3)
-
-        self.assertRaises(IndexError, get_by_index, -101)
-
-        last_row = tree_store[99]
-        self.assertNotEqual(last_row, None)
-
-        for i,childrow in enumerate(last_row.iterchildren()):
-            if i < 19:
-                self.assertTrue(tree_store.remove(childrow.iter))
-            else:
-                self.assertFalse(tree_store.remove(childrow.iter))
-
-        self.assertEqual(i, 19)
-
-        self.assertEqual(tree_store.iter_n_children(last_row.iter), 0)
-        for childrow in last_row.iterchildren():
-            self.fail("Should not be reached")
-
-        aiter = tree_store.get_iter(10)
-        self.assertRaises(TypeError, tree_store.get, aiter, 1, 'a')
-        self.assertRaises(ValueError, tree_store.get, aiter, 1, -1)
-        self.assertRaises(ValueError, tree_store.get, aiter, 1, 100)
-        self.assertEqual(tree_store.get(aiter, 0, 1), (10, 'this is row #10'))
-
-    def test_tree_view_column(self):
-        cell = Gtk.CellRendererText()
-        column = Gtk.TreeViewColumn(title='This is just a test',
-                                    cell_renderer=cell,
-                                    text=0,
-                                    style=2)
-
-    def test_tree_selection(self):
-        store = Gtk.ListStore(int, str)
-        for i in range(10):
-            store.append((i, "foo"))
-        view = Gtk.TreeView()
-        view.set_model(store)
-        firstpath = store.get_path(store.get_iter_first())
-        sel = view.get_selection()
-
-        sel.select_path(firstpath)
-        (m, s) = sel.get_selected()
-        self.assertEqual(m, store)
-        self.assertEqual(store.get_path(s), firstpath)
-
-        sel.select_path(0)
-        (m, s) = sel.get_selected()
-        self.assertEqual(m, store)
-        self.assertEqual(store.get_path(s), firstpath)
-
-        sel.select_path("0:0")
-        (m, s) = sel.get_selected()
-        self.assertEqual(m, store)
-        self.assertEqual(store.get_path(s), firstpath)
-
-        sel.select_path((0,0))
-        (m, s) = sel.get_selected()
-        self.assertEqual(m, store)
-        self.assertEqual(store.get_path(s), firstpath)
-
-    def test_text_buffer(self):
-        self.assertEquals(Gtk.TextBuffer, overrides.Gtk.TextBuffer)
-        buffer = Gtk.TextBuffer()
-        tag = buffer.create_tag ('title', font = 'Sans 18')
-
-        self.assertEquals(tag.props.name, 'title')
-        self.assertEquals(tag.props.font, 'Sans 18')
-
-        (start, end) = buffer.get_bounds()
-
-        mark = buffer.create_mark(None, start)
-        self.assertFalse(mark.get_left_gravity())
-
-        buffer.set_text('Hello Jane Hello Bob')
-        (start, end) = buffer.get_bounds()
-        text = buffer.get_text(start, end, False)
-        self.assertEquals(text, 'Hello Jane Hello Bob')
-
-        buffer.set_text('')
-        (start, end) = buffer.get_bounds()
-        text = buffer.get_text(start, end, False)
-        self.assertEquals(text, '')
-
-        buffer.insert(end, 'HelloHello')
-        buffer.insert(end, ' Bob')
-
-        cursor_iter = end.copy()
-        cursor_iter.backward_chars(9)
-        buffer.place_cursor(cursor_iter)
-        buffer.insert_at_cursor(' Jane ')
-
-        (start, end) = buffer.get_bounds()
-        text = buffer.get_text(start, end, False)
-        self.assertEquals(text, 'Hello Jane Hello Bob')
-
-        sel = buffer.get_selection_bounds()
-        self.assertEquals(sel, ())
-        buffer.select_range(start, end)
-        sel = buffer.get_selection_bounds()
-        self.assertTrue(sel[0].equal(start))
-        self.assertTrue(sel[1].equal(end))
-
-        buffer.set_text('')
-        buffer.insert_with_tags(buffer.get_start_iter(), 'HelloHello', tag)
-        (start, end) = buffer.get_bounds()
-        self.assertTrue(start.begins_tag(tag))
-        self.assertTrue(start.has_tag(tag))
-
-        buffer.set_text('')
-        buffer.insert_with_tags_by_name(buffer.get_start_iter(), 'HelloHello', 'title')
-        (start, end) = buffer.get_bounds()
-        self.assertTrue(start.begins_tag(tag))
-        self.assertTrue(start.has_tag(tag))
-
-        self.assertRaises(ValueError, buffer.insert_with_tags_by_name,
-                buffer.get_start_iter(), 'HelloHello', 'unknowntag')
-
-    def test_text_iter(self):
-        self.assertEquals(Gtk.TextIter, overrides.Gtk.TextIter)
-        buffer = Gtk.TextBuffer()
-        buffer.set_text('Hello Jane Hello Bob')
-        tag = buffer.create_tag ('title', font = 'Sans 18')
-        (start, end) = buffer.get_bounds()
-        start.forward_chars(10)
-        buffer.apply_tag(tag, start, end)
-        self.assertTrue(start.begins_tag())
-        self.assertTrue(end.ends_tag())
-        self.assertTrue(start.toggles_tag())
-        self.assertTrue(end.toggles_tag())
-        start.backward_chars(1)
-        self.assertFalse(start.begins_tag())
-        self.assertFalse(start.ends_tag())
-        self.assertFalse(start.toggles_tag())
-
-    def test_buttons(self):
-        self.assertEquals(Gtk.Button, overrides.Gtk.Button)
-
-        # test Gtk.Button
-        button = Gtk.Button()
-        button = Gtk.Button(stock=Gtk.STOCK_CLOSE)
-        self.assertEquals(Gtk.STOCK_CLOSE, button.get_label())
-        self.assertTrue(button.get_use_stock())
-        self.assertTrue(button.get_use_underline())
-
-        # test Gtk.LinkButton
-        self.assertRaises(TypeError, Gtk.LinkButton)
-        button = Gtk.LinkButton('http://www.gtk.org', 'Gtk')
-        self.assertEquals('http://www.gtk.org', button.get_uri())
-        self.assertEquals('Gtk', button.get_label())
-
-    def test_inheritance(self):
-        for name in overrides.Gtk.__all__:
-            over = getattr(overrides.Gtk, name)
-            for element in dir(Gtk):
-                try:
-                    klass = getattr(Gtk, element)
-                    info = klass.__info__
-                except (NotImplementedError, AttributeError):
-                    continue
-
-                # Get all parent classes and interfaces klass inherits from
-                if isinstance(info, gi.types.ObjectInfo):
-                    classes = list(info.get_interfaces())
-                    parent = info.get_parent()
-                    while parent.get_name() != "Object":
-                        classes.append(parent)
-                        parent = parent.get_parent()
-                    classes = [kl for kl in classes if kl.get_namespace() == "Gtk"]
-                else:
-                    continue
-
-                for kl in classes:
-                    if kl.get_name() == name:
-                        self.assertTrue(issubclass(klass, over,),
-                            "%r does not inherit from override %r" % (klass, over,))
-
-    def test_editable(self):
-        self.assertEquals(Gtk.Editable, overrides.Gtk.Editable)
-
-        # need to use Gtk.Entry because Editable is an interface
-        entry=Gtk.Entry()
-        pos = entry.insert_text('HeWorld', 0)
-        self.assertEquals(pos, 7)
-        pos = entry.insert_text('llo ', 2)
-        self.assertEquals(pos, 6)
-        text = entry.get_chars(0, 11)
-        self.assertEquals('Hello World', text)
-
-    def test_label(self):
-        label = Gtk.Label('Hello')
-        self.assertEquals(label.get_text(), 'Hello')
-
-    def adjustment_check(self, adjustment, value=0.0, lower=0.0, upper=0.0,
-                         step_increment=0.0, page_increment=0.0, page_size=0.0):
-        self.assertEquals(adjustment.get_value(), value)
-        self.assertEquals(adjustment.get_lower(), lower)
-        self.assertEquals(adjustment.get_upper(), upper)
-        self.assertEquals(adjustment.get_step_increment(), step_increment)
-        self.assertEquals(adjustment.get_page_increment(), page_increment)
-        self.assertEquals(adjustment.get_page_size(), page_size)
-
-    def test_adjustment(self):
-        adjustment =       Gtk.Adjustment(1, 0, 6, 4, 5, 3)
-        self.adjustment_check(adjustment, 1, 0, 6, 4, 5, 3)
-
-        adjustment =       Gtk.Adjustment(1, 0, 6, 4, 5)
-        self.adjustment_check(adjustment, 1, 0, 6, 4, 5)
-
-        adjustment =       Gtk.Adjustment(1, 0, 6, 4)
-        self.adjustment_check(adjustment, 1, 0, 6, 4)
-
-        adjustment =       Gtk.Adjustment(1, 0, 6)
-        self.adjustment_check(adjustment, 1, 0, 6)
-
-        adjustment = Gtk.Adjustment()
-        self.adjustment_check(adjustment)
-
-        adjustment = Gtk.Adjustment(value=1, lower=0, upper=6,
-                                    step_increment=4, page_increment=5, page_size=3)
-        self.adjustment_check(adjustment, 1, 0, 6, 4, 5, 3)
-
-    def test_table(self):
-        table = Gtk.Table()
-        self.assertEquals(table.get_size(), (1,1))
-        self.assertEquals(table.get_homogeneous(), False)
-        table = Gtk.Table(2, 3)
-        self.assertEquals(table.get_size(), (2,3))
-        self.assertEquals(table.get_homogeneous(), False)
-        table = Gtk.Table(2, 3, True)
-        self.assertEquals(table.get_size(), (2,3))
-        self.assertEquals(table.get_homogeneous(), True)
-
-        # Test PyGTK interface
-        table = Gtk.Table(rows=3, columns=2)
-        self.assertEquals(table.get_size(), (3,2))
-        # Test using the actual property names
-        table = Gtk.Table(n_rows=2, n_columns=3, homogeneous=True)
-        self.assertEquals(table.get_size(), (2,3))
-        self.assertEquals(table.get_homogeneous(), True)
-
-        label = Gtk.Label('Hello')
-        table.attach(label, 0, 1, 0, 1)
-        self.assertEquals(label, table.get_children()[0])
-
-    def test_scrolledwindow(self):
-        sw = Gtk.ScrolledWindow()
-        sb = sw.get_hscrollbar()
-        self.assertEquals(sw.get_hadjustment(), sb.get_adjustment())
-        sb = sw.get_vscrollbar()
-        self.assertEquals(sw.get_vadjustment(), sb.get_adjustment())
-
-    def test_widget_drag_methods(self):
-        widget = Gtk.Button()
-
-        # here we are not checking functionality, only that the methods exist
-        # and except the right number of arguments
-
-        widget.drag_check_threshold(0, 0, 0, 0)
-
-        # drag_dest_ methods
-        widget.drag_dest_set(Gtk.DestDefaults.DROP, None, Gdk.DragAction.COPY)
-        widget.drag_dest_add_image_targets()
-        widget.drag_dest_add_text_targets()
-        widget.drag_dest_add_uri_targets()
-        widget.drag_dest_get_track_motion()
-        widget.drag_dest_set_track_motion(True)
-        widget.drag_dest_get_target_list()
-        widget.drag_dest_set_target_list(Gtk.TargetList.new([Gtk.TargetEntry()]))
-        widget.drag_dest_unset()
-
-        widget.drag_highlight()
-        widget.drag_unhighlight()
-
-        # drag_source_ methods
-        widget.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, None, Gdk.DragAction.MOVE)
-        widget.drag_source_add_image_targets()
-        widget.drag_source_add_text_targets()
-        widget.drag_source_add_uri_targets()
-        widget.drag_source_set_icon_name("")
-        widget.drag_source_set_icon_pixbuf(GdkPixbuf.Pixbuf())
-        widget.drag_source_set_icon_stock("")
-        widget.drag_source_get_target_list()
-        widget.drag_source_set_target_list(Gtk.TargetList.new([Gtk.TargetEntry()]))
-        widget.drag_source_unset()
-
-        # these methods cannot be called because they require a valid drag on
-        # a real GdkWindow. So we only check that they exist and are callable.
-        self.assertTrue(hasattr(widget.drag_dest_set_proxy, '__call__'))
-        self.assertTrue(hasattr(widget.drag_get_data, '__call__'))
-
-class TestGio(unittest.TestCase):
-    def setUp(self):
-        os.environ['GSETTINGS_BACKEND'] = 'memory'
-        # support a separate build tree, so look in build dir first
-        os.environ['GSETTINGS_SCHEMA_DIR'] = os.environ.get('TESTS_BUILDDIR', 
-                os.path.dirname(__file__))
-        self.settings = Gio.Settings('org.gnome.test')
-        # we change the values in the tests, so set them to predictable start
-        # value
-        self.settings.reset('test-string')
-        self.settings.reset('test-array')
-
-    def test_file_enumerator(self):
-        self.assertEquals(Gio.FileEnumerator, overrides.Gio.FileEnumerator)
-        f = Gio.file_new_for_path("./")
-
-        iter_info = []
-        for info in f.enumerate_children("standard::*", 0, None):
-            iter_info.append(info.get_name())
-
-        next_info = []
-        enumerator = f.enumerate_children("standard::*", 0, None)
-        while True:
-            info = enumerator.next_file(None)
-            if info is None:
-                break
-            next_info.append(info.get_name())
-
-        self.assertEquals(iter_info, next_info)
-
-    def test_gsettings_native(self):
-        self.assertTrue('test-array' in self.settings.list_keys())
-
-        # get various types
-        v = self.settings.get_value('test-boolean')
-        self.assertEqual(v.get_boolean(), True)
-        self.assertEqual(self.settings.get_boolean('test-boolean'), True)
-
-        v = self.settings.get_value('test-string')
-        self.assertEqual(v.get_string(), 'Hello')
-        self.assertEqual(self.settings.get_string('test-string'), 'Hello')
-
-        v = self.settings.get_value('test-array')
-        self.assertEqual(v.unpack(), [1, 2])
-
-        v = self.settings.get_value('test-tuple')
-        self.assertEqual(v.unpack(), (1, 2))
-
-        # set a value
-        self.settings.set_string('test-string', 'World')
-        self.assertEqual(self.settings.get_string('test-string'), 'World')
-
-        self.settings.set_value('test-string', GLib.Variant('s', 'Goodbye'))
-        self.assertEqual(self.settings.get_string('test-string'), 'Goodbye')
-
-    def test_gsettings_constructor(self):
-        # default constructor uses path from schema
-        self.assertEqual(self.settings.get_property('path'), '/tests/')
-
-        # optional constructor arguments
-        with_path = Gio.Settings('org.gnome.nopathtest', path='/mypath/')
-        self.assertEqual(with_path.get_property('path'), '/mypath/')
-        self.assertEqual(with_path['np-int'], 42)
-
-    def test_gsettings_override(self):
-        # dictionary interface
-        self.assertEqual(len(self.settings), 4)
-        self.assertTrue('test-array' in self.settings)
-        self.assertTrue('test-array' in self.settings.keys())
-        self.failIf('nonexisting' in self.settings)
-        self.failIf(4 in self.settings)
-        self.assertEqual(bool(self.settings), True)
-
-        # get various types
-        self.assertEqual(self.settings['test-boolean'], True)
-        self.assertEqual(self.settings['test-string'], 'Hello')
-        self.assertEqual(self.settings['test-array'], [1, 2])
-        self.assertEqual(self.settings['test-tuple'], (1, 2))
-
-        self.assertRaises(KeyError, self.settings.__getitem__, 'unknown')
-        self.assertRaises(KeyError, self.settings.__getitem__, 2)
-
-        # set a value
-        self.settings['test-string'] = 'Goodbye'
-        self.assertEqual(self.settings['test-string'], 'Goodbye')
-        self.settings['test-array'] = [3, 4, 5]
-        self.assertEqual(self.settings['test-array'], [3, 4, 5])
-
-        self.assertRaises(TypeError, self.settings.__setitem__, 'test-string', 1)
-        self.assertRaises(KeyError, self.settings.__setitem__, 'unknown', 'moo')
-
-    def test_gsettings_empty(self):
-        empty = Gio.Settings('org.gnome.empty', path='/tests/')
-        self.assertEqual(len(empty), 0)
-        self.assertEqual(bool(empty), True)
-        self.assertEqual(empty.keys(), [])
-
-    def test_closures(self):
-        # make sure this doesn't crash
-        def fake_cb(*args):
-            pass
+        try:
+            gi.overrides.override(MyClass)
+            self.fail('unexpected success of overriding non-GI class')
+        except TypeError as e:
+            self.assertTrue('Can not override a type MyClass' in str(e))
 
-        ag = Gtk.AccelGroup()
-        ag.connect(Gdk.KEY_l, Gdk.ModifierType.CONTROL_MASK, 0, fake_cb)
+    def test_separate_path(self):
+        # Regress override is in tests/gi/overrides, separate from gi/overrides
+        # https://bugzilla.gnome.org/show_bug.cgi?id=680913
+        self.assertEqual(Regress.REGRESS_OVERRIDE, 42)
diff --git a/tests/test_overrides_gdk.py b/tests/test_overrides_gdk.py
new file mode 100644 (file)
index 0000000..070acb8
--- /dev/null
@@ -0,0 +1,119 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# vim: tabstop=4 shiftwidth=4 expandtab
+
+import unittest
+
+import gi.overrides
+
+try:
+    from gi.repository import Gdk, GdkPixbuf, Gtk
+    Gdk  # pyflakes
+except ImportError:
+    Gdk = None
+
+
+@unittest.skipUnless(Gdk, 'Gdk not available')
+class TestGdk(unittest.TestCase):
+    def test_constructor(self):
+        attribute = Gdk.WindowAttr()
+        attribute.window_type = Gdk.WindowType.CHILD
+        attributes_mask = Gdk.WindowAttributesType.X | \
+            Gdk.WindowAttributesType.Y
+        window = Gdk.Window(None, attribute, attributes_mask)
+        self.assertEqual(window.get_window_type(), Gdk.WindowType.CHILD)
+
+    def test_color(self):
+        color = Gdk.Color(100, 200, 300)
+        self.assertEqual(color.red, 100)
+        self.assertEqual(color.green, 200)
+        self.assertEqual(color.blue, 300)
+        self.assertEqual(color, Gdk.Color(100, 200, 300))
+        self.assertNotEqual(color, Gdk.Color(1, 2, 3))
+
+    def test_color_floats(self):
+        self.assertEqual(Gdk.Color(13107, 21845, 65535),
+                         Gdk.Color.from_floats(0.2, 1.0 / 3.0, 1.0))
+
+        self.assertEqual(Gdk.Color(13107, 21845, 65535).to_floats(),
+                         (0.2, 1.0 / 3.0, 1.0))
+
+        self.assertEqual(Gdk.RGBA(0.2, 1.0 / 3.0, 1.0, 0.5).to_color(),
+                         Gdk.Color.from_floats(0.2, 1.0 / 3.0, 1.0))
+
+        self.assertEqual(Gdk.RGBA.from_color(Gdk.Color(13107, 21845, 65535)),
+                         Gdk.RGBA(0.2, 1.0 / 3.0, 1.0, 1.0))
+
+    def test_rgba(self):
+        self.assertEqual(Gdk.RGBA, gi.overrides.Gdk.RGBA)
+        rgba = Gdk.RGBA(0.1, 0.2, 0.3, 0.4)
+        self.assertEqual(rgba, Gdk.RGBA(0.1, 0.2, 0.3, 0.4))
+        self.assertNotEqual(rgba, Gdk.RGBA(0.0, 0.2, 0.3, 0.4))
+        self.assertEqual(rgba.red, 0.1)
+        self.assertEqual(rgba.green, 0.2)
+        self.assertEqual(rgba.blue, 0.3)
+        self.assertEqual(rgba.alpha, 0.4)
+        rgba.green = 0.9
+        self.assertEqual(rgba.green, 0.9)
+
+        # Iterator/tuple convsersion
+        self.assertEqual(tuple(Gdk.RGBA(0.1, 0.2, 0.3, 0.4)),
+                         (0.1, 0.2, 0.3, 0.4))
+
+    def test_event(self):
+        event = Gdk.Event.new(Gdk.EventType.CONFIGURE)
+        self.assertEqual(event.type, Gdk.EventType.CONFIGURE)
+        self.assertEqual(event.send_event, 0)
+
+        event = Gdk.Event.new(Gdk.EventType.DRAG_MOTION)
+        event.x_root, event.y_root = 0, 5
+        self.assertEqual(event.x_root, 0)
+        self.assertEqual(event.y_root, 5)
+
+        event = Gdk.Event()
+        event.type = Gdk.EventType.SCROLL
+        self.assertRaises(AttributeError, lambda: getattr(event, 'foo_bar'))
+
+    def test_event_structures(self):
+        def button_press_cb(button, event):
+            self.assertTrue(isinstance(event, Gdk.EventButton))
+            self.assertTrue(event.type == Gdk.EventType.BUTTON_PRESS)
+            self.assertEqual(event.send_event, 0)
+            self.assertEqual(event.get_state(), Gdk.ModifierType.CONTROL_MASK)
+            self.assertEqual(event.get_root_coords(), (2, 5))
+
+            event.time = 12345
+            self.assertEqual(event.get_time(), 12345)
+
+        w = Gtk.Window()
+        b = Gtk.Button()
+        b.connect('button-press-event', button_press_cb)
+        w.add(b)
+        w.show_all()
+        Gdk.test_simulate_button(b.get_window(),
+                                 2, 5,
+                                 0,
+                                 Gdk.ModifierType.CONTROL_MASK,
+                                 Gdk.EventType.BUTTON_PRESS)
+
+    def test_cursor(self):
+        self.assertEqual(Gdk.Cursor, gi.overrides.Gdk.Cursor)
+        c = Gdk.Cursor(Gdk.CursorType.WATCH)
+        self.assertNotEqual(c, None)
+        c = Gdk.Cursor(cursor_type=Gdk.CursorType.WATCH)
+        self.assertNotEqual(c, None)
+
+        display_manager = Gdk.DisplayManager.get()
+        display = display_manager.get_default_display()
+
+        test_pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB,
+                                           False,
+                                           8,
+                                           5,
+                                           10)
+
+        c = Gdk.Cursor(display,
+                       test_pixbuf,
+                       y=0, x=0)
+
+        self.assertNotEqual(c, None)
+        self.assertRaises(ValueError, Gdk.Cursor, 1, 2, 3)
diff --git a/tests/test_overrides_gio.py b/tests/test_overrides_gio.py
new file mode 100644 (file)
index 0000000..4866c78
--- /dev/null
@@ -0,0 +1,114 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# vim: tabstop=4 shiftwidth=4 expandtab
+
+import unittest
+
+import gi.overrides
+from gi.repository import GLib, Gio
+
+
+class TestGio(unittest.TestCase):
+    def test_file_enumerator(self):
+        self.assertEqual(Gio.FileEnumerator, gi.overrides.Gio.FileEnumerator)
+        f = Gio.file_new_for_path("./")
+
+        iter_info = []
+        for info in f.enumerate_children("standard::*", 0, None):
+            iter_info.append(info.get_name())
+
+        next_info = []
+        enumerator = f.enumerate_children("standard::*", 0, None)
+        while True:
+            info = enumerator.next_file(None)
+            if info is None:
+                break
+            next_info.append(info.get_name())
+
+        self.assertEqual(iter_info, next_info)
+
+    def test_menu_item(self):
+        menu = Gio.Menu()
+        item = Gio.MenuItem()
+        item.set_attribute([("label", "s", "Test"),
+                            ("action", "s", "app.test")])
+        menu.append_item(item)
+        value = menu.get_item_attribute_value(0, "label", GLib.VariantType.new("s"))
+        self.assertEqual("Test", value.unpack())
+        value = menu.get_item_attribute_value(0, "action", GLib.VariantType.new("s"))
+        self.assertEqual("app.test", value.unpack())
+
+
+class TestGSettings(unittest.TestCase):
+    def setUp(self):
+        self.settings = Gio.Settings('org.gnome.test')
+        # we change the values in the tests, so set them to predictable start
+        # value
+        self.settings.reset('test-string')
+        self.settings.reset('test-array')
+
+    def test_native(self):
+        self.assertTrue('test-array' in self.settings.list_keys())
+
+        # get various types
+        v = self.settings.get_value('test-boolean')
+        self.assertEqual(v.get_boolean(), True)
+        self.assertEqual(self.settings.get_boolean('test-boolean'), True)
+
+        v = self.settings.get_value('test-string')
+        self.assertEqual(v.get_string(), 'Hello')
+        self.assertEqual(self.settings.get_string('test-string'), 'Hello')
+
+        v = self.settings.get_value('test-array')
+        self.assertEqual(v.unpack(), [1, 2])
+
+        v = self.settings.get_value('test-tuple')
+        self.assertEqual(v.unpack(), (1, 2))
+
+        # set a value
+        self.settings.set_string('test-string', 'World')
+        self.assertEqual(self.settings.get_string('test-string'), 'World')
+
+        self.settings.set_value('test-string', GLib.Variant('s', 'Goodbye'))
+        self.assertEqual(self.settings.get_string('test-string'), 'Goodbye')
+
+    def test_constructor(self):
+        # default constructor uses path from schema
+        self.assertEqual(self.settings.get_property('path'), '/tests/')
+
+        # optional constructor arguments
+        with_path = Gio.Settings('org.gnome.nopathtest', path='/mypath/')
+        self.assertEqual(with_path.get_property('path'), '/mypath/')
+        self.assertEqual(with_path['np-int'], 42)
+
+    def test_override(self):
+        # dictionary interface
+        self.assertEqual(len(self.settings), 4)
+        self.assertTrue('test-array' in self.settings)
+        self.assertTrue('test-array' in self.settings.keys())
+        self.assertFalse('nonexisting' in self.settings)
+        self.assertFalse(4 in self.settings)
+        self.assertEqual(bool(self.settings), True)
+
+        # get various types
+        self.assertEqual(self.settings['test-boolean'], True)
+        self.assertEqual(self.settings['test-string'], 'Hello')
+        self.assertEqual(self.settings['test-array'], [1, 2])
+        self.assertEqual(self.settings['test-tuple'], (1, 2))
+
+        self.assertRaises(KeyError, self.settings.__getitem__, 'unknown')
+        self.assertRaises(KeyError, self.settings.__getitem__, 2)
+
+        # set a value
+        self.settings['test-string'] = 'Goodbye'
+        self.assertEqual(self.settings['test-string'], 'Goodbye')
+        self.settings['test-array'] = [3, 4, 5]
+        self.assertEqual(self.settings['test-array'], [3, 4, 5])
+
+        self.assertRaises(TypeError, self.settings.__setitem__, 'test-string', 1)
+        self.assertRaises(KeyError, self.settings.__setitem__, 'unknown', 'moo')
+
+    def test_empty(self):
+        empty = Gio.Settings('org.gnome.empty', path='/tests/')
+        self.assertEqual(len(empty), 0)
+        self.assertEqual(bool(empty), True)
+        self.assertEqual(empty.keys(), [])
diff --git a/tests/test_overrides_glib.py b/tests/test_overrides_glib.py
new file mode 100644 (file)
index 0000000..2fee7e1
--- /dev/null
@@ -0,0 +1,445 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# vim: tabstop=4 shiftwidth=4 expandtab
+
+import unittest
+
+import gi
+from gi.repository import GLib
+from compathelper import _long
+
+
+class TestGVariant(unittest.TestCase):
+    def test_create(self):
+        # simple values
+
+        variant = GLib.Variant('i', 42)
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.get_int32(), 42)
+
+        variant = GLib.Variant('s', '')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.get_string(), '')
+
+        variant = GLib.Variant('s', 'hello')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.get_string(), 'hello')
+
+        # boxed variant
+        variant = GLib.Variant('v', GLib.Variant('i', 42))
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_variant(), GLib.Variant))
+        self.assertEqual(variant.get_type_string(), 'v')
+        self.assertEqual(variant.get_variant().get_type_string(), 'i')
+        self.assertEqual(variant.get_variant().get_int32(), 42)
+
+        variant = GLib.Variant('v', GLib.Variant('v', GLib.Variant('i', 42)))
+        self.assertEqual(variant.get_type_string(), 'v')
+        self.assertEqual(variant.get_variant().get_type_string(), 'v')
+        self.assertEqual(variant.get_variant().get_variant().get_type_string(), 'i')
+        self.assertEqual(variant.get_variant().get_variant().get_int32(), 42)
+
+        # tuples
+
+        variant = GLib.Variant('()', ())
+        self.assertEqual(variant.get_type_string(), '()')
+        self.assertEqual(variant.n_children(), 0)
+
+        variant = GLib.Variant('(i)', (3,))
+        self.assertEqual(variant.get_type_string(), '(i)')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.n_children(), 1)
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertEqual(variant.get_child_value(0).get_int32(), 3)
+
+        variant = GLib.Variant('(ss)', ('mec', 'mac'))
+        self.assertEqual(variant.get_type_string(), '(ss)')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
+        self.assertEqual(variant.get_child_value(0).get_string(), 'mec')
+        self.assertEqual(variant.get_child_value(1).get_string(), 'mac')
+
+        # nested tuples
+        variant = GLib.Variant('((si)(ub))', (('hello', -1), (42, True)))
+        self.assertEqual(variant.get_type_string(), '((si)(ub))')
+        self.assertEqual(variant.unpack(), (('hello', -1), (_long(42), True)))
+
+        # dictionaries
+
+        variant = GLib.Variant('a{si}', {})
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.get_type_string(), 'a{si}')
+        self.assertEqual(variant.n_children(), 0)
+
+        variant = GLib.Variant('a{si}', {'': 1, 'key1': 2, 'key2': 3})
+        self.assertEqual(variant.get_type_string(), 'a{si}')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(2), GLib.Variant))
+        self.assertEqual(variant.unpack(), {'': 1, 'key1': 2, 'key2': 3})
+
+        # nested dictionaries
+        variant = GLib.Variant('a{sa{si}}', {})
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.get_type_string(), 'a{sa{si}}')
+        self.assertEqual(variant.n_children(), 0)
+
+        d = {'': {'': 1, 'keyn1': 2},
+             'key1': {'key11': 11, 'key12': 12}}
+        variant = GLib.Variant('a{sa{si}}', d)
+        self.assertEqual(variant.get_type_string(), 'a{sa{si}}')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.unpack(), d)
+
+        # arrays
+
+        variant = GLib.Variant('ai', [])
+        self.assertEqual(variant.get_type_string(), 'ai')
+        self.assertEqual(variant.n_children(), 0)
+
+        variant = GLib.Variant('ai', [1, 2])
+        self.assertEqual(variant.get_type_string(), 'ai')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
+        self.assertEqual(variant.get_child_value(0).get_int32(), 1)
+        self.assertEqual(variant.get_child_value(1).get_int32(), 2)
+
+        variant = GLib.Variant('as', [])
+        self.assertEqual(variant.get_type_string(), 'as')
+        self.assertEqual(variant.n_children(), 0)
+
+        variant = GLib.Variant('as', [''])
+        self.assertEqual(variant.get_type_string(), 'as')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertEqual(variant.get_child_value(0).get_string(), '')
+
+        variant = GLib.Variant('as', ['hello', 'world'])
+        self.assertEqual(variant.get_type_string(), 'as')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
+        self.assertEqual(variant.get_child_value(0).get_string(), 'hello')
+        self.assertEqual(variant.get_child_value(1).get_string(), 'world')
+
+        # nested arrays
+        variant = GLib.Variant('aai', [])
+        self.assertEqual(variant.get_type_string(), 'aai')
+        self.assertEqual(variant.n_children(), 0)
+
+        variant = GLib.Variant('aai', [[]])
+        self.assertEqual(variant.get_type_string(), 'aai')
+        self.assertEqual(variant.n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).n_children(), 0)
+
+        variant = GLib.Variant('aai', [[1, 2], [3, 4, 5]])
+        self.assertEqual(variant.get_type_string(), 'aai')
+        self.assertEqual(variant.unpack(), [[1, 2], [3, 4, 5]])
+
+        #
+        # complex types
+        #
+
+        variant = GLib.Variant('(as)', ([],))
+        self.assertEqual(variant.get_type_string(), '(as)')
+        self.assertEqual(variant.n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).n_children(), 0)
+
+        variant = GLib.Variant('(as)', ([''],))
+        self.assertEqual(variant.get_type_string(), '(as)')
+        self.assertEqual(variant.n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_string(), '')
+
+        variant = GLib.Variant('(as)', (['hello'],))
+        self.assertEqual(variant.get_type_string(), '(as)')
+        self.assertEqual(variant.n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_string(), 'hello')
+
+        obj = {'a1': (1, True), 'a2': (2, False)}
+        variant = GLib.Variant('a{s(ib)}', obj)
+        self.assertEqual(variant.get_type_string(), 'a{s(ib)}')
+        self.assertEqual(variant.unpack(), obj)
+
+        obj = {'a1': (1, GLib.Variant('b', True)), 'a2': (2, GLib.Variant('y', 255))}
+        variant = GLib.Variant('a{s(iv)}', obj)
+        self.assertEqual(variant.get_type_string(), 'a{s(iv)}')
+        self.assertEqual(variant.unpack(), {'a1': (1, True), 'a2': (2, 255)})
+
+        obj = (1, {'a': {'a1': True, 'a2': False},
+                   'b': {'b1': False},
+                   'c': {}
+                  },
+               'foo')
+        variant = GLib.Variant('(ia{sa{sb}}s)', obj)
+        self.assertEqual(variant.get_type_string(), '(ia{sa{sb}}s)')
+        self.assertEqual(variant.unpack(), obj)
+
+        obj = {"frequency": GLib.Variant('t', 738000000),
+               "hierarchy": GLib.Variant('i', 0),
+               "bandwidth": GLib.Variant('x', 8),
+               "code-rate-hp": GLib.Variant('d', 2.0 / 3.0),
+               "constellation": GLib.Variant('s', "QAM16"),
+               "guard-interval": GLib.Variant('u', 4)}
+        variant = GLib.Variant('a{sv}', obj)
+        self.assertEqual(variant.get_type_string(), 'a{sv}')
+        self.assertEqual(variant.unpack(),
+                         {"frequency": 738000000,
+                          "hierarchy": 0,
+                          "bandwidth": 8,
+                          "code-rate-hp": 2.0 / 3.0,
+                          "constellation": "QAM16",
+                          "guard-interval": 4
+                         })
+
+    def test_create_errors(self):
+        # excess arguments
+        self.assertRaises(TypeError, GLib.Variant, 'i', 42, 3)
+        self.assertRaises(TypeError, GLib.Variant, '(i)', (42, 3))
+
+        # not enough arguments
+        self.assertRaises(TypeError, GLib.Variant, '(ii)', (42,))
+
+        # data type mismatch
+        self.assertRaises(TypeError, GLib.Variant, 'i', 'hello')
+        self.assertRaises(TypeError, GLib.Variant, 's', 42)
+        self.assertRaises(TypeError, GLib.Variant, '(ss)', 'mec', 'mac')
+        self.assertRaises(TypeError, GLib.Variant, '(s)', 'hello')
+
+        # unimplemented data type
+        self.assertRaises(NotImplementedError, GLib.Variant, 'Q', 1)
+
+    def test_unpack(self):
+        # simple values
+        res = GLib.Variant.new_int32(-42).unpack()
+        self.assertEqual(res, -42)
+
+        res = GLib.Variant.new_uint64(34359738368).unpack()
+        self.assertEqual(res, 34359738368)
+
+        res = GLib.Variant.new_boolean(True).unpack()
+        self.assertEqual(res, True)
+
+        res = GLib.Variant.new_object_path('/foo/Bar').unpack()
+        self.assertEqual(res, '/foo/Bar')
+
+        # variant
+        res = GLib.Variant('v', GLib.Variant.new_int32(-42)).unpack()
+        self.assertEqual(res, -42)
+
+        GLib.Variant('v', GLib.Variant('v', GLib.Variant('i', 42)))
+        self.assertEqual(res, -42)
+
+        # tuple
+        res = GLib.Variant.new_tuple(GLib.Variant.new_int32(-1),
+                                     GLib.Variant.new_string('hello')).unpack()
+        self.assertEqual(res, (-1, 'hello'))
+
+        # array
+        vb = GLib.VariantBuilder.new(gi._gi.variant_type_from_string('ai'))
+        vb.add_value(GLib.Variant.new_int32(-1))
+        vb.add_value(GLib.Variant.new_int32(3))
+        res = vb.end().unpack()
+        self.assertEqual(res, [-1, 3])
+
+        # dictionary
+        res = GLib.Variant('a{si}', {'key1': 1, 'key2': 2}).unpack()
+        self.assertEqual(res, {'key1': 1, 'key2': 2})
+
+    def test_iteration(self):
+        # array index access
+        vb = GLib.VariantBuilder.new(gi._gi.variant_type_from_string('ai'))
+        vb.add_value(GLib.Variant.new_int32(-1))
+        vb.add_value(GLib.Variant.new_int32(3))
+        v = vb.end()
+
+        self.assertEqual(len(v), 2)
+        self.assertEqual(v[0], -1)
+        self.assertEqual(v[1], 3)
+        self.assertEqual(v[-1], 3)
+        self.assertEqual(v[-2], -1)
+        self.assertRaises(IndexError, v.__getitem__, 2)
+        self.assertRaises(IndexError, v.__getitem__, -3)
+        self.assertRaises(ValueError, v.__getitem__, 'a')
+
+        # array iteration
+        self.assertEqual([x for x in v], [-1, 3])
+        self.assertEqual(list(v), [-1, 3])
+
+        # tuple index access
+        v = GLib.Variant.new_tuple(GLib.Variant.new_int32(-1),
+                                   GLib.Variant.new_string('hello'))
+        self.assertEqual(len(v), 2)
+        self.assertEqual(v[0], -1)
+        self.assertEqual(v[1], 'hello')
+        self.assertEqual(v[-1], 'hello')
+        self.assertEqual(v[-2], -1)
+        self.assertRaises(IndexError, v.__getitem__, 2)
+        self.assertRaises(IndexError, v.__getitem__, -3)
+        self.assertRaises(ValueError, v.__getitem__, 'a')
+
+        # tuple iteration
+        self.assertEqual([x for x in v], [-1, 'hello'])
+        self.assertEqual(tuple(v), (-1, 'hello'))
+
+        # dictionary index access
+        vsi = GLib.Variant('a{si}', {'key1': 1, 'key2': 2})
+        vis = GLib.Variant('a{is}', {1: 'val1', 5: 'val2'})
+
+        self.assertEqual(len(vsi), 2)
+        self.assertEqual(vsi['key1'], 1)
+        self.assertEqual(vsi['key2'], 2)
+        self.assertRaises(KeyError, vsi.__getitem__, 'unknown')
+
+        self.assertEqual(len(vis), 2)
+        self.assertEqual(vis[1], 'val1')
+        self.assertEqual(vis[5], 'val2')
+        self.assertRaises(KeyError, vsi.__getitem__, 3)
+
+        # dictionary iteration
+        self.assertEqual(set(vsi.keys()), set(['key1', 'key2']))
+        self.assertEqual(set(vis.keys()), set([1, 5]))
+
+        # string index access
+        v = GLib.Variant('s', 'hello')
+        self.assertEqual(len(v), 5)
+        self.assertEqual(v[0], 'h')
+        self.assertEqual(v[4], 'o')
+        self.assertEqual(v[-1], 'o')
+        self.assertEqual(v[-5], 'h')
+        self.assertRaises(IndexError, v.__getitem__, 5)
+        self.assertRaises(IndexError, v.__getitem__, -6)
+
+        # string iteration
+        self.assertEqual([x for x in v], ['h', 'e', 'l', 'l', 'o'])
+
+    def test_split_signature(self):
+        self.assertEqual(GLib.Variant.split_signature('()'), [])
+
+        self.assertEqual(GLib.Variant.split_signature('s'), ['s'])
+
+        self.assertEqual(GLib.Variant.split_signature('as'), ['as'])
+
+        self.assertEqual(GLib.Variant.split_signature('(s)'), ['s'])
+
+        self.assertEqual(GLib.Variant.split_signature('(iso)'), ['i', 's', 'o'])
+
+        self.assertEqual(GLib.Variant.split_signature('(s(ss)i(ii))'),
+                         ['s', '(ss)', 'i', '(ii)'])
+
+        self.assertEqual(GLib.Variant.split_signature('(as)'), ['as'])
+
+        self.assertEqual(GLib.Variant.split_signature('(s(ss)iaiaasa(ii))'),
+                         ['s', '(ss)', 'i', 'ai', 'aas', 'a(ii)'])
+
+        self.assertEqual(GLib.Variant.split_signature('(a{iv}(ii)((ss)a{s(ss)}))'),
+                         ['a{iv}', '(ii)', '((ss)a{s(ss)})'])
+
+    def test_hash(self):
+        v1 = GLib.Variant('s', 'somestring')
+        v2 = GLib.Variant('s', 'somestring')
+        v3 = GLib.Variant('s', 'somestring2')
+
+        self.assertTrue(v2 in set([v1, v3]))
+        self.assertTrue(v2 in frozenset([v1, v3]))
+        self.assertTrue(v2 in {v1: '1', v3: '2'})
+
+    def test_compare(self):
+        # Check if identical GVariant are equal
+
+        def assert_equal(vtype, value):
+            self.assertEqual(GLib.Variant(vtype, value), GLib.Variant(vtype, value))
+
+        def assert_not_equal(vtype1, value1, vtype2, value2):
+            self.assertNotEqual(GLib.Variant(vtype1, value1), GLib.Variant(vtype2, value2))
+
+        numbers = ['y', 'n', 'q', 'i', 'u', 'x', 't', 'h', 'd']
+        for num in numbers:
+            assert_equal(num, 42)
+            assert_not_equal(num, 42, num, 41)
+            assert_not_equal(num, 42, 's', '42')
+
+        assert_equal('s', 'something')
+        assert_not_equal('s', 'something', 's', 'somethingelse')
+        assert_not_equal('s', 'something', 'i', 1234)
+
+        assert_equal('g', 'dustybinqhogx')
+        assert_not_equal('g', 'dustybinqhogx', 'g', 'dustybin')
+        assert_not_equal('g', 'dustybinqhogx', 'i', 1234)
+
+        assert_equal('o', '/dev/null')
+        assert_not_equal('o', '/dev/null', 'o', '/dev/zero')
+        assert_not_equal('o', '/dev/null', 'i', 1234)
+
+        assert_equal('(s)', ('strtuple',))
+        assert_not_equal('(s)', ('strtuple',), '(s)', ('strtuple2',))
+
+        assert_equal('a{si}', {'str': 42})
+        assert_not_equal('a{si}', {'str': 42}, 'a{si}', {'str': 43})
+
+        assert_equal('v', GLib.Variant('i', 42))
+        assert_not_equal('v', GLib.Variant('i', 42), 'v', GLib.Variant('i', 43))
+
+    def test_bool(self):
+        # Check if the GVariant bool matches the unpacked Pythonic bool
+
+        def assert_equals_bool(vtype, value):
+            self.assertEqual(bool(GLib.Variant(vtype, value)), bool(value))
+
+        # simple values
+        assert_equals_bool('b', True)
+        assert_equals_bool('b', False)
+
+        numbers = ['y', 'n', 'q', 'i', 'u', 'x', 't', 'h', 'd']
+        for number in numbers:
+            assert_equals_bool(number, 0)
+            assert_equals_bool(number, 1)
+
+        assert_equals_bool('s', '')
+        assert_equals_bool('g', '')
+        assert_equals_bool('s', 'something')
+        assert_equals_bool('o', '/dev/null')
+        assert_equals_bool('g', 'dustybinqhogx')
+
+        # arrays
+        assert_equals_bool('ab', [True])
+        assert_equals_bool('ab', [False])
+        for number in numbers:
+            assert_equals_bool('a' + number, [])
+            assert_equals_bool('a' + number, [0])
+        assert_equals_bool('as', [])
+        assert_equals_bool('as', [''])
+        assert_equals_bool('ao', [])
+        assert_equals_bool('ao', ['/'])
+        assert_equals_bool('ag', [])
+        assert_equals_bool('ag', [''])
+        assert_equals_bool('aai', [[]])
+
+        # tuples
+        assert_equals_bool('()', ())
+        for number in numbers:
+            assert_equals_bool('(' + number + ')', (0,))
+        assert_equals_bool('(s)', ('',))
+        assert_equals_bool('(o)', ('/',))
+        assert_equals_bool('(g)', ('',))
+        assert_equals_bool('(())', ((),))
+
+        # dictionaries
+        assert_equals_bool('a{si}', {})
+        assert_equals_bool('a{si}', {'': 0})
+
+        # complex types, always True
+        assert_equals_bool('(as)', ([],))
+        assert_equals_bool('a{s(i)}', {'': (0,)})
+
+        # variant types, recursive unpacking
+        assert_equals_bool('v', GLib.Variant('i', 0))
+        assert_equals_bool('v', GLib.Variant('i', 1))
+
+    def test_repr(self):
+        v = GLib.Variant('(is)', (1, 'somestring'))
+        self.assertEqual(str(v), "(1, 'somestring')")
+        self.assertEqual(repr(v), "GLib.Variant('(is)', (1, 'somestring'))")
diff --git a/tests/test_overrides_gtk.py b/tests/test_overrides_gtk.py
new file mode 100644 (file)
index 0000000..ee41457
--- /dev/null
@@ -0,0 +1,1555 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# vim: tabstop=4 shiftwidth=4 expandtab
+
+import unittest
+import ctypes
+import sys
+
+from compathelper import _unicode, _bytes
+
+import gi.overrides
+import gi.types
+from gi.repository import GLib, GObject
+
+try:
+    from gi.repository import GdkPixbuf, Gdk, Gtk
+    Gtk  # pyflakes
+except ImportError:
+    Gtk = None
+
+
+class RawTreeIter(ctypes.Structure):
+    """Class used for testing Gtk.TreeIter raw data."""
+    _fields_ = [('stamp', ctypes.c_int),
+                ('user_data', ctypes.c_void_p),
+                ('user_data2', ctypes.c_void_p),
+                ('user_data3', ctypes.c_void_p)]
+
+    @classmethod
+    def from_iter(cls, iter):
+        offset = sys.getsizeof(object())  # size of PyObject_HEAD
+        return ctypes.POINTER(cls).from_address(id(iter) + offset)
+
+
+@unittest.skipUnless(Gtk, 'Gtk not available')
+class TestGtk(unittest.TestCase):
+    def test_container(self):
+        box = Gtk.Box()
+        self.assertTrue(isinstance(box, Gtk.Box))
+        self.assertTrue(isinstance(box, Gtk.Container))
+        self.assertTrue(isinstance(box, Gtk.Widget))
+        self.assertTrue(box)
+        label = Gtk.Label()
+        label2 = Gtk.Label()
+        box.add(label)
+        box.add(label2)
+        self.assertTrue(label in box)
+        self.assertTrue(label2 in box)
+        self.assertEqual(len(box), 2)
+        self.assertTrue(box)
+        l = [x for x in box]
+        self.assertEqual(l, [label, label2])
+
+    def test_actions(self):
+        self.assertEqual(Gtk.Action, gi.overrides.Gtk.Action)
+        self.assertRaises(TypeError, Gtk.Action)
+        action = Gtk.Action("test", "Test", "Test Action", Gtk.STOCK_COPY)
+        self.assertEqual(action.get_name(), "test")
+        self.assertEqual(action.get_label(), "Test")
+        self.assertEqual(action.get_tooltip(), "Test Action")
+        self.assertEqual(action.get_stock_id(), Gtk.STOCK_COPY)
+
+        self.assertEqual(Gtk.RadioAction, gi.overrides.Gtk.RadioAction)
+        self.assertRaises(TypeError, Gtk.RadioAction)
+        action = Gtk.RadioAction("test", "Test", "Test Action", Gtk.STOCK_COPY, 1)
+        self.assertEqual(action.get_name(), "test")
+        self.assertEqual(action.get_label(), "Test")
+        self.assertEqual(action.get_tooltip(), "Test Action")
+        self.assertEqual(action.get_stock_id(), Gtk.STOCK_COPY)
+        self.assertEqual(action.get_current_value(), 1)
+
+    def test_actiongroup(self):
+        self.assertEqual(Gtk.ActionGroup, gi.overrides.Gtk.ActionGroup)
+        self.assertRaises(TypeError, Gtk.ActionGroup)
+
+        action_group = Gtk.ActionGroup(name='TestActionGroup')
+        callback_data = "callback data"
+
+        def test_action_callback_data(action, user_data):
+            self.assertEqual(user_data, callback_data)
+
+        def test_radio_action_callback_data(action, current, user_data):
+            self.assertEqual(user_data, callback_data)
+
+        action_group.add_actions([
+            ('test-action1', None, 'Test Action 1',
+             None, None, test_action_callback_data),
+            ('test-action2', Gtk.STOCK_COPY, 'Test Action 2',
+             None, None, test_action_callback_data)], callback_data)
+        action_group.add_toggle_actions([
+            ('test-toggle-action1', None, 'Test Toggle Action 1',
+             None, None, test_action_callback_data, False),
+            ('test-toggle-action2', Gtk.STOCK_COPY, 'Test Toggle Action 2',
+             None, None, test_action_callback_data, True)], callback_data)
+        action_group.add_radio_actions([
+            ('test-radio-action1', None, 'Test Radio Action 1'),
+            ('test-radio-action2', Gtk.STOCK_COPY, 'Test Radio Action 2')], 1,
+            test_radio_action_callback_data,
+            callback_data)
+
+        expected_results = [('test-action1', Gtk.Action),
+                            ('test-action2', Gtk.Action),
+                            ('test-toggle-action1', Gtk.ToggleAction),
+                            ('test-toggle-action2', Gtk.ToggleAction),
+                            ('test-radio-action1', Gtk.RadioAction),
+                            ('test-radio-action2', Gtk.RadioAction)]
+
+        for action in action_group.list_actions():
+            a = (action.get_name(), type(action))
+            self.assertTrue(a in expected_results)
+            expected_results.remove(a)
+            action.activate()
+
+    def test_uimanager(self):
+        self.assertEqual(Gtk.UIManager, gi.overrides.Gtk.UIManager)
+        ui = Gtk.UIManager()
+        ui.add_ui_from_string("""<ui>
+    <menubar name="menubar1"></menubar>
+</ui>
+"""
+)
+        menubar = ui.get_widget("/menubar1")
+        self.assertEqual(type(menubar), Gtk.MenuBar)
+
+        ag = Gtk.ActionGroup(name="ag1")
+        ui.insert_action_group(ag)
+        ag2 = Gtk.ActionGroup(name="ag2")
+        ui.insert_action_group(ag2)
+        groups = ui.get_action_groups()
+        self.assertEqual(ag, groups[-2])
+        self.assertEqual(ag2, groups[-1])
+
+    def test_builder(self):
+        self.assertEqual(Gtk.Builder, gi.overrides.Gtk.Builder)
+
+        class SignalTest(GObject.GObject):
+            __gtype_name__ = "GIOverrideSignalTest"
+            __gsignals__ = {
+                "test-signal": (GObject.SignalFlags.RUN_FIRST,
+                                None,
+                                []),
+            }
+
+        class SignalCheck:
+            def __init__(self):
+                self.sentinel = 0
+                self.after_sentinel = 0
+
+            def on_signal_1(self, *args):
+                self.sentinel += 1
+                self.after_sentinel += 1
+
+            def on_signal_3(self, *args):
+                self.sentinel += 3
+
+            def on_signal_after(self, *args):
+                if self.after_sentinel == 1:
+                    self.after_sentinel += 1
+
+        signal_checker = SignalCheck()
+        builder = Gtk.Builder()
+
+        # add object1 to the builder
+        builder.add_from_string("""
+<interface>
+  <object class="GIOverrideSignalTest" id="object1">
+      <signal name="test-signal" after="yes" handler="on_signal_after" />
+      <signal name="test-signal" handler="on_signal_1" />
+  </object>
+</interface>
+""")
+
+        # only add object3 to the builder
+        builder.add_objects_from_string("""
+<interface>
+  <object class="GIOverrideSignalTest" id="object2">
+      <signal name="test-signal" handler="on_signal_2" />
+  </object>
+  <object class="GIOverrideSignalTest" id="object3">
+      <signal name="test-signal" handler="on_signal_3" />
+  </object>
+  <object class="GIOverrideSignalTest" id="object4">
+      <signal name="test-signal" handler="on_signal_4" />
+  </object>
+</interface>
+""", ['object3'])
+
+        # hook up signals
+        builder.connect_signals(signal_checker)
+
+        # call their notify signals and check sentinel
+        objects = builder.get_objects()
+        self.assertEqual(len(objects), 2)
+        for obj in objects:
+            obj.emit('test-signal')
+
+        self.assertEqual(signal_checker.sentinel, 4)
+        self.assertEqual(signal_checker.after_sentinel, 2)
+
+    def test_window(self):
+        # standard Window
+        w = Gtk.Window()
+        self.assertEqual(w.get_property('type'), Gtk.WindowType.TOPLEVEL)
+
+        # type works as keyword argument
+        w = Gtk.Window(type=Gtk.WindowType.POPUP)
+        self.assertEqual(w.get_property('type'), Gtk.WindowType.POPUP)
+
+        # pygtk compatible positional argument
+        w = Gtk.Window(Gtk.WindowType.POPUP)
+        self.assertEqual(w.get_property('type'), Gtk.WindowType.POPUP)
+
+        class TestWindow(Gtk.Window):
+            __gtype_name__ = "TestWindow"
+
+        # works from builder
+        builder = Gtk.Builder()
+        builder.add_from_string('''
+<interface>
+  <object class="GtkWindow" id="win">
+    <property name="type">popup</property>
+  </object>
+  <object class="TestWindow" id="testwin">
+  </object>
+  <object class="TestWindow" id="testpop">
+    <property name="type">popup</property>
+  </object>
+</interface>''')
+        self.assertEqual(builder.get_object('win').get_property('type'),
+                         Gtk.WindowType.POPUP)
+        self.assertEqual(builder.get_object('testwin').get_property('type'),
+                         Gtk.WindowType.TOPLEVEL)
+        self.assertEqual(builder.get_object('testpop').get_property('type'),
+                         Gtk.WindowType.POPUP)
+
+    def test_dialogs(self):
+        self.assertEqual(Gtk.Dialog, gi.overrides.Gtk.Dialog)
+        self.assertEqual(Gtk.AboutDialog, gi.overrides.Gtk.AboutDialog)
+        self.assertEqual(Gtk.MessageDialog, gi.overrides.Gtk.MessageDialog)
+        self.assertEqual(Gtk.ColorSelectionDialog, gi.overrides.Gtk.ColorSelectionDialog)
+        self.assertEqual(Gtk.FileChooserDialog, gi.overrides.Gtk.FileChooserDialog)
+        self.assertEqual(Gtk.FontSelectionDialog, gi.overrides.Gtk.FontSelectionDialog)
+        self.assertEqual(Gtk.RecentChooserDialog, gi.overrides.Gtk.RecentChooserDialog)
+
+        # Gtk.Dialog
+        dialog = Gtk.Dialog(title='Foo',
+                            flags=Gtk.DialogFlags.MODAL,
+                            buttons=('test-button1', 1))
+        self.assertTrue(isinstance(dialog, Gtk.Dialog))
+        self.assertTrue(isinstance(dialog, Gtk.Window))
+
+        dialog.add_buttons('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
+
+        self.assertEqual('Foo', dialog.get_title())
+        self.assertTrue(dialog.get_modal())
+        button = dialog.get_widget_for_response(1)
+        self.assertEqual('test-button1', button.get_label())
+        button = dialog.get_widget_for_response(2)
+        self.assertEqual('test-button2', button.get_label())
+        button = dialog.get_widget_for_response(Gtk.ResponseType.CLOSE)
+        self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
+
+        # Gtk.AboutDialog
+        dialog = Gtk.AboutDialog()
+        self.assertTrue(isinstance(dialog, Gtk.Dialog))
+        self.assertTrue(isinstance(dialog, Gtk.Window))
+
+        # Gtk.MessageDialog
+        dialog = Gtk.MessageDialog(title='message dialog test',
+                                   flags=Gtk.DialogFlags.MODAL,
+                                   buttons=Gtk.ButtonsType.OK,
+                                   message_format='dude!')
+        self.assertTrue(isinstance(dialog, Gtk.Dialog))
+        self.assertTrue(isinstance(dialog, Gtk.Window))
+
+        self.assertEqual('message dialog test', dialog.get_title())
+        self.assertTrue(dialog.get_modal())
+        text = dialog.get_property('text')
+        self.assertEqual('dude!', text)
+
+        dialog.format_secondary_text('2nd text')
+        self.assertEqual(dialog.get_property('secondary-text'), '2nd text')
+        self.assertFalse(dialog.get_property('secondary-use-markup'))
+
+        dialog.format_secondary_markup('2nd markup')
+        self.assertEqual(dialog.get_property('secondary-text'), '2nd markup')
+        self.assertTrue(dialog.get_property('secondary-use-markup'))
+
+        # Gtk.ColorSelectionDialog
+        dialog = Gtk.ColorSelectionDialog("color selection dialog test")
+        self.assertTrue(isinstance(dialog, Gtk.Dialog))
+        self.assertTrue(isinstance(dialog, Gtk.Window))
+        self.assertEqual('color selection dialog test', dialog.get_title())
+
+        # Gtk.FileChooserDialog
+        dialog = Gtk.FileChooserDialog(title='file chooser dialog test',
+                                       buttons=('test-button1', 1),
+                                       action=Gtk.FileChooserAction.SAVE)
+        self.assertTrue(isinstance(dialog, Gtk.Dialog))
+        self.assertTrue(isinstance(dialog, Gtk.Window))
+
+        dialog.add_buttons('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
+        self.assertEqual('file chooser dialog test', dialog.get_title())
+        button = dialog.get_widget_for_response(1)
+        self.assertEqual('test-button1', button.get_label())
+        button = dialog.get_widget_for_response(2)
+        self.assertEqual('test-button2', button.get_label())
+        button = dialog.get_widget_for_response(Gtk.ResponseType.CLOSE)
+        self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
+        action = dialog.get_property('action')
+        self.assertEqual(Gtk.FileChooserAction.SAVE, action)
+
+        # Gtk.FontSelectionDialog
+        dialog = Gtk.ColorSelectionDialog("font selection dialog test")
+        self.assertTrue(isinstance(dialog, Gtk.Dialog))
+        self.assertTrue(isinstance(dialog, Gtk.Window))
+        self.assertEqual('font selection dialog test', dialog.get_title())
+
+        # Gtk.RecentChooserDialog
+        test_manager = Gtk.RecentManager()
+        dialog = Gtk.RecentChooserDialog(title='recent chooser dialog test',
+                                         buttons=('test-button1', 1),
+                                         manager=test_manager)
+        self.assertTrue(isinstance(dialog, Gtk.Dialog))
+        self.assertTrue(isinstance(dialog, Gtk.Window))
+
+        dialog.add_buttons('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
+        self.assertEqual('recent chooser dialog test', dialog.get_title())
+        button = dialog.get_widget_for_response(1)
+        self.assertEqual('test-button1', button.get_label())
+        button = dialog.get_widget_for_response(2)
+        self.assertEqual('test-button2', button.get_label())
+        button = dialog.get_widget_for_response(Gtk.ResponseType.CLOSE)
+        self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
+
+    class TestClass(GObject.GObject):
+        __gtype_name__ = "GIOverrideTreeAPITest"
+
+        def __init__(self, tester, int_value, string_value):
+            super(TestGtk.TestClass, self).__init__()
+            self.tester = tester
+            self.int_value = int_value
+            self.string_value = string_value
+
+        def check(self, int_value, string_value):
+            self.tester.assertEqual(int_value, self.int_value)
+            self.tester.assertEqual(string_value, self.string_value)
+
+    def test_buttons(self):
+        self.assertEqual(Gtk.Button, gi.overrides.Gtk.Button)
+
+        # test Gtk.Button
+        button = Gtk.Button()
+        self.assertTrue(isinstance(button, Gtk.Button))
+        self.assertTrue(isinstance(button, Gtk.Container))
+        self.assertTrue(isinstance(button, Gtk.Widget))
+        button = Gtk.Button(stock=Gtk.STOCK_CLOSE)
+        self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
+        self.assertTrue(button.get_use_stock())
+        self.assertTrue(button.get_use_underline())
+
+        # test Gtk.Button use_stock
+        button = Gtk.Button(label=Gtk.STOCK_CLOSE, use_stock=True, use_underline=True)
+        self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
+        self.assertTrue(button.get_use_stock())
+        self.assertTrue(button.get_use_underline())
+
+        # test Gtk.LinkButton
+        self.assertRaises(TypeError, Gtk.LinkButton)
+        button = Gtk.LinkButton('http://www.Gtk.org', 'Gtk')
+        self.assertTrue(isinstance(button, Gtk.Button))
+        self.assertTrue(isinstance(button, Gtk.Container))
+        self.assertTrue(isinstance(button, Gtk.Widget))
+        self.assertEqual('http://www.Gtk.org', button.get_uri())
+        self.assertEqual('Gtk', button.get_label())
+
+    def test_inheritance(self):
+        for name in gi.overrides.Gtk.__all__:
+            over = getattr(gi.overrides.Gtk, name)
+            for element in dir(Gtk):
+                try:
+                    klass = getattr(Gtk, element)
+                    info = klass.__info__
+                except (NotImplementedError, AttributeError):
+                    continue
+
+                # Get all parent classes and interfaces klass inherits from
+                if isinstance(info, gi.types.ObjectInfo):
+                    classes = list(info.get_interfaces())
+                    parent = info.get_parent()
+                    while parent.get_name() != "Object":
+                        classes.append(parent)
+                        parent = parent.get_parent()
+                    classes = [kl for kl in classes if kl.get_namespace() == "Gtk"]
+                else:
+                    continue
+
+                for kl in classes:
+                    if kl.get_name() == name:
+                        self.assertTrue(issubclass(klass, over,),
+                                        "%r does not inherit from override %r" % (klass, over,))
+
+    def test_editable(self):
+        self.assertEqual(Gtk.Editable, gi.overrides.Gtk.Editable)
+
+        # need to use Gtk.Entry because Editable is an interface
+        entry = Gtk.Entry()
+        pos = entry.insert_text('HeWorld', 0)
+        self.assertEqual(pos, 7)
+        pos = entry.insert_text('llo ', 2)
+        self.assertEqual(pos, 6)
+        text = entry.get_chars(0, 11)
+        self.assertEqual('Hello World', text)
+
+    def test_label(self):
+        label = Gtk.Label(label='Hello')
+        self.assertTrue(isinstance(label, Gtk.Widget))
+        self.assertEqual(label.get_text(), 'Hello')
+
+    def adjustment_check(self, adjustment, value=0.0, lower=0.0, upper=0.0,
+                         step_increment=0.0, page_increment=0.0, page_size=0.0):
+        self.assertEqual(adjustment.get_value(), value)
+        self.assertEqual(adjustment.get_lower(), lower)
+        self.assertEqual(adjustment.get_upper(), upper)
+        self.assertEqual(adjustment.get_step_increment(), step_increment)
+        self.assertEqual(adjustment.get_page_increment(), page_increment)
+        self.assertEqual(adjustment.get_page_size(), page_size)
+
+    def test_adjustment(self):
+        adjustment = Gtk.Adjustment(1, 0, 6, 4, 5, 3)
+        self.adjustment_check(adjustment, 1, 0, 6, 4, 5, 3)
+
+        adjustment = Gtk.Adjustment(1, 0, 6, 4, 5)
+        self.adjustment_check(adjustment, 1, 0, 6, 4, 5)
+
+        adjustment = Gtk.Adjustment(1, 0, 6, 4)
+        self.adjustment_check(adjustment, 1, 0, 6, 4)
+
+        adjustment = Gtk.Adjustment(1, 0, 6)
+        self.adjustment_check(adjustment, 1, 0, 6)
+
+        adjustment = Gtk.Adjustment()
+        self.adjustment_check(adjustment)
+
+        adjustment = Gtk.Adjustment(value=1, lower=0, upper=6,
+                                    step_increment=4, page_increment=5, page_size=3)
+        self.adjustment_check(adjustment, 1, 0, 6, 4, 5, 3)
+
+    def test_table(self):
+        table = Gtk.Table()
+        self.assertTrue(isinstance(table, Gtk.Table))
+        self.assertTrue(isinstance(table, Gtk.Container))
+        self.assertTrue(isinstance(table, Gtk.Widget))
+        self.assertEqual(table.get_size(), (1, 1))
+        self.assertEqual(table.get_homogeneous(), False)
+        table = Gtk.Table(2, 3)
+        self.assertEqual(table.get_size(), (2, 3))
+        self.assertEqual(table.get_homogeneous(), False)
+        table = Gtk.Table(2, 3, True)
+        self.assertEqual(table.get_size(), (2, 3))
+        self.assertEqual(table.get_homogeneous(), True)
+
+        # Test PyGTK interface
+        table = Gtk.Table(rows=3, columns=2)
+        self.assertEqual(table.get_size(), (3, 2))
+        # Test using the actual property names
+        table = Gtk.Table(n_rows=2, n_columns=3, homogeneous=True)
+        self.assertEqual(table.get_size(), (2, 3))
+        self.assertEqual(table.get_homogeneous(), True)
+
+        label = Gtk.Label(label='Hello')
+        self.assertTrue(isinstance(label, Gtk.Widget))
+        table.attach(label, 0, 1, 0, 1)
+        self.assertEqual(label, table.get_children()[0])
+
+    def test_scrolledwindow(self):
+        sw = Gtk.ScrolledWindow()
+        self.assertTrue(isinstance(sw, Gtk.ScrolledWindow))
+        self.assertTrue(isinstance(sw, Gtk.Container))
+        self.assertTrue(isinstance(sw, Gtk.Widget))
+        sb = sw.get_hscrollbar()
+        self.assertEqual(sw.get_hadjustment(), sb.get_adjustment())
+        sb = sw.get_vscrollbar()
+        self.assertEqual(sw.get_vadjustment(), sb.get_adjustment())
+
+    def test_widget_drag_methods(self):
+        widget = Gtk.Button()
+
+        # here we are not checking functionality, only that the methods exist
+        # and except the right number of arguments
+
+        widget.drag_check_threshold(0, 0, 0, 0)
+
+        # drag_dest_ methods
+        widget.drag_dest_set(Gtk.DestDefaults.DROP, None, Gdk.DragAction.COPY)
+        widget.drag_dest_add_image_targets()
+        widget.drag_dest_add_text_targets()
+        widget.drag_dest_add_uri_targets()
+        widget.drag_dest_get_track_motion()
+        widget.drag_dest_set_track_motion(True)
+        widget.drag_dest_get_target_list()
+        widget.drag_dest_set_target_list(Gtk.TargetList.new([Gtk.TargetEntry.new('test', 0, 0)]))
+        widget.drag_dest_unset()
+
+        widget.drag_highlight()
+        widget.drag_unhighlight()
+
+        # drag_source_ methods
+        widget.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, None, Gdk.DragAction.MOVE)
+        widget.drag_source_add_image_targets()
+        widget.drag_source_add_text_targets()
+        widget.drag_source_add_uri_targets()
+        widget.drag_source_set_icon_name("")
+        widget.drag_source_set_icon_pixbuf(GdkPixbuf.Pixbuf())
+        widget.drag_source_set_icon_stock("")
+        widget.drag_source_get_target_list()
+        widget.drag_source_set_target_list(Gtk.TargetList.new([Gtk.TargetEntry.new('test', 0, 0)]))
+        widget.drag_source_unset()
+
+        # these methods cannot be called because they require a valid drag on
+        # a real GdkWindow. So we only check that they exist and are callable.
+        self.assertTrue(hasattr(widget.drag_dest_set_proxy, '__call__'))
+        self.assertTrue(hasattr(widget.drag_get_data, '__call__'))
+
+    def test_scrollbar(self):
+        # PyGTK compat
+        adjustment = Gtk.Adjustment()
+
+        hscrollbar = Gtk.HScrollbar()
+        vscrollbar = Gtk.VScrollbar()
+        self.assertNotEqual(hscrollbar.props.adjustment, adjustment)
+        self.assertNotEqual(vscrollbar.props.adjustment, adjustment)
+
+        hscrollbar = Gtk.HScrollbar(adjustment)
+        vscrollbar = Gtk.VScrollbar(adjustment)
+        self.assertEqual(hscrollbar.props.adjustment, adjustment)
+        self.assertEqual(vscrollbar.props.adjustment, adjustment)
+
+    def test_iconview(self):
+        # PyGTK compat
+        iconview = Gtk.IconView()
+        self.assertEqual(iconview.props.model, None)
+
+        model = Gtk.ListStore(str)
+        iconview = Gtk.IconView(model)
+        self.assertEqual(iconview.props.model, model)
+
+    def test_toolbutton(self):
+        # PyGTK compat
+        button = Gtk.ToolButton()
+        self.assertEqual(button.props.stock_id, None)
+
+        button = Gtk.ToolButton('gtk-new')
+        self.assertEqual(button.props.stock_id, 'gtk-new')
+
+        icon = Gtk.Image.new_from_stock(Gtk.STOCK_OPEN, Gtk.IconSize.SMALL_TOOLBAR)
+
+        button = Gtk.ToolButton(label='mylabel', icon_widget=icon)
+        self.assertEqual(button.props.label, 'mylabel')
+        self.assertEqual(button.props.icon_widget, icon)
+
+    def test_iconset(self):
+        # PyGTK compat
+        Gtk.IconSet()
+        pixbuf = GdkPixbuf.Pixbuf()
+        Gtk.IconSet(pixbuf)
+
+    def test_viewport(self):
+        # PyGTK compat
+        vadjustment = Gtk.Adjustment()
+        hadjustment = Gtk.Adjustment()
+
+        viewport = Gtk.Viewport(hadjustment=hadjustment,
+                                vadjustment=vadjustment)
+
+        self.assertEqual(viewport.props.vadjustment, vadjustment)
+        self.assertEqual(viewport.props.hadjustment, hadjustment)
+
+
+@unittest.skipUnless(Gtk, 'Gtk not available')
+class TestTreeModel(unittest.TestCase):
+    def test_tree_model_sort(self):
+        self.assertEqual(Gtk.TreeModelSort, gi.overrides.Gtk.TreeModelSort)
+        self.assertRaises(TypeError, Gtk.TreeModelSort)
+        model = Gtk.TreeStore(int, bool)
+        model_sort = Gtk.TreeModelSort(model)
+        self.assertEqual(model_sort.get_model(), model)
+
+    def test_tree_store(self):
+        self.assertEqual(Gtk.TreeStore, gi.overrides.Gtk.TreeStore)
+        self.assertEqual(Gtk.ListStore, gi.overrides.Gtk.ListStore)
+        self.assertEqual(Gtk.TreeModel, gi.overrides.Gtk.TreeModel)
+        self.assertEqual(Gtk.TreeViewColumn, gi.overrides.Gtk.TreeViewColumn)
+
+        class TestPyObject(object):
+            pass
+
+        test_pyobj = TestPyObject()
+        test_pydict = {1: 1, "2": 2, "3": "3"}
+        test_pylist = [1, "2", "3"]
+        tree_store = Gtk.TreeStore(int,
+                                   'gchararray',
+                                   TestGtk.TestClass,
+                                   GObject.TYPE_PYOBJECT,
+                                   object,
+                                   object,
+                                   object,
+                                   bool,
+                                   bool,
+                                   GObject.TYPE_UINT,
+                                   GObject.TYPE_ULONG,
+                                   GObject.TYPE_INT64,
+                                   GObject.TYPE_UINT64,
+                                   GObject.TYPE_UCHAR,
+                                   GObject.TYPE_CHAR)
+
+        parent = None
+        for i in range(97):
+            label = 'this is child #%d' % i
+            testobj = TestGtk.TestClass(self, i, label)
+            parent = tree_store.append(parent, (i,
+                                                label,
+                                                testobj,
+                                                testobj,
+                                                test_pyobj,
+                                                test_pydict,
+                                                test_pylist,
+                                                i % 2,
+                                                bool(i % 2),
+                                                i,
+                                                GObject.G_MAXULONG,
+                                                GObject.G_MININT64,
+                                                0xffffffffffffffff,
+                                                254,
+                                                _bytes('a')
+                                                ))
+        # test set
+        parent = tree_store.append(parent)
+        i = 97
+        label = 'this is child #%d' % i
+        testobj = TestGtk.TestClass(self, i, label)
+        tree_store.set(parent,
+                       0, i,
+                       2, testobj,
+                       1, label,
+                       3, testobj,
+                       4, test_pyobj,
+                       5, test_pydict,
+                       6, test_pylist,
+                       7, i % 2,
+                       8, bool(i % 2),
+                       9, i,
+                       10, GObject.G_MAXULONG,
+                       11, GObject.G_MININT64,
+                       12, 0xffffffffffffffff,
+                       13, 254,
+                       14, _bytes('a'))
+
+        parent = tree_store.append(parent)
+        i = 98
+        label = 'this is child #%d' % i
+        testobj = TestGtk.TestClass(self, i, label)
+        tree_store.set(parent, {0: i,
+                                2: testobj,
+                                1: label,
+                                3: testobj,
+                                4: test_pyobj,
+                                5: test_pydict,
+                                6: test_pylist,
+                                7: i % 2,
+                                8: bool(i % 2),
+                                9: i,
+                                10: GObject.G_MAXULONG,
+                                11: GObject.G_MININT64,
+                                12: 0xffffffffffffffff,
+                                13: 254,
+                                14: _bytes('a')})
+
+        parent = tree_store.append(parent)
+        i = 99
+        label = 'this is child #%d' % i
+        testobj = TestGtk.TestClass(self, i, label)
+        tree_store.set(parent, (0, 2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14),
+                               (i,
+                                testobj,
+                                label,
+                                testobj,
+                                test_pyobj,
+                                test_pydict,
+                                test_pylist,
+                                i % 2,
+                                bool(i % 2),
+                                i,
+                                GObject.G_MAXULONG,
+                                GObject.G_MININT64,
+                                0xffffffffffffffff,
+                                254,
+                                _bytes('a')))
+
+        # len gets the number of children in the root node
+        # since we kept appending to the previous node
+        # there should only be one child of the root
+        self.assertEqual(len(tree_store), 1)
+
+        # walk the tree to see if the values were stored correctly
+        parent = None
+        i = 0
+
+        treeiter = tree_store.iter_children(parent)
+        while treeiter:
+            i = tree_store.get_value(treeiter, 0)
+            s = tree_store.get_value(treeiter, 1)
+            obj = tree_store.get_value(treeiter, 2)
+            obj.check(i, s)
+            obj2 = tree_store.get_value(treeiter, 3)
+            self.assertEqual(obj, obj2)
+
+            pyobj = tree_store.get_value(treeiter, 4)
+            self.assertEqual(pyobj, test_pyobj)
+            pydict = tree_store.get_value(treeiter, 5)
+            self.assertEqual(pydict, test_pydict)
+            pylist = tree_store.get_value(treeiter, 6)
+            self.assertEqual(pylist, test_pylist)
+
+            bool_1 = tree_store.get_value(treeiter, 7)
+            bool_2 = tree_store.get_value(treeiter, 8)
+            self.assertEqual(bool_1, bool_2)
+            self.assertTrue(isinstance(bool_1, bool))
+            self.assertTrue(isinstance(bool_2, bool))
+
+            uint_ = tree_store.get_value(treeiter, 9)
+            self.assertEqual(uint_, i)
+            ulong_ = tree_store.get_value(treeiter, 10)
+            self.assertEqual(ulong_, GObject.G_MAXULONG)
+            int64_ = tree_store.get_value(treeiter, 11)
+            self.assertEqual(int64_, GObject.G_MININT64)
+            uint64_ = tree_store.get_value(treeiter, 12)
+            self.assertEqual(uint64_, 0xffffffffffffffff)
+            uchar_ = tree_store.get_value(treeiter, 13)
+            self.assertEqual(ord(uchar_), 254)
+            char_ = tree_store.get_value(treeiter, 14)
+            self.assertEqual(char_, 'a')
+
+            parent = treeiter
+            treeiter = tree_store.iter_children(parent)
+
+        self.assertEqual(i, 99)
+
+    def test_tree_store_signals(self):
+        tree_store = Gtk.TreeStore(int, bool)
+
+        def on_row_inserted(tree_store, tree_path, tree_iter, signal_list):
+            signal_list.append('row-inserted')
+
+        def on_row_changed(tree_store, tree_path, tree_iter, signal_list):
+            signal_list.append('row-changed')
+
+        signals = []
+        tree_store.connect('row-inserted', on_row_inserted, signals)
+        tree_store.connect('row-changed', on_row_changed, signals)
+
+        # adding rows with and without data should only call one signal
+        tree_store.append(None, (0, False))
+        self.assertEqual(signals, ['row-inserted'])
+
+        signals.pop()
+        tree_store.append(None)
+        self.assertEqual(signals, ['row-inserted'])
+
+        signals.pop()
+        tree_store.prepend(None, (0, False))
+        self.assertEqual(signals, ['row-inserted'])
+
+        signals.pop()
+        tree_store.prepend(None)
+        self.assertEqual(signals, ['row-inserted'])
+
+        signals.pop()
+        tree_store.insert(None, 1, (0, False))
+        self.assertEqual(signals, ['row-inserted'])
+
+        signals.pop()
+        tree_store.insert(None, 1)
+        self.assertEqual(signals, ['row-inserted'])
+
+    def test_list_store(self):
+        class TestPyObject(object):
+            pass
+
+        test_pyobj = TestPyObject()
+        test_pydict = {1: 1, "2": 2, "3": "3"}
+        test_pylist = [1, "2", "3"]
+
+        list_store = Gtk.ListStore(int, str, 'GIOverrideTreeAPITest', object, object, object, bool, bool)
+        for i in range(1, 93):
+            label = 'this is row #%d' % i
+            testobj = TestGtk.TestClass(self, i, label)
+            list_store.append((i,
+                               label,
+                               testobj,
+                               test_pyobj,
+                               test_pydict,
+                               test_pylist,
+                               i % 2,
+                               bool(i % 2)))
+
+        i = 93
+        label = _unicode('this is row #93')
+        treeiter = list_store.append()
+        list_store.set_value(treeiter, 0, i)
+        list_store.set_value(treeiter, 1, label)
+        list_store.set_value(treeiter, 2, TestGtk.TestClass(self, i, label))
+        list_store.set_value(treeiter, 3, test_pyobj)
+        list_store.set_value(treeiter, 4, test_pydict)
+        list_store.set_value(treeiter, 5, test_pylist)
+        list_store.set_value(treeiter, 6, 1)
+        list_store.set_value(treeiter, 7, True)
+
+        # test prepend
+        label = 'this is row #0'
+        list_store.prepend((0,
+                            label,
+                            TestGtk.TestClass(self, 0, label),
+                            test_pyobj,
+                            test_pydict,
+                            test_pylist,
+                            0,
+                            False))
+
+        # test automatic unicode->str conversion
+        i = 94
+        label = _unicode('this is row #94')
+        treeiter = list_store.append((i,
+                                      label,
+                                      TestGtk.TestClass(self, i, label),
+                                      test_pyobj,
+                                      test_pydict,
+                                      test_pylist,
+                                      0,
+                                      False))
+
+        # add sorted items out of order to test insert* apis
+        # also test sending in None to not set a column
+        i = 97
+        label = 'this is row #97'
+        treeiter = list_store.append((None,
+                                      None,
+                                      None,
+                                      test_pyobj,
+                                      None,
+                                      test_pylist,
+                                      1,
+                                      None))
+
+        list_store.set_value(treeiter, 0, i)
+        list_store.set_value(treeiter, 1, label)
+        list_store.set_value(treeiter, 2, TestGtk.TestClass(self, i, label))
+        list_store.set_value(treeiter, 4, test_pydict)
+        list_store.set_value(treeiter, 7, True)
+
+        # this should append
+        i = 99
+        label = 'this is row #99'
+        list_store.insert(9999, (i,
+                                 label,
+                                 TestGtk.TestClass(self, i, label),
+                                 test_pyobj,
+                                 test_pydict,
+                                 test_pylist,
+                                 1,
+                                 True))
+
+        i = 96
+        label = 'this is row #96'
+        list_store.insert_before(treeiter, (i,
+                                            label,
+                                            TestGtk.TestClass(self, i, label),
+                                            test_pyobj,
+                                            test_pydict,
+                                            test_pylist,
+                                            0,
+                                            False))
+
+        i = 98
+        label = 'this is row #98'
+        list_store.insert_after(treeiter, (i,
+                                           label,
+                                           TestGtk.TestClass(self, i, label),
+                                           test_pyobj,
+                                           test_pydict,
+                                           test_pylist,
+                                           0,
+                                           False))
+
+        i = 95
+        label = 'this is row #95'
+        list_store.insert(95, (i,
+                               label,
+                               TestGtk.TestClass(self, i, label),
+                               test_pyobj,
+                               test_pydict,
+                               test_pylist,
+                               1,
+                               True))
+
+        i = 100
+        label = 'this is row #100'
+        treeiter = list_store.append()
+        list_store.set(treeiter,
+                       1, label,
+                       0, i,
+                       2, TestGtk.TestClass(self, i, label),
+                       3, test_pyobj,
+                       4, test_pydict,
+                       5, test_pylist,
+                       6, 0,
+                       7, False)
+        i = 101
+        label = 'this is row #101'
+        treeiter = list_store.append()
+        list_store.set(treeiter, {1: label,
+                                  0: i,
+                                  2: TestGtk.TestClass(self, i, label),
+                                  3: test_pyobj,
+                                  4: test_pydict,
+                                  5: test_pylist,
+                                  6: 1,
+                                  7: True})
+        i = 102
+        label = 'this is row #102'
+        treeiter = list_store.append()
+        list_store.set(treeiter, (1, 0, 2, 3, 4, 5, 6, 7),
+                                 (label,
+                                  i,
+                                  TestGtk.TestClass(self, i, label),
+                                  test_pyobj,
+                                  test_pydict,
+                                  test_pylist,
+                                  0,
+                                  False))
+
+        self.assertEqual(len(list_store), 103)
+
+        # walk the list to see if the values were stored correctly
+        i = 0
+        treeiter = list_store.get_iter_first()
+
+        counter = 0
+        while treeiter:
+            i = list_store.get_value(treeiter, 0)
+            self.assertEqual(i, counter)
+            s = list_store.get_value(treeiter, 1)
+            obj = list_store.get_value(treeiter, 2)
+            obj.check(i, s)
+
+            pyobj = list_store.get_value(treeiter, 3)
+            self.assertEqual(pyobj, test_pyobj)
+            pydict = list_store.get_value(treeiter, 4)
+            self.assertEqual(pydict, test_pydict)
+            pylist = list_store.get_value(treeiter, 5)
+            self.assertEqual(pylist, test_pylist)
+
+            bool_1 = list_store.get_value(treeiter, 6)
+            bool_2 = list_store.get_value(treeiter, 7)
+            self.assertEqual(bool_1, bool_2)
+            self.assertTrue(isinstance(bool_1, bool))
+            self.assertTrue(isinstance(bool_2, bool))
+
+            treeiter = list_store.iter_next(treeiter)
+
+            counter += 1
+
+        self.assertEqual(i, 102)
+
+    def test_list_store_sort(self):
+        def comp1(model, row1, row2, user_data):
+            v1 = model[row1][1]
+            v2 = model[row2][1]
+
+            # make "m" smaller than anything else
+            if v1.startswith('m') and not v2.startswith('m'):
+                return -1
+            if v2.startswith('m') and not v1.startswith('m'):
+                return 1
+            return (v1 > v2) - (v1 < v2)
+
+        list_store = Gtk.ListStore(int, str)
+        list_store.set_sort_func(2, comp1, None)
+        list_store.append((1, 'apples'))
+        list_store.append((3, 'oranges'))
+        list_store.append((2, 'mango'))
+
+        # not sorted yet, should be original order
+        self.assertEqual([list(i) for i in list_store],
+                         [[1, 'apples'], [3, 'oranges'], [2, 'mango']])
+
+        # sort with our custom function
+        list_store.set_sort_column_id(2, Gtk.SortType.ASCENDING)
+        self.assertEqual([list(i) for i in list_store],
+                         [[2, 'mango'], [1, 'apples'], [3, 'oranges']])
+
+        list_store.set_sort_column_id(2, Gtk.SortType.DESCENDING)
+        self.assertEqual([list(i) for i in list_store],
+                         [[3, 'oranges'], [1, 'apples'], [2, 'mango']])
+
+    def test_list_store_signals(self):
+        list_store = Gtk.ListStore(int, bool)
+
+        def on_row_inserted(list_store, tree_path, tree_iter, signal_list):
+            signal_list.append('row-inserted')
+
+        def on_row_changed(list_store, tree_path, tree_iter, signal_list):
+            signal_list.append('row-changed')
+
+        signals = []
+        list_store.connect('row-inserted', on_row_inserted, signals)
+        list_store.connect('row-changed', on_row_changed, signals)
+
+        # adding rows with and without data should only call one signal
+        list_store.append((0, False))
+        self.assertEqual(signals, ['row-inserted'])
+
+        signals.pop()
+        list_store.append()
+        self.assertEqual(signals, ['row-inserted'])
+
+        signals.pop()
+        list_store.prepend((0, False))
+        self.assertEqual(signals, ['row-inserted'])
+
+        signals.pop()
+        list_store.prepend()
+        self.assertEqual(signals, ['row-inserted'])
+
+        signals.pop()
+        list_store.insert(1, (0, False))
+        self.assertEqual(signals, ['row-inserted'])
+
+        signals.pop()
+        list_store.insert(1)
+        self.assertEqual(signals, ['row-inserted'])
+
+    def test_tree_path(self):
+        p1 = Gtk.TreePath()
+        p2 = Gtk.TreePath.new_first()
+        self.assertEqual(p1, p2)
+        self.assertEqual(str(p1), '0')
+        self.assertEqual(len(p1), 1)
+        p1 = Gtk.TreePath(2)
+        p2 = Gtk.TreePath.new_from_string('2')
+        self.assertEqual(p1, p2)
+        self.assertEqual(str(p1), '2')
+        self.assertEqual(len(p1), 1)
+        p1 = Gtk.TreePath('1:2:3')
+        p2 = Gtk.TreePath.new_from_string('1:2:3')
+        self.assertEqual(p1, p2)
+        self.assertEqual(str(p1), '1:2:3')
+        self.assertEqual(len(p1), 3)
+        p1 = Gtk.TreePath((1, 2, 3))
+        p2 = Gtk.TreePath.new_from_string('1:2:3')
+        self.assertEqual(p1, p2)
+        self.assertEqual(str(p1), '1:2:3')
+        self.assertEqual(len(p1), 3)
+        self.assertNotEqual(p1, None)
+        self.assertTrue(p1 > None)
+        self.assertTrue(p1 >= None)
+        self.assertFalse(p1 < None)
+        self.assertFalse(p1 <= None)
+
+        self.assertEqual(tuple(p1), (1, 2, 3))
+        self.assertEqual(p1[0], 1)
+        self.assertEqual(p1[1], 2)
+        self.assertEqual(p1[2], 3)
+        self.assertRaises(IndexError, p1.__getitem__, 3)
+
+    def test_tree_model(self):
+        tree_store = Gtk.TreeStore(int, str)
+
+        self.assertTrue(tree_store)
+        self.assertEqual(len(tree_store), 0)
+        self.assertEqual(tree_store.get_iter_first(), None)
+
+        def get_by_index(row, col=None):
+            if col:
+                return tree_store[row][col]
+            else:
+                return tree_store[row]
+
+        self.assertRaises(TypeError, get_by_index, None)
+        self.assertRaises(TypeError, get_by_index, "")
+        self.assertRaises(TypeError, get_by_index, ())
+
+        self.assertRaises(IndexError, get_by_index, "0")
+        self.assertRaises(IndexError, get_by_index, 0)
+        self.assertRaises(IndexError, get_by_index, (0,))
+
+        self.assertRaises(ValueError, tree_store.get_iter, "0")
+        self.assertRaises(ValueError, tree_store.get_iter, 0)
+        self.assertRaises(ValueError, tree_store.get_iter, (0,))
+
+        self.assertRaises(ValueError, tree_store.get_iter_from_string, "0")
+
+        for row in tree_store:
+            self.fail("Should not be reached")
+
+        class DerivedIntType(int):
+            pass
+
+        class DerivedStrType(str):
+            pass
+
+        for i in range(100):
+            label = 'this is row #%d' % i
+            parent = tree_store.append(None, (DerivedIntType(i), DerivedStrType(label),))
+            self.assertNotEqual(parent, None)
+            for j in range(20):
+                label = 'this is child #%d of node #%d' % (j, i)
+                child = tree_store.append(parent, (j, label,))
+                self.assertNotEqual(child, None)
+
+        self.assertTrue(tree_store)
+        self.assertEqual(len(tree_store), 100)
+
+        self.assertEqual(tree_store.iter_previous(tree_store.get_iter(0)), None)
+
+        for i, row in enumerate(tree_store):
+            self.assertEqual(row.model, tree_store)
+            self.assertEqual(row.parent, None)
+
+            self.assertEqual(tree_store[i].path, row.path)
+            self.assertEqual(tree_store[str(i)].path, row.path)
+            self.assertEqual(tree_store[(i,)].path, row.path)
+
+            self.assertEqual(tree_store[i][0], i)
+            self.assertEqual(tree_store[i][1], "this is row #%d" % i)
+
+            aiter = tree_store.get_iter(i)
+            self.assertEqual(tree_store.get_path(aiter), row.path)
+
+            aiter = tree_store.get_iter(str(i))
+            self.assertEqual(tree_store.get_path(aiter), row.path)
+
+            aiter = tree_store.get_iter((i,))
+            self.assertEqual(tree_store.get_path(aiter), row.path)
+
+            self.assertEqual(tree_store.iter_parent(aiter), row.parent)
+
+            next = tree_store.iter_next(aiter)
+            if i < len(tree_store) - 1:
+                self.assertEqual(tree_store.get_path(next), row.next.path)
+                self.assertEqual(tree_store.get_path(tree_store.iter_previous(next)),
+                                 tree_store.get_path(aiter))
+            else:
+                self.assertEqual(next, None)
+
+            self.assertEqual(tree_store.iter_n_children(row.iter), 20)
+
+            child = tree_store.iter_children(row.iter)
+            for j, childrow in enumerate(row.iterchildren()):
+                child_path = tree_store.get_path(child)
+                self.assertEqual(childrow.path, child_path)
+                self.assertEqual(childrow.parent.path, row.path)
+                self.assertEqual(childrow.path, tree_store[child].path)
+                self.assertEqual(childrow.path, tree_store[child_path].path)
+
+                self.assertEqual(childrow[0], tree_store[child][0])
+                self.assertEqual(childrow[0], j)
+                self.assertEqual(childrow[1], tree_store[child][1])
+                self.assertEqual(childrow[1], 'this is child #%d of node #%d' % (j, i))
+
+                self.assertRaises(IndexError, get_by_index, child, 2)
+
+                tree_store[child][1] = 'this was child #%d of node #%d' % (j, i)
+                self.assertEqual(childrow[1], 'this was child #%d of node #%d' % (j, i))
+
+                nth_child = tree_store.iter_nth_child(row.iter, j)
+                self.assertEqual(childrow.path, tree_store.get_path(nth_child))
+
+                childrow2 = tree_store["%d:%d" % (i, j)]
+                self.assertEqual(childrow.path, childrow2.path)
+
+                childrow2 = tree_store[(i, j,)]
+                self.assertEqual(childrow.path, childrow2.path)
+
+                child = tree_store.iter_next(child)
+                if j < 19:
+                    self.assertEqual(childrow.next.path, tree_store.get_path(child))
+                else:
+                    self.assertEqual(child, childrow.next)
+                    self.assertEqual(child, None)
+
+            self.assertEqual(j, 19)
+
+        self.assertEqual(i, 99)
+
+        # negative indices
+        for i in range(-1, -100, -1):
+            i_real = i + 100
+            self.assertEqual(tree_store[i][0], i_real)
+
+            row = tree_store[i]
+            for j in range(-1, -20, -1):
+                j_real = j + 20
+                path = (i_real, j_real,)
+
+                self.assertEqual(tree_store[path][-2], j_real)
+
+                label = 'this was child #%d of node #%d' % (j_real, i_real)
+                self.assertEqual(tree_store[path][-1], label)
+
+                new_label = 'this still is child #%d of node #%d' % (j_real, i_real)
+                tree_store[path][-1] = new_label
+                self.assertEqual(tree_store[path][-1], new_label)
+
+                self.assertRaises(IndexError, get_by_index, path, -3)
+
+        self.assertRaises(IndexError, get_by_index, -101)
+
+        last_row = tree_store[99]
+        self.assertNotEqual(last_row, None)
+
+        for i, childrow in enumerate(last_row.iterchildren()):
+            if i < 19:
+                self.assertTrue(tree_store.remove(childrow.iter))
+            else:
+                self.assertFalse(tree_store.remove(childrow.iter))
+
+        self.assertEqual(i, 19)
+
+        self.assertEqual(tree_store.iter_n_children(last_row.iter), 0)
+        for childrow in last_row.iterchildren():
+            self.fail("Should not be reached")
+
+        aiter = tree_store.get_iter(10)
+        self.assertRaises(TypeError, tree_store.get, aiter, 1, 'a')
+        self.assertRaises(ValueError, tree_store.get, aiter, 1, -1)
+        self.assertRaises(ValueError, tree_store.get, aiter, 1, 100)
+        self.assertEqual(tree_store.get(aiter, 0, 1), (10, 'this is row #10'))
+
+        # check __delitem__
+        self.assertEqual(len(tree_store), 100)
+        aiter = tree_store.get_iter(10)
+        del tree_store[aiter]
+        self.assertEqual(len(tree_store), 99)
+        self.assertRaises(TypeError, tree_store.__delitem__, None)
+        self.assertRaises(IndexError, tree_store.__delitem__, -101)
+        self.assertRaises(IndexError, tree_store.__delitem__, 101)
+
+    def test_tree_model_get_iter_fail(self):
+        # TreeModel class with a failing get_iter()
+        class MyTreeModel(GObject.GObject, Gtk.TreeModel):
+            def do_get_iter(self, iter):
+                return (False, None)
+
+        tm = MyTreeModel()
+        self.assertEqual(tm.get_iter_first(), None)
+
+    def test_tree_model_edit(self):
+        model = Gtk.ListStore(int, str, float)
+        model.append([1, "one", -0.1])
+        model.append([2, "two", -0.2])
+
+        def set_row(value):
+            model[1] = value
+
+        self.assertRaises(TypeError, set_row, 3)
+        self.assertRaises(TypeError, set_row, "three")
+        self.assertRaises(ValueError, set_row, [])
+        self.assertRaises(ValueError, set_row, [3, "three"])
+
+        model[0] = (3, "three", -0.3)
+
+    def test_tree_row_slice(self):
+        model = Gtk.ListStore(int, str, float)
+        model.append([1, "one", -0.1])
+
+        self.assertEqual([1, "one", -0.1], model[0][:])
+        self.assertEqual([1, "one"], model[0][:2])
+        self.assertEqual(["one", -0.1], model[0][1:])
+        self.assertEqual(["one"], model[0][1:-1])
+        self.assertEqual([1], model[0][:-2])
+        self.assertEqual([], model[0][5:])
+        self.assertEqual([1, -0.1], model[0][0:3:2])
+
+        model[0][:] = (2, "two", -0.2)
+        self.assertEqual([2, "two", -0.2], model[0][:])
+
+        model[0][:2] = (3, "three")
+        self.assertEqual([3, "three", -0.2], model[0][:])
+
+        model[0][1:] = ("four", -0.4)
+        self.assertEqual([3, "four", -0.4], model[0][:])
+
+        model[0][1:-1] = ("five",)
+        self.assertEqual([3, "five", -0.4], model[0][:])
+
+        model[0][0:3:2] = (6, -0.6)
+        self.assertEqual([6, "five", -0.6], model[0][:])
+
+        def set_row1():
+            model[0][5:] = ("doesn't", "matter",)
+
+        self.assertRaises(ValueError, set_row1)
+
+        def set_row2():
+            model[0][:1] = (0, "zero", 0)
+
+        self.assertRaises(ValueError, set_row2)
+
+        def set_row3():
+            model[0][:2] = ("0", 0)
+
+        self.assertRaises(ValueError, set_row3)
+
+
+@unittest.skipUnless(Gtk, 'Gtk not available')
+class TestTreeView(unittest.TestCase):
+    def test_tree_view(self):
+        store = Gtk.ListStore(int, str)
+        store.append((0, "foo"))
+        store.append((1, "bar"))
+        view = Gtk.TreeView()
+        # FIXME: We can't easily call get_cursor() to make sure this works as
+        # expected as we need to realize and focus the column; the following
+        # will raise a Gtk-CRITICAL which we ignore for now
+        old_mask = GLib.log_set_always_fatal(
+            GLib.LogLevelFlags.LEVEL_WARNING | GLib.LogLevelFlags.LEVEL_ERROR)
+        view.set_cursor(store[1].path)
+        view.set_cursor(str(store[1].path))
+
+        view.get_cell_area(store[1].path)
+        view.get_cell_area(str(store[1].path))
+
+        GLib.log_set_always_fatal(old_mask)
+
+    def test_tree_view_column(self):
+        cell = Gtk.CellRendererText()
+        Gtk.TreeViewColumn(title='This is just a test',
+                           cell_renderer=cell,
+                           text=0,
+                           style=2)
+
+    def test_tree_view_add_column_with_attributes(self):
+        model = Gtk.ListStore(str, str, str)
+        # deliberately use out-of-order sorting here; we assign column 0 to
+        # model index 2, etc.
+        model.append(['cell13', 'cell11', 'cell12'])
+        model.append(['cell23', 'cell21', 'cell22'])
+
+        tree = Gtk.TreeView(model)
+        cell1 = Gtk.CellRendererText()
+        cell2 = Gtk.CellRendererText()
+        cell3 = Gtk.CellRendererText()
+        cell4 = Gtk.CellRendererText()
+
+        tree.insert_column_with_attributes(0, 'Head2', cell2, text=2)
+        tree.insert_column_with_attributes(0, 'Head1', cell1, text=1)
+        tree.insert_column_with_attributes(-1, 'Head3', cell3, text=0)
+        # unconnected
+        tree.insert_column_with_attributes(-1, 'Head4', cell4)
+
+        # might cause a Pango warning, do not break on this
+        old_mask = GLib.log_set_always_fatal(
+            GLib.LogLevelFlags.LEVEL_CRITICAL | GLib.LogLevelFlags.LEVEL_ERROR)
+        # causes the widget to get realized and cellN.props.text receive a
+        # value, otherwise it will be None.
+        tree.get_preferred_size()
+        GLib.log_set_always_fatal(old_mask)
+
+        self.assertEqual(tree.get_column(0).get_title(), 'Head1')
+        self.assertEqual(tree.get_column(1).get_title(), 'Head2')
+        self.assertEqual(tree.get_column(2).get_title(), 'Head3')
+        self.assertEqual(tree.get_column(3).get_title(), 'Head4')
+
+        # cursor should be at the first row
+        self.assertEqual(cell1.props.text, 'cell11')
+        self.assertEqual(cell2.props.text, 'cell12')
+        self.assertEqual(cell3.props.text, 'cell13')
+        self.assertEqual(cell4.props.text, None)
+
+    def test_tree_view_column_set_attributes(self):
+        store = Gtk.ListStore(int, str)
+        directors = ['Fellini', 'Tarantino', 'Tarkovskiy']
+        for i, director in enumerate(directors):
+            store.append([i, director])
+
+        treeview = Gtk.TreeView()
+        treeview.set_model(store)
+
+        column = Gtk.TreeViewColumn()
+        treeview.append_column(column)
+
+        cell = Gtk.CellRendererText()
+        column.pack_start(cell, expand=True)
+        column.set_attributes(cell, text=1)
+
+        # might cause a Pango warning, do not break on this
+        old_mask = GLib.log_set_always_fatal(
+            GLib.LogLevelFlags.LEVEL_CRITICAL | GLib.LogLevelFlags.LEVEL_ERROR)
+        # This will make cell.props.text receive a value, otherwise it
+        # will be None.
+        treeview.get_preferred_size()
+        GLib.log_set_always_fatal(old_mask)
+
+        self.assertTrue(cell.props.text in directors)
+
+    def test_tree_selection(self):
+        store = Gtk.ListStore(int, str)
+        for i in range(10):
+            store.append((i, "foo"))
+        view = Gtk.TreeView()
+        view.set_model(store)
+        firstpath = store.get_path(store.get_iter_first())
+        sel = view.get_selection()
+
+        sel.select_path(firstpath)
+        (m, s) = sel.get_selected()
+        self.assertEqual(m, store)
+        self.assertEqual(store.get_path(s), firstpath)
+
+        sel.select_path(0)
+        (m, s) = sel.get_selected()
+        self.assertEqual(m, store)
+        self.assertEqual(store.get_path(s), firstpath)
+
+        sel.select_path("0:0")
+        (m, s) = sel.get_selected()
+        self.assertEqual(m, store)
+        self.assertEqual(store.get_path(s), firstpath)
+
+        sel.select_path((0, 0))
+        (m, s) = sel.get_selected()
+        self.assertEqual(m, store)
+        self.assertEqual(store.get_path(s), firstpath)
+
+    def test_tree_iter_user_data_int(self):
+        pyiter = Gtk.TreeIter()
+        rawiter = RawTreeIter.from_iter(pyiter)
+
+        initial_ref_count = sys.getrefcount(1)
+        pyiter.user_data = 1
+
+        # verify setting int value increases refcount of the "1" object
+        self.assertEqual(sys.getrefcount(1), initial_ref_count + 1)
+        # verify the address of the '1' object is what user_data is actually set to.
+        self.assertEqual(id(1), rawiter.contents.user_data)
+
+    def test_tree_iter_user_data_null(self):
+        pyiter = Gtk.TreeIter()
+        rawiter = RawTreeIter.from_iter(pyiter)
+
+        self.assertEqual(pyiter.user_data, None)
+        self.assertEqual(rawiter.contents.user_data, None)
+
+        # Setting user_data to None should not increase None's ref count.
+        # and the raw iters user_data should also come back as None/NULL.
+        initial_ref_count = sys.getrefcount(None)
+        pyiter.user_data = None
+        self.assertEqual(sys.getrefcount(None), initial_ref_count)
+        self.assertEqual(rawiter.contents.user_data, None)
+
+
+@unittest.skipUnless(Gtk, 'Gtk not available')
+class TestTextBuffer(unittest.TestCase):
+    def test_text_buffer(self):
+        self.assertEqual(Gtk.TextBuffer, gi.overrides.Gtk.TextBuffer)
+        buffer = Gtk.TextBuffer()
+        tag = buffer.create_tag('title', font='Sans 18')
+
+        self.assertEqual(tag.props.name, 'title')
+        self.assertEqual(tag.props.font, 'Sans 18')
+
+        (start, end) = buffer.get_bounds()
+
+        mark = buffer.create_mark(None, start)
+        self.assertFalse(mark.get_left_gravity())
+
+        buffer.set_text('Hello Jane Hello Bob')
+        (start, end) = buffer.get_bounds()
+        text = buffer.get_text(start, end, False)
+        self.assertEqual(text, 'Hello Jane Hello Bob')
+
+        buffer.set_text('')
+        (start, end) = buffer.get_bounds()
+        text = buffer.get_text(start, end, False)
+        self.assertEqual(text, '')
+
+        buffer.insert(end, 'HelloHello')
+        buffer.insert(end, ' Bob')
+
+        cursor_iter = end.copy()
+        cursor_iter.backward_chars(9)
+        buffer.place_cursor(cursor_iter)
+        buffer.insert_at_cursor(' Jane ')
+
+        (start, end) = buffer.get_bounds()
+        text = buffer.get_text(start, end, False)
+        self.assertEqual(text, 'Hello Jane Hello Bob')
+
+        sel = buffer.get_selection_bounds()
+        self.assertEqual(sel, ())
+        buffer.select_range(start, end)
+        sel = buffer.get_selection_bounds()
+        self.assertTrue(sel[0].equal(start))
+        self.assertTrue(sel[1].equal(end))
+
+        buffer.set_text('')
+        buffer.insert_with_tags(buffer.get_start_iter(), 'HelloHello', tag)
+        (start, end) = buffer.get_bounds()
+        self.assertTrue(start.begins_tag(tag))
+        self.assertTrue(start.has_tag(tag))
+
+        buffer.set_text('')
+        buffer.insert_with_tags_by_name(buffer.get_start_iter(), 'HelloHello', 'title')
+        (start, end) = buffer.get_bounds()
+        self.assertTrue(start.begins_tag(tag))
+        self.assertTrue(start.has_tag(tag))
+
+        self.assertRaises(ValueError, buffer.insert_with_tags_by_name,
+                          buffer.get_start_iter(), 'HelloHello', 'unknowntag')
+
+    def test_text_iter(self):
+        self.assertEqual(Gtk.TextIter, gi.overrides.Gtk.TextIter)
+        buffer = Gtk.TextBuffer()
+        buffer.set_text('Hello Jane Hello Bob')
+        tag = buffer.create_tag('title', font='Sans 18')
+        (start, end) = buffer.get_bounds()
+        start.forward_chars(10)
+        buffer.apply_tag(tag, start, end)
+        self.assertTrue(start.begins_tag())
+        self.assertTrue(end.ends_tag())
+        self.assertTrue(start.toggles_tag())
+        self.assertTrue(end.toggles_tag())
+        start.backward_chars(1)
+        self.assertFalse(start.begins_tag())
+        self.assertFalse(start.ends_tag())
+        self.assertFalse(start.toggles_tag())
+
+    def test_text_buffer_search(self):
+        buffer = Gtk.TextBuffer()
+        buffer.set_text('Hello World Hello GNOME')
+
+        i = buffer.get_iter_at_offset(0)
+        self.assertTrue(isinstance(i, Gtk.TextIter))
+
+        self.assertEqual(i.forward_search('world', 0, None), None)
+
+        (start, end) = i.forward_search('World', 0, None)
+        self.assertEqual(start.get_offset(), 6)
+        self.assertEqual(end.get_offset(), 11)
+
+        (start, end) = i.forward_search('world',
+                                        Gtk.TextSearchFlags.CASE_INSENSITIVE,
+                                        None)
+        self.assertEqual(start.get_offset(), 6)
+        self.assertEqual(end.get_offset(), 11)
diff --git a/tests/test_overrides_pango.py b/tests/test_overrides_pango.py
new file mode 100644 (file)
index 0000000..51f4f6a
--- /dev/null
@@ -0,0 +1,32 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# vim: tabstop=4 shiftwidth=4 expandtab
+
+import unittest
+
+try:
+    from gi.repository import Pango
+    Pango
+except ImportError:
+    Pango = None
+
+
+@unittest.skipUnless(Pango, 'Pango not available')
+class TestPango(unittest.TestCase):
+
+    def test_default_font_description(self):
+        desc = Pango.FontDescription()
+        self.assertEqual(desc.get_variant(), Pango.Variant.NORMAL)
+
+    def test_font_description(self):
+        desc = Pango.FontDescription('monospace')
+        self.assertEqual(desc.get_family(), 'monospace')
+        self.assertEqual(desc.get_variant(), Pango.Variant.NORMAL)
+
+    def test_layout(self):
+        self.assertRaises(TypeError, Pango.Layout)
+        context = Pango.Context()
+        layout = Pango.Layout(context)
+        self.assertEqual(layout.get_context(), context)
+
+        layout.set_markup("Foobar")
+        self.assertEqual(layout.get_text(), "Foobar")
index 54afd11..405375d 100644 (file)
@@ -2,17 +2,25 @@
 
 import sys
 import struct
+import types
 import unittest
 
-import gobject
-from gobject import GObject, GType, GEnum, new, PARAM_READWRITE, \
-     PARAM_CONSTRUCT, PARAM_READABLE, PARAM_WRITABLE, PARAM_CONSTRUCT_ONLY
-from gobject.constants import \
-     TYPE_INT, TYPE_UINT, TYPE_LONG, \
-     TYPE_ULONG, TYPE_INT64, TYPE_UINT64
-from gobject.constants import \
-     G_MININT, G_MAXINT, G_MAXUINT, G_MINLONG, G_MAXLONG, \
-     G_MAXULONG
+from gi.repository import GObject
+from gi.repository.GObject import GType, new, PARAM_READWRITE, \
+    PARAM_CONSTRUCT, PARAM_READABLE, PARAM_WRITABLE, PARAM_CONSTRUCT_ONLY
+from gi.repository.GObject import \
+    TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG, TYPE_INT64, \
+    TYPE_UINT64, TYPE_GTYPE, TYPE_INVALID, TYPE_NONE, TYPE_STRV, \
+    TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR, TYPE_BOOLEAN, TYPE_FLOAT, \
+    TYPE_DOUBLE, TYPE_POINTER, TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, \
+    TYPE_STRING, TYPE_PYOBJECT
+
+from gi.repository.GObject import \
+    G_MININT, G_MAXINT, G_MAXUINT, G_MINLONG, G_MAXLONG, G_MAXULONG
+
+from gi.repository import Gio
+from gi.repository import GLib
+from gi.repository import GIMarshallingTests
 
 if sys.version_info < (3, 0):
     TEST_UTF8 = "\xe2\x99\xa5"
@@ -23,48 +31,71 @@ else:
 
 from compathelper import _long
 
-class PropertyObject(GObject):
-    normal = gobject.property(type=str)
-    construct = gobject.property(
+
+class PropertyObject(GObject.GObject):
+    normal = GObject.Property(type=str)
+    construct = GObject.Property(
         type=str,
-        flags=PARAM_READWRITE|PARAM_CONSTRUCT, default='default')
-    construct_only = gobject.property(
+        flags=PARAM_READWRITE | PARAM_CONSTRUCT, default='default')
+    construct_only = GObject.Property(
         type=str,
-        flags=PARAM_READWRITE|PARAM_CONSTRUCT_ONLY)
-    uint64 = gobject.property(
-        type=TYPE_UINT64, flags=PARAM_READWRITE|PARAM_CONSTRUCT)
+        flags=PARAM_READWRITE | PARAM_CONSTRUCT_ONLY)
+    uint64 = GObject.Property(
+        type=TYPE_UINT64, flags=PARAM_READWRITE | PARAM_CONSTRUCT)
+
+    enum = GObject.Property(
+        type=Gio.SocketType, default=Gio.SocketType.STREAM)
+
+    boxed = GObject.Property(
+        type=GLib.Regex, flags=PARAM_READWRITE | PARAM_CONSTRUCT)
+
+    flags = GObject.Property(
+        type=GIMarshallingTests.Flags, flags=PARAM_READWRITE | PARAM_CONSTRUCT,
+        default=GIMarshallingTests.Flags.VALUE1)
+
+    gtype = GObject.Property(
+        type=TYPE_GTYPE, flags=PARAM_READWRITE | PARAM_CONSTRUCT)
+
+    strings = GObject.Property(
+        type=TYPE_STRV, flags=PARAM_READWRITE | PARAM_CONSTRUCT)
+
 
-class TestProperties(unittest.TestCase):
-    def testGetSet(self):
+class TestPropertyObject(unittest.TestCase):
+    def test_get_set(self):
         obj = PropertyObject()
         obj.props.normal = "value"
         self.assertEqual(obj.props.normal, "value")
 
-    def testListWithInstance(self):
+    def test_hasattr_on_object(self):
         obj = PropertyObject()
-        self.failUnless(hasattr(obj.props, "normal"))
+        self.assertTrue(hasattr(obj.props, "normal"))
 
-    def testListWithoutInstance(self):
-        self.failUnless(hasattr(PropertyObject.props, "normal"))
+    def test_hasattr_on_class(self):
+        self.assertTrue(hasattr(PropertyObject.props, "normal"))
 
-    def testSetNoInstance(self):
+    def test_set_on_class(self):
         def set(obj):
             obj.props.normal = "foobar"
 
         self.assertRaises(TypeError, set, PropertyObject)
 
-    def testIterator(self):
+    def test_iteration(self):
         for obj in (PropertyObject.props, PropertyObject().props):
             for pspec in obj:
                 gtype = GType(pspec)
                 self.assertEqual(gtype.parent.name, 'GParam')
-                self.failUnless(pspec.name in ['normal',
+                self.assertTrue(pspec.name in ['normal',
                                                'construct',
                                                'construct-only',
-                                               'uint64'])
-            self.assertEqual(len(obj), 4)
-
-    def testNormal(self):
+                                               'uint64',
+                                               'enum',
+                                               'flags',
+                                               'gtype',
+                                               'strings',
+                                               'boxed'])
+            self.assertEqual(len(obj), 9)
+
+    def test_normal(self):
         obj = new(PropertyObject, normal="123")
         self.assertEqual(obj.props.normal, "123")
         obj.set_property('normal', '456')
@@ -72,15 +103,15 @@ class TestProperties(unittest.TestCase):
         obj.props.normal = '789'
         self.assertEqual(obj.props.normal, "789")
 
-    def testConstruct(self):
+    def test_construct(self):
         obj = new(PropertyObject, construct="123")
         self.assertEqual(obj.props.construct, "123")
         obj.set_property('construct', '456')
         self.assertEqual(obj.props.construct, "456")
         obj.props.construct = '789'
         self.assertEqual(obj.props.construct, "789")
-   
-    def testUTF8(self):
+
+    def test_utf8(self):
         obj = new(PropertyObject, construct_only=UNICODE_UTF8)
         self.assertEqual(obj.props.construct_only, TEST_UTF8)
         obj.set_property('construct', UNICODE_UTF8)
@@ -88,7 +119,7 @@ class TestProperties(unittest.TestCase):
         obj.props.normal = UNICODE_UTF8
         self.assertEqual(obj.props.normal, TEST_UTF8)
 
-    def testIntToStr(self):
+    def test_int_to_str(self):
         obj = new(PropertyObject, construct_only=1)
         self.assertEqual(obj.props.construct_only, '1')
         obj.set_property('construct', '2')
@@ -96,7 +127,7 @@ class TestProperties(unittest.TestCase):
         obj.props.normal = 3
         self.assertEqual(obj.props.normal, '3')
 
-    def testConstructOnly(self):
+    def test_construct_only(self):
         obj = new(PropertyObject, construct_only="123")
         self.assertEqual(obj.props.construct_only, "123")
         self.assertRaises(TypeError,
@@ -104,7 +135,7 @@ class TestProperties(unittest.TestCase):
         self.assertRaises(TypeError,
                           obj.set_property, 'construct-only', '456')
 
-    def testUint64(self):
+    def test_uint64(self):
         obj = new(PropertyObject)
         self.assertEqual(obj.props.uint64, 0)
         obj.props.uint64 = _long(1)
@@ -115,22 +146,164 @@ class TestProperties(unittest.TestCase):
         self.assertRaises((TypeError, OverflowError), obj.set_property, "uint64", _long(-1))
         self.assertRaises((TypeError, OverflowError), obj.set_property, "uint64", -1)
 
-    def testUInt64DefaultValue(self):
+    def test_uint64_default_value(self):
         try:
-            class TimeControl(GObject):
+            class TimeControl(GObject.GObject):
                 __gproperties__ = {
                     'time': (TYPE_UINT64, 'Time', 'Time',
-                             _long(0), (1<<64) - 1, _long(0),
+                             _long(0), (1 << 64) - 1, _long(0),
                              PARAM_READABLE)
                     }
         except OverflowError:
             (etype, ex) = sys.exc_info()[2:]
             self.fail(str(ex))
 
-    def testRange(self):
+    def test_enum(self):
+        obj = new(PropertyObject)
+        self.assertEqual(obj.props.enum, Gio.SocketType.STREAM)
+        self.assertEqual(obj.enum, Gio.SocketType.STREAM)
+        obj.enum = Gio.SocketType.DATAGRAM
+        self.assertEqual(obj.props.enum, Gio.SocketType.DATAGRAM)
+        self.assertEqual(obj.enum, Gio.SocketType.DATAGRAM)
+        obj.props.enum = Gio.SocketType.STREAM
+        self.assertEqual(obj.props.enum, Gio.SocketType.STREAM)
+        self.assertEqual(obj.enum, Gio.SocketType.STREAM)
+        obj.props.enum = 2
+        self.assertEqual(obj.props.enum, Gio.SocketType.DATAGRAM)
+        self.assertEqual(obj.enum, Gio.SocketType.DATAGRAM)
+        obj.enum = 1
+        self.assertEqual(obj.props.enum, Gio.SocketType.STREAM)
+        self.assertEqual(obj.enum, Gio.SocketType.STREAM)
+
+        self.assertRaises(TypeError, setattr, obj, 'enum', 'foo')
+        self.assertRaises(TypeError, setattr, obj, 'enum', object())
+
+        self.assertRaises(TypeError, GObject.Property, type=Gio.SocketType)
+        self.assertRaises(TypeError, GObject.Property, type=Gio.SocketType,
+                          default=Gio.SocketProtocol.TCP)
+        self.assertRaises(TypeError, GObject.Property, type=Gio.SocketType,
+                          default=object())
+        self.assertRaises(TypeError, GObject.Property, type=Gio.SocketType,
+                          default=1)
+
+    def test_flags(self):
+        obj = new(PropertyObject)
+        self.assertEqual(obj.props.flags, GIMarshallingTests.Flags.VALUE1)
+        self.assertEqual(obj.flags, GIMarshallingTests.Flags.VALUE1)
+
+        obj.flags = GIMarshallingTests.Flags.VALUE2 | GIMarshallingTests.Flags.VALUE3
+        self.assertEqual(obj.props.flags, GIMarshallingTests.Flags.VALUE2 | GIMarshallingTests.Flags.VALUE3)
+        self.assertEqual(obj.flags, GIMarshallingTests.Flags.VALUE2 | GIMarshallingTests.Flags.VALUE3)
+
+        self.assertRaises(TypeError, setattr, obj, 'flags', 'foo')
+        self.assertRaises(TypeError, setattr, obj, 'flags', object())
+        self.assertRaises(TypeError, setattr, obj, 'flags', None)
+
+        self.assertRaises(TypeError, GObject.Property,
+                          type=GIMarshallingTests.Flags, default='foo')
+        self.assertRaises(TypeError, GObject.Property,
+                          type=GIMarshallingTests.Flags, default=object())
+        self.assertRaises(TypeError, GObject.Property,
+                          type=GIMarshallingTests.Flags, default=None)
+
+    def test_gtype(self):
+        obj = new(PropertyObject)
+
+        self.assertEqual(obj.props.gtype, TYPE_NONE)
+        self.assertEqual(obj.gtype, TYPE_NONE)
+
+        obj.gtype = TYPE_UINT64
+        self.assertEqual(obj.props.gtype, TYPE_UINT64)
+        self.assertEqual(obj.gtype, TYPE_UINT64)
+
+        obj.gtype = TYPE_INVALID
+        self.assertEqual(obj.props.gtype, TYPE_INVALID)
+        self.assertEqual(obj.gtype, TYPE_INVALID)
+
+        # GType parameters do not support defaults in GLib
+        self.assertRaises(TypeError, GObject.Property, type=TYPE_GTYPE,
+                          default=TYPE_INT)
+
+        # incompatible type
+        self.assertRaises(TypeError, setattr, obj, 'gtype', 'foo')
+        self.assertRaises(TypeError, setattr, obj, 'gtype', object())
+
+        self.assertRaises(TypeError, GObject.Property, type=TYPE_GTYPE,
+                          default='foo')
+        self.assertRaises(TypeError, GObject.Property, type=TYPE_GTYPE,
+                          default=object())
+
+        # set in constructor
+        obj = new(PropertyObject, gtype=TYPE_UINT)
+        self.assertEqual(obj.props.gtype, TYPE_UINT)
+        self.assertEqual(obj.gtype, TYPE_UINT)
+
+    def test_boxed(self):
+        obj = new(PropertyObject)
+
+        regex = GLib.Regex.new('[a-z]*', 0, 0)
+        obj.props.boxed = regex
+        self.assertEqual(obj.props.boxed.get_pattern(), '[a-z]*')
+        self.assertEqual(obj.boxed.get_pattern(), '[a-z]*')
+
+        self.assertRaises(TypeError, setattr, obj, 'boxed', 'foo')
+        self.assertRaises(TypeError, setattr, obj, 'boxed', object())
+
+    def test_strings(self):
+        obj = new(PropertyObject)
+
+        # Should work with actual GStrv objects as well as
+        # Python string lists
+        class GStrv(list):
+            __gtype__ = GObject.TYPE_STRV
+
+        self.assertEqual(obj.props.strings, GStrv([]))
+        self.assertEqual(obj.strings, GStrv([]))
+        self.assertEqual(obj.props.strings, [])
+        self.assertEqual(obj.strings, [])
+
+        obj.strings = ['hello', 'world']
+        self.assertEqual(obj.props.strings, ['hello', 'world'])
+        self.assertEqual(obj.strings, ['hello', 'world'])
+
+        obj.strings = GStrv(['hello', 'world'])
+        self.assertEqual(obj.props.strings, GStrv(['hello', 'world']))
+        self.assertEqual(obj.strings, GStrv(['hello', 'world']))
+
+        obj.strings = []
+        self.assertEqual(obj.strings, [])
+        obj.strings = GStrv([])
+        self.assertEqual(obj.strings, GStrv([]))
+
+        p = GObject.Property(type=TYPE_STRV, default=['hello', '1'])
+        self.assertEqual(p.default, ['hello', '1'])
+        self.assertEqual(p.type, TYPE_STRV)
+        p = GObject.Property(type=TYPE_STRV, default=GStrv(['hello', '1']))
+        self.assertEqual(p.default, ['hello', '1'])
+        self.assertEqual(p.type, TYPE_STRV)
+
+        # set in constructor
+        obj = new(PropertyObject, strings=['hello', 'world'])
+        self.assertEqual(obj.props.strings, ['hello', 'world'])
+        self.assertEqual(obj.strings, ['hello', 'world'])
+
+        # wrong types
+        self.assertRaises(TypeError, setattr, obj, 'strings', 1)
+        self.assertRaises(TypeError, setattr, obj, 'strings', 'foo')
+        self.assertRaises(TypeError, setattr, obj, 'strings', ['foo', 1])
+
+        self.assertRaises(TypeError, GObject.Property, type=TYPE_STRV,
+                          default=1)
+        self.assertRaises(TypeError, GObject.Property, type=TYPE_STRV,
+                          default='foo')
+        self.assertRaises(TypeError, GObject.Property, type=TYPE_STRV,
+                          default=['hello', 1])
+
+    def test_range(self):
         # kiwi code
         def max(c):
             return 2 ** ((8 * struct.calcsize(c)) - 1) - 1
+
         def umax(c):
             return 2 ** (8 * struct.calcsize(c)) - 1
 
@@ -144,26 +317,26 @@ class TestProperties(unittest.TestCase):
         minint64 = -maxint64 - 1
         maxuint64 = umax('Q')
 
-        types = dict(int=(TYPE_INT, minint, maxint),
-                     uint=(TYPE_UINT, 0, maxuint),
-                     long=(TYPE_LONG, minlong, maxlong),
-                     ulong=(TYPE_ULONG, 0, maxulong),
-                     int64=(TYPE_INT64, minint64, maxint64),
-                     uint64=(TYPE_UINT64, 0, maxuint64))
+        types_ = dict(int=(TYPE_INT, minint, maxint),
+                      uint=(TYPE_UINT, 0, maxuint),
+                      long=(TYPE_LONG, minlong, maxlong),
+                      ulong=(TYPE_ULONG, 0, maxulong),
+                      int64=(TYPE_INT64, minint64, maxint64),
+                      uint64=(TYPE_UINT64, 0, maxuint64))
 
-        def build_gproperties(types):
+        def build_gproperties(types_):
             d = {}
-            for key, (gtype, min, max) in types.items():
+            for key, (gtype, min, max) in types_.items():
                 d[key] = (gtype, 'blurb', 'desc', min, max, 0,
                           PARAM_READABLE | PARAM_WRITABLE)
             return d
 
-        class RangeCheck(GObject):
-            __gproperties__ = build_gproperties(types)
+        class RangeCheck(GObject.GObject):
+            __gproperties__ = build_gproperties(types_)
 
             def __init__(self):
                 self.values = {}
-                GObject.__init__(self)
+                GObject.GObject.__init__(self)
 
             def do_set_property(self, pspec, value):
                 self.values[pspec.name] = value
@@ -185,7 +358,7 @@ class TestProperties(unittest.TestCase):
         self.assertEqual(RangeCheck.props.uint64.maximum, maxuint64)
 
         obj = RangeCheck()
-        for key, (gtype, min, max) in types.items():
+        for key, (gtype, min, max) in types_.items():
             self.assertEqual(obj.get_property(key),
                              getattr(RangeCheck.props, key).default_value)
 
@@ -195,8 +368,7 @@ class TestProperties(unittest.TestCase):
             obj.set_property(key, max)
             self.assertEqual(obj.get_property(key), max)
 
-
-    def testMulti(self):
+    def test_multi(self):
         obj = PropertyObject()
         obj.set_properties(normal="foo",
                            uint64=7)
@@ -204,18 +376,19 @@ class TestProperties(unittest.TestCase):
         self.assertEqual(normal, "foo")
         self.assertEqual(uint64, 7)
 
+
 class TestProperty(unittest.TestCase):
-    def testSimple(self):
-        class C(gobject.GObject):
-            str = gobject.property(type=str)
-            int = gobject.property(type=int)
-            float = gobject.property(type=float)
-            long = gobject.property(type=_long)
-
-        self.failUnless(hasattr(C.props, 'str'))
-        self.failUnless(hasattr(C.props, 'int'))
-        self.failUnless(hasattr(C.props, 'float'))
-        self.failUnless(hasattr(C.props, 'long'))
+    def test_simple(self):
+        class C(GObject.GObject):
+            str = GObject.Property(type=str)
+            int = GObject.Property(type=int)
+            float = GObject.Property(type=float)
+            long = GObject.Property(type=_long)
+
+        self.assertTrue(hasattr(C.props, 'str'))
+        self.assertTrue(hasattr(C.props, 'int'))
+        self.assertTrue(hasattr(C.props, 'float'))
+        self.assertTrue(hasattr(C.props, 'long'))
 
         o = C()
         self.assertEqual(o.str, '')
@@ -234,65 +407,99 @@ class TestProperty(unittest.TestCase):
         o.long = _long(100)
         self.assertEqual(o.long, _long(100))
 
-    def testCustomGetter(self):
-        class C(gobject.GObject):
+    def test_custom_getter(self):
+        class C(GObject.GObject):
             def get_prop(self):
                 return 'value'
-            prop = gobject.property(getter=get_prop)
+            prop = GObject.Property(getter=get_prop)
 
         o = C()
         self.assertEqual(o.prop, 'value')
         self.assertRaises(TypeError, setattr, o, 'prop', 'xxx')
 
-    def testCustomSetter(self):
-        class C(gobject.GObject):
+    def test_custom_setter(self):
+        class C(GObject.GObject):
             def set_prop(self, value):
                 self._value = value
-            prop = gobject.property(setter=set_prop)
+            prop = GObject.Property(setter=set_prop)
 
             def __init__(self):
                 self._value = None
-                gobject.GObject.__init__(self)
+                GObject.GObject.__init__(self)
 
         o = C()
-        self.assertEquals(o._value, None)
+        self.assertEqual(o._value, None)
         o.prop = 'bar'
-        self.assertEquals(o._value, 'bar')
+        self.assertEqual(o._value, 'bar')
         self.assertRaises(TypeError, getattr, o, 'prop')
 
-    def testErrors(self):
-        self.assertRaises(TypeError, gobject.property, type='str')
-        self.assertRaises(TypeError, gobject.property, nick=False)
-        self.assertRaises(TypeError, gobject.property, blurb=False)
+    def test_decorator_default(self):
+        class C(GObject.GObject):
+            _value = 'value'
+
+            @GObject.Property
+            def value(self):
+                return self._value
+
+            @value.setter
+            def value_setter(self, value):
+                self._value = value
+
+        o = C()
+        self.assertEqual(o.value, 'value')
+        o.value = 'blah'
+        self.assertEqual(o.value, 'blah')
+        self.assertEqual(o.props.value, 'blah')
+
+    def test_decorator_with_call(self):
+        class C(GObject.GObject):
+            _value = 1
+
+            @GObject.Property(type=int, default=1, minimum=1, maximum=10)
+            def typedValue(self):
+                return self._value
+
+            @typedValue.setter
+            def typedValue_setter(self, value):
+                self._value = value
+
+        o = C()
+        self.assertEqual(o.typedValue, 1)
+        o.typedValue = 5
+        self.assertEqual(o.typedValue, 5)
+        self.assertEqual(o.props.typedValue, 5)
+
+    def test_errors(self):
+        self.assertRaises(TypeError, GObject.Property, type='str')
+        self.assertRaises(TypeError, GObject.Property, nick=False)
+        self.assertRaises(TypeError, GObject.Property, blurb=False)
         # this never fail while bool is a subclass of int
         # >>> bool.__bases__
         # (<type 'int'>,)
-        # self.assertRaises(TypeError, gobject.property, type=bool, default=0)
-        self.assertRaises(TypeError, gobject.property, type=bool, default='ciao mamma')
-        self.assertRaises(TypeError, gobject.property, type=bool)
-        self.assertRaises(TypeError, gobject.property, type=GEnum)
-        self.assertRaises(TypeError, gobject.property, type=GEnum, default=0)
-        self.assertRaises(TypeError, gobject.property, type=object, default=0)
-        self.assertRaises(TypeError, gobject.property, type=complex)
-        self.assertRaises(TypeError, gobject.property, flags=-10)
-
-    def testDefaults(self):
-        p1 = gobject.property(type=bool, default=True)
-        p2 = gobject.property(type=bool, default=False)
-
-    def testNameWithUnderscore(self):
-        class C(gobject.GObject):
-            prop_name = gobject.property(type=int)
+        # self.assertRaises(TypeError, GObject.Property, type=bool, default=0)
+        self.assertRaises(TypeError, GObject.Property, type=bool, default='ciao mamma')
+        self.assertRaises(TypeError, GObject.Property, type=bool)
+        self.assertRaises(TypeError, GObject.Property, type=object, default=0)
+        self.assertRaises(TypeError, GObject.Property, type=complex)
+        self.assertRaises(TypeError, GObject.Property, flags=-10)
+
+    def test_defaults(self):
+        GObject.Property(type=bool, default=True)
+        GObject.Property(type=bool, default=False)
+
+    def test_name_with_underscore(self):
+        class C(GObject.GObject):
+            prop_name = GObject.Property(type=int)
         o = C()
         o.prop_name = 10
         self.assertEqual(o.prop_name, 10)
 
-    def testRange(self):
+    def test_range(self):
         maxint64 = 2 ** 62 - 1
         minint64 = -2 ** 62 - 1
         maxuint64 = 2 ** 63 - 1
 
-        types = [
+        types_ = [
             (TYPE_INT, G_MININT, G_MAXINT),
             (TYPE_UINT, 0, G_MAXUINT),
             (TYPE_LONG, G_MINLONG, G_MAXLONG),
@@ -301,27 +508,63 @@ class TestProperty(unittest.TestCase):
             (TYPE_UINT64, 0, maxuint64),
             ]
 
-        for gtype, min, max in types:
+        for gtype, min, max in types_:
             # Normal, everything is alright
-            prop = gobject.property(type=gtype, minimum=min, maximum=max)
-            subtype = type('', (gobject.GObject,),
-                         dict(prop=prop))
+            prop = GObject.Property(type=gtype, minimum=min, maximum=max)
+            subtype = type('', (GObject.GObject,), dict(prop=prop))
             self.assertEqual(subtype.props.prop.minimum, min)
             self.assertEqual(subtype.props.prop.maximum, max)
 
             # Lower than minimum
             self.assertRaises(TypeError,
-                              gobject.property, type=gtype, minimum=min-1,
+                              GObject.Property, type=gtype, minimum=min - 1,
                               maximum=max)
 
             # Higher than maximum
             self.assertRaises(TypeError,
-                              gobject.property, type=gtype, minimum=min,
-                              maximum=max+1)
+                              GObject.Property, type=gtype, minimum=min,
+                              maximum=max + 1)
+
+    def test_min_max(self):
+        class C(GObject.GObject):
+            prop_int = GObject.Property(type=int, minimum=1, maximum=100, default=1)
+            prop_float = GObject.Property(type=float, minimum=0.1, maximum=10.5, default=1.1)
+
+            def __init__(self):
+                GObject.GObject.__init__(self)
 
-    def testMultipleInstances(self):
-        class C(gobject.GObject):
-            prop = gobject.property(type=str, default='default')
+        # we test known-bad values here which cause Gtk-WARNING logs.
+        # Explicitly allow these for this test.
+        old_mask = GLib.log_set_always_fatal(GLib.LogLevelFlags.LEVEL_CRITICAL)
+        try:
+            o = C()
+            self.assertEqual(o.prop_int, 1)
+
+            o.prop_int = 5
+            self.assertEqual(o.prop_int, 5)
+
+            o.prop_int = 0
+            self.assertEqual(o.prop_int, 5)
+
+            o.prop_int = 101
+            self.assertEqual(o.prop_int, 5)
+
+            self.assertEqual(o.prop_float, 1.1)
+
+            o.prop_float = 7.75
+            self.assertEqual(o.prop_float, 7.75)
+
+            o.prop_float = 0.09
+            self.assertEqual(o.prop_float, 7.75)
+
+            o.prop_float = 10.51
+            self.assertEqual(o.prop_float, 7.75)
+        finally:
+            GLib.log_set_always_fatal(old_mask)
+
+    def test_multiple_instances(self):
+        class C(GObject.GObject):
+            prop = GObject.Property(type=str, default='default')
 
         o1 = C()
         o2 = C()
@@ -331,9 +574,9 @@ class TestProperty(unittest.TestCase):
         self.assertEqual(o1.prop, 'value')
         self.assertEqual(o2.prop, 'default')
 
-    def testObjectProperty(self):
-        class PropertyObject(GObject):
-            obj = gobject.property(type=GObject)
+    def test_object_property(self):
+        class PropertyObject(GObject.GObject):
+            obj = GObject.Property(type=GObject.GObject)
 
         pobj1 = PropertyObject()
         obj1_hash = hash(pobj1)
@@ -344,57 +587,69 @@ class TestProperty(unittest.TestCase):
         pobj1 = pobj2.obj
         self.assertEqual(hash(pobj1), obj1_hash)
 
-    def testObjectSubclassProperty(self):
-        class ObjectSubclass(GObject):
+    def test_object_subclass_property(self):
+        class ObjectSubclass(GObject.GObject):
             __gtype_name__ = 'ObjectSubclass'
 
-        class PropertyObjectSubclass(GObject):
-            obj = gobject.property(type=ObjectSubclass)
+        class PropertyObjectSubclass(GObject.GObject):
+            obj = GObject.Property(type=ObjectSubclass)
 
-        obj1 = PropertyObjectSubclass(obj=ObjectSubclass())
+        PropertyObjectSubclass(obj=ObjectSubclass())
 
-    def testPropertySubclass(self):
+    def test_property_subclass(self):
         # test for #470718
-        class A(GObject):
-            prop1 = gobject.property(type=int)
+        class A(GObject.GObject):
+            prop1 = GObject.Property(type=int)
 
         class B(A):
-            prop2 = gobject.property(type=int)
+            prop2 = GObject.Property(type=int)
 
         b = B()
         b.prop2 = 10
-        self.assertEquals(b.prop2, 10)
+        self.assertEqual(b.prop2, 10)
         b.prop1 = 20
-        self.assertEquals(b.prop1, 20)
+        self.assertEqual(b.prop1, 20)
+
+    def test_property_subclass_c(self):
+        class A(GIMarshallingTests.PropertiesObject):
+            prop1 = GObject.Property(type=int)
+
+        a = A()
+        a.prop1 = 10
+        self.assertEqual(a.prop1, 10)
 
-    def testPropertySubclassCustomSetter(self):
+        # also has parent properties
+        a.props.some_int = 20
+        self.assertEqual(a.props.some_int, 20)
+
+    def test_property_subclass_custom_setter(self):
         # test for #523352
-        class A(GObject):
+        class A(GObject.GObject):
             def get_first(self):
                 return 'first'
-            first = gobject.property(type=str, getter=get_first)
+            first = GObject.Property(type=str, getter=get_first)
 
         class B(A):
             def get_second(self):
                 return 'second'
-            second = gobject.property(type=str, getter=get_second)
+            second = GObject.Property(type=str, getter=get_second)
 
         a = A()
-        self.assertEquals(a.first, 'first')
+        self.assertEqual(a.first, 'first')
         self.assertRaises(TypeError, setattr, a, 'first', 'foo')
 
         b = B()
-        self.assertEquals(b.first, 'first')
+        self.assertEqual(b.first, 'first')
         self.assertRaises(TypeError, setattr, b, 'first', 'foo')
-        self.assertEquals(b.second, 'second')
+        self.assertEqual(b.second, 'second')
         self.assertRaises(TypeError, setattr, b, 'second', 'foo')
 
-    def testPropertySubclassCustomSetterError(self):
+    def test_property_subclass_custom_setter_error(self):
         try:
-            class A(GObject):
+            class A(GObject.GObject):
                 def get_first(self):
                     return 'first'
-                first = gobject.property(type=str, getter=get_first)
+                first = GObject.Property(type=str, getter=get_first)
 
                 def do_get_property(self, pspec):
                     pass
@@ -404,13 +659,15 @@ class TestProperty(unittest.TestCase):
             raise AssertionError
 
     # Bug 587637.
+
     def test_float_min(self):
-        gobject.property(type=float, minimum=-1)
-        gobject.property(type=gobject.TYPE_FLOAT, minimum=-1)
-        gobject.property(type=gobject.TYPE_DOUBLE, minimum=-1)
+        GObject.Property(type=float, minimum=-1)
+        GObject.Property(type=GObject.TYPE_FLOAT, minimum=-1)
+        GObject.Property(type=GObject.TYPE_DOUBLE, minimum=-1)
 
     # Bug 644039
-    def testReferenceCount(self):
+
+    def test_reference_count(self):
         # We can check directly if an object gets finalized, so we will
         # observe it indirectly through the refcount of a member object.
 
@@ -422,15 +679,48 @@ class TestProperty(unittest.TestCase):
         # want to observe. Its refcount is increased by one.
         t = PropertyObject(normal="test")
         t.o = o
-        self.assertEquals(sys.getrefcount(o), rc + 1)
+        self.assertEqual(sys.getrefcount(o), rc + 1)
 
         # Now we want to ensure we do not leak any references to our
         # object with properties. If no ref is leaked, then when deleting
         # the local reference to this object, its reference count shoud
         # drop to zero, and our dummy object should loose one reference.
         del t
-        self.assertEquals(sys.getrefcount(o), rc)
-
+        self.assertEqual(sys.getrefcount(o), rc)
+
+    def test_doc_string_as_blurb(self):
+        class C(GObject.GObject):
+            @GObject.Property
+            def blurbed(self):
+                """blurbed doc string"""
+                return 0
+
+        self.assertEqual(C.blurbed.blurb, 'blurbed doc string')
+
+    def test_python_to_glib_type_mapping(self):
+        tester = GObject.Property()
+        self.assertEqual(tester._type_from_python(int), GObject.TYPE_INT)
+        if sys.version_info < (3, 0):
+            self.assertEqual(tester._type_from_python(long), GObject.TYPE_LONG)
+        self.assertEqual(tester._type_from_python(bool), GObject.TYPE_BOOLEAN)
+        self.assertEqual(tester._type_from_python(float), GObject.TYPE_DOUBLE)
+        self.assertEqual(tester._type_from_python(str), GObject.TYPE_STRING)
+        self.assertEqual(tester._type_from_python(object), GObject.TYPE_PYOBJECT)
+
+        self.assertEqual(tester._type_from_python(GObject.GObject), GObject.GObject.__gtype__)
+        self.assertEqual(tester._type_from_python(GObject.GEnum), GObject.GEnum.__gtype__)
+        self.assertEqual(tester._type_from_python(GObject.GFlags), GObject.GFlags.__gtype__)
+        self.assertEqual(tester._type_from_python(GObject.GBoxed), GObject.GBoxed.__gtype__)
+
+        for type_ in [TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR,
+                      TYPE_INT, TYPE_UINT, TYPE_BOOLEAN, TYPE_LONG,
+                      TYPE_ULONG, TYPE_INT64, TYPE_UINT64,
+                      TYPE_FLOAT, TYPE_DOUBLE, TYPE_POINTER,
+                      TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, TYPE_STRING,
+                      TYPE_PYOBJECT, TYPE_GTYPE, TYPE_STRV]:
+            self.assertEqual(tester._type_from_python(type_), type_)
+
+        self.assertRaises(TypeError, tester._type_from_python, types.CodeType)
 
 if __name__ == '__main__':
     unittest.main()
diff --git a/tests/test_pygtkcompat.py b/tests/test_pygtkcompat.py
new file mode 100644 (file)
index 0000000..5fabf2a
--- /dev/null
@@ -0,0 +1,145 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# vim: tabstop=4 shiftwidth=4 expandtab
+
+import unittest
+
+from gi.repository import GLib
+
+try:
+    from gi.repository import Pango
+    from gi.repository import Atk
+    from gi.repository import Gdk
+    from gi.repository import Gtk
+    (Atk, Gtk, Pango)  # pyflakes
+
+    import gi.pygtkcompat
+
+    gi.pygtkcompat.enable()
+    gi.pygtkcompat.enable_gtk(version='3.0')
+
+    import atk
+    import pango
+    import pangocairo
+    import gtk
+    import gtk.gdk
+except ImportError:
+    Gtk = None
+
+
+@unittest.skipUnless(Gtk, 'Gtk not available')
+class TestATKCompat(unittest.TestCase):
+    def testObject(self):
+        self.assertTrue(hasattr(atk, 'Object'))
+
+
+@unittest.skipUnless(Gtk, 'Gtk not available')
+class TestPangoCompat(unittest.TestCase):
+    def testLayout(self):
+        self.assertTrue(hasattr(pango, 'Layout'))
+
+
+@unittest.skipUnless(Gtk, 'Gtk not available')
+class TestPangoCairoCompat(unittest.TestCase):
+    def testErrorUnderlinePath(self):
+        self.assertTrue(hasattr(pangocairo, 'error_underline_path'))
+
+
+@unittest.skipUnless(Gtk, 'Gtk not available')
+class TestGTKCompat(unittest.TestCase):
+    def testButtons(self):
+        self.assertEqual(Gdk._2BUTTON_PRESS, 5)
+        self.assertEqual(Gdk.BUTTON_PRESS, 4)
+
+    def testEnums(self):
+        self.assertEqual(gtk.WINDOW_TOPLEVEL, Gtk.WindowType.TOPLEVEL)
+        self.assertEqual(gtk.PACK_START, Gtk.PackType.START)
+
+    def testFlags(self):
+        self.assertEqual(gtk.EXPAND, Gtk.AttachOptions.EXPAND)
+        self.assertEqual(gtk.gdk.SHIFT_MASK, Gdk.ModifierType.SHIFT_MASK)
+
+    def testKeysyms(self):
+        import gtk.keysyms
+        self.assertEqual(gtk.keysyms.Escape, Gdk.KEY_Escape)
+        self.assertTrue(gtk.keysyms._0, Gdk.KEY_0)
+
+    def testStyle(self):
+        widget = gtk.Button()
+        self.assertTrue(isinstance(widget.style.base[gtk.STATE_NORMAL],
+                                   gtk.gdk.Color))
+
+    def testAlignment(self):
+        a = gtk.Alignment()
+        self.assertEqual(a.props.xalign, 0.0)
+        self.assertEqual(a.props.yalign, 0.0)
+        self.assertEqual(a.props.xscale, 0.0)
+        self.assertEqual(a.props.yscale, 0.0)
+
+    def testBox(self):
+        box = gtk.Box()
+        child = gtk.Button()
+
+        box.pack_start(child)
+        expand, fill, padding, pack_type = box.query_child_packing(child)
+        self.assertTrue(expand)
+        self.assertTrue(fill)
+        self.assertEqual(padding, 0)
+        self.assertEqual(pack_type, gtk.PACK_START)
+
+        child = gtk.Button()
+        box.pack_end(child)
+        expand, fill, padding, pack_type = box.query_child_packing(child)
+        self.assertTrue(expand)
+        self.assertTrue(fill)
+        self.assertEqual(padding, 0)
+        self.assertEqual(pack_type, gtk.PACK_END)
+
+    def testComboBoxEntry(self):
+        liststore = gtk.ListStore(int, str)
+        liststore.append((1, 'One'))
+        liststore.append((2, 'Two'))
+        liststore.append((3, 'Three'))
+        # might cause a Pango warning, do not break on this
+        old_mask = GLib.log_set_always_fatal(
+            GLib.LogLevelFlags.LEVEL_CRITICAL | GLib.LogLevelFlags.LEVEL_ERROR)
+        combo = gtk.ComboBoxEntry(model=liststore)
+        GLib.log_set_always_fatal(old_mask)
+        combo.set_text_column(1)
+        combo.set_active(0)
+        self.assertEqual(combo.get_text_column(), 1)
+        self.assertEqual(combo.get_child().get_text(), 'One')
+        combo = gtk.combo_box_entry_new()
+        combo.set_model(liststore)
+        combo.set_text_column(1)
+        combo.set_active(0)
+        self.assertEqual(combo.get_text_column(), 1)
+        self.assertEqual(combo.get_child().get_text(), 'One')
+        combo = gtk.combo_box_entry_new_with_model(liststore)
+        combo.set_text_column(1)
+        combo.set_active(0)
+        self.assertEqual(combo.get_text_column(), 1)
+        self.assertEqual(combo.get_child().get_text(), 'One')
+
+    def testSizeRequest(self):
+        box = gtk.Box()
+        self.assertEqual(box.size_request(), [0, 0])
+
+    def testPixbuf(self):
+        gtk.gdk.Pixbuf()
+
+    def testPixbufLoader(self):
+        loader = gtk.gdk.PixbufLoader('png')
+        loader.close()
+
+    def testPixbufFormats(self):
+        formats = gtk.gdk.pixbuf_get_formats()
+        self.assertEqual(type(formats[0]), dict)
+        self.assertTrue('name' in formats[0])
+        self.assertTrue('description' in formats[0])
+        self.assertTrue('mime_types' in formats[0])
+        self.assertEqual(type(formats[0]['extensions']), list)
+
+    def testGdkWindow(self):
+        w = gtk.Window()
+        w.realize()
+        self.assertEqual(w.get_window().get_origin(), (0, 0))
index d68cb5b..3b70318 100644 (file)
@@ -4,29 +4,34 @@ import gc
 import unittest
 import sys
 
-import gobject
+from gi.repository import GObject
+from gi._gobject import signalhelper
 import testhelper
 from compathelper import _long
 
-class C(gobject.GObject):
-    __gsignals__ = { 'my_signal': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
-                                   (gobject.TYPE_INT,)) }
+
+class C(GObject.GObject):
+    __gsignals__ = {'my_signal': (GObject.SignalFlags.RUN_FIRST, None,
+                                  (GObject.TYPE_INT,))}
+
     def do_my_signal(self, arg):
         self.arg = arg
 
+
 class D(C):
     def do_my_signal(self, arg2):
         self.arg2 = arg2
         C.do_my_signal(self, arg2)
 
+
 class TestSignalCreation(unittest.TestCase):
     # Bug 540376.
     def test_illegals(self):
-        self.assertRaises(TypeError, lambda: gobject.signal_new('test',
+        self.assertRaises(TypeError, lambda: GObject.signal_new('test',
                                                                 None,
                                                                 0,
-                                                                gobject.TYPE_NONE,
-                                                                (gobject.TYPE_LONG,)))
+                                                                None,
+                                                                (GObject.TYPE_LONG,)))
 
 
 class TestChaining(unittest.TestCase):
@@ -48,47 +53,51 @@ class TestChaining(unittest.TestCase):
         self.inst.emit("my_signal", 42)
         assert self.inst.arg == 42
 
-    def testChaining(self):
+    def testChaining2(self):
         inst2 = D()
         inst2.emit("my_signal", 44)
         assert inst2.arg == 44
         assert inst2.arg2 == 44
 
 # This is for bug 153718
+
+
 class TestGSignalsError(unittest.TestCase):
     def testInvalidType(self, *args):
         def foo():
-            class Foo(gobject.GObject):
+            class Foo(GObject.GObject):
                 __gsignals__ = None
         self.assertRaises(TypeError, foo)
         gc.collect()
 
     def testInvalidName(self, *args):
         def foo():
-            class Foo(gobject.GObject):
-                __gsignals__ = {'not-exists' : 'override'}
+            class Foo(GObject.GObject):
+                __gsignals__ = {'not-exists': 'override'}
         self.assertRaises(TypeError, foo)
         gc.collect()
 
+
 class TestGPropertyError(unittest.TestCase):
-    def testInvalidType(self, *args):
+    def test_invalid_type(self, *args):
         def foo():
-            class Foo(gobject.GObject):
+            class Foo(GObject.GObject):
                 __gproperties__ = None
         self.assertRaises(TypeError, foo)
         gc.collect()
 
-    def testInvalidName(self, *args):
+    def test_invalid_name(self, *args):
         def foo():
-            class Foo(gobject.GObject):
-                __gproperties__ = { None: None }
+            class Foo(GObject.GObject):
+                __gproperties__ = {None: None}
 
         self.assertRaises(TypeError, foo)
         gc.collect()
 
+
 class TestList(unittest.TestCase):
-    def testListObject(self):
-        self.assertEqual(gobject.signal_list_names(C), ('my-signal',))
+    def test_list_names(self):
+        self.assertEqual(GObject.signal_list_names(C), ('my-signal',))
 
 
 def my_accumulator(ihint, return_accu, handler_return, user_data):
@@ -99,17 +108,19 @@ def my_accumulator(ihint, return_accu, handler_return, user_data):
         return False, return_accu
     return True, return_accu + handler_return
 
-class Foo(gobject.GObject):
+
+class Foo(GObject.GObject):
     __gsignals__ = {
-        'my-acc-signal': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_INT,
-                                   (), my_accumulator, "accum data"),
-        'my-other-acc-signal': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_BOOLEAN,
-                                (), gobject.signal_accumulator_true_handled)
+        'my-acc-signal': (GObject.SignalFlags.RUN_LAST, GObject.TYPE_INT,
+                          (), my_accumulator, "accum data"),
+        'my-other-acc-signal': (GObject.SignalFlags.RUN_LAST, GObject.TYPE_BOOLEAN,
+                                (), GObject.signal_accumulator_true_handled)
         }
 
+
 class TestAccumulator(unittest.TestCase):
 
-    def testAccumulator(self):
+    def test_accumulator(self):
         inst = Foo()
         inst.connect("my-acc-signal", lambda obj: 1)
         inst.connect("my-acc-signal", lambda obj: 2)
@@ -120,7 +131,7 @@ class TestAccumulator(unittest.TestCase):
         retval = inst.emit("my-acc-signal")
         self.assertEqual(retval, 3)
 
-    def testAccumulatorTrueHandled(self):
+    def test_accumulator_true_handled(self):
         inst = Foo()
         inst.connect("my-other-acc-signal", self._true_handler1)
         inst.connect("my-other-acc-signal", self._true_handler2)
@@ -134,49 +145,56 @@ class TestAccumulator(unittest.TestCase):
     def _true_handler1(self, obj):
         self.__true_val = 1
         return False
+
     def _true_handler2(self, obj):
         self.__true_val = 2
         return True
+
     def _true_handler3(self, obj):
         self.__true_val = 3
         return False
 
-class E(gobject.GObject):
-    __gsignals__ = { 'signal': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
-                                ()) }
+
+class E(GObject.GObject):
+    __gsignals__ = {'signal': (GObject.SignalFlags.RUN_FIRST, None,
+                               ())}
+
     def __init__(self):
-        gobject.GObject.__init__(self)
+        GObject.GObject.__init__(self)
         self.status = 0
 
     def do_signal(self):
         assert self.status == 0
         self.status = 1
 
-class F(gobject.GObject):
-    __gsignals__ = { 'signal': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
-                                ()) }
+
+class F(GObject.GObject):
+    __gsignals__ = {'signal': (GObject.SignalFlags.RUN_FIRST, None,
+                               ())}
+
     def __init__(self):
-        gobject.GObject.__init__(self)
+        GObject.GObject.__init__(self)
         self.status = 0
 
     def do_signal(self):
         self.status += 1
 
+
 class TestEmissionHook(unittest.TestCase):
-    def testAdd(self):
+    def test_add(self):
         self.hook = True
         e = E()
         e.connect('signal', self._callback)
-        gobject.add_emission_hook(E, "signal", self._emission_hook)
+        GObject.add_emission_hook(E, "signal", self._emission_hook)
         e.emit('signal')
         self.assertEqual(e.status, 3)
 
-    def testRemove(self):
+    def test_remove(self):
         self.hook = False
         e = E()
         e.connect('signal', self._callback)
-        hook_id = gobject.add_emission_hook(E, "signal", self._emission_hook)
-        gobject.remove_emission_hook(E, "signal", hook_id)
+        hook_id = GObject.add_emission_hook(E, "signal", self._emission_hook)
+        GObject.remove_emission_hook(E, "signal", hook_id)
         e.emit('signal')
         self.assertEqual(e.status, 3)
 
@@ -191,41 +209,45 @@ class TestEmissionHook(unittest.TestCase):
             self.assertEqual(e.status, 1)
         e.status = 3
 
-    def testCallbackReturnFalse(self):
+    def test_callback_return_false(self):
         self.hook = False
         obj = F()
+
         def _emission_hook(obj):
             obj.status += 1
             return False
-        hook_id = gobject.add_emission_hook(obj, "signal", _emission_hook)
+        GObject.add_emission_hook(obj, "signal", _emission_hook)
         obj.emit('signal')
         obj.emit('signal')
         self.assertEqual(obj.status, 3)
 
-    def testCallbackReturnTrue(self):
+    def test_callback_return_true(self):
         self.hook = False
         obj = F()
+
         def _emission_hook(obj):
             obj.status += 1
             return True
-        hook_id = gobject.add_emission_hook(obj, "signal", _emission_hook)
+        hook_id = GObject.add_emission_hook(obj, "signal", _emission_hook)
         obj.emit('signal')
         obj.emit('signal')
-        gobject.remove_emission_hook(obj, "signal", hook_id)
+        GObject.remove_emission_hook(obj, "signal", hook_id)
         self.assertEqual(obj.status, 4)
 
-    def testCallbackReturnTrueButRemove(self):
+    def test_callback_return_true_but_remove(self):
         self.hook = False
         obj = F()
+
         def _emission_hook(obj):
             obj.status += 1
             return True
-        hook_id = gobject.add_emission_hook(obj, "signal", _emission_hook)
+        hook_id = GObject.add_emission_hook(obj, "signal", _emission_hook)
         obj.emit('signal')
-        gobject.remove_emission_hook(obj, "signal", hook_id)
+        GObject.remove_emission_hook(obj, "signal", hook_id)
         obj.emit('signal')
         self.assertEqual(obj.status, 3)
 
+
 class TestClosures(unittest.TestCase):
     def setUp(self):
         self.count = 0
@@ -233,21 +255,21 @@ class TestClosures(unittest.TestCase):
     def _callback(self, e):
         self.count += 1
 
-    def testDisconnect(self):
+    def test_disconnect(self):
         e = E()
         e.connect('signal', self._callback)
         e.disconnect_by_func(self._callback)
         e.emit('signal')
         self.assertEqual(self.count, 0)
 
-    def testHandlerBlock(self):
+    def test_handler_block(self):
         e = E()
         e.connect('signal', self._callback)
         e.handler_block_by_func(self._callback)
         e.emit('signal')
         self.assertEqual(self.count, 0)
 
-    def testHandlerUnBlock(self):
+    def test_handler_unblock(self):
         e = E()
         signal_id = e.connect('signal', self._callback)
         e.handler_block(signal_id)
@@ -255,7 +277,7 @@ class TestClosures(unittest.TestCase):
         e.emit('signal')
         self.assertEqual(self.count, 1)
 
-    def testHandlerBlockMethod(self):
+    def test_handler_block_method(self):
         # Filed as #375589
         class A:
             def __init__(self):
@@ -273,12 +295,14 @@ class TestClosures(unittest.TestCase):
         gc.collect()
 
     def testGString(self):
-        class C(gobject.GObject):
-            __gsignals__ = { 'my_signal': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_GSTRING,
-                                           (gobject.TYPE_GSTRING,)) }
+        class C(GObject.GObject):
+            __gsignals__ = {'my_signal': (GObject.SignalFlags.RUN_LAST, GObject.TYPE_GSTRING,
+                                          (GObject.TYPE_GSTRING,))}
+
             def __init__(self, test):
-                gobject.GObject.__init__(self)
+                GObject.GObject.__init__(self)
                 self.test = test
+
             def do_my_signal(self, data):
                 self.data = data
                 self.test.assertEqual(len(data), 3)
@@ -287,12 +311,13 @@ class TestClosures(unittest.TestCase):
         data = c.emit("my_signal", "\01\00\02")
         self.assertEqual(data, "\02\00\01")
 
-class SigPropClass(gobject.GObject):
-    __gsignals__ = { 'my_signal': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
-                                   (gobject.TYPE_INT,)) }
+
+class SigPropClass(GObject.GObject):
+    __gsignals__ = {'my_signal': (GObject.SignalFlags.RUN_FIRST, None,
+                                  (GObject.TYPE_INT,))}
 
     __gproperties__ = {
-        'foo': (str, None, None, '', gobject.PARAM_WRITABLE|gobject.PARAM_CONSTRUCT),
+        'foo': (str, None, None, '', GObject.PARAM_WRITABLE | GObject.PARAM_CONSTRUCT),
         }
 
     signal_emission_failed = False
@@ -312,64 +337,146 @@ class SigPropClass(gobject.GObject):
 
 
 class TestSigProp(unittest.TestCase):
-    def testEmitInPropertySetter(self):
+    def test_emit_in_property_setter(self):
         obj = SigPropClass()
-        self.failIf(obj.signal_emission_failed)
+        self.assertFalse(obj.signal_emission_failed)
 
-f = gobject.SIGNAL_RUN_FIRST
-l = gobject.SIGNAL_RUN_LAST
-float = gobject.TYPE_FLOAT
-double = gobject.TYPE_DOUBLE
-uint = gobject.TYPE_UINT
-ulong = gobject.TYPE_ULONG
 
-class CM(gobject.GObject):
+class CM(GObject.GObject):
     __gsignals__ = dict(
-        test1=(f, None, ()),
-        test2=(l, None, (str,)),
-        test3=(l, int, (double,)),
-        test4=(f, None, (bool, _long, float, double, int, uint, ulong)),
-        test_float=(l, float, (float,)),
-        test_double=(l, double, (double, )),
-        test_string=(l, str, (str, )),
-        test_object=(l, object, (object, )),
+        test1=(GObject.SignalFlags.RUN_FIRST, None, ()),
+        test2=(GObject.SignalFlags.RUN_LAST, None, (str,)),
+        test3=(GObject.SignalFlags.RUN_LAST, int, (GObject.TYPE_DOUBLE,)),
+        test4=(GObject.SignalFlags.RUN_FIRST, None,
+               (bool, _long, GObject.TYPE_FLOAT, GObject.TYPE_DOUBLE, int,
+                GObject.TYPE_UINT, GObject.TYPE_ULONG)),
+        test_float=(GObject.SignalFlags.RUN_LAST, GObject.TYPE_FLOAT, (GObject.TYPE_FLOAT,)),
+        test_double=(GObject.SignalFlags.RUN_LAST, GObject.TYPE_DOUBLE, (GObject.TYPE_DOUBLE,)),
+        test_int64=(GObject.SignalFlags.RUN_LAST, GObject.TYPE_INT64, (GObject.TYPE_INT64,)),
+        test_string=(GObject.SignalFlags.RUN_LAST, str, (str,)),
+        test_object=(GObject.SignalFlags.RUN_LAST, object, (object,)),
+        test_paramspec=(GObject.SignalFlags.RUN_LAST, GObject.ParamSpec, ()),
+        test_gvalue=(GObject.SignalFlags.RUN_LAST, GObject.Value, (GObject.Value,)),
+        test_gvalue_ret=(GObject.SignalFlags.RUN_LAST, GObject.Value, (GObject.TYPE_GTYPE,)),
     )
 
+    testprop = GObject.Property(type=int)
+
+
 class _TestCMarshaller:
     def setUp(self):
         self.obj = CM()
         testhelper.connectcallbacks(self.obj)
 
-    def testTest1(self):
+    def test_test1(self):
         self.obj.emit("test1")
 
-    def testTest2(self):
+    def test_test2(self):
         self.obj.emit("test2", "string")
 
-    def testTest3(self):
+    def test_test3(self):
         rv = self.obj.emit("test3", 42.0)
         self.assertEqual(rv, 20)
 
-    def testTest4(self):
+    def test_test4(self):
         self.obj.emit("test4", True, _long(10), 3.14, 1.78, 20, _long(30), _long(31))
 
-    def testTestReturnFloat(self):
+    def test_float(self):
         rv = self.obj.emit("test-float", 1.234)
-        self.failUnless(rv >= 1.233999 and rv <= 1.2400001, rv)
+        self.assertTrue(rv >= 1.233999 and rv <= 1.2400001, rv)
 
-    def testTestReturnDouble(self):
+    def test_double(self):
         rv = self.obj.emit("test-double", 1.234)
         self.assertEqual(rv, 1.234)
 
-    def testTestReturnString(self):
+    def test_int64(self):
+        rv = self.obj.emit("test-int64", 102030405)
+        self.assertEqual(rv, 102030405)
+
+        rv = self.obj.emit("test-int64", GObject.G_MAXINT64)
+        self.assertEqual(rv, GObject.G_MAXINT64 - 1)
+
+        rv = self.obj.emit("test-int64", GObject.G_MININT64)
+        self.assertEqual(rv, GObject.G_MININT64)
+
+    def test_string(self):
         rv = self.obj.emit("test-string", "str")
         self.assertEqual(rv, "str")
 
-    def testTestReturnObject(self):
+    def test_object(self):
         rv = self.obj.emit("test-object", self)
         self.assertEqual(rv, self)
 
-if 'generic-c-marshaller' in gobject.features:
+    def test_paramspec(self):
+        rv = self.obj.emit("test-paramspec")
+        self.assertEqual(rv.name, "test-param")
+        self.assertEqual(rv.nick, "test")
+
+    def test_C_paramspec(self):
+        self.notify_called = False
+
+        def cb_notify(obj, prop):
+            self.notify_called = True
+            self.assertEqual(obj, self.obj)
+            self.assertEqual(prop.name, "testprop")
+
+        self.obj.connect("notify", cb_notify)
+        self.obj.set_property("testprop", 42)
+        self.assertTrue(self.notify_called)
+
+    def test_gvalue(self):
+        # implicit int
+        rv = self.obj.emit("test-gvalue", 42)
+        self.assertEqual(rv, 42)
+
+        # explicit float
+        v = GObject.Value()
+        v.init(GObject.TYPE_FLOAT)
+        v.set_float(1.234)
+        rv = self.obj.emit("test-gvalue", v)
+        self.assertAlmostEqual(rv, 1.234, 4)
+
+        # implicit float
+        rv = self.obj.emit("test-gvalue", 1.234)
+        self.assertAlmostEqual(rv, 1.234, 4)
+
+        # explicit int64
+        v = GObject.Value()
+        v.init(GObject.TYPE_INT64)
+        v.set_int64(GObject.G_MAXINT64)
+        rv = self.obj.emit("test-gvalue", v)
+        self.assertEqual(rv, GObject.G_MAXINT64)
+
+        # implicit int64
+        # does not work, see https://bugzilla.gnome.org/show_bug.cgi?id=683775
+        #rv = self.obj.emit("test-gvalue", GObject.G_MAXINT64)
+        #self.assertEqual(rv, GObject.G_MAXINT64)
+
+        # explicit uint64
+        v = GObject.Value()
+        v.init(GObject.TYPE_UINT64)
+        v.set_uint64(GObject.G_MAXUINT64)
+        rv = self.obj.emit("test-gvalue", v)
+        self.assertEqual(rv, GObject.G_MAXUINT64)
+
+        # implicit uint64
+        # does not work, see https://bugzilla.gnome.org/show_bug.cgi?id=683775
+        #rv = self.obj.emit("test-gvalue", GObject.G_MAXUINT64)
+        #self.assertEqual(rv, GObject.G_MAXUINT64)
+
+    def test_gvalue_ret(self):
+        self.assertEqual(self.obj.emit("test-gvalue-ret", GObject.TYPE_INT),
+                         GObject.G_MAXINT)
+        self.assertEqual(self.obj.emit("test-gvalue-ret", GObject.TYPE_UINT),
+                         GObject.G_MAXUINT)
+        self.assertEqual(self.obj.emit("test-gvalue-ret", GObject.TYPE_INT64),
+                         GObject.G_MAXINT64)
+        self.assertEqual(self.obj.emit("test-gvalue-ret", GObject.TYPE_UINT64),
+                         GObject.G_MAXUINT64)
+        self.assertEqual(self.obj.emit("test-gvalue-ret", GObject.TYPE_STRING),
+                         "hello")
+
+if 'generic-c-marshaller' in GObject.features:
     class TestCMarshaller(_TestCMarshaller, unittest.TestCase):
         pass
 else:
@@ -378,12 +485,14 @@ else:
     print()
 
 # Test for 374653
+
+
 class TestPyGValue(unittest.TestCase):
-    def testNoneNULLBoxedConversion(self):
-        class C(gobject.GObject):
+    def test_none_null_boxed_conversion(self):
+        class C(GObject.GObject):
             __gsignals__ = dict(my_boxed_signal=(
-                gobject.SIGNAL_RUN_LAST,
-                gobject.type_from_name('GStrv'), ()))
+                GObject.SignalFlags.RUN_LAST,
+                GObject.TYPE_STRV, ()))
 
         obj = C()
         obj.connect('my-boxed-signal', lambda obj: None)
@@ -391,5 +500,196 @@ class TestPyGValue(unittest.TestCase):
         obj.emit('my-boxed-signal')
         assert not sys.last_type
 
+
+class TestSignalDecorator(unittest.TestCase):
+    class Decorated(GObject.GObject):
+        value = 0
+
+        @GObject.Signal
+        def pushed(self):
+            """this will push"""
+            self.value += 1
+
+        @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST)
+        def pulled(self):
+            self.value -= 1
+
+        stomped = GObject.Signal('stomped', arg_types=(int,), doc='this will stomp')
+        unnamed = GObject.Signal()
+
+    class DecoratedOverride(GObject.GObject):
+        overridden_closure_called = False
+        notify_called = False
+        value = GObject.Property(type=int, default=0)
+
+        @GObject.SignalOverride
+        def notify(self, *args, **kargs):
+            self.overridden_closure_called = True
+            #GObject.GObject.notify(self, *args, **kargs)
+
+        def on_notify(self, obj, prop):
+            self.notify_called = True
+
+    def setUp(self):
+        self.unnamedCalled = False
+
+    def onUnnamed(self, obj):
+        self.unnamedCalled = True
+
+    def test_get_signal_args(self):
+        self.assertEqual(self.Decorated.pushed.get_signal_args(),
+                         (GObject.SignalFlags.RUN_FIRST, None, tuple()))
+        self.assertEqual(self.Decorated.pulled.get_signal_args(),
+                         (GObject.SignalFlags.RUN_LAST, None, tuple()))
+        self.assertEqual(self.Decorated.stomped.get_signal_args(),
+                         (GObject.SignalFlags.RUN_FIRST, None, (int,)))
+
+    def test_closures_called(self):
+        decorated = self.Decorated()
+        self.assertEqual(decorated.value, 0)
+        decorated.pushed.emit()
+        self.assertEqual(decorated.value, 1)
+        decorated.pulled.emit()
+        self.assertEqual(decorated.value, 0)
+
+    def test_signal_copy(self):
+        blah = self.Decorated.stomped.copy('blah')
+        self.assertEqual(str(blah), blah)
+        self.assertEqual(blah.func, self.Decorated.stomped.func)
+        self.assertEqual(blah.flags, self.Decorated.stomped.flags)
+        self.assertEqual(blah.return_type, self.Decorated.stomped.return_type)
+        self.assertEqual(blah.arg_types, self.Decorated.stomped.arg_types)
+        self.assertEqual(blah.__doc__, self.Decorated.stomped.__doc__)
+
+    def test_doc_string(self):
+        # Test the two techniques for setting doc strings on the signals
+        # class variables, through the "doc" keyword or as the getter doc string.
+        self.assertEqual(self.Decorated.stomped.__doc__, 'this will stomp')
+        self.assertEqual(self.Decorated.pushed.__doc__, 'this will push')
+
+    def test_unnamed_signal_gets_named(self):
+        self.assertEqual(str(self.Decorated.unnamed), 'unnamed')
+
+    def test_unnamed_signal_gets_called(self):
+        obj = self.Decorated()
+        obj.connect('unnamed', self.onUnnamed)
+        self.assertEqual(self.unnamedCalled, False)
+        obj.emit('unnamed')
+        self.assertEqual(self.unnamedCalled, True)
+
+    def NOtest_overridden_signal(self):
+        # Test that the pushed signal is called in with super and the override
+        # which should both increment the "value" to 3
+        obj = self.DecoratedOverride()
+        obj.connect("notify", obj.on_notify)
+        self.assertEqual(obj.value, 0)
+        #obj.notify.emit()
+        obj.value = 1
+        self.assertEqual(obj.value, 1)
+        self.assertTrue(obj.overridden_closure_called)
+        self.assertTrue(obj.notify_called)
+
+
+class TestSignalConnectors(unittest.TestCase):
+    class CustomButton(GObject.GObject):
+        value = 0
+
+        @GObject.Signal(arg_types=(int,))
+        def clicked(self, value):
+            self.value = value
+
+    def setUp(self):
+        self.obj = None
+        self.value = None
+
+    def on_clicked(self, obj, value):
+        self.obj = obj
+        self.value = value
+
+    def test_signal_emit(self):
+        # standard callback connection with different forms of emit.
+        obj = self.CustomButton()
+        obj.connect('clicked', self.on_clicked)
+
+        # vanilla
+        obj.emit('clicked', 1)
+        self.assertEqual(obj.value, 1)
+        self.assertEqual(obj, self.obj)
+        self.assertEqual(self.value, 1)
+
+        # using class signal as param
+        self.obj = None
+        self.value = None
+        obj.emit(self.CustomButton.clicked, 1)
+        self.assertEqual(obj, self.obj)
+        self.assertEqual(self.value, 1)
+
+        # using bound signal as param
+        self.obj = None
+        self.value = None
+        obj.emit(obj.clicked, 1)
+        self.assertEqual(obj, self.obj)
+        self.assertEqual(self.value, 1)
+
+        # using bound signal with emit
+        self.obj = None
+        self.value = None
+        obj.clicked.emit(1)
+        self.assertEqual(obj, self.obj)
+        self.assertEqual(self.value, 1)
+
+    def test_signal_class_connect(self):
+        obj = self.CustomButton()
+        obj.connect(self.CustomButton.clicked, self.on_clicked)
+        obj.emit('clicked', 2)
+        self.assertEqual(obj, self.obj)
+        self.assertEqual(self.value, 2)
+
+    def test_signal_bound_connect(self):
+        obj = self.CustomButton()
+        obj.clicked.connect(self.on_clicked)
+        obj.emit('clicked', 3)
+        self.assertEqual(obj, self.obj)
+        self.assertEqual(self.value, 3)
+
+
+# For this test to work with both python2 and 3 we need to dynamically
+# exec the given code due to the new syntax causing an error in python 2.
+annotated_class_code = """
+class AnnotatedSignalClass(GObject.GObject):
+    @GObject.Signal
+    def sig1(self, a:int, b:float):
+        pass
+
+    @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST)
+    def sig2_with_return(self, a:int, b:float) -> str:
+        return "test"
+"""
+
+
+class TestPython3Signals(unittest.TestCase):
+    AnnotatedClass = None
+
+    def setUp(self):
+        if sys.version_info >= (3, 0):
+            exec(annotated_class_code, globals(), globals())
+            self.assertTrue('AnnotatedSignalClass' in globals())
+            self.AnnotatedClass = globals()['AnnotatedSignalClass']
+
+    def test_annotations(self):
+        if self.AnnotatedClass:
+            self.assertEqual(signalhelper.get_signal_annotations(self.AnnotatedClass.sig1.func),
+                             (None, (int, float)))
+            self.assertEqual(signalhelper.get_signal_annotations(self.AnnotatedClass.sig2_with_return.func),
+                             (str, (int, float)))
+
+            self.assertEqual(self.AnnotatedClass.sig2_with_return.get_signal_args(),
+                             (GObject.SignalFlags.RUN_LAST, str, (int, float)))
+            self.assertEqual(self.AnnotatedClass.sig2_with_return.arg_types,
+                             (int, float))
+            self.assertEqual(self.AnnotatedClass.sig2_with_return.return_type,
+                             str)
+
+
 if __name__ == '__main__':
     unittest.main()
index 339fb32..fe674cd 100644 (file)
@@ -2,12 +2,12 @@
 
 import unittest
 
-import glib
+from gi.repository import GLib
 
 
-class Idle(glib.Idle):
+class Idle(GLib.Idle):
     def __init__(self, loop):
-        glib.Idle.__init__(self)
+        GLib.Idle.__init__(self)
         self.count = 0
         self.set_callback(self.callback, loop)
 
@@ -16,9 +16,9 @@ class Idle(glib.Idle):
         return True
 
 
-class MySource(glib.Source):
+class MySource(GLib.Source):
     def __init__(self):
-        glib.Source.__init__(self)
+        GLib.Source.__init__(self)
 
     def prepare(self):
         return True, 0
@@ -39,12 +39,12 @@ class TestSource(unittest.TestCase):
         return True
 
     def setup_timeout(self, loop):
-        timeout = glib.Timeout(500)
+        timeout = GLib.Timeout(500)
         timeout.set_callback(self.timeout_callback, loop)
         timeout.attach()
 
     def testSources(self):
-        loop = glib.MainLoop()
+        loop = GLib.MainLoop()
 
         self.setup_timeout(loop)
 
@@ -64,9 +64,9 @@ class TestSource(unittest.TestCase):
     def testSourcePrepare(self):
         # this test may not terminate if prepare() is wrapped incorrectly
         dispatched = [False]
-        loop = glib.MainLoop()
+        loop = GLib.MainLoop()
 
-        class CustomTimeout(glib.Source):
+        class CustomTimeout(GLib.Source):
             def prepare(self):
                 return (False, 10)
 
@@ -89,11 +89,35 @@ class TestSource(unittest.TestCase):
 
         assert dispatched[0]
 
+    def testIsDestroyedSimple(self):
+        s = GLib.Source()
+
+        self.assertFalse(s.is_destroyed())
+        s.destroy()
+        self.assertTrue(s.is_destroyed())
+
+        c = GLib.MainContext()
+        s = GLib.Source()
+        s.attach(c)
+        self.assertFalse(s.is_destroyed())
+        s.destroy()
+        self.assertTrue(s.is_destroyed())
+
+    def testIsDestroyedContext(self):
+        def f():
+            c = GLib.MainContext()
+            s = GLib.Source()
+            s.attach(c)
+            return s
+
+        s = f()
+        self.assertTrue(s.is_destroyed())
+
 
 class TestTimeout(unittest.TestCase):
-     def test504337(self):
-        timeout_source = glib.Timeout(20)
-        idle_source = glib.Idle()
+    def test504337(self):
+        GLib.Timeout(20)
+        GLib.Idle()
 
 
 if __name__ == '__main__':
index c90d1d6..69f5f4c 100644 (file)
@@ -3,7 +3,7 @@
 import sys
 import unittest
 
-import glib
+from gi.repository import GLib
 
 
 class TestProcess(unittest.TestCase):
@@ -14,11 +14,11 @@ class TestProcess(unittest.TestCase):
 
     def testChildWatch(self):
         self.data = None
-        self.loop = glib.MainLoop()
+        self.loop = GLib.MainLoop()
         argv = [sys.executable, '-c', 'import sys']
-        pid, stdin, stdout, stderr = glib.spawn_async(
-            argv, flags=glib.SPAWN_DO_NOT_REAP_CHILD)
+        pid, stdin, stdout, stderr = GLib.spawn_async(
+            argv, flags=GLib.SPAWN_DO_NOT_REAP_CHILD)
         pid.close()
-        glib.child_watch_add(pid, self._child_watch_cb, 12345)
+        GLib.child_watch_add(pid, self._child_watch_cb, 12345)
         self.loop.run()
         self.assertEqual(self.data, 12345)
index be746a4..b707bc4 100644 (file)
@@ -1,14 +1,14 @@
 # -*- Mode: Python -*-
 
 import unittest
-
-import glib
 import testhelper
 
+from gi.repository import GLib
+
 
 class TestThread(unittest.TestCase):
     def setUp(self):
-        self.main = glib.MainLoop()
+        self.main = GLib.MainLoop()
 
     def from_thread_cb(self, test, enum):
         assert test == self.obj
@@ -21,8 +21,8 @@ class TestThread(unittest.TestCase):
         self.obj.emit('emit-signal')
 
     def testExtensionModule(self):
-        glib.idle_add(self.idle_cb)
-        glib.timeout_add(50, self.timeout_cb)
+        GLib.idle_add(self.idle_cb)
+        GLib.timeout_add(50, self.timeout_cb)
         self.main.run()
 
     def timeout_cb(self):
index ee24215..143cc7b 100644 (file)
@@ -1,15 +1,16 @@
 import unittest
 
-import glib
+from gi.repository import GLib
+
 
 class TestUris(unittest.TestCase):
     def testExtractUris(self):
-        uri_list_text = "# urn:isbn:0-201-08372-8\n" + \
-                        "http://www.huh.org/books/foo.html\n" + \
-                        "http://www.huh.org/books/foo.pdf\n" + \
-                        "ftp://ftp.foo.org/books/foo.txt\n"
-        uri_list = glib.uri_list_extract_uris(uri_list_text)
+        uri_list_text = """# urn:isbn:0-201-08372-8
+http://www.huh.org/books/foo.html
+http://www.huh.org/books/foo.pdf
+ftp://ftp.foo.org/books/foo.txt
+"""
+        uri_list = GLib.uri_list_extract_uris(uri_list_text)
         assert uri_list[0] == "http://www.huh.org/books/foo.html"
         assert uri_list[1] == "http://www.huh.org/books/foo.pdf"
         assert uri_list[2] == "ftp://ftp.foo.org/books/foo.txt"
-
index 4d1b44d..608b8b1 100644 (file)
@@ -14,7 +14,7 @@ static PyObject * _wrap_TestInterface__do_iface_method(PyObject *cls,
                                                       PyObject *args,
                                                       PyObject *kwargs);
 
-GType
+static GType
 test_type_get_type(void)
 {
     static GType gtype = 0;
@@ -224,11 +224,8 @@ static const GInterfaceInfo __TestInterface__iinfo = {
     NULL
 };
 
-/* TestFloatingWithSinkFunc */
-PYGLIB_DEFINE_TYPE("testhelper.FloatingWithSinkFunc", PyTestFloatingWithSinkFunc_Type, PyGObject);
-
-/* TestFloatingWithoutSinkFunc */
-PYGLIB_DEFINE_TYPE("testhelper.FloatingWithoutSinkFunc", PyTestFloatingWithoutSinkFunc_Type, PyGObject);
+/* TestFloating */
+PYGLIB_DEFINE_TYPE("testhelper.Floating", PyTestFloating_Type, PyGObject);
 
 /* TestOwnedByLibrary */
 PYGLIB_DEFINE_TYPE("testhelper.OwnedByLibrary", PyTestOwnedByLibrary_Type, PyGObject);
@@ -325,6 +322,16 @@ test_double_callback (GObject *object, double d)
   return d;
 }
 
+static gint64 *
+test_int64_callback (GObject *object, gint64 i)
+{
+  g_return_val_if_fail (G_IS_OBJECT (object), -1);
+
+  if (i == G_MAXINT64)
+      return i-1;
+  return i;
+}
+
 static char *
 test_string_callback (GObject *object, char *s)
 {
@@ -342,7 +349,60 @@ test_object_callback (GObject *object, GObject *o)
   return o;
 }
 
-void
+static GParamSpec *
+test_paramspec_callback (GObject *object)
+{
+  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
+
+  return g_param_spec_boolean ("test-param", "test", "test boolean", TRUE, G_PARAM_READABLE);
+}
+
+static GValue *
+test_gvalue_callback (GObject *object, const GValue *v)
+{
+  GValue *ret = g_malloc0 (sizeof (GValue));
+
+  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
+  g_return_val_if_fail (G_IS_VALUE (v), NULL);
+
+  g_value_init (ret, G_VALUE_TYPE (v));
+  g_value_copy (v, ret);
+  return ret;
+}
+
+static GValue *
+test_gvalue_ret_callback (GObject *object, GType type)
+{
+  GValue *ret = g_malloc0 (sizeof (GValue));
+
+  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
+
+  g_value_init (ret, type);
+
+  switch (type) {
+    case G_TYPE_INT:
+      g_value_set_int(ret, G_MAXINT);
+      break;
+    case G_TYPE_INT64:
+      g_value_set_int64(ret, G_MAXINT64);
+      break;
+    case G_TYPE_UINT:
+      g_value_set_uint(ret, G_MAXUINT);
+      break;
+    case G_TYPE_UINT64:
+      g_value_set_uint64(ret, G_MAXUINT64);
+      break;
+    case G_TYPE_STRING:
+      g_value_set_string(ret, "hello");
+      break;
+    default:
+      g_critical ("test_gvalue_ret_callback() does not support type %s", g_type_name (type));
+  }
+
+  return ret;
+}
+
+static void
 connectcallbacks (GObject *object)
 {
 
@@ -377,6 +437,10 @@ connectcallbacks (GObject *object)
                     G_CALLBACK (test_double_callback), 
                     NULL);
   g_signal_connect (G_OBJECT (object),
+                    "test_int64",
+                    G_CALLBACK (test_int64_callback), 
+                    NULL);
+  g_signal_connect (G_OBJECT (object),
                     "test_string",
                     G_CALLBACK (test_string_callback), 
                     NULL);
@@ -384,6 +448,18 @@ connectcallbacks (GObject *object)
                     "test_object",
                     G_CALLBACK (test_object_callback), 
                     NULL);
+  g_signal_connect (G_OBJECT (object),
+                    "test_paramspec",
+                    G_CALLBACK (test_paramspec_callback), 
+                    NULL);
+  g_signal_connect (G_OBJECT (object),
+                    "test_gvalue",
+                    G_CALLBACK (test_gvalue_callback), 
+                    NULL);
+  g_signal_connect (G_OBJECT (object),
+                    "test_gvalue_ret",
+                    G_CALLBACK (test_gvalue_ret_callback), 
+                    NULL);
 }
 
 static PyObject *
@@ -531,7 +607,7 @@ PYGLIB_MODULE_START(testhelper, "testhelper")
 
   d = PyModule_GetDict(module);
 
-  if ((m = PyImport_ImportModule("gobject")) != NULL) {
+  if ((m = PyImport_ImportModule("gi._gobject")) != NULL) {
     PyObject *moddict = PyModule_GetDict(m);
     
     _PyGObject_Type = (PyTypeObject *)PyDict_GetItemString(moddict, "GObject");
@@ -563,29 +639,15 @@ PYGLIB_MODULE_START(testhelper, "testhelper")
                           Py_BuildValue("(O)",
                            &PyGObject_Type,
                            &PyTestInterface_Type));
-  pyg_set_object_has_new_constructor(TEST_TYPE_UNKNOWN);
-  //pyg_register_class_init(TEST_TYPE_UNKNOWN, __GtkUIManager_class_init);
-
-  /* TestFloatingWithSinkFunc */
-  PyTestFloatingWithSinkFunc_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
-  PyTestFloatingWithSinkFunc_Type.tp_weaklistoffset = offsetof(PyGObject, weakreflist);
-  PyTestFloatingWithSinkFunc_Type.tp_dictoffset = offsetof(PyGObject, inst_dict);
-  pygobject_register_class(d, "FloatingWithSinkFunc", TEST_TYPE_FLOATING_WITH_SINK_FUNC,
-                          &PyTestFloatingWithSinkFunc_Type,
-                          Py_BuildValue("(O)",
-                           &PyGObject_Type));
-  pyg_set_object_has_new_constructor(TEST_TYPE_FLOATING_WITH_SINK_FUNC);
-  pygobject_register_sinkfunc(TEST_TYPE_FLOATING_WITH_SINK_FUNC, sink_test_floating_with_sink_func);
-
-  /* TestFloatingWithoutSinkFunc */
-  PyTestFloatingWithoutSinkFunc_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
-  PyTestFloatingWithoutSinkFunc_Type.tp_weaklistoffset = offsetof(PyGObject, weakreflist);
-  PyTestFloatingWithoutSinkFunc_Type.tp_dictoffset = offsetof(PyGObject, inst_dict);
-  pygobject_register_class(d, "FloatingWithoutSinkFunc", TEST_TYPE_FLOATING_WITHOUT_SINK_FUNC,
-                          &PyTestFloatingWithoutSinkFunc_Type,
+
+  /* TestFloating */
+  PyTestFloating_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
+  PyTestFloating_Type.tp_weaklistoffset = offsetof(PyGObject, weakreflist);
+  PyTestFloating_Type.tp_dictoffset = offsetof(PyGObject, inst_dict);
+  pygobject_register_class(d, "Floating", TEST_TYPE_FLOATING,
+                          &PyTestFloating_Type,
                           Py_BuildValue("(O)",
                            &PyGObject_Type));
-  pyg_set_object_has_new_constructor(TEST_TYPE_FLOATING_WITHOUT_SINK_FUNC);
 
   /* TestOwnedByLibrary */
   PyTestOwnedByLibrary_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
@@ -596,7 +658,6 @@ PYGLIB_MODULE_START(testhelper, "testhelper")
                           &PyTestOwnedByLibrary_Type,
                           Py_BuildValue("(O)",
                            &PyGObject_Type));
-  pyg_set_object_has_new_constructor(TEST_TYPE_OWNED_BY_LIBRARY);
 
   /* TestFloatingAndSunk */
   PyTestFloatingAndSunk_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
@@ -607,7 +668,6 @@ PYGLIB_MODULE_START(testhelper, "testhelper")
                            &PyTestFloatingAndSunk_Type,
                            Py_BuildValue("(O)",
                            &PyGObject_Type));
-  pyg_set_object_has_new_constructor(TEST_TYPE_FLOATING_AND_SUNK);
 }
 PYGLIB_MODULE_END
 
index 5fc29b3..3da8ed5 100644 (file)
@@ -1,17 +1,18 @@
-import gobject
+from gi.repository import GObject
 
-class PyGObject(gobject.GObject):
+
+class PyGObject(GObject.GObject):
     __gtype_name__ = 'PyGObject'
     __gproperties__ = {
-        'label': (gobject.TYPE_STRING,
+        'label': (GObject.TYPE_STRING,
                   'label property',
                   'the label of the object',
-                  'default', gobject.PARAM_READWRITE),
+                  'default', GObject.PARAM_READWRITE),
         }
 
     def __init__(self):
         self._props = {}
-        gobject.GObject.__init__(self)
+        GObject.GObject.__init__(self)
         self.set_property('label', 'hello')
 
     def do_set_property(self, name, value):